| 4112 | } |
| 4113 | |
| 4114 | static DecodeStatus DecodeT2AddrModeImm12(MCInst *Inst, unsigned Val, |
| 4115 | uint64_t Address, const void *Decoder) |
| 4116 | { |
| 4117 | DecodeStatus S = MCDisassembler_Success; |
| 4118 | unsigned Rn = fieldFromInstruction_4(Val, 13, 4); |
| 4119 | unsigned imm = fieldFromInstruction_4(Val, 0, 12); |
| 4120 | |
| 4121 | // Thumb stores cannot use PC as dest register. |
| 4122 | switch (MCInst_getOpcode(Inst)) { |
| 4123 | case ARM_t2STRi12: |
| 4124 | case ARM_t2STRBi12: |
| 4125 | case ARM_t2STRHi12: |
| 4126 | if (Rn == 15) |
| 4127 | return MCDisassembler_Fail; |
| 4128 | default: |
| 4129 | break; |
| 4130 | } |
| 4131 | |
| 4132 | if (!Check(&S, DecodeGPRRegisterClass(Inst, Rn, Address, Decoder))) |
| 4133 | return MCDisassembler_Fail; |
| 4134 | |
| 4135 | MCOperand_CreateImm0(Inst, imm); |
| 4136 | |
| 4137 | return S; |
| 4138 | } |
| 4139 | |
| 4140 | static DecodeStatus DecodeThumbAddSPImm(MCInst *Inst, uint16_t Insn, |
| 4141 | uint64_t Address, const void *Decoder) |
no test coverage detected
searching dependent graphs…