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 * gas/config/tc-arm.c (do_neon_ldx_stx): Reject VSTn in the NEON_ALL_LANES case. gas/testsuite/ 2013-04-09 Jan Beulich * 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: