| //===-- AMDGPUAsmUtils.cpp - AsmParser/InstPrinter common -----------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| #include "AMDGPUAsmUtils.h" |
| #include "SIDefines.h" |
| |
| #include "llvm/ADT/StringRef.h" |
| |
| namespace llvm { |
| namespace AMDGPU { |
| namespace SendMsg { |
| |
| // This must be in sync with llvm::AMDGPU::SendMsg::Id enum members, see SIDefines.h. |
| const char* const IdSymbolic[] = { |
| nullptr, |
| "MSG_INTERRUPT", |
| "MSG_GS", |
| "MSG_GS_DONE", |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| "MSG_GS_ALLOC_REQ", |
| "MSG_GET_DOORBELL", |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| "MSG_SYSMSG" |
| }; |
| |
| // These two must be in sync with llvm::AMDGPU::SendMsg::Op enum members, see SIDefines.h. |
| const char* const OpSysSymbolic[] = { |
| nullptr, |
| "SYSMSG_OP_ECC_ERR_INTERRUPT", |
| "SYSMSG_OP_REG_RD", |
| "SYSMSG_OP_HOST_TRAP_ACK", |
| "SYSMSG_OP_TTRACE_PC" |
| }; |
| |
| const char* const OpGsSymbolic[] = { |
| "GS_OP_NOP", |
| "GS_OP_CUT", |
| "GS_OP_EMIT", |
| "GS_OP_EMIT_CUT" |
| }; |
| |
| } // namespace SendMsg |
| |
| namespace Hwreg { |
| |
| // This must be in sync with llvm::AMDGPU::Hwreg::ID_SYMBOLIC_FIRST_/LAST_, see SIDefines.h. |
| const char* const IdSymbolic[] = { |
| nullptr, |
| "HW_REG_MODE", |
| "HW_REG_STATUS", |
| "HW_REG_TRAPSTS", |
| "HW_REG_HW_ID", |
| "HW_REG_GPR_ALLOC", |
| "HW_REG_LDS_ALLOC", |
| "HW_REG_IB_STS", |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| "HW_REG_SH_MEM_BASES", |
| "HW_REG_TBA_LO", |
| "HW_REG_TBA_HI", |
| "HW_REG_TMA_LO", |
| "HW_REG_TMA_HI", |
| "HW_REG_FLAT_SCR_LO", |
| "HW_REG_FLAT_SCR_HI", |
| "HW_REG_XNACK_MASK", |
| nullptr, // HW_ID1, no predictable values |
| nullptr, // HW_ID2, no predictable values |
| "HW_REG_POPS_PACKER", |
| nullptr, |
| nullptr, |
| nullptr, |
| "HW_REG_SHADER_CYCLES" |
| }; |
| |
| } // namespace Hwreg |
| |
| namespace MTBUFFormat { |
| |
| StringLiteral const DfmtSymbolic[] = { |
| "BUF_DATA_FORMAT_INVALID", |
| "BUF_DATA_FORMAT_8", |
| "BUF_DATA_FORMAT_16", |
| "BUF_DATA_FORMAT_8_8", |
| "BUF_DATA_FORMAT_32", |
| "BUF_DATA_FORMAT_16_16", |
| "BUF_DATA_FORMAT_10_11_11", |
| "BUF_DATA_FORMAT_11_11_10", |
| "BUF_DATA_FORMAT_10_10_10_2", |
| "BUF_DATA_FORMAT_2_10_10_10", |
| "BUF_DATA_FORMAT_8_8_8_8", |
| "BUF_DATA_FORMAT_32_32", |
| "BUF_DATA_FORMAT_16_16_16_16", |
| "BUF_DATA_FORMAT_32_32_32", |
| "BUF_DATA_FORMAT_32_32_32_32", |
| "BUF_DATA_FORMAT_RESERVED_15" |
| }; |
| |
| StringLiteral const NfmtSymbolicGFX10[] = { |
| "BUF_NUM_FORMAT_UNORM", |
| "BUF_NUM_FORMAT_SNORM", |
| "BUF_NUM_FORMAT_USCALED", |
| "BUF_NUM_FORMAT_SSCALED", |
| "BUF_NUM_FORMAT_UINT", |
| "BUF_NUM_FORMAT_SINT", |
| "", |
| "BUF_NUM_FORMAT_FLOAT" |
| }; |
| |
| StringLiteral const NfmtSymbolicSICI[] = { |
| "BUF_NUM_FORMAT_UNORM", |
| "BUF_NUM_FORMAT_SNORM", |
| "BUF_NUM_FORMAT_USCALED", |
| "BUF_NUM_FORMAT_SSCALED", |
| "BUF_NUM_FORMAT_UINT", |
| "BUF_NUM_FORMAT_SINT", |
| "BUF_NUM_FORMAT_SNORM_OGL", |
| "BUF_NUM_FORMAT_FLOAT" |
| }; |
| |
| StringLiteral const NfmtSymbolicVI[] = { // VI and GFX9 |
| "BUF_NUM_FORMAT_UNORM", |
| "BUF_NUM_FORMAT_SNORM", |
| "BUF_NUM_FORMAT_USCALED", |
| "BUF_NUM_FORMAT_SSCALED", |
| "BUF_NUM_FORMAT_UINT", |
| "BUF_NUM_FORMAT_SINT", |
| "BUF_NUM_FORMAT_RESERVED_6", |
| "BUF_NUM_FORMAT_FLOAT" |
| }; |
| |
| StringLiteral const UfmtSymbolic[] = { |
| "BUF_FMT_INVALID", |
| |
| "BUF_FMT_8_UNORM", |
| "BUF_FMT_8_SNORM", |
| "BUF_FMT_8_USCALED", |
| "BUF_FMT_8_SSCALED", |
| "BUF_FMT_8_UINT", |
| "BUF_FMT_8_SINT", |
| |
| "BUF_FMT_16_UNORM", |
| "BUF_FMT_16_SNORM", |
| "BUF_FMT_16_USCALED", |
| "BUF_FMT_16_SSCALED", |
| "BUF_FMT_16_UINT", |
| "BUF_FMT_16_SINT", |
| "BUF_FMT_16_FLOAT", |
| |
| "BUF_FMT_8_8_UNORM", |
| "BUF_FMT_8_8_SNORM", |
| "BUF_FMT_8_8_USCALED", |
| "BUF_FMT_8_8_SSCALED", |
| "BUF_FMT_8_8_UINT", |
| "BUF_FMT_8_8_SINT", |
| |
| "BUF_FMT_32_UINT", |
| "BUF_FMT_32_SINT", |
| "BUF_FMT_32_FLOAT", |
| |
| "BUF_FMT_16_16_UNORM", |
| "BUF_FMT_16_16_SNORM", |
| "BUF_FMT_16_16_USCALED", |
| "BUF_FMT_16_16_SSCALED", |
| "BUF_FMT_16_16_UINT", |
| "BUF_FMT_16_16_SINT", |
| "BUF_FMT_16_16_FLOAT", |
| |
| "BUF_FMT_10_11_11_UNORM", |
| "BUF_FMT_10_11_11_SNORM", |
| "BUF_FMT_10_11_11_USCALED", |
| "BUF_FMT_10_11_11_SSCALED", |
| "BUF_FMT_10_11_11_UINT", |
| "BUF_FMT_10_11_11_SINT", |
| "BUF_FMT_10_11_11_FLOAT", |
| |
| "BUF_FMT_11_11_10_UNORM", |
| "BUF_FMT_11_11_10_SNORM", |
| "BUF_FMT_11_11_10_USCALED", |
| "BUF_FMT_11_11_10_SSCALED", |
| "BUF_FMT_11_11_10_UINT", |
| "BUF_FMT_11_11_10_SINT", |
| "BUF_FMT_11_11_10_FLOAT", |
| |
| "BUF_FMT_10_10_10_2_UNORM", |
| "BUF_FMT_10_10_10_2_SNORM", |
| "BUF_FMT_10_10_10_2_USCALED", |
| "BUF_FMT_10_10_10_2_SSCALED", |
| "BUF_FMT_10_10_10_2_UINT", |
| "BUF_FMT_10_10_10_2_SINT", |
| |
| "BUF_FMT_2_10_10_10_UNORM", |
| "BUF_FMT_2_10_10_10_SNORM", |
| "BUF_FMT_2_10_10_10_USCALED", |
| "BUF_FMT_2_10_10_10_SSCALED", |
| "BUF_FMT_2_10_10_10_UINT", |
| "BUF_FMT_2_10_10_10_SINT", |
| |
| "BUF_FMT_8_8_8_8_UNORM", |
| "BUF_FMT_8_8_8_8_SNORM", |
| "BUF_FMT_8_8_8_8_USCALED", |
| "BUF_FMT_8_8_8_8_SSCALED", |
| "BUF_FMT_8_8_8_8_UINT", |
| "BUF_FMT_8_8_8_8_SINT", |
| |
| "BUF_FMT_32_32_UINT", |
| "BUF_FMT_32_32_SINT", |
| "BUF_FMT_32_32_FLOAT", |
| |
| "BUF_FMT_16_16_16_16_UNORM", |
| "BUF_FMT_16_16_16_16_SNORM", |
| "BUF_FMT_16_16_16_16_USCALED", |
| "BUF_FMT_16_16_16_16_SSCALED", |
| "BUF_FMT_16_16_16_16_UINT", |
| "BUF_FMT_16_16_16_16_SINT", |
| "BUF_FMT_16_16_16_16_FLOAT", |
| |
| "BUF_FMT_32_32_32_UINT", |
| "BUF_FMT_32_32_32_SINT", |
| "BUF_FMT_32_32_32_FLOAT", |
| "BUF_FMT_32_32_32_32_UINT", |
| "BUF_FMT_32_32_32_32_SINT", |
| "BUF_FMT_32_32_32_32_FLOAT" |
| }; |
| |
| unsigned const DfmtNfmt2UFmt[] = { |
| DFMT_INVALID | (NFMT_UNORM << NFMT_SHIFT), |
| |
| DFMT_8 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_8 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_8 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_8 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_8 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_8 | (NFMT_SINT << NFMT_SHIFT), |
| |
| DFMT_16 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_16 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_16 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_16 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_16 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_16 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_16 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_8_8 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_8_8 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_8_8 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_8_8 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_8_8 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_8_8 | (NFMT_SINT << NFMT_SHIFT), |
| |
| DFMT_32 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_32 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_32 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_16_16 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_16_16 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_10_11_11 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_10_11_11 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_11_11_10 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_11_11_10 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_10_10_10_2 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_10_10_10_2 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_10_10_10_2 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_10_10_10_2 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_10_10_10_2 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_10_10_10_2 | (NFMT_SINT << NFMT_SHIFT), |
| |
| DFMT_2_10_10_10 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_2_10_10_10 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_2_10_10_10 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_2_10_10_10 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_2_10_10_10 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_2_10_10_10 | (NFMT_SINT << NFMT_SHIFT), |
| |
| DFMT_8_8_8_8 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_8_8_8_8 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_8_8_8_8 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_8_8_8_8 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_8_8_8_8 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_8_8_8_8 | (NFMT_SINT << NFMT_SHIFT), |
| |
| DFMT_32_32 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_32_32 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_32_32 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_16_16_16_16 | (NFMT_UNORM << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_SNORM << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_USCALED << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_SSCALED << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_16_16_16_16 | (NFMT_FLOAT << NFMT_SHIFT), |
| |
| DFMT_32_32_32 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_32_32_32 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT), |
| DFMT_32_32_32_32 | (NFMT_UINT << NFMT_SHIFT), |
| DFMT_32_32_32_32 | (NFMT_SINT << NFMT_SHIFT), |
| DFMT_32_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT) |
| }; |
| |
| } // namespace MTBUFFormat |
| |
| namespace Swizzle { |
| |
| // This must be in sync with llvm::AMDGPU::Swizzle::Id enum members, see SIDefines.h. |
| const char* const IdSymbolic[] = { |
| "QUAD_PERM", |
| "BITMASK_PERM", |
| "SWAP", |
| "REVERSE", |
| "BROADCAST", |
| }; |
| |
| } // namespace Swizzle |
| |
| namespace VGPRIndexMode { |
| |
| // This must be in sync with llvm::AMDGPU::VGPRIndexMode::Id enum members, see SIDefines.h. |
| const char* const IdSymbolic[] = { |
| "SRC0", |
| "SRC1", |
| "SRC2", |
| "DST", |
| }; |
| |
| } // namespace VGPRIndexMode |
| |
| } // namespace AMDGPU |
| } // namespace llvm |