Lines Matching defs:opcode
184 EmulateInstructionARM64::GetOpcodeForInstruction(const uint32_t opcode) {
366 if ((g_opcodes[i].mask & opcode) == g_opcodes[i].value)
390 const uint32_t opcode = m_opcode.GetOpcode32();
391 Opcode *opcode_data = GetOpcodeForInstruction(opcode);
416 success = (this->*opcode_data->callback)(opcode);
580 bool EmulateInstructionARM64::EmulateADDSUBImm(const uint32_t opcode) {
616 const uint32_t sf = Bit32(opcode, 31);
617 const uint32_t op = Bit32(opcode, 30);
618 const uint32_t S = Bit32(opcode, 29);
619 const uint32_t shift = Bits32(opcode, 23, 22);
620 const uint32_t imm12 = Bits32(opcode, 21, 10);
621 const uint32_t Rn = Bits32(opcode, 9, 5);
622 const uint32_t Rd = Bits32(opcode, 4, 0);
696 bool EmulateInstructionARM64::EmulateLDPSTP(const uint32_t opcode) {
697 uint32_t opc = Bits32(opcode, 31, 30);
698 uint32_t V = Bit32(opcode, 26);
699 uint32_t L = Bit32(opcode, 22);
700 uint32_t imm7 = Bits32(opcode, 21, 15);
701 uint32_t Rt2 = Bits32(opcode, 14, 10);
702 uint32_t Rn = Bits32(opcode, 9, 5);
703 uint32_t Rt = Bits32(opcode, 4, 0);
930 bool EmulateInstructionARM64::EmulateLDRSTRImm(const uint32_t opcode) {
931 uint32_t size = Bits32(opcode, 31, 30);
932 uint32_t opc = Bits32(opcode, 23, 22);
933 uint32_t n = Bits32(opcode, 9, 5);
934 uint32_t t = Bits32(opcode, 4, 0);
944 offset = llvm::SignExtend64<9>(Bits32(opcode, 20, 12));
949 offset = llvm::SignExtend64<9>(Bits32(opcode, 20, 12));
954 offset = LSL(Bits32(opcode, 21, 10), size);
1064 bool EmulateInstructionARM64::EmulateB(const uint32_t opcode) {
1080 int64_t offset = llvm::SignExtend64<28>(Bits32(opcode, 25, 0) << 2);
1081 BranchType branch_type = Bit32(opcode, 31) ? BranchType_CALL : BranchType_JMP;
1100 bool EmulateInstructionARM64::EmulateBcond(const uint32_t opcode) {
1109 if (ConditionHolds(Bits32(opcode, 3, 0))) {
1117 int64_t offset = llvm::SignExtend64<21>(Bits32(opcode, 23, 5) << 2);
1129 bool EmulateInstructionARM64::EmulateCBZ(const uint32_t opcode) {
1143 uint32_t t = Bits32(opcode, 4, 0);
1144 bool is_zero = Bit32(opcode, 24) == 0;
1145 int32_t offset = llvm::SignExtend64<21>(Bits32(opcode, 23, 5) << 2);
1167 bool EmulateInstructionARM64::EmulateTBZ(const uint32_t opcode) {
1178 uint32_t t = Bits32(opcode, 4, 0);
1179 uint32_t bit_pos = (Bit32(opcode, 31) << 6) | (Bits32(opcode, 23, 19));
1180 uint32_t bit_val = Bit32(opcode, 24);
1181 int64_t offset = llvm::SignExtend64<16>(Bits32(opcode, 18, 5) << 2);