MCPcopy Create free account
hub / github.com/capstone-engine/capstone / DecodeNEONModImmInstruction

Function DecodeNEONModImmInstruction

arch/ARM/ARMDisassembler.c:3339–3383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3337}
3338
3339static DecodeStatus DecodeNEONModImmInstruction(MCInst *Inst, unsigned Insn,
3340 uint64_t Address, const void *Decoder)
3341{
3342 DecodeStatus S = MCDisassembler_Success;
3343 unsigned imm, Q;
3344 unsigned Rd = fieldFromInstruction_4(Insn, 12, 4);
3345 Rd |= fieldFromInstruction_4(Insn, 22, 1) << 4;
3346 imm = fieldFromInstruction_4(Insn, 0, 4);
3347 imm |= fieldFromInstruction_4(Insn, 16, 3) << 4;
3348 imm |= fieldFromInstruction_4(Insn, 24, 1) << 7;
3349 imm |= fieldFromInstruction_4(Insn, 8, 4) << 8;
3350 imm |= fieldFromInstruction_4(Insn, 5, 1) << 12;
3351 Q = fieldFromInstruction_4(Insn, 6, 1);
3352
3353 if (Q) {
3354 if (!Check(&S, DecodeQPRRegisterClass(Inst, Rd, Address, Decoder)))
3355 return MCDisassembler_Fail;
3356 } else {
3357 if (!Check(&S, DecodeDPRRegisterClass(Inst, Rd, Address, Decoder)))
3358 return MCDisassembler_Fail;
3359 }
3360
3361 MCOperand_CreateImm0(Inst, imm);
3362
3363 switch (MCInst_getOpcode(Inst)) {
3364 case ARM_VORRiv4i16:
3365 case ARM_VORRiv2i32:
3366 case ARM_VBICiv4i16:
3367 case ARM_VBICiv2i32:
3368 if (!Check(&S, DecodeDPRRegisterClass(Inst, Rd, Address, Decoder)))
3369 return MCDisassembler_Fail;
3370 break;
3371 case ARM_VORRiv8i16:
3372 case ARM_VORRiv4i32:
3373 case ARM_VBICiv8i16:
3374 case ARM_VBICiv4i32:
3375 if (!Check(&S, DecodeQPRRegisterClass(Inst, Rd, Address, Decoder)))
3376 return MCDisassembler_Fail;
3377 break;
3378 default:
3379 break;
3380 }
3381
3382 return S;
3383}
3384
3385static DecodeStatus DecodeVSHLMaxInstruction(MCInst *Inst, unsigned Insn,
3386 uint64_t Address, const void *Decoder)

Callers 2

DecodeVCVTDFunction · 0.85
DecodeVCVTQFunction · 0.85

Calls 5

DecodeQPRRegisterClassFunction · 0.85
DecodeDPRRegisterClassFunction · 0.85
MCOperand_CreateImm0Function · 0.85
MCInst_getOpcodeFunction · 0.85
CheckFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…