[compiler-rt] r303765 - Allow armv{7,7s,7k,7m,7em} builds
Jonathan Roelofs via llvm-commits
llvm-commits at lists.llvm.org
Wed May 24 08:53:24 PDT 2017
Author: jroelofs
Date: Wed May 24 10:53:24 2017
New Revision: 303765
URL: http://llvm.org/viewvc/llvm-project?rev=303765&view=rev
Log:
Allow armv{7,7s,7k,7m,7em} builds
Modified:
compiler-rt/trunk/cmake/builtin-config-ix.cmake
compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmp.S
compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmp.S
compiler-rt/trunk/lib/builtins/arm/eqdf2vfp.S
compiler-rt/trunk/lib/builtins/arm/eqsf2vfp.S
compiler-rt/trunk/lib/builtins/arm/gedf2vfp.S
compiler-rt/trunk/lib/builtins/arm/gesf2vfp.S
compiler-rt/trunk/lib/builtins/arm/gtdf2vfp.S
compiler-rt/trunk/lib/builtins/arm/gtsf2vfp.S
compiler-rt/trunk/lib/builtins/arm/ledf2vfp.S
compiler-rt/trunk/lib/builtins/arm/lesf2vfp.S
compiler-rt/trunk/lib/builtins/arm/ltdf2vfp.S
compiler-rt/trunk/lib/builtins/arm/ltsf2vfp.S
compiler-rt/trunk/lib/builtins/arm/nedf2vfp.S
compiler-rt/trunk/lib/builtins/arm/nesf2vfp.S
compiler-rt/trunk/lib/builtins/arm/unorddf2vfp.S
compiler-rt/trunk/lib/builtins/arm/unordsf2vfp.S
compiler-rt/trunk/lib/builtins/assembly.h
Modified: compiler-rt/trunk/cmake/builtin-config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/builtin-config-ix.cmake?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/cmake/builtin-config-ix.cmake (original)
+++ compiler-rt/trunk/cmake/builtin-config-ix.cmake Wed May 24 10:53:24 2017
@@ -24,7 +24,7 @@ int foo(int x, int y) {
set(ARM64 aarch64)
-set(ARM32 arm armhf armv6m)
+set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k)
set(X86 i386 i686)
set(X86_64 x86_64)
set(MIPS32 mips mipsel)
Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmp.S Wed May 24 10:53:24 2017
@@ -48,7 +48,12 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmp
// NaN has been ruled out, so __aeabi_cdcmple can't trap
bne __aeabi_cdcmple
+#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
+ mov ip, #APSR_C
+ msr APSR_nzcvq, ip
+#else
msr CPSR_f, #APSR_C
+#endif
JMP(lr)
#endif
END_COMPILERRT_FUNCTION(__aeabi_cdcmpeq)
@@ -95,17 +100,23 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmp
lsls r0, r0, #31
pop {r0-r3, pc}
#else
+ ITT(eq)
moveq ip, #0
beq 1f
ldm sp, {r0-r3}
bl __aeabi_dcmpeq
cmp r0, #1
+ ITE(eq)
moveq ip, #(APSR_C | APSR_Z)
movne ip, #(APSR_C)
1:
+#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
+ msr APSR_nzcvq, ip
+#else
msr CPSR_f, ip
+#endif
pop {r0-r3}
POP_PC()
#endif
Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmp.S Wed May 24 10:53:24 2017
@@ -48,7 +48,12 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cfcmp
// NaN has been ruled out, so __aeabi_cfcmple can't trap
bne __aeabi_cfcmple
+#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
+ mov ip, #APSR_C
+ msr APSR_nzcvq, ip
+#else
msr CPSR_f, #APSR_C
+#endif
JMP(lr)
#endif
END_COMPILERRT_FUNCTION(__aeabi_cfcmpeq)
@@ -95,17 +100,23 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cfcmp
lsls r0, r0, #31
pop {r0-r3, pc}
#else
+ ITT(eq)
moveq ip, #0
beq 1f
ldm sp, {r0-r3}
bl __aeabi_fcmpeq
cmp r0, #1
+ ITE(eq)
moveq ip, #(APSR_C | APSR_Z)
movne ip, #(APSR_C)
1:
+#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
+ msr APSR_nzcvq, ip
+#else
msr CPSR_f, ip
+#endif
pop {r0-r3}
POP_PC()
#endif
Modified: compiler-rt/trunk/lib/builtins/arm/eqdf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/eqdf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/eqdf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/eqdf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(eq)
moveq r0, #1 // set result register to 1 if equal
movne r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/eqsf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/eqsf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/eqsf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/eqsf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(eq)
moveq r0, #1 // set result register to 1 if equal
movne r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/gedf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/gedf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/gedf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/gedf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gedf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ge)
movge r0, #1 // set result register to 1 if greater than or equal
movlt r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/gesf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/gesf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/gesf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/gesf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gesf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ge)
movge r0, #1 // set result register to 1 if greater than or equal
movlt r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/gtdf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/gtdf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/gtdf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/gtdf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(gt)
movgt r0, #1 // set result register to 1 if equal
movle r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/gtsf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/gtsf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/gtsf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/gtsf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(gt)
movgt r0, #1 // set result register to 1 if equal
movle r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/ledf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/ledf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/ledf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/ledf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ledf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ls)
movls r0, #1 // set result register to 1 if equal
movhi r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/lesf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/lesf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/lesf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/lesf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__lesf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ls)
movls r0, #1 // set result register to 1 if equal
movhi r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/ltdf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/ltdf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/ltdf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/ltdf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(mi)
movmi r0, #1 // set result register to 1 if equal
movpl r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/ltsf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/ltsf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/ltsf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/ltsf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(mi)
movmi r0, #1 // set result register to 1 if equal
movpl r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/nedf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/nedf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/nedf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/nedf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__nedf2vfp)
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ne)
movne r0, #1 // set result register to 0 if unequal
moveq r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/nesf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/nesf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/nesf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/nesf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2vfp)
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(ne)
movne r0, #1 // set result register to 1 if unequal
moveq r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/unorddf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/unorddf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/unorddf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/unorddf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp
vcmp.f64 d6, d7
#endif
vmrs apsr_nzcv, fpscr
+ ITE(vs)
movvs r0, #1 // set result register to 1 if "overflow" (any NaNs)
movvc r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/arm/unordsf2vfp.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/unordsf2vfp.S?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/unordsf2vfp.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/unordsf2vfp.S Wed May 24 10:53:24 2017
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp
vcmp.f32 s14, s15
#endif
vmrs apsr_nzcv, fpscr
+ ITE(vs)
movvs r0, #1 // set result register to 1 if "overflow" (any NaNs)
movvc r0, #0
bx lr
Modified: compiler-rt/trunk/lib/builtins/assembly.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/assembly.h?rev=303765&r1=303764&r2=303765&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/assembly.h (original)
+++ compiler-rt/trunk/lib/builtins/assembly.h Wed May 24 10:53:24 2017
@@ -96,9 +96,11 @@
#if __ARM_ARCH_ISA_THUMB == 2
#define IT(cond) it cond
#define ITT(cond) itt cond
+#define ITE(cond) ite cond
#else
#define IT(cond)
#define ITT(cond)
+#define ITE(cond)
#endif
#if __ARM_ARCH_ISA_THUMB == 2
More information about the llvm-commits
mailing list