This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH v2] arm: don't silently accept certain wrong VST4 variants


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:



Attachment: binutils-mainline-arm-vst4.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]