summaryrefslogtreecommitdiff
path: root/test/MC/ARM
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2013-12-29 17:58:35 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2013-12-29 17:58:35 +0000
commitdd2836776f435d4b6de8d780228d02da15c37e7f (patch)
treeb590a63a75333b7fe300e24b1f61547ae10a0608 /test/MC/ARM
parenta4f62f85a2b5613fc4c0c04114843f03361a85ad (diff)
downloadllvm-dd2836776f435d4b6de8d780228d02da15c37e7f.tar.gz
llvm-dd2836776f435d4b6de8d780228d02da15c37e7f.tar.bz2
llvm-dd2836776f435d4b6de8d780228d02da15c37e7f.tar.xz
ARM: provide VFP aliases for pre-V6 mnemonics
In order to provide compatibility with the GNU assembler, provide aliases for pre-UAL mnemonics for floating point operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198172 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/ARM')
-rw-r--r--test/MC/ARM/vfp-aliases-diagnostics.s97
-rw-r--r--test/MC/ARM/vfp-aliases.s53
2 files changed, 150 insertions, 0 deletions
diff --git a/test/MC/ARM/vfp-aliases-diagnostics.s b/test/MC/ARM/vfp-aliases-diagnostics.s
new file mode 100644
index 0000000000..911c23b235
--- /dev/null
+++ b/test/MC/ARM/vfp-aliases-diagnostics.s
@@ -0,0 +1,97 @@
+@ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null %s 2>&1 \
+@ RUN: | FileCheck %s
+
+ .syntax unified
+ .fpu vfp
+
+ .type aliases,%function
+aliases:
+ fstmfdd sp!, {s0}
+ fstmead sp!, {s0}
+ fstmdbd sp!, {s0}
+ fstmiad sp!, {s0}
+ fstmfds sp!, {d0}
+ fstmeas sp!, {d0}
+ fstmdbs sp!, {d0}
+ fstmias sp!, {d0}
+
+ fldmias sp!, {d0}
+ fldmdbs sp!, {d0}
+ fldmeas sp!, {d0}
+ fldmfds sp!, {d0}
+ fldmiad sp!, {s0}
+ fldmdbd sp!, {s0}
+ fldmead sp!, {s0}
+ fldmfdd sp!, {s0}
+
+ fstmeax sp!, {s0}
+ fldmfdx sp!, {s0}
+
+ fstmfdx sp!, {s0}
+ fldmeax sp!, {s0}
+
+@ CHECK-LABEL: aliases
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmfdd sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmead sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmdbd sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmiad sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fstmfds sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fstmeas sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fstmdbs sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fstmias sp!, {d0}
+@ CHECK: ^
+
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fldmias sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fldmdbs sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fldmeas sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon single precision register expected
+@ CHECK: fldmfds sp!, {d0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmiad sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmdbd sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmead sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmfdd sp!, {s0}
+@ CHECK: ^
+
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmeax sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmfdx sp!, {s0}
+@ CHECK: ^
+
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fstmfdx sp!, {s0}
+@ CHECK: ^
+@ CHECK: error: VFP/Neon double precision register expected
+@ CHECK: fldmeax sp!, {s0}
+@ CHECK: ^
+
diff --git a/test/MC/ARM/vfp-aliases.s b/test/MC/ARM/vfp-aliases.s
new file mode 100644
index 0000000000..1ed6e53b80
--- /dev/null
+++ b/test/MC/ARM/vfp-aliases.s
@@ -0,0 +1,53 @@
+@ RUN: llvm-mc -triple armv7-eabi -filetype asm -o - %s | FileCheck %s
+
+ .syntax unified
+ .fpu vfp
+
+ .type aliases,%function
+aliases:
+ fstmfdd sp!, {d0}
+ fstmead sp!, {d0}
+ fstmdbd sp!, {d0}
+ fstmiad sp!, {d0}
+ fstmfds sp!, {s0}
+ fstmeas sp!, {s0}
+ fstmdbs sp!, {s0}
+ fstmias sp!, {s0}
+
+ fldmias sp!, {s0}
+ fldmdbs sp!, {s0}
+ fldmeas sp!, {s0}
+ fldmfds sp!, {s0}
+ fldmiad sp!, {d0}
+ fldmdbd sp!, {d0}
+ fldmead sp!, {d0}
+ fldmfdd sp!, {d0}
+
+ fstmeax sp!, {d0}
+ fldmfdx sp!, {d0}
+
+ fstmfdx sp!, {d0}
+ fldmeax sp!, {d0}
+
+@ CHECK-LABEL: aliases
+@ CHECK: vpush {d0}
+@ CHECK: vstmia sp!, {d0}
+@ CHECK: vpush {d0}
+@ CHECK: vstmia sp!, {d0}
+@ CHECK: vpush {s0}
+@ CHECK: vstmia sp!, {s0}
+@ CHECK: vpush {s0}
+@ CHECK: vstmia sp!, {s0}
+@ CHECK: vpop {s0}
+@ CHECK: vldmdb sp!, {s0}
+@ CHECK: vldmdb sp!, {s0}
+@ CHECK: vpop {s0}
+@ CHECK: vpop {d0}
+@ CHECK: vldmdb sp!, {d0}
+@ CHECK: vldmdb sp!, {d0}
+@ CHECK: vpop {d0}
+@ CHECK: fstmiax sp!, {d0}
+@ CHECK: fldmiax sp!, {d0}
+@ CHECK: fstmdbx sp!, {d0}
+@ CHECK: fldmdbx sp!, {d0}
+