diff options
| author | Johnny Chen <johnny.chen@apple.com> | 2011-04-06 18:27:46 +0000 |
|---|---|---|
| committer | Johnny Chen <johnny.chen@apple.com> | 2011-04-06 18:27:46 +0000 |
| commit | 8bca174f48818832fdfe87d60379181ed3097d65 (patch) | |
| tree | 9a18bd227e6f50c65f2ef890f26c15724648aacd /llvm | |
| parent | 534b6a01e86478b00436c568af8f5adb41d88716 (diff) | |
| download | bcm5719-llvm-8bca174f48818832fdfe87d60379181ed3097d65.tar.gz bcm5719-llvm-8bca174f48818832fdfe87d60379181ed3097d65.zip | |
Fix a bug in the disassembly of VGETLNs8 where the lane index was wrong.
Also set the encoding bits (for A8.6.303, A8.6.328, A8.6.329) Inst{3-0} = 0b0000,
in class NVLaneOp.
rdar://problem/9240648
llvm-svn: 129015
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrFormats.td | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/neon-tests.txt | 3 |
3 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrFormats.td b/llvm/lib/Target/ARM/ARMInstrFormats.td index f29fddecf15..f5fb98ece4a 100644 --- a/llvm/lib/Target/ARM/ARMInstrFormats.td +++ b/llvm/lib/Target/ARM/ARMInstrFormats.td @@ -1850,6 +1850,8 @@ class NVLaneOp<bits<8> opcod1, bits<4> opcod2, bits<2> opcod3, let Inst{11-8} = opcod2; let Inst{6-5} = opcod3; let Inst{4} = 1; + // A8.6.303, A8.6.328, A8.6.329 + let Inst{3-0} = 0b0000; let OutOperandList = oops; let InOperandList = !con(iops, (ins pred:$p)); diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp index 509a01949d5..5ac0819fd45 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp @@ -3037,7 +3037,7 @@ static bool DisassembleNGetLnFrm(MCInst &MI, unsigned Opcode, uint32_t insn, ElemSize esize = Opcode == ARM::VGETLNi32 ? ESize32 : ((Opcode == ARM::VGETLNs16 || Opcode == ARM::VGETLNu16) ? ESize16 - : ESize32); + : ESize8); // Rt = Inst{15-12} => ARM Rd MI.addOperand(MCOperand::CreateReg(getRegisterEnum(B, ARM::GPRRegClassID, diff --git a/llvm/test/MC/Disassembler/ARM/neon-tests.txt b/llvm/test/MC/Disassembler/ARM/neon-tests.txt index 2a50cc5e2f3..b08b9ddc5f1 100644 --- a/llvm/test/MC/Disassembler/ARM/neon-tests.txt +++ b/llvm/test/MC/Disassembler/ARM/neon-tests.txt @@ -71,3 +71,6 @@ # CHECK: vst2.32 {d16, d18}, [r2, :64], r2 0x92 0x9 0x42 0xf4 + +# CHECK: vmov.s8 r0, d8[1] +0x30 0x0b 0x58 0xee |

