-static bool DecodeAddrMode3Offset(llvm::MCInst &Inst, unsigned Val,
- uint64_t Address, const void *Decoder) {
- bool isImm = fieldFromInstruction32(Val, 9, 1);
- bool isAdd = fieldFromInstruction32(Val, 8, 1);
- unsigned imm = fieldFromInstruction32(Val, 0, 8);
-
- if (!isImm) {
- if (!DecodeGPRRegisterClass(Inst, imm, Address, Decoder)) return false;
- Inst.addOperand(MCOperand::CreateImm(!isAdd << 8));
- } else {
- Inst.addOperand(MCOperand::CreateReg(0));
- Inst.addOperand(MCOperand::CreateImm(imm | (!isAdd << 8)));
- }
-
- return true;
-}
-