Skip to content

Commit 03dad79

Browse files
committed
Modify spl_inl.h to build on ARMv5/6. Credit to Shellnutt2 for this fix.
1 parent 4b6dc1e commit 03dad79

File tree

1 file changed

+12
-3
lines changed
  • src/common_audio/signal_processing_library/main/interface

1 file changed

+12
-3
lines changed

src/common_audio/signal_processing_library/main/interface/spl_inl.h

+12-3
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,19 @@
1919

2020
#ifdef WEBRTC_ANDROID
2121

22+
__asm (
23+
// On Android gcc compiler, the clz instruction is not supported with a
24+
// target smaller than armv7, despite it being legal for armv5+.
25+
" .arch armv7-a\n"
26+
//" clz %0, %1 \n"
27+
//"=r" (leading_zeroes)
28+
//"r" (data)
29+
);
30+
2231
WEBRTC_INLINE WebRtc_Word32 WEBRTC_SPL_MUL(WebRtc_Word32 a, WebRtc_Word32 b)
2332
{
2433
WebRtc_Word32 tmp;
25-
__asm__("mul %0, %1, %2":"=r"(tmp):"r"(a), "r"(b));
34+
__asm__("smmul %0, %1, %2":"=r"(tmp):"r"(a), "r"(b)); //changed mul to smmul.
2635
return tmp;
2736
}
2837

@@ -66,7 +75,7 @@ WEBRTC_INLINE WebRtc_Word16 WebRtcSpl_AddSatW16(WebRtc_Word16 a,
6675
{
6776
WebRtc_Word32 s_sum;
6877

69-
__asm__("qadd16 %0, %1, %2":"=r"(s_sum):"r"(a), "r"(b));
78+
__asm__("qadd %0, %1, %2":"=r"(s_sum):"r"(a), "r"(b));
7079

7180
return (WebRtc_Word16) s_sum;
7281
}
@@ -86,7 +95,7 @@ WEBRTC_INLINE WebRtc_Word16 WebRtcSpl_SubSatW16(WebRtc_Word16 var1,
8695
{
8796
WebRtc_Word32 s_sub;
8897

89-
__asm__("qsub16 %0, %1, %2":"=r"(s_sub):"r"(var1), "r"(var2));
98+
__asm__("qsub %0, %1, %2":"=r"(s_sub):"r"(var1), "r"(var2));
9099

91100
return (WebRtc_Word16)s_sub;
92101
}

0 commit comments

Comments
 (0)