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 &#39;q0&#39; in asm<br>=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : &quot;q0&quot;);<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 &#39;+l&#39; 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] &quot;+l&quot; (len), [remainder] &quot;+l&quot; (=
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&#39;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&#39;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==--