diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2014-08-20 16:49:53 +0100 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2014-08-20 16:49:53 +0100 |
commit | aacf0b33aa8a55f935be02a6f6a3b3b62f60d14b (patch) | |
tree | 5fcd0110a3d3287ba69953a17d7817bd490f9994 /gas/testsuite | |
parent | 2d5c3743a3a223dc6467ff022124b4f2f1844c91 (diff) | |
download | gdb-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/ChangeLog | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/ual-vcmp.d | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/ual-vcmp.s | 21 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/vcmp-zero-bad.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/vcmp-zero-bad.l | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/vcmp-zero-bad.s | 12 |
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 |