[compiler-rt] [compiler-rt] Make Arm builtins aware of endianness in VMOVs (PR #123204)

Peter Smith via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 20 08:57:55 PST 2025


================
@@ -24,7 +24,7 @@ DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp)
 #else
 	vmov	s15, r0        // move int to float register s15
 	vcvt.f64.u32 d7, s15   // convert 32-bit int in s15 to double in d7
-	vmov	r0, r1, d7     // move d7 to result register pair r0/r1
+	VMOV_FROM_DOUBLE(r0, r1, r7) // move d7 to result register pair r0/r1
----------------
smithp35 wrote:

It looks like the compiler-rt test suite would have caught this if it were built and run on exactly the right target with test/floatunssidfvfp_test.c 

It looks like the little-endian side should be tested via the clang-armv7-2stage https://lab.llvm.org/buildbot/#/builders/79  as that will run the compiler-rt unit tests directly.

Testing big-endian is more difficult as we'd likely need to find a very old linux big-endian eabihf sysroot and use qemu-arm as our test executor. 

https://github.com/llvm/llvm-project/pull/123204


More information about the llvm-commits mailing list