Skip to content

Commit 04de9e1

Browse files
committed
arm_biquad_cascade_df1_32x64_q31: asrl(val, -shift) -> lsll(val, shift)
This code was using asrl with an intentionally negative value. GCC 14 doesn't turn that into a left shift, instead it produces 0 for the result. Use lsll instead to get the desired result. Signed-off-by: Keith Packard <[email protected]>
1 parent 2c014e9 commit 04de9e1

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
354354
vecIn = vld1q(pIn1);
355355
pIn1 += 1;
356356
Yn1 = vmlaldavaq(Yn1, vecIn, vecCoef);
357-
Yn1 = asrl(Yn1, -shift);
357+
Yn1 = lsll(Yn1, shift);
358358
/*
359359
* Store the output in the destination buffer in 1.31 format.
360360
*/
@@ -376,7 +376,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
376376
Yn1 = vmlaldavaq(Yn1, vecIn0, vecCoef);
377377
vecIn = vld1q(pIn1);
378378
pIn1 += 1;
379-
Yn1 = asrl(Yn1, -shift);
379+
Yn1 = lsll(Yn1, shift);
380380
/*
381381
* Store the output in the destination buffer in 1.31 format.
382382
*/
@@ -389,7 +389,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
389389
Yn1 = vmlaldavaq(Yn1, vecIn1, vecCoef);
390390
vecIn0 = vld1q(pIn1);
391391
pIn1 += 1;
392-
Yn1 = asrl(Yn1, -shift);
392+
Yn1 = lsll(Yn1, shift);
393393
*pOut++ = (q31_t) (Yn1 >> 32);
394394

395395
acc = mult32x64(Yn1, a1);
@@ -399,7 +399,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
399399
Yn1 = vmlaldavaq(Yn1, vecIn2, vecCoef);
400400
vecIn1 = vld1q(pIn1);
401401
pIn1 += 1;
402-
Yn1 = asrl(Yn1, -shift);
402+
Yn1 = lsll(Yn1, shift);
403403
*pOut++ = (q31_t) (Yn1 >> 32);
404404

405405
acc = mult32x64(Yn1, a1);
@@ -409,7 +409,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
409409
Yn1 = vmlaldavaq(Yn1, vecIn, vecCoef);
410410
vecIn2 = vld1q(pIn1);
411411
pIn1 += 1;
412-
Yn1 = asrl(Yn1, -shift);
412+
Yn1 = lsll(Yn1, shift);
413413
*pOut++ = (q31_t) (Yn1 >> 32);
414414
/*
415415
* Decrement the loop counter
@@ -433,7 +433,7 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
433433
Yn2 = Yn1;
434434
Yn1 = acc;
435435
Yn1 = vmlaldavaq(Yn1, vecIn0, vecCoef);
436-
Yn1 = asrl(Yn1, -shift);
436+
Yn1 = lsll(Yn1, shift);
437437
*pOut++ = (q31_t) (Yn1 >> 32);
438438
/*
439439
* save input state
@@ -449,15 +449,15 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
449449
Yn2 = Yn1;
450450
Yn1 = acc;
451451
Yn1 = vmlaldavaq(Yn1, vecIn0, vecCoef);
452-
Yn1 = asrl(Yn1, -shift);
452+
Yn1 = lsll(Yn1, shift);
453453
*pOut++ = (q31_t) (Yn1 >> 32);
454454

455455
acc = mult32x64(Yn1, a1);
456456
acc += mult32x64(Yn2, a2);
457457
Yn2 = Yn1;
458458
Yn1 = acc;
459459
Yn1 = vmlaldavaq(Yn1, vecIn1, vecCoef);
460-
Yn1 = asrl(Yn1, -shift);
460+
Yn1 = lsll(Yn1, shift);
461461
*pOut++ = (q31_t) (Yn1 >> 32);
462462
/*
463463
* save input state
@@ -473,23 +473,23 @@ ARM_DSP_ATTRIBUTE void arm_biquad_cas_df1_32x64_q31(
473473
Yn2 = Yn1;
474474
Yn1 = acc;
475475
Yn1 = vmlaldavaq(Yn1, vecIn0, vecCoef);
476-
Yn1 = asrl(Yn1, -shift);
476+
Yn1 = lsll(Yn1, shift);
477477
*pOut++ = (q31_t) (Yn1 >> 32);
478478

479479
acc = mult32x64(Yn1, a1);
480480
acc += mult32x64(Yn2, a2);
481481
Yn2 = Yn1;
482482
Yn1 = acc;
483483
Yn1 = vmlaldavaq(Yn1, vecIn1, vecCoef);
484-
Yn1 = asrl(Yn1, -shift);
484+
Yn1 = lsll(Yn1, shift);
485485
*pOut++ = (q31_t) (Yn1 >> 32);
486486

487487
acc = mult32x64(Yn1, a1);
488488
acc += mult32x64(Yn2, a2);
489489
Yn2 = Yn1;
490490
Yn1 = acc;
491491
Yn1 = vmlaldavaq(Yn1, vecIn2, vecCoef);
492-
Yn1 = asrl(Yn1, -shift);
492+
Yn1 = lsll(Yn1, shift);
493493
*pOut++ = (q31_t) (Yn1 >> 32);
494494
/*
495495
* save input state

0 commit comments

Comments
 (0)