[cfe-dev] compiler-rt non-neon builds are still broken
İsmail Dönmez
ismail at donmez.ws
Sun Dec 14 10:46:45 PST 2014
On Sun, Dec 14, 2014 at 8:29 PM, Renato Golin <renato.golin at linaro.org> wrote:
> On 14 December 2014 at 18:18, İsmail Dönmez <ismail at donmez.ws> wrote:
>> This might be true but gcc compiles this fine so at least there might
>> be an ASM parser bug.
>
> It's not, that change was intentional... ARM is deprecating
> co-processor handling where VFP/NEON instructions should be used.
>
> That's why we need the ifdef. We just need to get that right...
Something like this ?
Index: src/Unwind/UnwindRegistersRestore.S
===================================================================
--- src/Unwind/UnwindRegistersRestore.S (revision 224213)
+++ src/Unwind/UnwindRegistersRestore.S (working copy)
@@ -389,8 +389,8 @@
@
.p2align 2
DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind13Registers_arm12restoreVFPv3EPy)
-#if defined(__ARM_FP)
-#ifndef __ARM_NEON
+#if defined(__ARM_NEON)
+#if __ARM_ARCH < 7
ldcl p11, cr0, [r0], {0x20} @ vldm r0, {d16-d31}
#else
vldmia r0, {d16-d31}
Index: src/Unwind/UnwindRegistersSave.S
===================================================================
--- src/Unwind/UnwindRegistersSave.S (revision 224213)
+++ src/Unwind/UnwindRegistersSave.S (working copy)
@@ -361,7 +361,7 @@
@
.p2align 2
DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind13Registers_arm9saveVFPv3EPy)
-#if defined(__ARM_FP)
+#if defined(__ARM_NEON)
@ VFP and iwMMX instructions are only available when compiling with the flags
@ that enable them. We do not want to do that in the library
(because we do not
@ want the compiler to generate instructions that access those) but this is
@@ -369,7 +369,7 @@
@ these registers implies they are, actually, available on the target, so
@ it's ok to execute.
@ So, generate the instructions using the corresponding coprocessor mnemonic.
-#ifndef __ARM_NEON
+#if __ARM_ARCH < 7
stcl p11, cr0, [r0], {0x20} @ vstm r0, {d16-d31}
#else
vstmia r0, {d16-d31}
More information about the cfe-dev
mailing list