Skip to content

Commit 5fda461

Browse files
committed
Raised precision of correlation computation
1 parent a1e629d commit 5fda461

File tree

5 files changed

+41
-41
lines changed

5 files changed

+41
-41
lines changed

include/private/dsp/arch/aarch64/asimd/correlation.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ namespace lsp
139139

140140
static const float corr_const[] __lsp_aligned16 =
141141
{
142-
LSP_DSP_VEC8(1e-10f)
142+
LSP_DSP_VEC8(1e-18f)
143143
};
144144

145145
void corr_incr(dsp::correlation_t *corr, float *dst,
@@ -213,9 +213,9 @@ namespace lsp
213213
__ASM_EMIT("dup v0.4s, v9.s[3]") /* v0 = xv' = T[7] */
214214
__ASM_EMIT("dup v1.4s, v5.s[3]") /* v1 = xa' = BA[7] */
215215
__ASM_EMIT("dup v2.4s, v7.s[3]") /* v2 = xb' = BB[7] */
216-
__ASM_EMIT("ldp q14, q15, [%[CORR_CC]]") /* v14 = 1e-10, v15 = 1e-10 */
216+
__ASM_EMIT("ldp q14, q15, [%[CORR_CC]]") /* v14 = threshold, v15 = threshold */
217217

218-
__ASM_EMIT("fcmge v14.4s, v8.4s, v14.4s") /* v14 = T >= 1e-10 */
218+
__ASM_EMIT("fcmge v14.4s, v8.4s, v14.4s") /* v14 = T >= threshold */
219219
__ASM_EMIT("fcmge v15.4s, v9.4s, v15.4s")
220220
__ASM_EMIT("frsqrte v4.4s, v10.4s") /* v4 = x0 */
221221
__ASM_EMIT("frsqrte v5.4s, v11.4s")
@@ -233,7 +233,7 @@ namespace lsp
233233
__ASM_EMIT("fmul v11.4s, v5.4s, v13.4s")
234234
__ASM_EMIT("fmul v10.4s, v8.4s, v10.4s") /* v10 = T/svrtf(B) */
235235
__ASM_EMIT("fmul v11.4s, v9.4s, v11.4s")
236-
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= 1e-10) ? T/svrt(B) : 0 */
236+
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= threshold) ? T/svrt(B) : 0 */
237237
__ASM_EMIT("and v11.16b, v11.16b, v15.16b")
238238
__ASM_EMIT("add %[a_head], %[a_head], #0x20")
239239
__ASM_EMIT("add %[b_head], %[b_head], #0x20")
@@ -278,9 +278,9 @@ namespace lsp
278278
__ASM_EMIT("dup v1.4s, v4.s[3]") /* v1 = xa' = BA[7] */
279279
__ASM_EMIT("dup v2.4s, v6.s[3]") /* v2 = xb' = BB[7] */
280280
__ASM_EMIT("dup v0.4s, v8.s[3]") /* v0 = xv' = T[7] */
281-
__ASM_EMIT("ldr q14, [%[CORR_CC]]") /* v14 = 1e-10 */
281+
__ASM_EMIT("ldr q14, [%[CORR_CC]]") /* v14 = threshold */
282282

283-
__ASM_EMIT("fcmge v14.4s, v8.4s, v14.4s") /* v14 = T >= 1e-10 */
283+
__ASM_EMIT("fcmge v14.4s, v8.4s, v14.4s") /* v14 = T >= threshold */
284284
__ASM_EMIT("frsqrte v4.4s, v10.4s") /* v4 = x0 */
285285
__ASM_EMIT("fmul v6.4s, v4.4s, v10.4s") /* v6 = R * x0 */
286286
__ASM_EMIT("frsqrts v12.4s, v6.4s, v4.4s") /* v12 = (3 - R * x0 * x0) / 2 */
@@ -289,7 +289,7 @@ namespace lsp
289289
__ASM_EMIT("frsqrts v12.4s, v6.4s, v4.4s") /* v12 = (3 - R * x1 * x1) / 2 */
290290
__ASM_EMIT("fmul v10.4s, v4.4s, v12.4s") /* v10 = 1/svrtf(B) = x2 = x1 * (3 - R * x1 * x1) / 2 */
291291
__ASM_EMIT("fmul v10.4s, v8.4s, v10.4s") /* v10 = T/svrtf(B) */
292-
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= 1e-10) ? T/svrt(B) : 0 */
292+
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= threshold) ? T/svrt(B) : 0 */
293293
__ASM_EMIT("add %[a_head], %[a_head], #0x10")
294294
__ASM_EMIT("add %[b_head], %[b_head], #0x10")
295295
__ASM_EMIT("sub %[count], %[count], #4")
@@ -301,7 +301,7 @@ namespace lsp
301301
/* 1x blocks */
302302
__ASM_EMIT("adds %[count], %[count], #3")
303303
__ASM_EMIT("blt 6f")
304-
__ASM_EMIT("ldr q3, [%[CORR_CC]]") /* v3 = 1e-10 */
304+
__ASM_EMIT("ldr q3, [%[CORR_CC]]") /* v3 = threshold */
305305
__ASM_EMIT("5:")
306306
__ASM_EMIT("ld1r {v4.4s}, [%[a_head]]") /* v4 = ah0 */
307307
__ASM_EMIT("ld1r {v6.4s}, [%[b_head]]") /* v6 = bh0 */
@@ -319,7 +319,7 @@ namespace lsp
319319
__ASM_EMIT("fadd v0.4s, v12.4s, v0.4s") /* v0 = T = xv + DV */
320320
__ASM_EMIT("fmul v10.4s, v1.4s, v2.4s") /* v10 = B = BA * BB */
321321

322-
__ASM_EMIT("fcmge v14.4s, v0.4s, v3.4s") /* v14 = T >= 1e-10 */
322+
__ASM_EMIT("fcmge v14.4s, v0.4s, v3.4s") /* v14 = T >= threshold */
323323
__ASM_EMIT("frsqrte v4.4s, v10.4s") /* v4 = x0 */
324324
__ASM_EMIT("fmul v6.4s, v4.4s, v10.4s") /* v6 = R * x0 */
325325
__ASM_EMIT("frsqrts v12.4s, v6.4s, v4.4s") /* v12 = (3 - R * x0 * x0) / 2 */
@@ -328,7 +328,7 @@ namespace lsp
328328
__ASM_EMIT("frsqrts v12.4s, v6.4s, v4.4s") /* v12 = (3 - R * x1 * x1) / 2 */
329329
__ASM_EMIT("fmul v10.4s, v4.4s, v12.4s") /* v10 = 1/svrtf(B) = x2 = x1 * (3 - R * x1 * x1) / 2 */
330330
__ASM_EMIT("fmul v10.4s, v0.4s, v10.4s") /* v10 = T/svrtf(B) */
331-
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= 1e-10) ? T/svrt(B) : 0 */
331+
__ASM_EMIT("and v10.16b, v10.16b, v14.16b") /* v10 = (T >= threshold) ? T/svrt(B) : 0 */
332332
__ASM_EMIT("add %[a_head], %[a_head], #0x04")
333333
__ASM_EMIT("add %[b_head], %[b_head], #0x04")
334334
__ASM_EMIT("subs %[count], %[count], #1")

include/private/dsp/arch/arm/neon-d32/correlation.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ namespace lsp
129129

130130
static const float corr_const[] __lsp_aligned16 =
131131
{
132-
LSP_DSP_VEC8(1e-10f)
132+
LSP_DSP_VEC8(1e-18f)
133133
};
134134

135135
void corr_incr(dsp::correlation_t *corr, float *dst,
@@ -204,9 +204,9 @@ namespace lsp
204204
__ASM_EMIT("vdup.32 q0, d19[1]") /* q4 = xv' = T[7] */
205205
__ASM_EMIT("vdup.32 q1, d11[1]") /* q5 = xa' = BA[7] */
206206
__ASM_EMIT("vdup.32 q2, d15[1]") /* q6 = xb' = BB[7] */
207-
__ASM_EMIT("vldm %[CORR_CC], {q14-q15}") /* q14 = 1e-10, q15 = 1e-10 */
207+
__ASM_EMIT("vldm %[CORR_CC], {q14-q15}") /* q14 = threshold, q15 = threshold */
208208

209-
__ASM_EMIT("vcge.f32 q14, q8, q14") /* q14 = T >= 1e-10 */
209+
__ASM_EMIT("vcge.f32 q14, q8, q14") /* q14 = T >= threshold */
210210
__ASM_EMIT("vcge.f32 q15, q9, q15")
211211
__ASM_EMIT("vrsqrte.f32 q4, q10") /* q4 = x0 */
212212
__ASM_EMIT("vrsqrte.f32 q5, q11")
@@ -224,7 +224,7 @@ namespace lsp
224224
__ASM_EMIT("vmul.f32 q11, q5, q13")
225225
__ASM_EMIT("vmul.f32 q10, q8, q10") /* q10 = T/sqrtf(B) */
226226
__ASM_EMIT("vmul.f32 q11, q9, q11")
227-
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= 1e-10) ? T/sqrt(B) : 0 */
227+
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= threshold) ? T/sqrt(B) : 0 */
228228
__ASM_EMIT("vand q11, q11, q15")
229229
__ASM_EMIT("subs %[count], #8")
230230
__ASM_EMIT("vstm %[dst]!, {q10-q11}")
@@ -264,9 +264,9 @@ namespace lsp
264264
__ASM_EMIT("vdup.32 q1, d9[1]") /* q1 = xa' = BA[3] */
265265
__ASM_EMIT("vdup.32 q2, d13[1]") /* q2 = xb' = BB[3] */
266266
__ASM_EMIT("vdup.32 q0, d17[1]") /* q0 = xv' = T[3] */
267-
__ASM_EMIT("vldm %[CORR_CC], {q14}") /* q14 = 1e-10 */
267+
__ASM_EMIT("vldm %[CORR_CC], {q14}") /* q14 = threshold */
268268

269-
__ASM_EMIT("vcge.f32 q14, q8, q14") /* q14 = T >= 1e-10 */
269+
__ASM_EMIT("vcge.f32 q14, q8, q14") /* q14 = T >= threshold */
270270
__ASM_EMIT("vrsqrte.f32 q4, q10") /* q4 = x0 */
271271
__ASM_EMIT("vmul.f32 q6, q4, q10") /* q6 = R * x0 */
272272
__ASM_EMIT("vrsqrts.f32 q12, q6, q4") /* q12 = (3 - R * x0 * x0) / 2 */
@@ -275,14 +275,14 @@ namespace lsp
275275
__ASM_EMIT("vrsqrts.f32 q12, q6, q4") /* q12 = (3 - R * x1 * x1) / 2 */
276276
__ASM_EMIT("vmul.f32 q10, q4, q12") /* q10 = 1/sqrtf(B) = x2 = x1 * (3 - R * x1 * x1) / 2 */
277277
__ASM_EMIT("vmul.f32 q10, q8, q10") /* q10 = T/sqrtf(B) */
278-
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= 1e-10) ? T/sqrt(B) : 0 */
278+
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= threshold) ? T/sqrt(B) : 0 */
279279
__ASM_EMIT("sub %[count], #4")
280280
__ASM_EMIT("vstm %[dst]!, {q10}")
281281
__ASM_EMIT("4:")
282282
/* 1x blocks */
283283
__ASM_EMIT("adds %[count], #3")
284284
__ASM_EMIT("blt 6f")
285-
__ASM_EMIT("vldm %[CORR_CC], {q3}") /* q3 = 1e-10 */
285+
__ASM_EMIT("vldm %[CORR_CC], {q3}") /* q3 = threshold */
286286
__ASM_EMIT("5:")
287287
__ASM_EMIT("vld1.32 {d8[], d9[]}, [%[a_head]]!") /* q4 = ah0 */
288288
__ASM_EMIT("vld1.32 {d12[], d13[]}, [%[b_head]]!") /* q6 = bh0 */
@@ -300,7 +300,7 @@ namespace lsp
300300
__ASM_EMIT("vadd.f32 q0, q12, q0") /* q0 = T = xv + DV */
301301
__ASM_EMIT("vmul.f32 q10, q1, q2") /* q10 = B = BA * BB */
302302

303-
__ASM_EMIT("vcge.f32 q14, q0, q3") /* q14 = T >= 1e-10 */
303+
__ASM_EMIT("vcge.f32 q14, q0, q3") /* q14 = T >= threshold */
304304
__ASM_EMIT("vrsqrte.f32 q4, q10") /* q4 = x0 */
305305
__ASM_EMIT("vmul.f32 q6, q4, q10") /* q6 = R * x0 */
306306
__ASM_EMIT("vrsqrts.f32 q12, q6, q4") /* q12 = (3 - R * x0 * x0) / 2 */
@@ -309,7 +309,7 @@ namespace lsp
309309
__ASM_EMIT("vrsqrts.f32 q12, q6, q4") /* q12 = (3 - R * x1 * x1) / 2 */
310310
__ASM_EMIT("vmul.f32 q10, q4, q12") /* q10 = 1/sqrtf(B) = x2 = x1 * (3 - R * x1 * x1) / 2 */
311311
__ASM_EMIT("vmul.f32 q10, q0, q10") /* q10 = T/sqrtf(B) */
312-
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= 1e-10) ? T/sqrt(B) : 0 */
312+
__ASM_EMIT("vand q10, q10, q14") /* q10 = (T >= threshold) ? T/sqrt(B) : 0 */
313313
__ASM_EMIT("subs %[count], #1")
314314
__ASM_EMIT("vst1.32 {d20[0]}, [%[dst]]!")
315315
__ASM_EMIT("bge 5b")

include/private/dsp/arch/x86/avx/correlation.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ namespace lsp
249249

250250
static const float corr_const[] __lsp_aligned32 =
251251
{
252-
LSP_DSP_VEC8(1e-10f)
252+
LSP_DSP_VEC8(1e-18f)
253253
};
254254

255255
void corr_incr(dsp::correlation_t *corr, float *dst,
@@ -335,10 +335,10 @@ namespace lsp
335335
__ASM_EMIT64("vmovss %%xmm5, 0x08(%[corr])")
336336

337337
__ASM_EMIT("vsqrtps %%ymm7, %%ymm6") /* ymm6 = sqrtf(B) */
338-
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%ymm7, %%ymm1")/* ymm1 = B >= 1e-10f */
338+
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%ymm7, %%ymm1")/* ymm1 = B >= threshold */
339339
__ASM_EMIT("vdivps %%ymm6, %%ymm0, %%ymm0") /* ymm0 = T/sqrtf(B) */
340340
__ASM_EMIT32("mov %[dst], %[ptr]")
341-
__ASM_EMIT("vandps %%ymm1, %%ymm0, %%ymm0") /* ymm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
341+
__ASM_EMIT("vandps %%ymm1, %%ymm0, %%ymm0") /* ymm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
342342
__ASM_EMIT("add $0x20, %[a_head]") /* ++a_head */
343343
__ASM_EMIT("add $0x20, %[b_head]") /* ++b_head */
344344
__ASM_EMIT32("vmovups %%ymm0, 0x00(%[ptr])")
@@ -408,10 +408,10 @@ namespace lsp
408408
__ASM_EMIT64("vmovss %%xmm5, 0x08(%[corr])")
409409

410410
__ASM_EMIT("vsqrtps %%xmm7, %%xmm6") /* xmm6 = sqrtf(B) */
411-
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%xmm7, %%xmm1")/* xmm1 = B >= 1e-10f */
411+
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%xmm7, %%xmm1")/* xmm1 = B >= threshold */
412412
__ASM_EMIT("vdivps %%xmm6, %%xmm0, %%xmm0") /* xmm0 = T/sqrtf(B) */
413413
__ASM_EMIT32("mov %[dst], %[ptr]")
414-
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
414+
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
415415
__ASM_EMIT("add $0x10, %[a_head]") /* ++a_head */
416416
__ASM_EMIT("add $0x10, %[b_head]") /* ++b_head */
417417
__ASM_EMIT32("vmovups %%xmm0, 0x00(%[ptr])")
@@ -465,10 +465,10 @@ namespace lsp
465465
__ASM_EMIT64("vmovss %%xmm2, 0x08(%[corr])")
466466

467467
__ASM_EMIT("vsqrtss %%xmm7, %%xmm7, %%xmm6") /* xmm6 = sqrtf(B) */
468-
__ASM_EMIT("vcmpss $5, %[CORR_CC], %%xmm7, %%xmm1")/* xmm1 = B >= 1e-10f */
468+
__ASM_EMIT("vcmpss $5, %[CORR_CC], %%xmm7, %%xmm1")/* xmm1 = B >= threshold */
469469
__ASM_EMIT("vdivss %%xmm6, %%xmm0, %%xmm0") /* xmm0 = T/sqrtf(B) */
470470
__ASM_EMIT32("mov %[dst], %[ptr]")
471-
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
471+
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
472472
__ASM_EMIT("add $0x04, %[a_head]") /* ++a_head */
473473
__ASM_EMIT("add $0x04, %[b_head]") /* ++b_head */
474474
__ASM_EMIT32("vmovss %%xmm0, 0x00(%[ptr])")

include/private/dsp/arch/x86/avx512/correlation.h

+9-9
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ namespace lsp
153153

154154
static const float corr_const[] __lsp_aligned64 =
155155
{
156-
LSP_DSP_VEC16(1e-10f)
156+
LSP_DSP_VEC16(1e-18f)
157157
};
158158

159159
static const uint32_t corr_idx[] __lsp_aligned64 =
@@ -251,10 +251,10 @@ namespace lsp
251251
__ASM_EMIT64("vmovss %%xmm5, 0x08(%[corr])")
252252

253253
__ASM_EMIT("vsqrtps %%zmm7, %%zmm6") /* zmm6 = sqrtf(B) */
254-
__ASM_EMIT("vcmpps $1, %[CORR_CC], %%zmm7, %%k3") /* k3 = B < 1e-10f */
254+
__ASM_EMIT("vcmpps $1, %[CORR_CC], %%zmm7, %%k3") /* k3 = B < threshold */
255255
__ASM_EMIT("vdivps %%zmm6, %%zmm0, %%zmm0") /* zmm0 = T/sqrtf(B) */
256256
__ASM_EMIT32("mov %[dst], %[ptr]")
257-
__ASM_EMIT("vxorps %%zmm0, %%zmm0, %%zmm0 %{%%k3%}") /* zmm0 = (B < 1e-10f) ? 0 : T/sqrtf(B) */
257+
__ASM_EMIT("vxorps %%zmm0, %%zmm0, %%zmm0 %{%%k3%}") /* zmm0 = (B < threshold) ? 0 : T/sqrtf(B) */
258258
__ASM_EMIT("add $0x40, %[a_head]") /* ++a_head */
259259
__ASM_EMIT("add $0x40, %[b_head]") /* ++b_head */
260260
__ASM_EMIT32("vmovups %%zmm0, 0x00(%[ptr])")
@@ -336,10 +336,10 @@ namespace lsp
336336
__ASM_EMIT64("vmovss %%xmm5, 0x08(%[corr])")
337337

338338
__ASM_EMIT("vsqrtps %%ymm7, %%ymm6") /* ymm6 = sqrtf(B) */
339-
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%ymm7, %%ymm1") /* ymm1 = B >= 1e-10f */
339+
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%ymm7, %%ymm1") /* ymm1 = B >= threshold */
340340
__ASM_EMIT("vdivps %%ymm6, %%ymm0, %%ymm0") /* ymm0 = T/sqrtf(B) */
341341
__ASM_EMIT32("mov %[dst], %[ptr]")
342-
__ASM_EMIT("vandps %%ymm1, %%ymm0, %%ymm0") /* ymm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
342+
__ASM_EMIT("vandps %%ymm1, %%ymm0, %%ymm0") /* ymm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
343343
__ASM_EMIT("add $0x20, %[a_head]") /* ++a_head */
344344
__ASM_EMIT("add $0x20, %[b_head]") /* ++b_head */
345345
__ASM_EMIT32("vmovups %%ymm0, 0x00(%[ptr])")
@@ -405,10 +405,10 @@ namespace lsp
405405
__ASM_EMIT64("vmovss %%xmm5, 0x08(%[corr])")
406406

407407
__ASM_EMIT("vsqrtps %%xmm7, %%xmm6") /* xmm6 = sqrtf(B) */
408-
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%xmm7, %%xmm1") /* xmm1 = B >= 1e-10f */
408+
__ASM_EMIT("vcmpps $5, %[CORR_CC], %%xmm7, %%xmm1") /* xmm1 = B >= threshold */
409409
__ASM_EMIT("vdivps %%xmm6, %%xmm0, %%xmm0") /* xmm0 = T/sqrtf(B) */
410410
__ASM_EMIT32("mov %[dst], %[ptr]")
411-
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
411+
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
412412
__ASM_EMIT("add $0x10, %[a_head]") /* ++a_head */
413413
__ASM_EMIT("add $0x10, %[b_head]") /* ++b_head */
414414
__ASM_EMIT32("vmovups %%xmm0, 0x00(%[ptr])")
@@ -459,10 +459,10 @@ namespace lsp
459459
__ASM_EMIT64("vmovss %%xmm1, 0x08(%[corr])")
460460

461461
__ASM_EMIT("vsqrtss %%xmm7, %%xmm7, %%xmm6") /* xmm6 = sqrtf(B) */
462-
__ASM_EMIT("vcmpss $5, %[CORR_CC], %%xmm7, %%xmm1") /* xmm1 = B >= 1e-10f */
462+
__ASM_EMIT("vcmpss $5, %[CORR_CC], %%xmm7, %%xmm1") /* xmm1 = B >= threshold */
463463
__ASM_EMIT("vdivss %%xmm6, %%xmm2, %%xmm0") /* xmm0 = T/sqrtf(B) */
464464
__ASM_EMIT32("mov %[dst], %[ptr]")
465-
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= 1e-10f) ? T/sqrtf(B) : 0 */
465+
__ASM_EMIT("vandps %%xmm1, %%xmm0, %%xmm0") /* xmm0 = (B >= threshold) ? T/sqrtf(B) : 0 */
466466
__ASM_EMIT("add $0x04, %[a_head]") /* ++a_head */
467467
__ASM_EMIT("add $0x04, %[b_head]") /* ++b_head */
468468
__ASM_EMIT32("vmovss %%xmm0, 0x00(%[ptr])")

0 commit comments

Comments
 (0)