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

Function DecodeNEONComplexLane64Instruction

arch/ARM/ARMDisassembler.c:5608–5651  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5606}
5607
5608static DecodeStatus DecodeNEONComplexLane64Instruction(MCInst *Inst, unsigned Insn,
5609 uint64_t Address, const void *Decoder)
5610{
5611 DecodeStatus S = MCDisassembler_Success;
5612 unsigned Vd = (fieldFromInstruction_4(Insn, 12, 4) << 0);
5613 unsigned Vn = (fieldFromInstruction_4(Insn, 16, 4) << 0);
5614 unsigned Vm = (fieldFromInstruction_4(Insn, 0, 4) << 0);
5615 unsigned q = (fieldFromInstruction_4(Insn, 6, 1) << 0);
5616 unsigned rotate = (fieldFromInstruction_4(Insn, 20, 2) << 0);
5617
5618 Vd |= (fieldFromInstruction_4(Insn, 22, 1) << 4);
5619 Vn |= (fieldFromInstruction_4(Insn, 7, 1) << 4);
5620 Vm |= (fieldFromInstruction_4(Insn, 5, 1) << 4);
5621
5622 if (q) {
5623 if (!Check(&S, DecodeQPRRegisterClass(Inst, Vd, Address, Decoder)))
5624 return MCDisassembler_Fail;
5625
5626 if (!Check(&S, DecodeQPRRegisterClass(Inst, Vd, Address, Decoder)))
5627 return MCDisassembler_Fail;
5628
5629 if (!Check(&S, DecodeQPRRegisterClass(Inst, Vn, Address, Decoder)))
5630 return MCDisassembler_Fail;
5631 } else {
5632 if (!Check(&S, DecodeDPRRegisterClass(Inst, Vd, Address, Decoder)))
5633 return MCDisassembler_Fail;
5634
5635 if (!Check(&S, DecodeDPRRegisterClass(Inst, Vd, Address, Decoder)))
5636 return MCDisassembler_Fail;
5637
5638 if (!Check(&S, DecodeDPRRegisterClass(Inst, Vn, Address, Decoder)))
5639 return MCDisassembler_Fail;
5640 }
5641
5642 if (!Check(&S, DecodeDPRRegisterClass(Inst, Vm, Address, Decoder)))
5643 return MCDisassembler_Fail;
5644
5645 // The lane index does not have any bits in the encoding, because it can only
5646 // be 0.
5647 MCOperand_CreateImm0(Inst, 0);
5648 MCOperand_CreateImm0(Inst, rotate);
5649
5650 return S;
5651}
5652
5653static DecodeStatus DecodeLDR(MCInst *Inst, unsigned Val,
5654 uint64_t Address, const void *Decoder)

Callers

nothing calls this directly

Calls 4

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…