|
LLVM 24.0.0git
|
#include "Target/AMDGPU/Disassembler/AMDGPUDisassembler.h"
Static Public Member Functions | |
| static MCOperand | decodeIntImmed (unsigned Imm) |
Additional Inherited Members | |
| Public Types inherited from llvm::MCDisassembler | |
| enum | DecodeStatus { Fail = 0 , SoftFail = 1 , Success = 3 } |
| Ternary decode status. More... | |
| Public Attributes inherited from llvm::MCDisassembler | |
| raw_ostream * | CommentStream = nullptr |
| Protected Attributes inherited from llvm::MCDisassembler | |
| const MCSubtargetInfo & | STI |
| std::unique_ptr< MCSymbolizer > | Symbolizer |
Definition at line 40 of file AMDGPUDisassembler.h.
| AMDGPUDisassembler::AMDGPUDisassembler | ( | const MCSubtargetInfo & | STI, |
| MCContext & | Ctx, | ||
| MCInstrInfo const * | MCII ) |
Definition at line 57 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::UCVersion::getGFXVersions(), isGFX10Plus(), llvm::MCDisassembler::MCDisassembler(), llvm::reportFatalUsageError(), and llvm::MCDisassembler::STI.
|
overridedefault |
References llvm::Address, Imm, MI, Reg, Size, llvm::Table, uint64_t, and llvm::Version.
| void AMDGPUDisassembler::convertDPP8Inst | ( | MCInst & | MI | ) | const |
Definition at line 1366 of file AMDGPUDisassembler.cpp.
References collectVOPModifiers(), convertTrue16OpSel(), llvm::MCOperand::createImm(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, and Opc.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertEXPInst | ( | MCInst & | MI | ) | const |
Definition at line 1094 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createImm(), insertNamedMCOperand(), MI, and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertFMAanyK | ( | MCInst & | MI | ) | const |
Definition at line 1652 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createImm(), insertNamedMCOperand(), and MI.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertMacDPPInst | ( | MCInst & | MI | ) | const |
Definition at line 1359 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), insertNamedMCOperand(), and MI.
Referenced by getInstruction().
f8f6f4 instructions have different pseudos depending on the used formats.
In the disassembler table, we only have the variants with the largest register classes which assume using an fp8/bf8 format for both operands. The actual register class depends on the format in blgp and cbsz operands. Adjust the register classes depending on the used format.
Definition at line 1207 of file AMDGPUDisassembler.cpp.
References adjustMFMA_F8F6F4OpRegClass(), llvm::AMDGPU::getMFMA_F8F6F4_WithFormatArgs(), MI, llvm::AMDGPU::MFMA_F8F6F4_Info::NumRegsSrcA, llvm::AMDGPU::MFMA_F8F6F4_Info::NumRegsSrcB, and llvm::AMDGPU::MFMA_F8F6F4_Info::Opcode.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertMIMGInst | ( | MCInst & | MI | ) | const |
Definition at line 1436 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::MIMGBaseOpcodeInfo::A16, addOperand(), assert(), llvm::AMDGPU::MIMGBaseOpcodeInfo::BVH, CheckVGPROverflow(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::AMDGPU::getAddrSizeMIMGOp(), llvm::getImm(), llvm::AMDGPU::getMIMGBaseOpcodeInfo(), llvm::AMDGPU::getMIMGDimInfoByEncoding(), llvm::AMDGPU::getMIMGInfo(), llvm::AMDGPU::getMIMGOpcode(), llvm::AMDGPU::hasG16(), llvm::AMDGPU::hasPackedD16(), llvm::SIInstrFlags::isGather4(), isGFX10Plus(), llvm::SIInstrFlags::isMIMG(), llvm::SIInstrFlags::isVSAMPLE(), MI, llvm::popcount(), and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertSDWAInst | ( | MCInst & | MI | ) | const |
Definition at line 1135 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createImm(), createRegOperand(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertTrue16OpSel | ( | MCInst & | MI | ) | const |
Definition at line 1304 of file AMDGPUDisassembler.cpp.
References llvm::MCRegisterClass::contains(), llvm::SISrcMods::DST_OP_SEL, llvm::MCOperand::getImm(), llvm::MCRegisterClass::getRegister(), MI, llvm::SISrcMods::OP_SEL_0, Opc, and llvm::AMDGPU::HWEncoding::REG_IDX_MASK.
Referenced by convertDPP8Inst(), convertVINTERPInst(), convertVOP3DPPInst(), convertVOPC64DPPInst(), and getInstruction().
| void AMDGPUDisassembler::convertVINTERPInst | ( | MCInst & | MI | ) | const |
Definition at line 1103 of file AMDGPUDisassembler.cpp.
References convertTrue16OpSel(), llvm::MCOperand::createImm(), insertNamedMCOperand(), and MI.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertVOP3DPPInst | ( | MCInst & | MI | ) | const |
Definition at line 1395 of file AMDGPUDisassembler.cpp.
References collectVOPModifiers(), convertTrue16OpSel(), llvm::MCOperand::createImm(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, and Opc.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertVOP3PDPPInst | ( | MCInst & | MI | ) | const |
Definition at line 1591 of file AMDGPUDisassembler.cpp.
References collectVOPModifiers(), llvm::MCOperand::createImm(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, and Opc.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertVOPC64DPPInst | ( | MCInst & | MI | ) | const |
Definition at line 1638 of file AMDGPUDisassembler.cpp.
References collectVOPModifiers(), convertTrue16OpSel(), llvm::MCOperand::createImm(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, Opc, and VOPModifiers::OpSel.
Referenced by getInstruction().
| void AMDGPUDisassembler::convertVOPCDPPInst | ( | MCInst & | MI | ) | const |
Definition at line 1619 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::AMDGPU::hasNamedOperand(), insertNamedMCOperand(), MI, and Opc.
Referenced by getInstruction().
Definition at line 1236 of file AMDGPUDisassembler.cpp.
References adjustMFMA_F8F6F4OpRegClass(), llvm::AMDGPU::getWMMA_F8F6F4_WithFormatArgs(), MI, llvm::AMDGPU::MFMA_F8F6F4_Info::NumRegsSrcA, llvm::AMDGPU::MFMA_F8F6F4_Info::NumRegsSrcB, and llvm::AMDGPU::MFMA_F8F6F4_Info::Opcode.
Referenced by getInstruction().
|
inline |
Definition at line 1672 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createReg(), llvm::AMDGPU::getMCReg(), and llvm::MCDisassembler::STI.
Referenced by convertSDWAInst(), createRegOperand(), createSRegOperand(), createVGPR16Operand(), decodeSDWASrc(), decodeSDWAVopcDst(), decodeSpecialReg32(), decodeSpecialReg64(), decodeSpecialReg96Plus(), decodeSrcOp(), decodeVOPDDstYOp(), and getInstruction().
Definition at line 1677 of file AMDGPUDisassembler.cpp.
References createRegOperand(), errOperand(), and getRegClassName().
Definition at line 1687 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::CommentStream, createRegOperand(), getRegClassName(), and llvm_unreachable.
Referenced by decodeNonVGPRSrcOp(), decodeSDWASrc(), and decodeSDWAVopcDst().
Definition at line 1736 of file AMDGPUDisassembler.cpp.
References createRegOperand().
Definition at line 2414 of file AMDGPUDisassembler.cpp.
References decodeSrcOp(), and llvm::MCDisassembler::STI.
| Expected< bool > AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC1 | ( | uint32_t | FourByteBuffer, |
| raw_string_ostream & | KdStream ) const |
Decode as directives that handle COMPUTE_PGM_RSRC1.
| FourByteBuffer | - Bytes holding contents of COMPUTE_PGM_RSRC1. |
| KdStream | - Stream to write the disassembled directives to. |
Definition at line 2589 of file AMDGPUDisassembler.cpp.
References CHECK_RESERVED_BITS, CHECK_RESERVED_BITS_DESC, CHECK_RESERVED_BITS_DESC_MSG, CHECK_RESERVED_BITS_MSG, GET_FIELD, llvm::AMDGPU::IsaInfo::getSGPREncodingGranule(), llvm::AMDGPU::IsaInfo::getVGPREncodingGranule(), hasArchitectedFlatScratch(), isGFX10Plus(), isGFX1250Plus(), isGFX12Plus(), isGFX9Plus(), PRINT_DIRECTIVE, PRINT_PSEUDO_DIRECTIVE_COMMENT, and llvm::MCDisassembler::STI.
Referenced by decodeKernelDescriptorDirective().
| Expected< bool > AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC2 | ( | uint32_t | FourByteBuffer, |
| raw_string_ostream & | KdStream ) const |
Decode as directives that handle COMPUTE_PGM_RSRC2.
| FourByteBuffer | - Bytes holding contents of COMPUTE_PGM_RSRC2. |
| KdStream | - Stream to write the disassembled directives to. |
Definition at line 2718 of file AMDGPUDisassembler.cpp.
References CHECK_RESERVED_BITS, CHECK_RESERVED_BITS_DESC, hasArchitectedFlatScratch(), and PRINT_DIRECTIVE.
Referenced by decodeKernelDescriptorDirective().
| Expected< bool > AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC3 | ( | uint32_t | FourByteBuffer, |
| raw_string_ostream & | KdStream ) const |
Decode as directives that handle COMPUTE_PGM_RSRC3.
| FourByteBuffer | - Bytes holding contents of COMPUTE_PGM_RSRC3. |
| KdStream | - Stream to write the disassembled directives to. |
Definition at line 2766 of file AMDGPUDisassembler.cpp.
References CHECK_RESERVED_BITS_DESC_MSG, llvm::createStringError(), GET_FIELD, isGFX10Plus(), isGFX11(), isGFX11Plus(), isGFX1250Plus(), isGFX12Plus(), isGFX90A(), PRINT_DIRECTIVE, and PRINT_PSEUDO_DIRECTIVE_COMMENT.
Referenced by decodeKernelDescriptorDirective().
Definition at line 2435 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createImm(), llvm::AMDGPU::DPP::DPP8_FI_0, and llvm::AMDGPU::DPP::DPP8_FI_1.
Definition at line 1886 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createImm(), and Imm.
| Expected< bool > AMDGPUDisassembler::decodeKernelDescriptor | ( | StringRef | KdName, |
| ArrayRef< uint8_t > | Bytes, | ||
| uint64_t | KdAddress ) const |
Definition at line 3048 of file AMDGPUDisassembler.cpp.
References AMDHSA_BITS_GET, C(), llvm::cantFail(), llvm::createStringError(), decodeKernelDescriptorDirective(), isGFX10Plus(), llvm::amdhsa::KERNEL_CODE_PROPERTIES_OFFSET, llvm::little, llvm::outs(), llvm::support::endian::read16(), and llvm::raw_string_ostream::str().
Referenced by onSymbolStart().
| Expected< bool > AMDGPUDisassembler::decodeKernelDescriptorDirective | ( | DataExtractor::Cursor & | Cursor, |
| ArrayRef< uint8_t > | Bytes, | ||
| raw_string_ostream & | KdStream ) const |
Definition at line 2896 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::AMDHSA_COV5, assert(), B(), llvm::amdhsa::COMPUTE_PGM_RSRC1_OFFSET, llvm::amdhsa::COMPUTE_PGM_RSRC2_OFFSET, llvm::amdhsa::COMPUTE_PGM_RSRC3_OFFSET, createReservedKDBitsError(), createReservedKDBytesError(), decodeCOMPUTE_PGM_RSRC1(), decodeCOMPUTE_PGM_RSRC2(), decodeCOMPUTE_PGM_RSRC3(), llvm::DataExtractor::getBytes(), llvm::DataExtractor::getU16(), llvm::DataExtractor::getU32(), llvm::amdhsa::GROUP_SEGMENT_FIXED_SIZE_OFFSET, hasArchitectedFlatScratch(), isGFX10Plus(), isGFX9(), llvm::amdhsa::KERNARG_PRELOAD_OFFSET, llvm::amdhsa::KERNARG_SIZE_OFFSET, llvm::amdhsa::KERNEL_CODE_ENTRY_BYTE_OFFSET_OFFSET, llvm::amdhsa::KERNEL_CODE_PROPERTIES_OFFSET, llvm_unreachable, PRINT_DIRECTIVE, llvm::amdhsa::PRIVATE_SEGMENT_FIXED_SIZE_OFFSET, llvm::amdhsa::RESERVED0_OFFSET, llvm::amdhsa::RESERVED1_OFFSET, llvm::amdhsa::RESERVED3_OFFSET, and llvm::DataExtractor::skip().
Referenced by decodeKernelDescriptor().
| MCOperand AMDGPUDisassembler::decodeLiteral64Constant | ( | ) | const |
Definition at line 1864 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::AMDGPUMCExpr::createLit(), eatBytes(), errOperand(), llvm::MCDisassembler::getContext(), llvm::Hi_32(), llvm::AMDGPU::isInlinableLiteral64(), llvm::Lit64, and llvm::MCDisassembler::STI.
Referenced by decodeNonVGPRSrcOp().
| MCOperand AMDGPUDisassembler::decodeLiteralConstant | ( | const MCInstrDesc & | Desc, |
| const MCOperandInfo & | OpDesc ) const |
Definition at line 1773 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::AMDGPUMCExpr::createLit(), eatBytes(), errOperand(), llvm::MCDisassembler::getContext(), isGFX11Plus(), llvm::AMDGPU::isInlinableLiteral32(), llvm::AMDGPU::isInlinableLiteral64(), llvm::AMDGPU::isInlinableLiteralBF16(), llvm::AMDGPU::isInlinableLiteralFP16(), llvm::AMDGPU::isInlinableLiteralI16(), llvm::AMDGPU::isInlinableLiteralV2BF16(), llvm::AMDGPU::isInlinableLiteralV2F16(), llvm::AMDGPU::isInlinableLiteralV2I16(), llvm::AMDGPU::isPKFMACF16InlineConstant(), llvm::Lit, llvm_unreachable, llvm::AMDGPU::OPERAND_KIMM32, llvm::AMDGPU::OPERAND_REG_IMM_BF16, llvm::AMDGPU::OPERAND_REG_IMM_FP16, llvm::AMDGPU::OPERAND_REG_IMM_FP32, llvm::AMDGPU::OPERAND_REG_IMM_FP64, llvm::AMDGPU::OPERAND_REG_IMM_INT16, llvm::AMDGPU::OPERAND_REG_IMM_INT32, llvm::AMDGPU::OPERAND_REG_IMM_INT64, llvm::AMDGPU::OPERAND_REG_IMM_NOINLINE_FP16, llvm::AMDGPU::OPERAND_REG_IMM_NOINLINE_V2FP16, llvm::AMDGPU::OPERAND_REG_IMM_V2BF16, llvm::AMDGPU::OPERAND_REG_IMM_V2FP16, llvm::AMDGPU::OPERAND_REG_IMM_V2FP16_SPLAT, llvm::AMDGPU::OPERAND_REG_IMM_V2FP32, llvm::AMDGPU::OPERAND_REG_IMM_V2FP64, llvm::AMDGPU::OPERAND_REG_IMM_V2INT16, llvm::AMDGPU::OPERAND_REG_IMM_V2INT32, llvm::AMDGPU::OPERAND_REG_IMM_V2INT64, llvm::AMDGPU::OPERAND_REG_INLINE_AC_FP32, llvm::AMDGPU::OPERAND_REG_INLINE_AC_FP64, llvm::AMDGPU::OPERAND_REG_INLINE_AC_INT32, llvm::AMDGPU::OPERAND_REG_INLINE_C_BF16, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP16, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP32, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP64, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT16, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT32, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT64, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2BF16, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2FP16, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2INT16, llvm::MCOI::OPERAND_REGISTER, and llvm::MCOperandInfo::OperandType.
Definition at line 1758 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::AMDGPUMCExpr::createLit(), errOperand(), llvm::MCDisassembler::getContext(), llvm::Hi_32(), and llvm::Lit64.
Definition at line 1744 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createImm(), errOperand(), llvm::AMDGPU::hasVOPD(), and llvm::MCDisassembler::STI.
| MCOperand AMDGPUDisassembler::decodeNonVGPRSrcOp | ( | const MCInst & | Inst, |
| unsigned | Width, | ||
| unsigned | Val ) const |
Definition at line 2149 of file AMDGPUDisassembler.cpp.
References assert(), llvm::MCOperand::createImm(), createSRegOperand(), decodeLiteral64Constant(), decodeSpecialReg32(), decodeSpecialReg64(), decodeSpecialReg96Plus(), errOperand(), llvm::MCInst::getOpcode(), getSgprClassId(), getTtmpClassId(), getTTmpIdx(), llvm::SIInstrFlags::isVOP3Like(), llvm::AMDGPU::isVOPD(), SGPR_MAX, and llvm::MCDisassembler::STI.
Referenced by decodeSrcOp().
Definition at line 2344 of file AMDGPUDisassembler.cpp.
References llvm::MCOperand::createImm(), createRegOperand(), createSRegOperand(), decodeSpecialReg32(), getSgprClassId(), getTtmpClassId(), getVgprClassId(), isGFX10Plus(), llvm_unreachable, and llvm::MCDisassembler::STI.
Referenced by decodeSDWASrc16(), and decodeSDWASrc32().
Definition at line 2383 of file AMDGPUDisassembler.cpp.
References decodeSDWASrc().
Definition at line 2387 of file AMDGPUDisassembler.cpp.
References decodeSDWASrc().
Definition at line 2391 of file AMDGPUDisassembler.cpp.
References assert(), createRegOperand(), createSRegOperand(), decodeSpecialReg32(), decodeSpecialReg64(), getSgprClassId(), getTtmpClassId(), getTTmpIdx(), SGPR_MAX, and llvm::MCDisassembler::STI.
Definition at line 2226 of file AMDGPUDisassembler.cpp.
References createRegOperand(), errOperand(), llvm::AMDGPU::hasPopsExitingWaveID(), llvm::AMDGPU::hasPrivateApertureRegs(), isGFX11Plus(), llvm::M0(), and llvm::MCDisassembler::STI.
Referenced by decodeNonVGPRSrcOp(), decodeSDWASrc(), and decodeSDWAVopcDst().
Definition at line 2279 of file AMDGPUDisassembler.cpp.
References createRegOperand(), errOperand(), llvm::AMDGPU::hasPopsExitingWaveID(), llvm::AMDGPU::hasPrivateApertureRegs(), isGFX11Plus(), and llvm::MCDisassembler::STI.
Referenced by decodeNonVGPRSrcOp(), and decodeSDWAVopcDst().
Definition at line 2326 of file AMDGPUDisassembler.cpp.
References createRegOperand(), errOperand(), and isGFX11Plus().
Referenced by decodeNonVGPRSrcOp().
Definition at line 2421 of file AMDGPUDisassembler.cpp.
References decodeSrcOp().
| MCOperand AMDGPUDisassembler::decodeSrcOp | ( | const MCInst & | Inst, |
| unsigned | Width, | ||
| unsigned | Val ) const |
Definition at line 2133 of file AMDGPUDisassembler.cpp.
References assert(), createRegOperand(), decodeNonVGPRSrcOp(), getAgprClassId(), and getVgprClassId().
Referenced by decodeBoolReg(), and decodeSplitBarrier().
Definition at line 2441 of file AMDGPUDisassembler.cpp.
References llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCBinaryExpr::createOr(), llvm::find_if(), llvm::MCDisassembler::getContext(), llvm::AMDGPU::UCVersion::getGFXVersions(), I, Imm, and llvm::Version.
Definition at line 2215 of file AMDGPUDisassembler.cpp.
References assert(), createRegOperand(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), getVgprClassId(), and llvm::MCOperand::isReg().
|
overridevirtual |
Emit something based on ELF's e_flags if the target needs to.
Reimplemented from llvm::MCDisassembler.
Definition at line 81 of file AMDGPUDisassembler.cpp.
References AMDGPU_MACH_LIST, llvm::AMDGPU::AMDHSA_COV4, llvm::ELF::EF_AMDGPU_FEATURE_SRAMECC_ANY_V4, llvm::ELF::EF_AMDGPU_FEATURE_SRAMECC_OFF_V4, llvm::ELF::EF_AMDGPU_FEATURE_SRAMECC_ON_V4, llvm::ELF::EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4, llvm::ELF::EF_AMDGPU_FEATURE_SRAMECC_V4, llvm::ELF::EF_AMDGPU_FEATURE_XNACK_ANY_V4, llvm::ELF::EF_AMDGPU_FEATURE_XNACK_OFF_V4, llvm::ELF::EF_AMDGPU_FEATURE_XNACK_ON_V4, llvm::ELF::EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4, llvm::ELF::EF_AMDGPU_FEATURE_XNACK_V4, llvm::ELF::EF_AMDGPU_MACH, llvm::Triple::FOUR_IDENT, llvm::MCDisassembler::STI, X, and XnackSetting.
Definition at line 1663 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::CommentStream.
Referenced by createRegOperand(), decodeLiteral64Constant(), decodeLiteralConstant(), decodeMandatoryLiteral64Constant(), decodeMandatoryLiteralConstant(), decodeNonVGPRSrcOp(), decodeSpecialReg32(), decodeSpecialReg64(), and decodeSpecialReg96Plus().
Definition at line 2031 of file AMDGPUDisassembler.cpp.
References llvm_unreachable.
Referenced by decodeSrcOp().
|
overridevirtual |
Returns the disassembly of a single instruction.
| Instr | - An MCInst to populate with the contents of the instruction. |
| Size | - A value to populate with the size of the instruction, or the number of bytes consumed while attempting to decode an invalid instruction. |
| Address | - The address, in the memory space of region, of the first byte of the instruction. |
| Bytes | - A reference to the actual bytes of the instruction. |
| CStream | - The stream to print comments and annotations on. |
Implements llvm::MCDisassembler.
Definition at line 713 of file AMDGPUDisassembler.cpp.
References llvm::Address, convertDPP8Inst(), convertEXPInst(), convertFMAanyK(), convertMacDPPInst(), convertMAIInst(), convertMIMGInst(), convertSDWAInst(), convertTrue16OpSel(), convertVINTERPInst(), convertVOP3DPPInst(), convertVOP3PDPPInst(), convertVOPC64DPPInst(), convertVOPCDPPInst(), convertWMMAInst(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), createRegOperand(), eat12Bytes(), eat16Bytes(), eatBytes(), llvm::MCDisassembler::Fail, llvm::AMDGPU::CPol::GLC, llvm::AMDGPU::hasGDS(), llvm::AMDGPU::hasNamedOperand(), Imm, insertNamedMCOperand(), llvm::SIInstrFlags::isAtomicRet(), llvm::SIInstrFlags::isBuffer(), isBufferInstruction(), llvm::SIInstrFlags::isDPP(), llvm::SIInstrFlags::isDS(), llvm::SIInstrFlags::isEXP(), llvm::SIInstrFlags::isFLAT(), isGFX10(), isGFX11(), isGFX1170(), isGFX11Plus(), isGFX12(), isGFX1250(), isGFX1250Plus(), isGFX12Plus(), isGFX13(), isGFX9(), llvm::AMDGPU::isMAC(), isMacDPP(), llvm::SIInstrFlags::isMAI(), llvm::SIInstrFlags::isMIMG(), llvm::SIInstrFlags::isMUBUF(), llvm::SIInstrFlags::isSDWA(), llvm::SIInstrFlags::isSMRD(), llvm::SIInstrFlags::isSOPK(), isVI(), llvm::SIInstrFlags::isVIMAGE(), llvm::SIInstrFlags::isVINTERP(), llvm::SIInstrFlags::isVOP3(), llvm::SIInstrFlags::isVOP3P(), llvm::SIInstrFlags::isVOPC(), llvm::AMDGPU::isVOPC64DPP(), llvm::SIInstrFlags::isVSAMPLE(), llvm::SIInstrFlags::isWMMA(), MI, llvm::SignExtend64(), Size, llvm::ArrayRef< T >::size(), llvm::ArrayRef< T >::slice(), llvm::MCDisassembler::SoftFail, llvm::MCDisassembler::STI, llvm::MCDisassembler::Success, llvm::MCOI::TIED_TO, and tryDecodeInst().
|
inline |
Definition at line 179 of file AMDGPUDisassembler.h.
References llvm::MCInstrInfo::get().
Definition at line 1657 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::getContext(), llvm::MCRegisterInfo::getRegClassName(), and llvm::MCContext::getRegisterInfo().
Referenced by createRegOperand(), and createSRegOperand().
Return the SGPR/TTMP register class accepted by source decoding for Width, or std::nullopt if that width has no supported encoding.
Definition at line 2065 of file AMDGPUDisassembler.cpp.
Referenced by decodeNonVGPRSrcOp(), decodeSDWASrc(), and decodeSDWAVopcDst().
Definition at line 2097 of file AMDGPUDisassembler.cpp.
Referenced by decodeNonVGPRSrcOp(), decodeSDWASrc(), and decodeSDWAVopcDst().
| int AMDGPUDisassembler::getTTmpIdx | ( | unsigned | Val | ) | const |
Definition at line 2124 of file AMDGPUDisassembler.cpp.
References isGFX9Plus().
Referenced by decodeNonVGPRSrcOp(), and decodeSDWAVopcDst().
Definition at line 1996 of file AMDGPUDisassembler.cpp.
References llvm_unreachable.
Referenced by decodeSDWASrc(), decodeSrcOp(), and decodeVOPDDstYOp().
| bool AMDGPUDisassembler::hasArchitectedFlatScratch | ( | ) | const |
Definition at line 2526 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC1(), decodeCOMPUTE_PGM_RSRC2(), and decodeKernelDescriptorDirective().
| bool AMDGPUDisassembler::hasKernargPreload | ( | ) | const |
Definition at line 2530 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::hasKernargPreload(), and llvm::MCDisassembler::STI.
Check if the instruction is a buffer operation (MUBUF, MTBUF, or S_BUFFER)
Definition at line 3132 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::getSMEMIsBuffer(), llvm::SIInstrFlags::isBuffer(), llvm::SIInstrFlags::isSMRD(), and MI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX10 | ( | ) | const |
Definition at line 2488 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX10(), and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX10Plus | ( | ) | const |
Definition at line 2490 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX10Plus(), and llvm::MCDisassembler::STI.
Referenced by AMDGPUDisassembler(), convertMIMGInst(), decodeCOMPUTE_PGM_RSRC1(), decodeCOMPUTE_PGM_RSRC3(), decodeKernelDescriptor(), decodeKernelDescriptorDirective(), and decodeSDWASrc().
| bool AMDGPUDisassembler::isGFX11 | ( | ) | const |
Definition at line 2494 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC3(), and getInstruction().
| bool AMDGPUDisassembler::isGFX1170 | ( | ) | const |
Definition at line 2502 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX11Plus | ( | ) | const |
Definition at line 2498 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX11Plus(), and llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC3(), decodeLiteralConstant(), decodeSpecialReg32(), decodeSpecialReg64(), decodeSpecialReg96Plus(), and getInstruction().
| bool AMDGPUDisassembler::isGFX12 | ( | ) | const |
Definition at line 2506 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX1250 | ( | ) | const |
Definition at line 2514 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX1250(), and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX1250Plus | ( | ) | const |
Definition at line 2516 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX1250Plus(), and llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC1(), decodeCOMPUTE_PGM_RSRC3(), and getInstruction().
| bool AMDGPUDisassembler::isGFX12Plus | ( | ) | const |
Definition at line 2510 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX12Plus(), and llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC1(), decodeCOMPUTE_PGM_RSRC3(), and getInstruction().
| bool AMDGPUDisassembler::isGFX13 | ( | ) | const |
Definition at line 2520 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX13(), and llvm::MCDisassembler::STI.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isGFX13Plus | ( | ) | const |
Definition at line 2522 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX13Plus(), and llvm::MCDisassembler::STI.
| bool AMDGPUDisassembler::isGFX9 | ( | ) | const |
Definition at line 2480 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX9(), and llvm::MCDisassembler::STI.
Referenced by decodeKernelDescriptorDirective(), and getInstruction().
| bool AMDGPUDisassembler::isGFX90A | ( | ) | const |
Definition at line 2482 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC3().
| bool AMDGPUDisassembler::isGFX9Plus | ( | ) | const |
Definition at line 2486 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::isGFX9Plus(), and llvm::MCDisassembler::STI.
Referenced by decodeCOMPUTE_PGM_RSRC1(), and getTTmpIdx().
Definition at line 1339 of file AMDGPUDisassembler.cpp.
References assert(), llvm::AMDGPU::hasNamedOperand(), MI, and llvm::MCOI::TIED_TO.
Referenced by getInstruction().
| bool AMDGPUDisassembler::isVI | ( | ) | const |
Definition at line 2476 of file AMDGPUDisassembler.cpp.
References llvm::MCDisassembler::STI.
Referenced by getInstruction().
|
overridevirtual |
Used to perform separate target specific disassembly for a particular symbol.
May parse any prelude that precedes instructions after the start of a symbol, or the entire symbol. This is used for example by WebAssembly to decode preludes.
Base implementation returns false. So all targets by default decline to treat symbols separately.
| Symbol | - The symbol. |
| Size | - The number of bytes consumed. |
| Address | - The address, in the memory space of region, of the first byte of the symbol. |
| Bytes | - A reference to the actual bytes at the symbol location. |
Reimplemented from llvm::MCDisassembler.
Definition at line 3088 of file AMDGPUDisassembler.cpp.
References llvm::Address, llvm::createStringError(), decodeKernelDescriptor(), Size, llvm::ELF::STT_AMDGPU_HSA_KERNEL, and llvm::ELF::STT_OBJECT.
|
overridevirtual |
ELF-specific, set the ABI version from the object header.
Reimplemented from llvm::MCDisassembler.
Definition at line 77 of file AMDGPUDisassembler.cpp.
References llvm::AMDGPU::getAMDHSACodeObjectVersion(), and llvm::Version.
| DecodeStatus AMDGPUDisassembler::tryDecodeInst | ( | const uint8_t * | Table, |
| MCInst & | MI, | ||
| InsnType | Inst, | ||
| uint64_t | Address, | ||
| raw_ostream & | Comments ) const |
Definition at line 561 of file AMDGPUDisassembler.cpp.
References llvm::Address, assert(), llvm::MCDisassembler::CommentStream, llvm::MCDisassembler::Fail, MI, llvm::MCDisassembler::STI, llvm::MCDisassembler::Success, and llvm::Table.
Referenced by getInstruction(), and tryDecodeInst().
| DecodeStatus AMDGPUDisassembler::tryDecodeInst | ( | const uint8_t * | Table1, |
| const uint8_t * | Table2, | ||
| MCInst & | MI, | ||
| InsnType | Inst, | ||
| uint64_t | Address, | ||
| raw_ostream & | Comments ) const |
Definition at line 592 of file AMDGPUDisassembler.cpp.
References llvm::Address, llvm::MCDisassembler::Fail, MI, T, and tryDecodeInst().