1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
| /* SPDX-License-Identifier: GPL-2.0 */
| /*
| * Rockchip VAD Preprocess
| *
| * Copyright (C) 2018 Fuzhou Rockchip Electronics Co., Ltd
| *
| */
|
| .arch armv8-a
| .file "vad_preprocess_arm64.S"
| .text
| .align 2
| .global vad_preprocess_init
| .type vad_preprocess_init, %function
| vad_preprocess_init:
| adrp x2, .LANCHOR0
| add x1, x2, :lo12:.LANCHOR0
| ldr w3, [x0, 8]
| strh w3, [x2, #:lo12:.LANCHOR0]
| ldr w2, [x0, 4]
| strh w2, [x1, 2]
| ldr w2, [x0, 12]
| strh w2, [x1, 4]
| ldr w2, [x0]
| strh w2, [x1, 6]
| ldr w2, [x0, 16]
| and w0, w2, 511
| tbz x2, 9, .L2
| mvn w0, w0
| .L2:
| strh w0, [x1, 8]
| ret
| .size vad_preprocess_init, .-vad_preprocess_init
| .align 2
| .global vad_preprocess
| .type vad_preprocess, %function
| vad_preprocess:
| adrp x4, .LANCHOR0
| add x2, x4, :lo12:.LANCHOR0
| mov w8, 15349
| ldrsh w1, [x2, 8]
| ldrsh w7, [x2, 10]
| ldrsh w6, [x2, 12]
| ldrsh w3, [x2, 16]
| mul w0, w1, w0
| mov w1, 32
| sdiv w0, w0, w1
| ldrsh w1, [x2, 14]
| mov w2, -30697
| mul w2, w7, w2
| mul w5, w0, w8
| sxtw x2, w2
| add x2, x2, w5, sxtw
| smaddl x3, w3, w8, x2
| mov w2, -30632
| smsubl x2, w6, w2, x3
| mov w3, 14379
| smsubl x1, w1, w3, x2
| cmp x1, 0
| ble .L5
| add x1, x1, 8192
| asr x1, x1, 14
| .L6:
| add x2, x4, :lo12:.LANCHOR0
| sxth w1, w1
| cmp w1, 0
| ldrh w3, [x2, 18]
| strh w0, [x2, 10]
| add w3, w3, 1
| ldr w0, [x2, 20]
| sxth w3, w3
| strh w1, [x2, 12]
| csneg w1, w1, w1, ge
| strh w3, [x2, 18]
| negs w5, w3
| add w0, w1, w0
| strh w7, [x2, 16]
| and w3, w3, 255
| strh w6, [x2, 14]
| and w5, w5, 255
| str w0, [x2, 20]
| csneg w3, w3, w5, mi
| cbnz w3, .L7
| ldr w3, [x2, 24]
| cmp w3, 99
| bgt .L8
| add w0, w0, 128
| mov w5, 256
| add x2, x2, 32
| sdiv w0, w0, w5
| strh w0, [x2, w3, sxtw 1]
| .L9:
| add x2, x4, :lo12:.LANCHOR0
| cmp w3, 99
| ldrsh w0, [x2, 32]
| bgt .L11
| add x2, x2, 32
| mov x5, 0
| .L12:
| add x5, x5, 1
| cmp w3, w5
| bgt .L13
| .L14:
| add x2, x4, :lo12:.LANCHOR0
| mov w6, 230
| add w3, w3, 1
| ldrsh w5, [x2, 6]
| strh wzr, [x2, 18]
| stp wzr, w3, [x2, 20]
| mul w5, w5, w6
| mov w6, 26
| add w5, w5, 128
| madd w0, w0, w6, w5
| mov w5, 256
| sdiv w0, w0, w5
| strh w0, [x2, 6]
| .L7:
| add x0, x4, :lo12:.LANCHOR0
| ldrsh w3, [x4, #:lo12:.LANCHOR0]
| ldrsh w2, [x0, 6]
| ldrsh w5, [x0, 2]
| madd w2, w2, w5, w3
| cmp w1, w2
| ble .L16
| ldrh w1, [x0, 432]
| add w1, w1, 1
| sxth w1, w1
| strh w1, [x0, 432]
| ldrsh w0, [x0, 4]
| cmp w0, w1
| cset w0, lt
| ret
| .L5:
| sub x1, x1, #8192
| mov x2, 16384
| sdiv x1, x1, x2
| b .L6
| .L8:
| add x5, x2, 34
| add x2, x2, 232
| .L10:
| ldrh w6, [x5]
| add x5, x5, 2
| strh w6, [x5, -4]
| cmp x2, x5
| bne .L10
| add w0, w0, 128
| mov w5, 256
| add x2, x4, :lo12:.LANCHOR0
| sdiv w0, w0, w5
| strh w0, [x2, 230]
| b .L9
| .L13:
| lsl x6, x5, 1
| ldrsh w7, [x6, x2]
| ldrh w6, [x6, x2]
| cmp w7, w0
| csel w0, w6, w0, le
| sxth w0, w0
| b .L12
| .L11:
| add x5, x2, 34
| add x2, x2, 232
| .L15:
| ldrsh w7, [x5]
| ldrh w6, [x5], 2
| cmp w7, w0
| csel w0, w6, w0, le
| cmp x2, x5
| sxth w0, w0
| bne .L15
| b .L14
| .L16:
| strh wzr, [x0, 432]
| mov w0, 0
| ret
| .size vad_preprocess, .-vad_preprocess
| .align 2
| .global vad_preprocess_destroy
| .type vad_preprocess_destroy, %function
| vad_preprocess_destroy:
| adrp x0, .LANCHOR0
| add x0, x0, :lo12:.LANCHOR0
| add x2, x0, 32
| mov x1, 0
| strh wzr, [x0, 10]
| strh wzr, [x0, 16]
| strh wzr, [x0, 12]
| strh wzr, [x0, 14]
| strh wzr, [x0, 18]
| strh wzr, [x0, 432]
| .L21:
| strh wzr, [x1, x2]
| add x1, x1, 2
| cmp x1, 200
| bne .L21
| mov w1, 32
| strh wzr, [x0, 6]
| strh w1, [x0, 8]
| stp wzr, wzr, [x0, 20]
| ret
| .size vad_preprocess_destroy, .-vad_preprocess_destroy
| .align 2
| .global vad_preprocess_update_params
| .type vad_preprocess_update_params, %function
| vad_preprocess_update_params:
| adrp x1, .LANCHOR0+6
| ldrsh w1, [x1, #:lo12:.LANCHOR0+6]
| str w1, [x0]
| ret
| .size vad_preprocess_update_params, .-vad_preprocess_update_params
| .bss
| .align 3
| .set .LANCHOR0,. + 0
| .type g_sound_thd, %object
| .size g_sound_thd, 2
| g_sound_thd:
| .zero 2
| .type g_noise_level, %object
| .size g_noise_level, 2
| g_noise_level:
| .zero 2
| .type g_vad_con_thd, %object
| .size g_vad_con_thd, 2
| g_vad_con_thd:
| .zero 2
| .type g_noise_abs, %object
| .size g_noise_abs, 2
| g_noise_abs:
| .zero 2
| .type g_signal_gain, %object
| .size g_signal_gain, 2
| g_signal_gain:
| .zero 2
| .type g_xn_1, %object
| .size g_xn_1, 2
| g_xn_1:
| .zero 2
| .type g_yn_1, %object
| .size g_yn_1, 2
| g_yn_1:
| .zero 2
| .type g_yn_2, %object
| .size g_yn_2, 2
| g_yn_2:
| .zero 2
| .type g_xn_2, %object
| .size g_xn_2, 2
| g_xn_2:
| .zero 2
| .type g_sample_cnt, %object
| .size g_sample_cnt, 2
| g_sample_cnt:
| .zero 2
| .type g_sum_abs_frm, %object
| .size g_sum_abs_frm, 4
| g_sum_abs_frm:
| .zero 4
| .type frm_count, %object
| .size frm_count, 4
| frm_count:
| .zero 4
| .zero 4
| .type g_ave_abs_rec, %object
| .size g_ave_abs_rec, 400
| g_ave_abs_rec:
| .zero 400
| .type g_vad_cnt, %object
| .size g_vad_cnt, 2
| g_vad_cnt:
| .zero 2
| .ident "GCC: (Linaro GCC 6.3-2017.05) 6.3.1 20170404"
| .section .note.GNU-stack,"",@progbits
|
|