aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>2020-01-31 16:16:19 +0000
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>2020-01-31 16:30:02 +0000
commit90e9955aef9fa64c3c9264d9ee046739cbce0c92 (patch)
tree6f30d3ee5b1fc8e147fea9d2aa15032ed6591e40 /gas/testsuite
parent53943f32ccd38af78b1810bc322399b220272dbb (diff)
downloadfsf-binutils-gdb-90e9955aef9fa64c3c9264d9ee046739cbce0c92.zip
fsf-binutils-gdb-90e9955aef9fa64c3c9264d9ee046739cbce0c92.tar.gz
fsf-binutils-gdb-90e9955aef9fa64c3c9264d9ee046739cbce0c92.tar.bz2
[ARM]: Add support for vldmia/vldmdb/vstmia/vstmdb instructions in MVE.
This patch adds support for assembly instructions vldmia, vldmdb, vstmia and vstmdb in MVE. This instructions are already supported for Armv8-M Floating-point Extension. gas/ChangeLog: 2020-01-31 Srinath Parvathaneni <srinath.parvathaneni@arm.com> * config/tc-arm.c (fldmias): Moved inside "THUMB_VARIANT & arm_ext_v6t2" to support VLDMIA instruction for MVE. (fldmdbs): Moved inside "THUMB_VARIANT & arm_ext_v6t2" to support VLDMDB instruction for MVE. (fstmias): Moved inside "THUMB_VARIANT & arm_ext_v6t2" to support VSTMIA instruction for MVE. (fstmdbs): Moved inside "THUMB_VARIANT & arm_ext_v6t2" to support VSTMDB instruction for MVE. * testsuite/gas/arm/mve-ldst.d: New test. * testsuite/gas/arm/mve-ldst.s: Likewise.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/arm/mve-ldst.d43
-rw-r--r--gas/testsuite/gas/arm/mve-ldst.s13
2 files changed, 56 insertions, 0 deletions
diff --git a/gas/testsuite/gas/arm/mve-ldst.d b/gas/testsuite/gas/arm/mve-ldst.d
new file mode 100644
index 0000000..b676b5c
--- /dev/null
+++ b/gas/testsuite/gas/arm/mve-ldst.d
@@ -0,0 +1,43 @@
+# name: MVE Floating point load multiple and store multiple instructions.
+# as: -march=armv8.1-m.main+mve
+# objdump: -dr --prefix-addresses --show-raw-insn -marmv8.1-m.main
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+[^>]*> ecb0 8a01 vldmia r0!, {s16}
+[^>]*> ed30 8a01 vldmdb r0!, {s16}
+[^>]*> eca0 8a01 vstmia r0!, {s16}
+[^>]*> ed20 8a01 vstmdb r0!, {s16}
+[^>]*> ecb1 8a01 vldmia r1!, {s16}
+[^>]*> ed31 8a01 vldmdb r1!, {s16}
+[^>]*> eca1 8a01 vstmia r1!, {s16}
+[^>]*> ed21 8a01 vstmdb r1!, {s16}
+[^>]*> ecb2 8a01 vldmia r2!, {s16}
+[^>]*> ed32 8a01 vldmdb r2!, {s16}
+[^>]*> eca2 8a01 vstmia r2!, {s16}
+[^>]*> ed22 8a01 vstmdb r2!, {s16}
+[^>]*> ecb4 8a01 vldmia r4!, {s16}
+[^>]*> ed34 8a01 vldmdb r4!, {s16}
+[^>]*> eca4 8a01 vstmia r4!, {s16}
+[^>]*> ed24 8a01 vstmdb r4!, {s16}
+[^>]*> ecb7 8a01 vldmia r7!, {s16}
+[^>]*> ed37 8a01 vldmdb r7!, {s16}
+[^>]*> eca7 8a01 vstmia r7!, {s16}
+[^>]*> ed27 8a01 vstmdb r7!, {s16}
+[^>]*> ecb8 8a01 vldmia r8!, {s16}
+[^>]*> ed38 8a01 vldmdb r8!, {s16}
+[^>]*> eca8 8a01 vstmia r8!, {s16}
+[^>]*> ed28 8a01 vstmdb r8!, {s16}
+[^>]*> ecba 8a01 vldmia sl!, {s16}
+[^>]*> ed3a 8a01 vldmdb sl!, {s16}
+[^>]*> ecaa 8a01 vstmia sl!, {s16}
+[^>]*> ed2a 8a01 vstmdb sl!, {s16}
+[^>]*> ecbc 8a01 vldmia ip!, {s16}
+[^>]*> ed3c 8a01 vldmdb ip!, {s16}
+[^>]*> ecac 8a01 vstmia ip!, {s16}
+[^>]*> ed2c 8a01 vstmdb ip!, {s16}
+[^>]*> ecbe 8a01 vldmia lr!, {s16}
+[^>]*> ed3e 8a01 vldmdb lr!, {s16}
+[^>]*> ecae 8a01 vstmia lr!, {s16}
+[^>]*> ed2e 8a01 vstmdb lr!, {s16}
diff --git a/gas/testsuite/gas/arm/mve-ldst.s b/gas/testsuite/gas/arm/mve-ldst.s
new file mode 100644
index 0000000..c8bbebe
--- /dev/null
+++ b/gas/testsuite/gas/arm/mve-ldst.s
@@ -0,0 +1,13 @@
+.arch armv8.1-m.main
+.arch_extension dsp
+.arch_extension mve
+.syntax unified
+.thumb
+.text
+
+.irp op0, r0, r1, r2, r4, r7, r8, r10, r12, r14
+vldmia.32 \op0!,{s16}
+vldmdb.32 \op0!,{s16}
+vstmia.32 \op0!,{s16}
+vstmdb.32 \op0!,{s16}
+.endr