aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2017-12-19 12:04:13 +0000
committerTamar Christina <tamar.christina@arm.com>2017-12-19 12:19:15 +0000
commita3b3345ae62503982698171bcfce0afe23bd8a31 (patch)
tree3d456a11868c44ea882e3490e6c157d8a6c525f7 /gas/testsuite
parentbef7475fbda88374ca488b0acbbfe1d3d4ab3e5f (diff)
downloadgdb-a3b3345ae62503982698171bcfce0afe23bd8a31.zip
gdb-a3b3345ae62503982698171bcfce0afe23bd8a31.tar.gz
gdb-a3b3345ae62503982698171bcfce0afe23bd8a31.tar.bz2
Add support for V_4B so we can properly reject it.
Previously parse_vector_type_for_operand was changed to allow the use of 4b register size for indexed lane instructions. However this had the unintended side effect of also allowing 4b for normal vector registers. Because this support was only partial the rest of the tool silently treated 4b as 8b and continued. This patch adds full support for 4b so it can be properly distinguished from 8b and the correct errors are generated. With this patch you still can't encode any instruction which actually requires v<num>.4b but such instructions don't exist so to prevent needing a workaround in get_vreg_qualifier_from_value this was just omitted. gas/ PR gas/22529 * config/tc-aarch64.c (vectype_to_qualifier): Support AARCH64_OPND_QLF_V_4B. * gas/testsuite/gas/aarch64/pr22529.s: New. * gas/testsuite/gas/aarch64/pr22529.d: New. * gas/testsuite/gas/aarch64/pr22529.l: New. include/ PR gas/22529 * opcode/aarch64.h (aarch64_opnd_qualifier): Add AARCH64_OPND_QLF_V_4B. opcodes/ PR gas/22529 * aarch64-opc.c (aarch64_opnd_qualifiers): Add 4b variant.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/aarch64/pr22529.d4
-rw-r--r--gas/testsuite/gas/aarch64/pr22529.l17
-rw-r--r--gas/testsuite/gas/aarch64/pr22529.s3
3 files changed, 24 insertions, 0 deletions
diff --git a/gas/testsuite/gas/aarch64/pr22529.d b/gas/testsuite/gas/aarch64/pr22529.d
new file mode 100644
index 0000000..1fd0d85
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/pr22529.d
@@ -0,0 +1,4 @@
+#as: -march=armv8.4-a
+#source: pr22529.s
+#error-output: pr22529.l
+
diff --git a/gas/testsuite/gas/aarch64/pr22529.l b/gas/testsuite/gas/aarch64/pr22529.l
new file mode 100644
index 0000000..646e00a
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/pr22529.l
@@ -0,0 +1,17 @@
+[^:]*: Assembler messages:
+[^:]*:1: Error: operand mismatch -- `udot v0\.2s,v1\.8b,v2\.4b'
+[^:]*:1: Info: did you mean this\?
+[^:]*:1: Info: udot v0\.2s, v1\.8b, v2\.8b
+[^:]*:1: Info: other valid variant\(s\):
+[^:]*:1: Info: udot v0\.4s, v1\.16b, v2\.16b
+[^:]*:2: Error: operand mismatch -- `udot v0\.2s,v1\.4b,v2\.8b'
+[^:]*:2: Info: did you mean this\?
+[^:]*:2: Info: udot v0\.2s, v1\.8b, v2\.8b
+[^:]*:2: Info: other valid variant\(s\):
+[^:]*:2: Info: udot v0\.4s, v1\.16b, v2\.16b
+[^:]*:3: Error: operand mismatch -- `udot v0\.2s,v1\.4b,v2\.4b'
+[^:]*:3: Info: did you mean this\?
+[^:]*:3: Info: udot v0\.2s, v1\.8b, v2\.8b
+[^:]*:3: Info: other valid variant\(s\):
+[^:]*:3: Info: udot v0\.4s, v1\.16b, v2\.16b
+
diff --git a/gas/testsuite/gas/aarch64/pr22529.s b/gas/testsuite/gas/aarch64/pr22529.s
new file mode 100644
index 0000000..f87b897
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/pr22529.s
@@ -0,0 +1,3 @@
+udot v0.2s, v1.8b, v2.4b
+udot v0.2s, v1.4b, v2.8b
+udot v0.2s, v1.4b, v2.4b