aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2014-08-20 16:49:53 +0100
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2014-08-20 16:49:53 +0100
commitaacf0b33aa8a55f935be02a6f6a3b3b62f60d14b (patch)
tree5fcd0110a3d3287ba69953a17d7817bd490f9994 /gas/testsuite
parent2d5c3743a3a223dc6467ff022124b4f2f1844c91 (diff)
downloadgdb-aacf0b33aa8a55f935be02a6f6a3b3b62f60d14b.zip
gdb-aacf0b33aa8a55f935be02a6f6a3b3b62f60d14b.tar.gz
gdb-aacf0b33aa8a55f935be02a6f6a3b3b62f60d14b.tar.bz2
[ARM] Fix vcmp with #0.0
* config/tc-arm.c (parse_ifimm_zero): New function. (enum operand_parse_code): Add OP_RSVD_FI0 value. (parse_operands): Handle OP_RSVD_FI0. (asm_opcode_insns): Use RSVD_FI0 for second operand of vcmp, vcmpe. * gas/arm/ual-vcmp.s: New file. * gas/arm/ual-vcmp.d: Likewise. * gas/arm/vcmp-zero-bad.s: Likewise. * gas/arm/vcmp-zero-bad.d: Likewise. * gas/arm/vcmp-zero-bad.l: Likewise.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/ChangeLog8
-rw-r--r--gas/testsuite/gas/arm/ual-vcmp.d24
-rw-r--r--gas/testsuite/gas/arm/ual-vcmp.s21
-rw-r--r--gas/testsuite/gas/arm/vcmp-zero-bad.d4
-rw-r--r--gas/testsuite/gas/arm/vcmp-zero-bad.l8
-rw-r--r--gas/testsuite/gas/arm/vcmp-zero-bad.s12
6 files changed, 77 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 79aad54..ad41e0f 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2014-08-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * gas/arm/ual-vcmp.s: New file.
+ * gas/arm/ual-vcmp.d: Likewise.
+ * gas/arm/vcmp-zero-bad.s: Likewise.
+ * gas/arm/vcmp-zero-bad.d: Likewise.
+ * gas/arm/vcmp-zero-bad.l: Likewise.
+
2014-08-13 Mike Frysinger <vapier@gentoo.org>
* gas/bfin/parallel_illegal.d: Add missing semicolons.
diff --git a/gas/testsuite/gas/arm/ual-vcmp.d b/gas/testsuite/gas/arm/ual-vcmp.d
new file mode 100644
index 0000000..2e9fb3d
--- /dev/null
+++ b/gas/testsuite/gas/arm/ual-vcmp.d
@@ -0,0 +1,24 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: UAL vcmp with 0
+#as: -mfpu=vfpv3
+
+.*: +file format .*arm.*
+
+
+Disassembly of section .text:
+0+000 <[^>]*> eeb50a40 vcmp.f32 s0, #0.0
+0+004 <[^>]*> eef50a40 vcmp.f32 s1, #0.0
+0+008 <[^>]*> eef51ac0 vcmpe.f32 s3, #0.0
+0+00c <[^>]*> eeb52ac0 vcmpe.f32 s4, #0.0
+0+010 <[^>]*> eef52a40 vcmp.f32 s5, #0.0
+0+014 <[^>]*> eeb53a40 vcmp.f32 s6, #0.0
+0+018 <[^>]*> eef53ac0 vcmpe.f32 s7, #0.0
+0+01c <[^>]*> eeb54ac0 vcmpe.f32 s8, #0.0
+0+020 <[^>]*> eeb50b40 vcmp.f64 d0, #0.0
+0+024 <[^>]*> eeb51b40 vcmp.f64 d1, #0.0
+0+028 <[^>]*> eeb52bc0 vcmpe.f64 d2, #0.0
+0+02c <[^>]*> eeb53bc0 vcmpe.f64 d3, #0.0
+0+030 <[^>]*> eeb54b40 vcmp.f64 d4, #0.0
+0+034 <[^>]*> eeb55b40 vcmp.f64 d5, #0.0
+0+038 <[^>]*> eeb56bc0 vcmpe.f64 d6, #0.0
+0+03c <[^>]*> eeb57bc0 vcmpe.f64 d7, #0.0 \ No newline at end of file
diff --git a/gas/testsuite/gas/arm/ual-vcmp.s b/gas/testsuite/gas/arm/ual-vcmp.s
new file mode 100644
index 0000000..79efa4e
--- /dev/null
+++ b/gas/testsuite/gas/arm/ual-vcmp.s
@@ -0,0 +1,21 @@
+.text
+.arm
+.syntax unified
+
+vcmp.f32 s0, #0.0
+vcmp.f32 s1, #0
+vcmpe.f32 s3, #0.0
+vcmpe.f32 s4, #0
+vcmp.f32 s5, #0.0e2
+vcmp.f32 s6, #0e-3
+vcmpe.f32 s7, #0.0000
+vcmpe.f32 s8, #.0
+
+vcmp.f64 d0, #0.0
+vcmp.f64 d1, #0
+vcmpe.f64 d2, #0.0
+vcmpe.f64 d3, #0
+vcmp.f64 d4, #0.0e5
+vcmp.f64 d5, #0e-2
+vcmpe.f64 d6, #0.00
+vcmpe.f64 d7, #.0
diff --git a/gas/testsuite/gas/arm/vcmp-zero-bad.d b/gas/testsuite/gas/arm/vcmp-zero-bad.d
new file mode 100644
index 0000000..806cf00
--- /dev/null
+++ b/gas/testsuite/gas/arm/vcmp-zero-bad.d
@@ -0,0 +1,4 @@
+# name: UAL vcmp with #0.0 bad instructions.
+# as: -mfpu=vfpv3
+# source: vcmp-zero-bad.s
+# error-output: vcmp-zero-bad.l
diff --git a/gas/testsuite/gas/arm/vcmp-zero-bad.l b/gas/testsuite/gas/arm/vcmp-zero-bad.l
new file mode 100644
index 0000000..975d02b
--- /dev/null
+++ b/gas/testsuite/gas/arm/vcmp-zero-bad.l
@@ -0,0 +1,8 @@
+[^:]*: Assembler messages:
+[^:]*:5: Error: only floating point zero is allowed as immediate value -- `vcmp.f32 s0,#0.01'
+[^:]*:6: Error: only floating point zero is allowed as immediate value -- `vcmp.f32 s1,#2'
+[^:]*:7: Error: only floating point zero is allowed as immediate value -- `vcmpe.f32 s3,5'
+[^:]*:8: Error: only floating point zero is allowed as immediate value -- `vcmpe.f32 s4,#-0.0'
+[^:]*:10: Error: only floating point zero is allowed as immediate value -- `vcmp.f64 d0,#-1'
+[^:]*:11: Error: garbage following instruction -- `vcmpe.f64 d3,#0x35'
+[^:]*:12: Error: only floating point zero is allowed as immediate value -- `vcmpe.f64 d4,0xf'
diff --git a/gas/testsuite/gas/arm/vcmp-zero-bad.s b/gas/testsuite/gas/arm/vcmp-zero-bad.s
new file mode 100644
index 0000000..3be79cb
--- /dev/null
+++ b/gas/testsuite/gas/arm/vcmp-zero-bad.s
@@ -0,0 +1,12 @@
+.text
+.arm
+.syntax unified
+
+vcmp.f32 s0, #0.01
+vcmp.f32 s1, #2
+vcmpe.f32 s3, 5
+vcmpe.f32 s4, #-0.0
+
+vcmp.f64 d0, #-1
+vcmpe.f64 d3, #0x35
+vcmpe.f64 d4, 0xf