hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
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