[compiler-rt] r211032 - compiler-rt: prefer thumb over ARM

Saleem Abdulrasool compnerd at compnerd.org
Mon Jun 16 09:05:24 PDT 2014


Author: compnerd
Date: Mon Jun 16 11:05:24 2014
New Revision: 211032

URL: http://llvm.org/viewvc/llvm-project?rev=211032&view=rev
Log:
compiler-rt: prefer thumb over ARM

When possible, use Thumb or Thumb-2 over ARM instructions.  This is particularly
important for pure-Thumb environments (e.g. Windows on ARM).  Although, it is
possible to conditionalise this for that target specifically, this is available
on most newer ARM CPUs, and the code remains compatible with older CPUs with no
adverse effects.  It therefore feels better to always prefer Thumb when
possible.

Modified:
    compiler-rt/trunk/lib/builtins/arm/bswapdi2.S
    compiler-rt/trunk/lib/builtins/arm/bswapsi2.S
    compiler-rt/trunk/lib/builtins/arm/clzdi2.S
    compiler-rt/trunk/lib/builtins/arm/clzsi2.S
    compiler-rt/trunk/lib/builtins/arm/divmodsi4.S
    compiler-rt/trunk/lib/builtins/arm/divsi3.S
    compiler-rt/trunk/lib/builtins/arm/modsi3.S
    compiler-rt/trunk/lib/builtins/arm/udivmodsi4.S
    compiler-rt/trunk/lib/builtins/arm/udivsi3.S
    compiler-rt/trunk/lib/builtins/arm/umodsi3.S

Modified: compiler-rt/trunk/lib/builtins/arm/bswapdi2.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/bswapdi2.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/bswapdi2.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/bswapdi2.S Mon Jun 16 11:05:24 2014
@@ -11,6 +11,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 //
 // extern uint64_t __bswapdi2(uint64_t);

Modified: compiler-rt/trunk/lib/builtins/arm/bswapsi2.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/bswapsi2.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/bswapsi2.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/bswapsi2.S Mon Jun 16 11:05:24 2014
@@ -11,6 +11,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 //
 // extern uint32_t __bswapsi2(uint32_t);

Modified: compiler-rt/trunk/lib/builtins/arm/clzdi2.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/clzdi2.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/clzdi2.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/clzdi2.S Mon Jun 16 11:05:24 2014
@@ -15,6 +15,10 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
+
 
 	.p2align	2
 DEFINE_COMPILERRT_FUNCTION(__clzdi2)

Modified: compiler-rt/trunk/lib/builtins/arm/clzsi2.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/clzsi2.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/clzsi2.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/clzsi2.S Mon Jun 16 11:05:24 2014
@@ -15,6 +15,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align	2
 DEFINE_COMPILERRT_FUNCTION(__clzsi2)

Modified: compiler-rt/trunk/lib/builtins/arm/divmodsi4.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/divmodsi4.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/divmodsi4.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/divmodsi4.S Mon Jun 16 11:05:24 2014
@@ -23,6 +23,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 3
 DEFINE_COMPILERRT_FUNCTION(__divmodsi4)

Modified: compiler-rt/trunk/lib/builtins/arm/divsi3.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/divsi3.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/divsi3.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/divsi3.S Mon Jun 16 11:05:24 2014
@@ -22,6 +22,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 3
 // Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same routine.

Modified: compiler-rt/trunk/lib/builtins/arm/modsi3.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/modsi3.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/modsi3.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/modsi3.S Mon Jun 16 11:05:24 2014
@@ -22,6 +22,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 3
 DEFINE_COMPILERRT_FUNCTION(__modsi3)

Modified: compiler-rt/trunk/lib/builtins/arm/udivmodsi4.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/udivmodsi4.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/udivmodsi4.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/udivmodsi4.S Mon Jun 16 11:05:24 2014
@@ -16,6 +16,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__udivmodsi4)

Modified: compiler-rt/trunk/lib/builtins/arm/udivsi3.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/udivsi3.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/udivsi3.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/udivsi3.S Mon Jun 16 11:05:24 2014
@@ -16,6 +16,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 2
 DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_uidiv, __udivsi3)

Modified: compiler-rt/trunk/lib/builtins/arm/umodsi3.S
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/umodsi3.S?rev=211032&r1=211031&r2=211032&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/umodsi3.S (original)
+++ compiler-rt/trunk/lib/builtins/arm/umodsi3.S Mon Jun 16 11:05:24 2014
@@ -16,6 +16,9 @@
 
 	.syntax unified
 	.text
+#if __ARM_ARCH_ISA_THUMB == 2
+	.thumb
+#endif
 
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__umodsi3)





More information about the llvm-commits mailing list