Cannot compile speexdsp 1.2rc3 on ARM64
Evan JIANG <[email protected]> Sun, 29 Mar 2015 02:28:01 +0800
| Newsgroups | gmane.comp.audio.compression.speex.devel |
|---|---|
| Message-ID | <CAAKGWkc9tr36X8V3HFzfV604PD1s0AmkSdp3jBp1-NA6EceYow@mail.gmail.com> |
--===============1314691048172053303==
Content-Type: multipart/alternative; boundary=001a113ff954b1df8205125d6896
--001a113ff954b1df8205125d6896
Content-Type: text/plain; charset=UTF-8
Hi all,
I build successfully with speex-1.2rc2. And with speexdsp 1.2rc3, I
build with i386, X86_64, armv7 and armv7s all passed.
But when I build for ARM64 (for iPhone 6), it failed with:
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in libspeexdsp
CC preprocess.lo
CC jitter.lo
CC mdf.lo
CC fftwrap.lo
CC filterbank.lo
CC resample.lo
In file included from resample.c:104:
./resample_neon.h:134:12: error: unknown register name 'q0' in asm
: "q0");
^
./resample_neon.h:195:13: error: invalid output constraint '+l' in asm
[len] "+l" (len), [remainder] "+l" (remainder)
^
2 errors generated.
make[2]: *** [resample.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
As I googled out, I found it's said:
arm64 has a totally different instruction set.
See: http://people.linaro.org/~rikuvoipio/aarch64-talk/
The NEON assembly code needs a rewrite.
But I'm not familiar with ASM code. Could anyone help to fix that?
Best regards,
Evan JIANG
--001a113ff954b1df8205125d6896
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div><div><div><div><div><div>Hi all,<br></div>=C2=A0=C2=
=A0=C2=A0 I build successfully with speex-1.2rc2. And with speexdsp 1.2rc3,=
I build with i386, X86_64, armv7 and armv7s all passed.<br></div>=C2=A0=C2=
=A0 But when I build for ARM64 (for iPhone 6), it failed with:<br>/Applicat=
ions/Xcode.app/Contents/Developer/usr/bin/make=C2=A0 all-recursive<br>Makin=
g all in libspeexdsp<br>=C2=A0 CC=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 prepr=
ocess.lo<br>=C2=A0 CC=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 jitter.lo<br>=C2=
=A0 CC=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mdf.lo<br>=C2=A0 CC=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 fftwrap.lo<br>=C2=A0 CC=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 filterbank.lo<br>=C2=A0 CC=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 re=
sample.lo<br>In file included from resample.c:104:<br>./resample_neon.h:134=
:12: error: unknown register name 'q0' in asm<br>=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "q0");<br>=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^<br>./resample_neon.h:195:13: erro=
r: invalid output constraint '+l' in asm<br>=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 [len] "+l" (len), [remainder] "+l" (=
remainder)<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 ^<br>2 errors generated.<br>make[2]: *** [resample.lo] Erro=
r 1<br>make[1]: *** [all-recursive] Error 1<br>make: *** [all] Error 2<br><=
br><br></div>As I googled out, I found it's said:<br><br><pre>arm64 has=
a totally different instruction set.
See: <a href=3D"http://people.linaro.org/%7Erikuvoipio/aarch64-talk/" rel=
=3D"nofollow">http://people.linaro.org/~rikuvoipio/aarch64-talk/</a>
The NEON assembly code needs a rewrite.</pre><br><br></div>But I'm not =
familiar with ASM code. Could anyone help to fix that?<br><br></div>Best re=
gards,<br></div>Evan JIANG<br></div>
--001a113ff954b1df8205125d6896--
--===============1314691048172053303==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KU3BlZXgtZGV2
IG1haWxpbmcgbGlzdApTcGVleC1kZXZAeGlwaC5vcmcKaHR0cDovL2xpc3RzLnhpcGgub3JnL21h
aWxtYW4vbGlzdGluZm8vc3BlZXgtZGV2Cg==
--===============1314691048172053303==--