Index: test/MC/Disassembler/ARM/neont-VST-reencoding.txt =================================================================== --- test/MC/Disassembler/ARM/neont-VST-reencoding.txt (revision 0) +++ test/MC/Disassembler/ARM/neont-VST-reencoding.txt (revision 0) @@ -0,0 +1,77 @@ +# RUN: llvm-mc -triple thumbv7 -show-encoding -disassemble < %s | FileCheck %s + +0x80 0xf9 0x00 0x00 +0x80 0xf9 0x20 0x00 +0x80 0xf9 0x40 0x00 +0x80 0xf9 0x60 0x00 +0x80 0xf9 0x80 0x00 +0x80 0xf9 0xa0 0x00 +0x80 0xf9 0xc0 0x00 +0x80 0xf9 0xe0 0x00 + +# CHECK: vst1.8 {d0[0]}, [r0], r0 @ encoding: [0x80,0xf9,0x00,0x00] +# CHECK: vst1.8 {d0[1]}, [r0], r0 @ encoding: [0x80,0xf9,0x20,0x00] +# CHECK: vst1.8 {d0[2]}, [r0], r0 @ encoding: [0x80,0xf9,0x40,0x00] +# CHECK: vst1.8 {d0[3]}, [r0], r0 @ encoding: [0x80,0xf9,0x60,0x00] +# CHECK: vst1.8 {d0[4]}, [r0], r0 @ encoding: [0x80,0xf9,0x80,0x00] +# CHECK: vst1.8 {d0[5]}, [r0], r0 @ encoding: [0x80,0xf9,0xa0,0x00] +# CHECK: vst1.8 {d0[6]}, [r0], r0 @ encoding: [0x80,0xf9,0xc0,0x00] +# CHECK: vst1.8 {d0[7]}, [r0], r0 @ encoding: [0x80,0xf9,0xe0,0x00] + +0x80 0xf9 0x00 0x04 +0x80 0xf9 0x10 0x04 +0x80 0xf9 0x40 0x04 +0x80 0xf9 0x50 0x04 +0x80 0xf9 0x80 0x04 +0x80 0xf9 0x90 0x04 +0x80 0xf9 0xc0 0x04 +0x80 0xf9 0xd0 0x04 + +# CHECK: vst1.16 {d0[0]}, [r0], r0 @ encoding: [0x80,0xf9,0x00,0x04] +# CHECK: vst1.16 {d0[0]}, [r0, :16], r0 @ encoding: [0x80,0xf9,0x10,0x04] +# CHECK: vst1.16 {d0[1]}, [r0], r0 @ encoding: [0x80,0xf9,0x40,0x04] +# CHECK: vst1.16 {d0[1]}, [r0, :16], r0 @ encoding: [0x80,0xf9,0x50,0x04] +# CHECK: vst1.16 {d0[2]}, [r0], r0 @ encoding: [0x80,0xf9,0x80,0x04] +# CHECK: vst1.16 {d0[2]}, [r0, :16], r0 @ encoding: [0x80,0xf9,0x90,0x04] +# CHECK: vst1.16 {d0[3]}, [r0], r0 @ encoding: [0x80,0xf9,0xc0,0x04] +# CHECK: vst1.16 {d0[3]}, [r0, :16], r0 @ encoding: [0x80,0xf9,0xd0,0x04] + +0x80 0xf9 0x00 0x08 +0x80 0xf9 0x30 0x08 +0x80 0xf9 0x80 0x08 +0x80 0xf9 0xb0 0x08 + +# CHECK: vst1.32 {d0[0]}, [r0], r0 @ encoding: [0x80,0xf9,0x00,0x08] +# CHECK: vst1.32 {d0[0]}, [r0, :32], r0 @ encoding: [0x80,0xf9,0x30,0x08] +# CHECK: vst1.32 {d0[1]}, [r0], r0 @ encoding: [0x80,0xf9,0x80,0x08] +# CHECK: vst1.32 {d0[1]}, [r0, :32], r0 @ encoding: [0x80,0xf9,0xb0,0x08] + +0x80 0xf9 0x1f 0x04 +0x80 0xf9 0x8f 0x00 + +# CHECK: vst1.16 {d0[0]}, [r0, :16] @ encoding: [0x80,0xf9,0x1f,0x04] +# CHECK: vst1.8 {d0[4]}, [r0] @ encoding: [0x80,0xf9,0x8f,0x00] + +0x80 0xf9 0x1d 0x04 +0x80 0xf9 0x8d 0x00 + +# CHECK: vst1.16 {d0[0]}, [r0, :16]! @ encoding: [0x80,0xf9,0x1d,0x04] +# CHECK: vst1.8 {d0[4]}, [r0]! @ encoding: [0x80,0xf9,0x8d,0x00] + +0x85 0xf9 0x10 0x04 +0x85 0xf9 0x1a 0x04 +0x8e 0xf9 0x1a 0x04 +0x85 0xf9 0x1a 0x94 + +# CHECK: vst1.16 {d0[0]}, [r5, :16], r0 @ encoding: [0x85,0xf9,0x10,0x04] +# CHECK: vst1.16 {d0[0]}, [r5, :16], r10 @ encoding: [0x85,0xf9,0x1a,0x04] +# CHECK: vst1.16 {d0[0]}, [lr, :16], r10 @ encoding: [0x8e,0xf9,0x1a,0x04] +# CHECK: vst1.16 {d9[0]}, [r5, :16], r10 @ encoding: [0x85,0xf9,0x1a,0x94] + +0x80 0xf9 0x20 0x0b +0x80 0xf9 0x20 0x07 +0x80 0xf9 0x20 0x03 + +# CHECK: vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0, :128], r0 @ encoding: [0x80,0xf9,0x20,0x0b] +# CHECK: vst4.16 {d0[0], d2[0], d4[0], d6[0]}, [r0], r0 @ encoding: [0x80,0xf9,0x20,0x07] +# CHECK: vst4.8 {d0[1], d1[1], d2[1], d3[1]}, [r0], r0 @ encoding: [0x80,0xf9,0x20,0x03] Index: lib/Target/ARM/ARMInstrNEON.td =================================================================== --- lib/Target/ARM/ARMInstrNEON.td (revision 162999) +++ lib/Target/ARM/ARMInstrNEON.td (working copy) @@ -1980,7 +1980,7 @@ def VST1LNd16 : VST1LN<0b0100, {?,?,0,?}, "16", v4i16, truncstorei16, NEONvgetlaneu, addrmode6> { let Inst{7-6} = lane{1-0}; - let Inst{4} = Rn{5}; + let Inst{4} = Rn{4}; } def VST1LNd32 : VST1LN<0b1000, {?,0,?,?}, "32", v2i32, store, extractelt, @@ -2023,7 +2023,7 @@ def VST1LNd16_UPD : VST1LNWB<0b0100, {?,?,0,?}, "16", v4i16, post_truncsti16, NEONvgetlaneu, addrmode6> { let Inst{7-6} = lane{1-0}; - let Inst{4} = Rn{5}; + let Inst{4} = Rn{4}; } def VST1LNd32_UPD : VST1LNWB<0b1000, {?,0,?,?}, "32", v2i32, post_store, extractelt, addrmode6oneL32> {