[PATCH v2] arm: don't silently accept certain wrong VST4 variants
Jan Beulich
JBeulich@suse.com
Tue Apr 9 09:51:00 GMT 2013
VST4 with operands matching VLD4's "single element to all lanes" assembled
silently to opcode 0xffffffff, and other VSTn variants produced unrelated
errors.
gas/
2013-04-09 Jan Beulich <jbeulich@suse.com>
* gas/config/tc-arm.c (do_neon_ldx_stx): Reject VSTn in the
NEON_ALL_LANES case.
gas/testsuite/
2013-04-09 Jan Beulich <jbeulich@suse.com>
* gas/arm/neon-addressing-bad.s: Add test for further invalid VST
operands.
* gas/arm/neon-addressing-bad.l: Update accordingly.
--- 2013-04-08/gas/config/tc-arm.c
+++ 2013-04-08/gas/config/tc-arm.c
@@ -15999,6 +15999,11 @@ do_neon_ldx_stx (void)
case NEON_ALL_LANES:
NEON_ENCODE (DUP, inst);
+ if (inst.instruction == N_INV)
+ {
+ first_error ("only loads support such operands");
+ break;
+ }
do_neon_ld_dup ();
break;
--- 2013-04-08/gas/testsuite/gas/arm/neon-addressing-bad.l
+++ 2013-04-08/gas/testsuite/gas/arm/neon-addressing-bad.l
@@ -8,12 +8,16 @@
[^:]*:10: Error: r15 not allowed here -- `vst1.8 {Q1},R0'
[^:]*:11: Error: r15 not allowed here -- `vst1.8 {D0},\[PC\]'
[^:]*:12: Error: r15 not allowed here -- `vst1.8 {D0},\[PC,#0\]'
-[^:]*:14: Error: r15 not allowed here -- `vld1.8 {d0},2f'
-[^:]*:16: Error: r15 not allowed here -- `vld1.8 {D0},R0'
-[^:]*:17: Error: r15 not allowed here -- `vld1.8 {Q1},R0'
-[^:]*:18: Error: r15 not allowed here -- `vld1.8 {D0},\[PC\]'
-[^:]*:19: Error: r15 not allowed here -- `vld1.8 {D0},\[PC,#0\]'
-[^:]*:20: Error: r15 not allowed here -- `vst1.8 {D0},R0'
-[^:]*:21: Error: r15 not allowed here -- `vst1.8 {Q1},R0'
-[^:]*:22: Error: r15 not allowed here -- `vst1.8 {D0},\[PC\]'
-[^:]*:23: Error: r15 not allowed here -- `vst1.8 {D0},\[PC,#0\]'
+[^:]*:13: Error: only loads support such operands -- `vst1.8 {D0\[\].*
+[^:]*:14: Error: only loads support such operands -- `vst2.8 {D0\[\].*
+[^:]*:15: Error: only loads support such operands -- `vst3.16 {D0\[\].*
+[^:]*:16: Error: only loads support such operands -- `vst4.32 {D0\[\].*
+[^:]*:18: Error: r15 not allowed here -- `vld1.8 {d0},2f'
+[^:]*:20: Error: r15 not allowed here -- `vld1.8 {D0},R0'
+[^:]*:21: Error: r15 not allowed here -- `vld1.8 {Q1},R0'
+[^:]*:22: Error: r15 not allowed here -- `vld1.8 {D0},\[PC\]'
+[^:]*:23: Error: r15 not allowed here -- `vld1.8 {D0},\[PC,#0\]'
+[^:]*:24: Error: r15 not allowed here -- `vst1.8 {D0},R0'
+[^:]*:25: Error: r15 not allowed here -- `vst1.8 {Q1},R0'
+[^:]*:26: Error: r15 not allowed here -- `vst1.8 {D0},\[PC\]'
+[^:]*:27: Error: r15 not allowed here -- `vst1.8 {D0},\[PC,#0\]'
--- 2013-04-08/gas/testsuite/gas/arm/neon-addressing-bad.s
+++ 2013-04-08/gas/testsuite/gas/arm/neon-addressing-bad.s
@@ -10,6 +10,10 @@ VST1.8 {D0}, R0
VST1.8 {Q1}, R0
VST1.8 {D0}, [PC]
VST1.8 {D0}, [PC, #0]
+VST1.8 {D0[]}, [R0]
+VST2.8 {D0[], D2[]}, [R0]
+VST3.16 {D0[], D1[], D2[]}, [R0]
+VST4.32 {D0[], D1[], D2[], D3[]}, [R0]
.thumb
VLD1.8 {d0}, 2f
2:
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: binutils-mainline-arm-vst4.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20130409/2a9149d2/attachment.ksh>
More information about the Binutils
mailing list