Fix ARM disassembly of VST1 and VST2 instructions with writeback. And add test

case for all opcodes handed by DecodeVSTInstruction() in ARMDisassembler.cpp .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153218 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2012-03-21 20:54:32 +00:00
parent 9ca3b89847
commit f0586f08df
3 changed files with 387 additions and 0 deletions

View File

@ -2319,6 +2319,8 @@ static DecodeStatus DecodeVSTInstruction(llvm::MCInst &Inst, unsigned Insn,
case ARM::VST2b8wb_register:
case ARM::VST2b16wb_register:
case ARM::VST2b32wb_register:
Inst.addOperand(MCOperand::CreateImm(0));
break;
case ARM::VST3d8_UPD:
case ARM::VST3d16_UPD:
case ARM::VST3d32_UPD:
@ -2360,6 +2362,23 @@ static DecodeStatus DecodeVSTInstruction(llvm::MCInst &Inst, unsigned Insn,
case ARM::VST1q16wb_fixed:
case ARM::VST1q32wb_fixed:
case ARM::VST1q64wb_fixed:
case ARM::VST1d8Twb_fixed:
case ARM::VST1d16Twb_fixed:
case ARM::VST1d32Twb_fixed:
case ARM::VST1d64Twb_fixed:
case ARM::VST1d8Qwb_fixed:
case ARM::VST1d16Qwb_fixed:
case ARM::VST1d32Qwb_fixed:
case ARM::VST1d64Qwb_fixed:
case ARM::VST2d8wb_fixed:
case ARM::VST2d16wb_fixed:
case ARM::VST2d32wb_fixed:
case ARM::VST2q8wb_fixed:
case ARM::VST2q16wb_fixed:
case ARM::VST2q32wb_fixed:
case ARM::VST2b8wb_fixed:
case ARM::VST2b16wb_fixed:
case ARM::VST2b32wb_fixed:
break;
}

View File

@ -1876,3 +1876,188 @@
# CHECK vld2.8 {d17[], d19[]}, [r7, :16]!
0xe7 0xf9 0x3f 0x1d
# CHECK vld2.8 {d17[], d19[]}, [r7, :16]
# rdar://11034702
0x0d 0x87 0x04 0xf4
# CHECK: vst1.8 {d8}, [r4]!
0x4d 0x87 0x04 0xf4
# CHECK: vst1.16 {d8}, [r4]!
0x8d 0x87 0x04 0xf4
# CHECK: vst1.32 {d8}, [r4]!
0xcd 0x87 0x04 0xf4
# CHECK: vst1.64 {d8}, [r4]!
0x06 0x87 0x04 0xf4
# CHECK: vst1.8 {d8}, [r4], r6
0x46 0x87 0x04 0xf4
# CHECK: vst1.16 {d8}, [r4], r6
0x86 0x87 0x04 0xf4
# CHECK: vst1.32 {d8}, [r4], r6
0xc6 0x87 0x04 0xf4
# CHECK: vst1.64 {d8}, [r4], r6
0x0d 0x8a 0x04 0xf4
# CHECK: vst1.8 {d8, d9}, [r4]!
0x4d 0x8a 0x04 0xf4
# CHECK: vst1.16 {d8, d9}, [r4]!
0x8d 0x8a 0x04 0xf4
# CHECK: vst1.32 {d8, d9}, [r4]!
0xcd 0x8a 0x04 0xf4
# CHECK: vst1.64 {d8, d9}, [r4]!
0x06 0x8a 0x04 0xf4
# CHECK: vst1.8 {d8, d9}, [r4], r6
0x46 0x8a 0x04 0xf4
# CHECK: vst1.16 {d8, d9}, [r4], r6
0x86 0x8a 0x04 0xf4
# CHECK: vst1.32 {d8, d9}, [r4], r6
0xc6 0x8a 0x04 0xf4
# CHECK: vst1.64 {d8, d9}, [r4], r6
0x0d 0x86 0x04 0xf4
# CHECK: vst1.8 {d8, d9, d10}, [r4]!
0x4d 0x86 0x04 0xf4
# CHECK: vst1.16 {d8, d9, d10}, [r4]!
0x8d 0x86 0x04 0xf4
# CHECK: vst1.32 {d8, d9, d10}, [r4]!
0xcd 0x86 0x04 0xf4
# CHECK: vst1.64 {d8, d9, d10}, [r4]!
0x06 0x86 0x04 0xf4
# CHECK: vst1.8 {d8, d9, d10}, [r4], r6
0x46 0x86 0x04 0xf4
# CHECK: vst1.16 {d8, d9, d10}, [r4], r6
0x86 0x86 0x04 0xf4
# CHECK: vst1.32 {d8, d9, d10}, [r4], r6
0xc6 0x86 0x04 0xf4
# CHECK: vst1.64 {d8, d9, d10}, [r4], r6
0x0d 0x82 0x04 0xf4
# CHECK: vst1.8 {d8, d9, d10, d11}, [r4]!
0x4d 0x82 0x04 0xf4
# CHECK: vst1.16 {d8, d9, d10, d11}, [r4]!
0x8d 0x82 0x04 0xf4
# CHECK: vst1.32 {d8, d9, d10, d11}, [r4]!
0xcd 0x82 0x04 0xf4
# CHECK: vst1.64 {d8, d9, d10, d11}, [r4]!
0x06 0x82 0x04 0xf4
# CHECK: vst1.8 {d8, d9, d10, d11}, [r4], r6
0x46 0x82 0x04 0xf4
# CHECK: vst1.16 {d8, d9, d10, d11}, [r4], r6
0x86 0x82 0x04 0xf4
# CHECK: vst1.32 {d8, d9, d10, d11}, [r4], r6
0xc6 0x82 0x04 0xf4
# CHECK: vst1.64 {d8, d9, d10, d11}, [r4], r6
0x0d 0x88 0x04 0xf4
# CHECK: vst2.8 {d8, d9}, [r4]!
0x4d 0x88 0x04 0xf4
# CHECK: vst2.16 {d8, d9}, [r4]!
0x8d 0x88 0x04 0xf4
# CHECK: vst2.32 {d8, d9}, [r4]!
0x06 0x88 0x04 0xf4
# CHECK: vst2.8 {d8, d9}, [r4], r6
0x46 0x88 0x04 0xf4
# CHECK: vst2.16 {d8, d9}, [r4], r6
0x86 0x88 0x04 0xf4
# CHECK: vst2.32 {d8, d9}, [r4], r6
0x0d 0x89 0x04 0xf4
# CHECK: vst2.8 {d8, d10}, [r4]!
0x4d 0x89 0x04 0xf4
# CHECK: vst2.16 {d8, d10}, [r4]!
0x8d 0x89 0x04 0xf4
# CHECK: vst2.32 {d8, d10}, [r4]!
0x06 0x89 0x04 0xf4
# CHECK: vst2.8 {d8, d10}, [r4], r6
0x46 0x89 0x04 0xf4
# CHECK: vst2.16 {d8, d10}, [r4], r6
0x86 0x89 0x04 0xf4
# CHECK: vst2.32 {d8, d10}, [r4], r6
0x0d 0x84 0x04 0xf4
# CHECK: vst3.8 {d8, d9, d10}, [r4]!
0x4d 0x84 0x04 0xf4
# CHECK: vst3.16 {d8, d9, d10}, [r4]!
0x8d 0x84 0x04 0xf4
# CHECK: vst3.32 {d8, d9, d10}, [r4]!
0x06 0x85 0x04 0xf4
# CHECK: vst3.8 {d8, d10, d12}, [r4], r6
0x46 0x85 0x04 0xf4
# CHECK: vst3.16 {d8, d10, d12}, [r4], r6
0x86 0x85 0x04 0xf4
# CHECK: vst3.32 {d8, d10, d12}, [r4], r6
0x0d 0x80 0x04 0xf4
# CHECK: vst4.8 {d8, d9, d10, d11}, [r4]!
0x4d 0x80 0x04 0xf4
# CHECK: vst4.16 {d8, d9, d10, d11}, [r4]!
0x8d 0x80 0x04 0xf4
# CHECK: vst4.32 {d8, d9, d10, d11}, [r4]!
0x06 0x81 0x04 0xf4
# CHECK: vst4.8 {d8, d10, d12, d14}, [r4], r6
0x46 0x81 0x04 0xf4
# CHECK: vst4.16 {d8, d10, d12, d14}, [r4], r6
0x86 0x81 0x04 0xf4
# CHECK: vst4.32 {d8, d10, d12, d14}, [r4], r6
0x4f 0x8a 0x04 0xf4
# CHECK: vst1.16 {d8, d9}, [r4]
0x8f 0x8a 0x04 0xf4
# CHECK: vst1.32 {d8, d9}, [r4]
0xcf 0x8a 0x04 0xf4
# CHECK: vst1.64 {d8, d9}, [r4]
0x0f 0x8a 0x04 0xf4
# CHECK: vst1.8 {d8, d9}, [r4]
0x4f 0x88 0x04 0xf4
# CHECK: vst2.16 {d8, d9}, [r4]
0x8f 0x88 0x04 0xf4
# CHECK: vst2.32 {d8, d9}, [r4]
0x0f 0x88 0x04 0xf4
# CHECK: vst2.8 {d8, d9}, [r4]
0x4d 0x88 0x04 0xf4
# CHECK: vst2.16 {d8, d9}, [r4]!
0x46 0x88 0x04 0xf4
# CHECK: vst2.16 {d8, d9}, [r4], r6
0x8d 0x88 0x04 0xf4
# CHECK: vst2.32 {d8, d9}, [r4]!
0x86 0x88 0x04 0xf4
# CHECK: vst2.32 {d8, d9}, [r4], r6
0x0d 0x88 0x04 0xf4
# CHECK: vst2.8 {d8, d9}, [r4]!
0x06 0x88 0x04 0xf4
# CHECK: vst2.8 {d8, d9}, [r4], r6
0x4f 0x89 0x04 0xf4
# CHECK: vst2.16 {d8, d10}, [r4]
0x8f 0x89 0x04 0xf4
# CHECK: vst2.32 {d8, d10}, [r4]
0x0f 0x89 0x04 0xf4
# CHECK: vst2.8 {d8, d10}, [r4]
0x0f 0x84 0x04 0xf4
# CHECK: vst3.8 {d8, d9, d10}, [r4]
0x4f 0x84 0x04 0xf4
# CHECK: vst3.16 {d8, d9, d10}, [r4]
0x8f 0x84 0x04 0xf4
# CHECK: vst3.32 {d8, d9, d10}, [r4]
0x0f 0x80 0x04 0xf4
# CHECK: vst4.8 {d8, d9, d10, d11}, [r4]
0x4f 0x80 0x04 0xf4
# CHECK: vst4.16 {d8, d9, d10, d11}, [r4]
0x8f 0x80 0x04 0xf4
# CHECK: vst4.32 {d8, d9, d10, d11}, [r4]
0x0f 0x85 0x04 0xf4
# CHECK: vst3.8 {d8, d10, d12}, [r4]
0x4f 0x85 0x04 0xf4
# CHECK: vst3.16 {d8, d10, d12}, [r4]
0x8f 0x85 0x04 0xf4
# CHECK: vst3.32 {d8, d10, d12}, [r4]
0x0f 0x81 0x04 0xf4
# CHECK: vst4.8 {d8, d10, d12, d14}, [r4]
0x4f 0x81 0x04 0xf4
# CHECK: vst4.16 {d8, d10, d12, d14}, [r4]
0x8f 0x81 0x04 0xf4
# CHECK: vst4.32 {d8, d10, d12, d14}, [r4]

View File

@ -1595,3 +1595,186 @@
# CHECK vld2.8 {d17[], d19[]}, [r7, :16]!
0xe7 0xf9 0x3f 0x1d
# CHECK vld2.8 {d17[], d19[]}, [r7, :16]
# rdar://11034702
0x04 0xf9 0x0d 0x87
# CHECK: vst1.8 {d8}, [r4]!
0x04 0xf9 0x4d 0x87
# CHECK: vst1.16 {d8}, [r4]!
0x04 0xf9 0x8d 0x87
# CHECK: vst1.32 {d8}, [r4]!
0x04 0xf9 0xcd 0x87
# CHECK: vst1.64 {d8}, [r4]!
0x04 0xf9 0x06 0x87
# CHECK: vst1.8 {d8}, [r4], r6
0x04 0xf9 0x46 0x87
# CHECK: vst1.16 {d8}, [r4], r6
0x04 0xf9 0x86 0x87
# CHECK: vst1.32 {d8}, [r4], r6
0x04 0xf9 0xc6 0x87
# CHECK: vst1.64 {d8}, [r4], r6
0x04 0xf9 0x0d 0x8a
# CHECK: vst1.8 {d8, d9}, [r4]!
0x04 0xf9 0x4d 0x8a
# CHECK: vst1.16 {d8, d9}, [r4]!
0x04 0xf9 0x8d 0x8a
# CHECK: vst1.32 {d8, d9}, [r4]!
0x04 0xf9 0xcd 0x8a
# CHECK: vst1.64 {d8, d9}, [r4]!
0x04 0xf9 0x06 0x8a
# CHECK: vst1.8 {d8, d9}, [r4], r6
0x04 0xf9 0x46 0x8a
# CHECK: vst1.16 {d8, d9}, [r4], r6
0x04 0xf9 0x86 0x8a
# CHECK: vst1.32 {d8, d9}, [r4], r6
0x04 0xf9 0xc6 0x8a
# CHECK: vst1.64 {d8, d9}, [r4], r6
0x04 0xf9 0x0d 0x86
# CHECK: vst1.8 {d8, d9, d10}, [r4]!
0x04 0xf9 0x4d 0x86
# CHECK: vst1.16 {d8, d9, d10}, [r4]!
0x04 0xf9 0x8d 0x86
# CHECK: vst1.32 {d8, d9, d10}, [r4]!
0x04 0xf9 0xcd 0x86
# CHECK: vst1.64 {d8, d9, d10}, [r4]!
0x04 0xf9 0x06 0x86
# CHECK: vst1.8 {d8, d9, d10}, [r4], r6
0x04 0xf9 0x46 0x86
# CHECK: vst1.16 {d8, d9, d10}, [r4], r6
0x04 0xf9 0x86 0x86
# CHECK: vst1.32 {d8, d9, d10}, [r4], r6
0x04 0xf9 0xc6 0x86
# CHECK: vst1.64 {d8, d9, d10}, [r4], r6
0x04 0xf9 0x0d 0x82
# CHECK: vst1.8 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x4d 0x82
# CHECK: vst1.16 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x8d 0x82
# CHECK: vst1.32 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0xcd 0x82
# CHECK: vst1.64 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x06 0x82
# CHECK: vst1.8 {d8, d9, d10, d11}, [r4], r6
0x04 0xf9 0x46 0x82
# CHECK: vst1.16 {d8, d9, d10, d11}, [r4], r6
0x04 0xf9 0x86 0x82
# CHECK: vst1.32 {d8, d9, d10, d11}, [r4], r6
0x04 0xf9 0xc6 0x82
# CHECK: vst1.64 {d8, d9, d10, d11}, [r4], r6
0x04 0xf9 0x0d 0x88
# CHECK: vst2.8 {d8, d9}, [r4]!
0x04 0xf9 0x4d 0x88
# CHECK: vst2.16 {d8, d9}, [r4]!
0x04 0xf9 0x8d 0x88
# CHECK: vst2.32 {d8, d9}, [r4]!
0x04 0xf9 0x06 0x88
# CHECK: vst2.8 {d8, d9}, [r4], r6
0x04 0xf9 0x46 0x88
# CHECK: vst2.16 {d8, d9}, [r4], r6
0x04 0xf9 0x86 0x88
# CHECK: vst2.32 {d8, d9}, [r4], r6
0x04 0xf9 0x0d 0x89
# CHECK: vst2.8 {d8, d10}, [r4]!
0x04 0xf9 0x4d 0x89
# CHECK: vst2.16 {d8, d10}, [r4]!
0x04 0xf9 0x8d 0x89
# CHECK: vst2.32 {d8, d10}, [r4]!
0x04 0xf9 0x06 0x89
# CHECK: vst2.8 {d8, d10}, [r4], r6
0x04 0xf9 0x46 0x89
# CHECK: vst2.16 {d8, d10}, [r4], r6
0x04 0xf9 0x86 0x89
# CHECK: vst2.32 {d8, d10}, [r4], r6
0x04 0xf9 0x0d 0x84
# CHECK: vst3.8 {d8, d9, d10}, [r4]!
0x04 0xf9 0x4d 0x84
# CHECK: vst3.16 {d8, d9, d10}, [r4]!
0x04 0xf9 0x8d 0x84
# CHECK: vst3.32 {d8, d9, d10}, [r4]!
0x04 0xf9 0x06 0x85
# CHECK: vst3.8 {d8, d10, d12}, [r4], r6
0x04 0xf9 0x46 0x85
# CHECK: vst3.16 {d8, d10, d12}, [r4], r6
0x04 0xf9 0x86 0x85
# CHECK: vst3.32 {d8, d10, d12}, [r4], r6
0x04 0xf9 0x0d 0x80
# CHECK: vst4.8 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x4d 0x80
# CHECK: vst4.16 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x8d 0x80
# CHECK: vst4.32 {d8, d9, d10, d11}, [r4]!
0x04 0xf9 0x06 0x81
# CHECK: vst4.8 {d8, d10, d12, d14}, [r4], r6
0x04 0xf9 0x46 0x81
# CHECK: vst4.16 {d8, d10, d12, d14}, [r4], r6
0x04 0xf9 0x86 0x81
# CHECK: vst4.32 {d8, d10, d12, d14}, [r4], r6
0x04 0xf9 0x4f 0x8a
# CHECK: vst1.16 {d8, d9}, [r4]
0x04 0xf9 0x8f 0x8a
# CHECK: vst1.32 {d8, d9}, [r4]
0x04 0xf9 0xcf 0x8a
# CHECK: vst1.64 {d8, d9}, [r4]
0x04 0xf9 0x0f 0x8a
# CHECK: vst1.8 {d8, d9}, [r4]
0x04 0xf9 0x4f 0x88
# CHECK: vst2.16 {d8, d9}, [r4]
0x04 0xf9 0x8f 0x88
# CHECK: vst2.32 {d8, d9}, [r4]
0x04 0xf9 0x0f 0x88
# CHECK: vst2.8 {d8, d9}, [r4]
0x04 0xf9 0x4d 0x88
# CHECK: vst2.16 {d8, d9}, [r4]!
0x04 0xf9 0x46 0x88
# CHECK: vst2.16 {d8, d9}, [r4], r6
0x04 0xf9 0x8d 0x88
# CHECK: vst2.32 {d8, d9}, [r4]!
0x04 0xf9 0x86 0x88
# CHECK: vst2.32 {d8, d9}, [r4], r6
0x04 0xf9 0x0d 0x88
# CHECK: vst2.8 {d8, d9}, [r4]!
0x04 0xf9 0x06 0x88
# CHECK: vst2.8 {d8, d9}, [r4], r6
0x04 0xf9 0x4f 0x89
# CHECK: vst2.16 {d8, d10}, [r4]
0x04 0xf9 0x8f 0x89
# CHECK: vst2.32 {d8, d10}, [r4]
0x04 0xf9 0x0f 0x89
# CHECK: vst2.8 {d8, d10}, [r4]
0x04 0xf9 0x0f 0x84
# CHECK: vst3.8 {d8, d9, d10}, [r4]
0x04 0xf9 0x4f 0x84
# CHECK: vst3.16 {d8, d9, d10}, [r4]
0x04 0xf9 0x8f 0x84
# CHECK: vst3.32 {d8, d9, d10}, [r4]
0x04 0xf9 0x0f 0x80
# CHECK: vst4.8 {d8, d9, d10, d11}, [r4]
0x04 0xf9 0x4f 0x80
# CHECK: vst4.16 {d8, d9, d10, d11}, [r4]
0x04 0xf9 0x8f 0x80
# CHECK: vst4.32 {d8, d9, d10, d11}, [r4]
0x04 0xf9 0x0f 0x85
# CHECK: vst3.8 {d8, d10, d12}, [r4]
0x04 0xf9 0x4f 0x85
# CHECK: vst3.16 {d8, d10, d12}, [r4]
0x04 0xf9 0x8f 0x85
# CHECK: vst3.32 {d8, d10, d12}, [r4]
0x04 0xf9 0x0f 0x81
# CHECK: vst4.8 {d8, d10, d12, d14}, [r4]
0x04 0xf9 0x4f 0x81
# CHECK: vst4.16 {d8, d10, d12, d14}, [r4]
0x04 0xf9 0x8f 0x81
# CHECK: vst4.32 {d8, d10, d12, d14}, [r4]