[PATCH] D36762: [Builtins][ARM] Force ARM state for bswap for pre-ARMv6

Weiming Zhao via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 15 11:45:46 PDT 2017


weimingz created this revision.
Herald added subscribers: kristof.beyls, javed.absar, aemerson.

The instructions for bswp guarded by "__ARM_ARCH < 6" is ARM code.  E.g., bic (immediate),  eor (register-shifted register).
This patch forces ARM state even if -mthumb is used (e.g. -mthumb is passed as a global option by build system)


https://reviews.llvm.org/D36762

Files:
  lib/builtins/arm/bswapdi2.S
  lib/builtins/arm/bswapsi2.S


Index: lib/builtins/arm/bswapsi2.S
===================================================================
--- lib/builtins/arm/bswapsi2.S
+++ lib/builtins/arm/bswapsi2.S
@@ -22,6 +22,7 @@
 DEFINE_COMPILERRT_FUNCTION(__bswapsi2)
 #if __ARM_ARCH < 6
     // before armv6 does not have "rev" instruction
+	.arm
  	eor	r1, r0, r0, ror #16
  	bic	r1, r1, #0xff0000
  	mov	r1, r1, lsr #8
Index: lib/builtins/arm/bswapdi2.S
===================================================================
--- lib/builtins/arm/bswapdi2.S
+++ lib/builtins/arm/bswapdi2.S
@@ -23,6 +23,7 @@
 #if __ARM_ARCH < 6
     // before armv6 does not have "rev" instruction
     // r2 = rev(r0)
+    .arm
     eor r2, r0, r0, ror #16
     bic r2, r2, #0xff0000
     mov r2, r2, lsr #8


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36762.111218.patch
Type: text/x-patch
Size: 748 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170815/0d22b3f7/attachment.bin>


More information about the llvm-commits mailing list