361 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			361 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * Rockchip VAD Preprocess
 | |
|  *
 | |
|  * Copyright (C) 2018 Fuzhou Rockchip Electronics Co., Ltd
 | |
|  *
 | |
|  */
 | |
| 
 | |
| 	.syntax unified
 | |
| 	.arch armv7-a
 | |
| 	.fpu softvfp
 | |
| 	.eabi_attribute 20, 1
 | |
| 	.eabi_attribute 21, 1
 | |
| 	.eabi_attribute 23, 3
 | |
| 	.eabi_attribute 24, 1
 | |
| 	.eabi_attribute 25, 1
 | |
| 	.eabi_attribute 26, 2
 | |
| 	.eabi_attribute 30, 4
 | |
| 	.eabi_attribute 34, 1
 | |
| 	.eabi_attribute 18, 4
 | |
| 	.thumb
 | |
| 	.file	"vad_preprocess_thumb.S"
 | |
| 	.text
 | |
| 	.align	1
 | |
| 	.global	vad_preprocess_init
 | |
| 	.thumb
 | |
| 	.thumb_func
 | |
| 	.type	vad_preprocess_init, %function
 | |
| vad_preprocess_init:
 | |
| 	.fnstart
 | |
| 	@ args = 0, pretend = 0, frame = 0
 | |
| 	@ frame_needed = 0, uses_anonymous_args = 0
 | |
| 	@ link register save eliminated.
 | |
| 	ldr	r2, .L4
 | |
| 	ldr	r3, [r0, #8]
 | |
| 	strh	r3, [r2]	@ movhi
 | |
| 	ldr	r3, [r0, #4]
 | |
| 	strh	r3, [r2, #2]	@ movhi
 | |
| 	ldr	r3, [r0, #12]
 | |
| 	strh	r3, [r2, #4]	@ movhi
 | |
| 	ldr	r3, [r0]
 | |
| 	strh	r3, [r2, #6]	@ movhi
 | |
| 	ldr	r3, [r0, #16]
 | |
| 	tst	r3, #512
 | |
| 	ubfx	r3, r3, #0, #9
 | |
| 	itte	ne
 | |
| 	eorne	r3, r3, #65280
 | |
| 	eorne	r3, r3, #255
 | |
| 	uxtheq	r3, r3
 | |
| 	strh	r3, [r2, #8]	@ movhi
 | |
| 	bx	lr
 | |
| .L5:
 | |
| 	.align	2
 | |
| .L4:
 | |
| 	.word	.LANCHOR0
 | |
| 	.fnend
 | |
| 	.size	vad_preprocess_init, .-vad_preprocess_init
 | |
| 	.align	1
 | |
| 	.global	vad_preprocess
 | |
| 	.thumb
 | |
| 	.thumb_func
 | |
| 	.type	vad_preprocess, %function
 | |
| vad_preprocess:
 | |
| 	.fnstart
 | |
| 	@ args = 0, pretend = 0, frame = 0
 | |
| 	@ frame_needed = 0, uses_anonymous_args = 0
 | |
| 	ldr	r3, .L29
 | |
| 	movw	r2, #34839
 | |
| 	push	{r4, r5, r6, r7, r8, r9, lr}
 | |
| 	.save {r4, r5, r6, r7, r8, r9, lr}
 | |
| 	movw	r1, #15349
 | |
| 	ldrsh	r5, [r3, #8]
 | |
| 	muls	r0, r5, r0
 | |
| 	ldrh	r7, [r3, #10]
 | |
| 	it	mi
 | |
| 	addmi	r0, r0, #31
 | |
| 	ldrh	r4, [r3, #12]
 | |
| 	asrs	r0, r0, #5
 | |
| 	ldrh	r6, [r3, #14]
 | |
| 	smulbb	r2, r7, r2
 | |
| 	mla	r2, r1, r0, r2
 | |
| 	smlabb	r2, r4, r1, r2
 | |
| 	movw	r1, #34904
 | |
| 	smulbb	r1, r6, r1
 | |
| 	ldrsh	r4, [r3, #16]
 | |
| 	subs	r1, r2, r1
 | |
| 	movw	r2, #14379
 | |
| 	mls	r4, r4, r2, r1
 | |
| 	cmp	r4, #1
 | |
| 	asr	r5, r4, #31
 | |
| 	sbcs	r2, r5, #0
 | |
| 	blt	.L8
 | |
| 	adds	r4, r4, #8192
 | |
| 	adc	r5, r5, #0
 | |
| 	b	.L10
 | |
| .L8:
 | |
| 	subs	r4, r4, #8192
 | |
| 	adc	r5, r5, #-1
 | |
| 	cmp	r4, #0
 | |
| 	sbcs	r2, r5, #0
 | |
| 	bge	.L10
 | |
| 	movw	r8, #16383
 | |
| 	mov	r9, #0
 | |
| 	adds	r4, r4, r8
 | |
| 	adc	r5, r5, r9
 | |
| .L10:
 | |
| 	lsrs	r1, r4, #14
 | |
| 	ldrh	r4, [r3, #18]
 | |
| 	orr	r1, r1, r5, lsl #18
 | |
| 	ldr	r2, .L29+4
 | |
| 	adds	r4, r4, #1
 | |
| 	strh	r0, [r3, #10]	@ movhi
 | |
| 	uxth	r1, r1
 | |
| 	strh	r1, [r3, #14]	@ movhi
 | |
| 	uxth	r4, r4
 | |
| 	strh	r4, [r3, #18]	@ movhi
 | |
| 	sxth	r1, r1
 | |
| 	ldr	r0, [r3, #20]
 | |
| 	sxth	r4, r4
 | |
| 	cmp	r1, #0
 | |
| 	and	r2, r2, r4
 | |
| 	it	lt
 | |
| 	rsblt	r1, r1, #0
 | |
| 	cmp	r2, #0
 | |
| 	add	r0, r0, r1
 | |
| 	it	lt
 | |
| 	addlt	r2, r2, #-1
 | |
| 	strh	r7, [r3, #12]	@ movhi
 | |
| 	it	lt
 | |
| 	ornlt	r2, r2, #255
 | |
| 	strh	r6, [r3, #16]	@ movhi
 | |
| 	it	lt
 | |
| 	addlt	r2, r2, #1
 | |
| 	str	r0, [r3, #20]
 | |
| 	cmp	r2, #0
 | |
| 	bne	.L11
 | |
| 	ldr	r4, [r3, #24]
 | |
| 	ldr	r2, .L29
 | |
| 	cmp	r4, #99
 | |
| 	bgt	.L13
 | |
| 	adds	r5, r0, #128
 | |
| 	add	r2, r2, r4, lsl #1
 | |
| 	it	mi
 | |
| 	addwmi	r5, r0, #383
 | |
| 	asrs	r5, r5, #8
 | |
| 	strh	r5, [r2, #28]	@ movhi
 | |
| 	b	.L15
 | |
| .L13:
 | |
| 	add	r5, r2, #28
 | |
| 	adds	r2, r2, #226
 | |
| .L16:
 | |
| 	ldrh	r6, [r5, #2]
 | |
| 	strh	r6, [r5], #2	@ movhi
 | |
| 	cmp	r5, r2
 | |
| 	bne	.L16
 | |
| 	adds	r2, r0, #128
 | |
| 	it	mi
 | |
| 	addwmi	r2, r0, #383
 | |
| 	ldr	r0, .L29
 | |
| 	asrs	r2, r2, #8
 | |
| 	strh	r2, [r0, #226]	@ movhi
 | |
| .L15:
 | |
| 	cmp	r4, #99
 | |
| 	ldrh	r2, [r3, #28]
 | |
| 	mov	r0, #1
 | |
| 	bgt	.L18
 | |
| 	ldr	r5, .L29+8
 | |
| .L19:
 | |
| 	cmp	r0, r4
 | |
| 	bge	.L21
 | |
| 	ldrsh	r6, [r5, r0, lsl #1]
 | |
| 	sxth	r2, r2
 | |
| 	adds	r0, r0, #1
 | |
| 	cmp	r2, r6
 | |
| 	it	ge
 | |
| 	movge	r2, r6
 | |
| 	uxth	r2, r2
 | |
| 	b	.L19
 | |
| .L18:
 | |
| 	ldr	r6, .L29+8
 | |
| .L22:
 | |
| 	ldrsh	r5, [r6, r0, lsl #1]
 | |
| 	sxth	r2, r2
 | |
| 	adds	r0, r0, #1
 | |
| 	cmp	r2, r5
 | |
| 	it	ge
 | |
| 	movge	r2, r5
 | |
| 	cmp	r0, #100
 | |
| 	uxth	r2, r2
 | |
| 	bne	.L22
 | |
| .L21:
 | |
| 	ldrh	r5, [r3, #6]
 | |
| 	movs	r0, #128
 | |
| 	movs	r6, #230
 | |
| 	adds	r4, r4, #1
 | |
| 	str	r4, [r3, #24]
 | |
| 	smlabb	r0, r5, r6, r0
 | |
| 	movs	r5, #26
 | |
| 	smlabb	r2, r2, r5, r0
 | |
| 	ldr	r0, .L29
 | |
| 	cmp	r2, #0
 | |
| 	it	lt
 | |
| 	addlt	r2, r2, #255
 | |
| 	asrs	r2, r2, #8
 | |
| 	strh	r2, [r0, #6]	@ movhi
 | |
| 	movs	r2, #0
 | |
| 	str	r2, [r3, #20]
 | |
| 	strh	r2, [r3, #18]	@ movhi
 | |
| .L11:
 | |
| 	ldrh	r0, [r3, #6]
 | |
| 	ldrh	r4, [r3, #2]
 | |
| 	ldrsh	r3, [r3]
 | |
| 	ldr	r2, .L29
 | |
| 	smlabb	r3, r0, r4, r3
 | |
| 	cmp	r1, r3
 | |
| 	ble	.L24
 | |
| 	ldrh	r3, [r2, #428]
 | |
| 	ldrsh	r0, [r2, #4]
 | |
| 	adds	r3, r3, #1
 | |
| 	uxth	r3, r3
 | |
| 	strh	r3, [r2, #428]	@ movhi
 | |
| 	sxth	r3, r3
 | |
| 	cmp	r0, r3
 | |
| 	ite	ge
 | |
| 	movge	r0, #0
 | |
| 	movlt	r0, #1
 | |
| 	pop	{r4, r5, r6, r7, r8, r9, pc}
 | |
| .L24:
 | |
| 	movs	r0, #0
 | |
| 	strh	r0, [r2, #428]	@ movhi
 | |
| 	pop	{r4, r5, r6, r7, r8, r9, pc}
 | |
| .L30:
 | |
| 	.align	2
 | |
| .L29:
 | |
| 	.word	.LANCHOR0
 | |
| 	.word	-2147483393
 | |
| 	.word	.LANCHOR0+28
 | |
| 	.fnend
 | |
| 	.size	vad_preprocess, .-vad_preprocess
 | |
| 	.align	1
 | |
| 	.global	vad_preprocess_destroy
 | |
| 	.thumb
 | |
| 	.thumb_func
 | |
| 	.type	vad_preprocess_destroy, %function
 | |
| vad_preprocess_destroy:
 | |
| 	.fnstart
 | |
| 	@ args = 0, pretend = 0, frame = 0
 | |
| 	@ frame_needed = 0, uses_anonymous_args = 0
 | |
| 	movs	r3, #0
 | |
| 	ldr	r2, .L34
 | |
| 	push	{r4, lr}
 | |
| 	.save {r4, lr}
 | |
| 	mov	r4, r3
 | |
| 	strh	r3, [r2, #10]	@ movhi
 | |
| 	strh	r3, [r2, #12]	@ movhi
 | |
| 	strh	r3, [r2, #14]	@ movhi
 | |
| 	strh	r3, [r2, #16]	@ movhi
 | |
| 	strh	r3, [r2, #18]	@ movhi
 | |
| 	strh	r3, [r2, #428]	@ movhi
 | |
| .L32:
 | |
| 	ldr	r2, .L34
 | |
| 	movs	r1, #0
 | |
| 	add	r0, r2, #28
 | |
| 	strh	r4, [r0, r3, lsl #1]	@ movhi
 | |
| 	adds	r3, r3, #1
 | |
| 	cmp	r3, #100
 | |
| 	bne	.L32
 | |
| 	movs	r3, #32
 | |
| 	str	r1, [r2, #20]
 | |
| 	strh	r1, [r2, #6]	@ movhi
 | |
| 	strh	r3, [r2, #8]	@ movhi
 | |
| 	str	r1, [r2, #24]
 | |
| 	pop	{r4, pc}
 | |
| .L35:
 | |
| 	.align	2
 | |
| .L34:
 | |
| 	.word	.LANCHOR0
 | |
| 	.fnend
 | |
| 	.size	vad_preprocess_destroy, .-vad_preprocess_destroy
 | |
| 	.align	1
 | |
| 	.global	vad_preprocess_update_params
 | |
| 	.thumb
 | |
| 	.thumb_func
 | |
| 	.type	vad_preprocess_update_params, %function
 | |
| vad_preprocess_update_params:
 | |
| 	.fnstart
 | |
| 	@ args = 0, pretend = 0, frame = 0
 | |
| 	@ frame_needed = 0, uses_anonymous_args = 0
 | |
| 	@ link register save eliminated.
 | |
| 	ldr	r3, .L37
 | |
| 	ldrsh	r3, [r3, #6]
 | |
| 	str	r3, [r0]
 | |
| 	bx	lr
 | |
| .L38:
 | |
| 	.align	2
 | |
| .L37:
 | |
| 	.word	.LANCHOR0
 | |
| 	.fnend
 | |
| 	.size	vad_preprocess_update_params, .-vad_preprocess_update_params
 | |
| 	.bss
 | |
| 	.align	2
 | |
| .LANCHOR0 = . + 0
 | |
| 	.type	g_sound_thd, %object
 | |
| 	.size	g_sound_thd, 2
 | |
| g_sound_thd:
 | |
| 	.space	2
 | |
| 	.type	g_noise_level, %object
 | |
| 	.size	g_noise_level, 2
 | |
| g_noise_level:
 | |
| 	.space	2
 | |
| 	.type	g_vad_con_thd, %object
 | |
| 	.size	g_vad_con_thd, 2
 | |
| g_vad_con_thd:
 | |
| 	.space	2
 | |
| 	.type	g_noise_abs, %object
 | |
| 	.size	g_noise_abs, 2
 | |
| g_noise_abs:
 | |
| 	.space	2
 | |
| 	.type	g_signal_gain, %object
 | |
| 	.size	g_signal_gain, 2
 | |
| g_signal_gain:
 | |
| 	.space	2
 | |
| 	.type	g_xn_1, %object
 | |
| 	.size	g_xn_1, 2
 | |
| g_xn_1:
 | |
| 	.space	2
 | |
| 	.type	g_xn_2, %object
 | |
| 	.size	g_xn_2, 2
 | |
| g_xn_2:
 | |
| 	.space	2
 | |
| 	.type	g_yn_1, %object
 | |
| 	.size	g_yn_1, 2
 | |
| g_yn_1:
 | |
| 	.space	2
 | |
| 	.type	g_yn_2, %object
 | |
| 	.size	g_yn_2, 2
 | |
| g_yn_2:
 | |
| 	.space	2
 | |
| 	.type	g_sample_cnt, %object
 | |
| 	.size	g_sample_cnt, 2
 | |
| g_sample_cnt:
 | |
| 	.space	2
 | |
| 	.type	g_sum_abs_frm, %object
 | |
| 	.size	g_sum_abs_frm, 4
 | |
| g_sum_abs_frm:
 | |
| 	.space	4
 | |
| 	.type	frm_count, %object
 | |
| 	.size	frm_count, 4
 | |
| frm_count:
 | |
| 	.space	4
 | |
| 	.type	g_ave_abs_rec, %object
 | |
| 	.size	g_ave_abs_rec, 400
 | |
| g_ave_abs_rec:
 | |
| 	.space	400
 | |
| 	.type	g_vad_cnt, %object
 | |
| 	.size	g_vad_cnt, 2
 | |
| g_vad_cnt:
 | |
| 	.space	2
 | |
| 	.ident	"GCC: (GNU) 4.9 20150123 (prerelease)"
 | |
| 	.section	.note.GNU-stack,"",%progbits
 |