109467b48Spatrick //===-- AMDGPUAsmUtils.cpp - AsmParser/InstPrinter common -----------------===// 209467b48Spatrick // 309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information. 509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 609467b48Spatrick // 709467b48Spatrick //===----------------------------------------------------------------------===// 809467b48Spatrick #include "AMDGPUAsmUtils.h" 9*d415bd75Srobert #include "AMDGPUBaseInfo.h" 1073471bf0Spatrick #include "SIDefines.h" 1173471bf0Spatrick 1209467b48Spatrick namespace llvm { 1309467b48Spatrick namespace AMDGPU { 14*d415bd75Srobert 15*d415bd75Srobert namespace DepCtr { 16*d415bd75Srobert 17*d415bd75Srobert // NOLINTBEGIN 18*d415bd75Srobert const CustomOperandVal DepCtrInfo[] = { 19*d415bd75Srobert // Name max dflt offset width constraint 20*d415bd75Srobert {{"depctr_hold_cnt"}, 1, 1, 7, 1, isGFX10_BEncoding}, 21*d415bd75Srobert {{"depctr_sa_sdst"}, 1, 1, 0, 1}, 22*d415bd75Srobert {{"depctr_va_vdst"}, 15, 15, 12, 4}, 23*d415bd75Srobert {{"depctr_va_sdst"}, 7, 7, 9, 3}, 24*d415bd75Srobert {{"depctr_va_ssrc"}, 1, 1, 8, 1}, 25*d415bd75Srobert {{"depctr_va_vcc"}, 1, 1, 1, 1}, 26*d415bd75Srobert {{"depctr_vm_vsrc"}, 7, 7, 2, 3}, 27*d415bd75Srobert }; 28*d415bd75Srobert // NOLINTEND 29*d415bd75Srobert 30*d415bd75Srobert const int DEP_CTR_SIZE = 31*d415bd75Srobert static_cast<int>(sizeof(DepCtrInfo) / sizeof(CustomOperandVal)); 32*d415bd75Srobert 33*d415bd75Srobert } // namespace DepCtr 34*d415bd75Srobert 3509467b48Spatrick namespace SendMsg { 3609467b48Spatrick 37*d415bd75Srobert // Disable lint checking for this block since it makes the table unreadable. 38*d415bd75Srobert // NOLINTBEGIN 39*d415bd75Srobert const CustomOperand<const MCSubtargetInfo &> Msg[] = { 40*d415bd75Srobert {{""}}, 41*d415bd75Srobert {{"MSG_INTERRUPT"}, ID_INTERRUPT}, 42*d415bd75Srobert {{"MSG_GS"}, ID_GS_PreGFX11, isNotGFX11Plus}, 43*d415bd75Srobert {{"MSG_GS_DONE"}, ID_GS_DONE_PreGFX11, isNotGFX11Plus}, 44*d415bd75Srobert {{"MSG_SAVEWAVE"}, ID_SAVEWAVE, isGFX8_GFX9_GFX10}, 45*d415bd75Srobert {{"MSG_STALL_WAVE_GEN"}, ID_STALL_WAVE_GEN, isGFX9Plus}, 46*d415bd75Srobert {{"MSG_HALT_WAVES"}, ID_HALT_WAVES, isGFX9Plus}, 47*d415bd75Srobert {{"MSG_ORDERED_PS_DONE"}, ID_ORDERED_PS_DONE, isGFX9Plus}, 48*d415bd75Srobert {{"MSG_EARLY_PRIM_DEALLOC"}, ID_EARLY_PRIM_DEALLOC, isGFX9_GFX10}, 49*d415bd75Srobert {{"MSG_GS_ALLOC_REQ"}, ID_GS_ALLOC_REQ, isGFX9Plus}, 50*d415bd75Srobert {{"MSG_GET_DOORBELL"}, ID_GET_DOORBELL, isGFX9_GFX10}, 51*d415bd75Srobert {{"MSG_GET_DDID"}, ID_GET_DDID, isGFX10}, 52*d415bd75Srobert {{"MSG_HS_TESSFACTOR"}, ID_HS_TESSFACTOR_GFX11Plus, isGFX11Plus}, 53*d415bd75Srobert {{"MSG_DEALLOC_VGPRS"}, ID_DEALLOC_VGPRS_GFX11Plus, isGFX11Plus}, 54*d415bd75Srobert {{""}}, 55*d415bd75Srobert {{"MSG_SYSMSG"}, ID_SYSMSG}, 56*d415bd75Srobert {{"MSG_RTN_GET_DOORBELL"}, ID_RTN_GET_DOORBELL, isGFX11Plus}, 57*d415bd75Srobert {{"MSG_RTN_GET_DDID"}, ID_RTN_GET_DDID, isGFX11Plus}, 58*d415bd75Srobert {{"MSG_RTN_GET_TMA"}, ID_RTN_GET_TMA, isGFX11Plus}, 59*d415bd75Srobert {{"MSG_RTN_GET_REALTIME"}, ID_RTN_GET_REALTIME, isGFX11Plus}, 60*d415bd75Srobert {{"MSG_RTN_SAVE_WAVE"}, ID_RTN_SAVE_WAVE, isGFX11Plus}, 61*d415bd75Srobert {{"MSG_RTN_GET_TBA"}, ID_RTN_GET_TBA, isGFX11Plus}, 6209467b48Spatrick }; 63*d415bd75Srobert // NOLINTEND 64*d415bd75Srobert 65*d415bd75Srobert const int MSG_SIZE = static_cast<int>( 66*d415bd75Srobert sizeof(Msg) / sizeof(CustomOperand<const MCSubtargetInfo &>)); 6709467b48Spatrick 6809467b48Spatrick // These two must be in sync with llvm::AMDGPU::SendMsg::Op enum members, see SIDefines.h. 6973471bf0Spatrick const char *const OpSysSymbolic[OP_SYS_LAST_] = { 7009467b48Spatrick nullptr, 7109467b48Spatrick "SYSMSG_OP_ECC_ERR_INTERRUPT", 7209467b48Spatrick "SYSMSG_OP_REG_RD", 7309467b48Spatrick "SYSMSG_OP_HOST_TRAP_ACK", 7409467b48Spatrick "SYSMSG_OP_TTRACE_PC" 7509467b48Spatrick }; 7609467b48Spatrick 7773471bf0Spatrick const char *const OpGsSymbolic[OP_GS_LAST_] = { 7809467b48Spatrick "GS_OP_NOP", 7909467b48Spatrick "GS_OP_CUT", 8009467b48Spatrick "GS_OP_EMIT", 8109467b48Spatrick "GS_OP_EMIT_CUT" 8209467b48Spatrick }; 8309467b48Spatrick 8409467b48Spatrick } // namespace SendMsg 8509467b48Spatrick 8609467b48Spatrick namespace Hwreg { 8709467b48Spatrick 88*d415bd75Srobert // Disable lint checking for this block since it makes the table unreadable. 89*d415bd75Srobert // NOLINTBEGIN 90*d415bd75Srobert const CustomOperand<const MCSubtargetInfo &> Opr[] = { 91*d415bd75Srobert {{""}}, 92*d415bd75Srobert {{"HW_REG_MODE"}, ID_MODE}, 93*d415bd75Srobert {{"HW_REG_STATUS"}, ID_STATUS}, 94*d415bd75Srobert {{"HW_REG_TRAPSTS"}, ID_TRAPSTS}, 95*d415bd75Srobert {{"HW_REG_HW_ID"}, ID_HW_ID, isNotGFX10Plus}, 96*d415bd75Srobert {{"HW_REG_GPR_ALLOC"}, ID_GPR_ALLOC}, 97*d415bd75Srobert {{"HW_REG_LDS_ALLOC"}, ID_LDS_ALLOC}, 98*d415bd75Srobert {{"HW_REG_IB_STS"}, ID_IB_STS}, 99*d415bd75Srobert {{""}}, 100*d415bd75Srobert {{""}}, 101*d415bd75Srobert {{""}}, 102*d415bd75Srobert {{""}}, 103*d415bd75Srobert {{""}}, 104*d415bd75Srobert {{""}}, 105*d415bd75Srobert {{""}}, 106*d415bd75Srobert {{"HW_REG_SH_MEM_BASES"}, ID_MEM_BASES, isGFX9Plus}, 107*d415bd75Srobert {{"HW_REG_TBA_LO"}, ID_TBA_LO, isGFX9_GFX10}, 108*d415bd75Srobert {{"HW_REG_TBA_HI"}, ID_TBA_HI, isGFX9_GFX10}, 109*d415bd75Srobert {{"HW_REG_TMA_LO"}, ID_TMA_LO, isGFX9_GFX10}, 110*d415bd75Srobert {{"HW_REG_TMA_HI"}, ID_TMA_HI, isGFX9_GFX10}, 111*d415bd75Srobert {{"HW_REG_FLAT_SCR_LO"}, ID_FLAT_SCR_LO, isGFX10Plus}, 112*d415bd75Srobert {{"HW_REG_FLAT_SCR_HI"}, ID_FLAT_SCR_HI, isGFX10Plus}, 113*d415bd75Srobert {{"HW_REG_XNACK_MASK"}, ID_XNACK_MASK, isGFX10Before1030}, 114*d415bd75Srobert {{"HW_REG_HW_ID1"}, ID_HW_ID1, isGFX10Plus}, 115*d415bd75Srobert {{"HW_REG_HW_ID2"}, ID_HW_ID2, isGFX10Plus}, 116*d415bd75Srobert {{"HW_REG_POPS_PACKER"}, ID_POPS_PACKER, isGFX10}, 117*d415bd75Srobert {{""}}, 118*d415bd75Srobert {{""}}, 119*d415bd75Srobert {{""}}, 120*d415bd75Srobert {{"HW_REG_SHADER_CYCLES"}, ID_SHADER_CYCLES, isGFX10_BEncoding}, 121*d415bd75Srobert 122*d415bd75Srobert // GFX940 specific registers 123*d415bd75Srobert {{"HW_REG_XCC_ID"}, ID_XCC_ID, isGFX940}, 124*d415bd75Srobert {{"HW_REG_SQ_PERF_SNAPSHOT_DATA"}, ID_SQ_PERF_SNAPSHOT_DATA, isGFX940}, 125*d415bd75Srobert {{"HW_REG_SQ_PERF_SNAPSHOT_DATA1"}, ID_SQ_PERF_SNAPSHOT_DATA1, isGFX940}, 126*d415bd75Srobert {{"HW_REG_SQ_PERF_SNAPSHOT_PC_LO"}, ID_SQ_PERF_SNAPSHOT_PC_LO, isGFX940}, 127*d415bd75Srobert {{"HW_REG_SQ_PERF_SNAPSHOT_PC_HI"}, ID_SQ_PERF_SNAPSHOT_PC_HI, isGFX940}, 128*d415bd75Srobert 129*d415bd75Srobert // Aliases 130*d415bd75Srobert {{"HW_REG_HW_ID"}, ID_HW_ID1, isGFX10}, 13109467b48Spatrick }; 132*d415bd75Srobert // NOLINTEND 133*d415bd75Srobert 134*d415bd75Srobert const int OPR_SIZE = static_cast<int>( 135*d415bd75Srobert sizeof(Opr) / sizeof(CustomOperand<const MCSubtargetInfo &>)); 13609467b48Spatrick 13709467b48Spatrick } // namespace Hwreg 13809467b48Spatrick 13973471bf0Spatrick namespace MTBUFFormat { 14073471bf0Spatrick 14173471bf0Spatrick StringLiteral const DfmtSymbolic[] = { 14273471bf0Spatrick "BUF_DATA_FORMAT_INVALID", 14373471bf0Spatrick "BUF_DATA_FORMAT_8", 14473471bf0Spatrick "BUF_DATA_FORMAT_16", 14573471bf0Spatrick "BUF_DATA_FORMAT_8_8", 14673471bf0Spatrick "BUF_DATA_FORMAT_32", 14773471bf0Spatrick "BUF_DATA_FORMAT_16_16", 14873471bf0Spatrick "BUF_DATA_FORMAT_10_11_11", 14973471bf0Spatrick "BUF_DATA_FORMAT_11_11_10", 15073471bf0Spatrick "BUF_DATA_FORMAT_10_10_10_2", 15173471bf0Spatrick "BUF_DATA_FORMAT_2_10_10_10", 15273471bf0Spatrick "BUF_DATA_FORMAT_8_8_8_8", 15373471bf0Spatrick "BUF_DATA_FORMAT_32_32", 15473471bf0Spatrick "BUF_DATA_FORMAT_16_16_16_16", 15573471bf0Spatrick "BUF_DATA_FORMAT_32_32_32", 15673471bf0Spatrick "BUF_DATA_FORMAT_32_32_32_32", 15773471bf0Spatrick "BUF_DATA_FORMAT_RESERVED_15" 15873471bf0Spatrick }; 15973471bf0Spatrick 16073471bf0Spatrick StringLiteral const NfmtSymbolicGFX10[] = { 16173471bf0Spatrick "BUF_NUM_FORMAT_UNORM", 16273471bf0Spatrick "BUF_NUM_FORMAT_SNORM", 16373471bf0Spatrick "BUF_NUM_FORMAT_USCALED", 16473471bf0Spatrick "BUF_NUM_FORMAT_SSCALED", 16573471bf0Spatrick "BUF_NUM_FORMAT_UINT", 16673471bf0Spatrick "BUF_NUM_FORMAT_SINT", 16773471bf0Spatrick "", 16873471bf0Spatrick "BUF_NUM_FORMAT_FLOAT" 16973471bf0Spatrick }; 17073471bf0Spatrick 17173471bf0Spatrick StringLiteral const NfmtSymbolicSICI[] = { 17273471bf0Spatrick "BUF_NUM_FORMAT_UNORM", 17373471bf0Spatrick "BUF_NUM_FORMAT_SNORM", 17473471bf0Spatrick "BUF_NUM_FORMAT_USCALED", 17573471bf0Spatrick "BUF_NUM_FORMAT_SSCALED", 17673471bf0Spatrick "BUF_NUM_FORMAT_UINT", 17773471bf0Spatrick "BUF_NUM_FORMAT_SINT", 17873471bf0Spatrick "BUF_NUM_FORMAT_SNORM_OGL", 17973471bf0Spatrick "BUF_NUM_FORMAT_FLOAT" 18073471bf0Spatrick }; 18173471bf0Spatrick 18273471bf0Spatrick StringLiteral const NfmtSymbolicVI[] = { // VI and GFX9 18373471bf0Spatrick "BUF_NUM_FORMAT_UNORM", 18473471bf0Spatrick "BUF_NUM_FORMAT_SNORM", 18573471bf0Spatrick "BUF_NUM_FORMAT_USCALED", 18673471bf0Spatrick "BUF_NUM_FORMAT_SSCALED", 18773471bf0Spatrick "BUF_NUM_FORMAT_UINT", 18873471bf0Spatrick "BUF_NUM_FORMAT_SINT", 18973471bf0Spatrick "BUF_NUM_FORMAT_RESERVED_6", 19073471bf0Spatrick "BUF_NUM_FORMAT_FLOAT" 19173471bf0Spatrick }; 19273471bf0Spatrick 193*d415bd75Srobert StringLiteral const UfmtSymbolicGFX10[] = { 19473471bf0Spatrick "BUF_FMT_INVALID", 19573471bf0Spatrick 19673471bf0Spatrick "BUF_FMT_8_UNORM", 19773471bf0Spatrick "BUF_FMT_8_SNORM", 19873471bf0Spatrick "BUF_FMT_8_USCALED", 19973471bf0Spatrick "BUF_FMT_8_SSCALED", 20073471bf0Spatrick "BUF_FMT_8_UINT", 20173471bf0Spatrick "BUF_FMT_8_SINT", 20273471bf0Spatrick 20373471bf0Spatrick "BUF_FMT_16_UNORM", 20473471bf0Spatrick "BUF_FMT_16_SNORM", 20573471bf0Spatrick "BUF_FMT_16_USCALED", 20673471bf0Spatrick "BUF_FMT_16_SSCALED", 20773471bf0Spatrick "BUF_FMT_16_UINT", 20873471bf0Spatrick "BUF_FMT_16_SINT", 20973471bf0Spatrick "BUF_FMT_16_FLOAT", 21073471bf0Spatrick 21173471bf0Spatrick "BUF_FMT_8_8_UNORM", 21273471bf0Spatrick "BUF_FMT_8_8_SNORM", 21373471bf0Spatrick "BUF_FMT_8_8_USCALED", 21473471bf0Spatrick "BUF_FMT_8_8_SSCALED", 21573471bf0Spatrick "BUF_FMT_8_8_UINT", 21673471bf0Spatrick "BUF_FMT_8_8_SINT", 21773471bf0Spatrick 21873471bf0Spatrick "BUF_FMT_32_UINT", 21973471bf0Spatrick "BUF_FMT_32_SINT", 22073471bf0Spatrick "BUF_FMT_32_FLOAT", 22173471bf0Spatrick 22273471bf0Spatrick "BUF_FMT_16_16_UNORM", 22373471bf0Spatrick "BUF_FMT_16_16_SNORM", 22473471bf0Spatrick "BUF_FMT_16_16_USCALED", 22573471bf0Spatrick "BUF_FMT_16_16_SSCALED", 22673471bf0Spatrick "BUF_FMT_16_16_UINT", 22773471bf0Spatrick "BUF_FMT_16_16_SINT", 22873471bf0Spatrick "BUF_FMT_16_16_FLOAT", 22973471bf0Spatrick 23073471bf0Spatrick "BUF_FMT_10_11_11_UNORM", 23173471bf0Spatrick "BUF_FMT_10_11_11_SNORM", 23273471bf0Spatrick "BUF_FMT_10_11_11_USCALED", 23373471bf0Spatrick "BUF_FMT_10_11_11_SSCALED", 23473471bf0Spatrick "BUF_FMT_10_11_11_UINT", 23573471bf0Spatrick "BUF_FMT_10_11_11_SINT", 23673471bf0Spatrick "BUF_FMT_10_11_11_FLOAT", 23773471bf0Spatrick 23873471bf0Spatrick "BUF_FMT_11_11_10_UNORM", 23973471bf0Spatrick "BUF_FMT_11_11_10_SNORM", 24073471bf0Spatrick "BUF_FMT_11_11_10_USCALED", 24173471bf0Spatrick "BUF_FMT_11_11_10_SSCALED", 24273471bf0Spatrick "BUF_FMT_11_11_10_UINT", 24373471bf0Spatrick "BUF_FMT_11_11_10_SINT", 24473471bf0Spatrick "BUF_FMT_11_11_10_FLOAT", 24573471bf0Spatrick 24673471bf0Spatrick "BUF_FMT_10_10_10_2_UNORM", 24773471bf0Spatrick "BUF_FMT_10_10_10_2_SNORM", 24873471bf0Spatrick "BUF_FMT_10_10_10_2_USCALED", 24973471bf0Spatrick "BUF_FMT_10_10_10_2_SSCALED", 25073471bf0Spatrick "BUF_FMT_10_10_10_2_UINT", 25173471bf0Spatrick "BUF_FMT_10_10_10_2_SINT", 25273471bf0Spatrick 25373471bf0Spatrick "BUF_FMT_2_10_10_10_UNORM", 25473471bf0Spatrick "BUF_FMT_2_10_10_10_SNORM", 25573471bf0Spatrick "BUF_FMT_2_10_10_10_USCALED", 25673471bf0Spatrick "BUF_FMT_2_10_10_10_SSCALED", 25773471bf0Spatrick "BUF_FMT_2_10_10_10_UINT", 25873471bf0Spatrick "BUF_FMT_2_10_10_10_SINT", 25973471bf0Spatrick 26073471bf0Spatrick "BUF_FMT_8_8_8_8_UNORM", 26173471bf0Spatrick "BUF_FMT_8_8_8_8_SNORM", 26273471bf0Spatrick "BUF_FMT_8_8_8_8_USCALED", 26373471bf0Spatrick "BUF_FMT_8_8_8_8_SSCALED", 26473471bf0Spatrick "BUF_FMT_8_8_8_8_UINT", 26573471bf0Spatrick "BUF_FMT_8_8_8_8_SINT", 26673471bf0Spatrick 26773471bf0Spatrick "BUF_FMT_32_32_UINT", 26873471bf0Spatrick "BUF_FMT_32_32_SINT", 26973471bf0Spatrick "BUF_FMT_32_32_FLOAT", 27073471bf0Spatrick 27173471bf0Spatrick "BUF_FMT_16_16_16_16_UNORM", 27273471bf0Spatrick "BUF_FMT_16_16_16_16_SNORM", 27373471bf0Spatrick "BUF_FMT_16_16_16_16_USCALED", 27473471bf0Spatrick "BUF_FMT_16_16_16_16_SSCALED", 27573471bf0Spatrick "BUF_FMT_16_16_16_16_UINT", 27673471bf0Spatrick "BUF_FMT_16_16_16_16_SINT", 27773471bf0Spatrick "BUF_FMT_16_16_16_16_FLOAT", 27873471bf0Spatrick 27973471bf0Spatrick "BUF_FMT_32_32_32_UINT", 28073471bf0Spatrick "BUF_FMT_32_32_32_SINT", 28173471bf0Spatrick "BUF_FMT_32_32_32_FLOAT", 28273471bf0Spatrick "BUF_FMT_32_32_32_32_UINT", 28373471bf0Spatrick "BUF_FMT_32_32_32_32_SINT", 28473471bf0Spatrick "BUF_FMT_32_32_32_32_FLOAT" 28573471bf0Spatrick }; 28673471bf0Spatrick 287*d415bd75Srobert unsigned const DfmtNfmt2UFmtGFX10[] = { 28873471bf0Spatrick DFMT_INVALID | (NFMT_UNORM << NFMT_SHIFT), 28973471bf0Spatrick 29073471bf0Spatrick DFMT_8 | (NFMT_UNORM << NFMT_SHIFT), 29173471bf0Spatrick DFMT_8 | (NFMT_SNORM << NFMT_SHIFT), 29273471bf0Spatrick DFMT_8 | (NFMT_USCALED << NFMT_SHIFT), 29373471bf0Spatrick DFMT_8 | (NFMT_SSCALED << NFMT_SHIFT), 29473471bf0Spatrick DFMT_8 | (NFMT_UINT << NFMT_SHIFT), 29573471bf0Spatrick DFMT_8 | (NFMT_SINT << NFMT_SHIFT), 29673471bf0Spatrick 29773471bf0Spatrick DFMT_16 | (NFMT_UNORM << NFMT_SHIFT), 29873471bf0Spatrick DFMT_16 | (NFMT_SNORM << NFMT_SHIFT), 29973471bf0Spatrick DFMT_16 | (NFMT_USCALED << NFMT_SHIFT), 30073471bf0Spatrick DFMT_16 | (NFMT_SSCALED << NFMT_SHIFT), 30173471bf0Spatrick DFMT_16 | (NFMT_UINT << NFMT_SHIFT), 30273471bf0Spatrick DFMT_16 | (NFMT_SINT << NFMT_SHIFT), 30373471bf0Spatrick DFMT_16 | (NFMT_FLOAT << NFMT_SHIFT), 30473471bf0Spatrick 30573471bf0Spatrick DFMT_8_8 | (NFMT_UNORM << NFMT_SHIFT), 30673471bf0Spatrick DFMT_8_8 | (NFMT_SNORM << NFMT_SHIFT), 30773471bf0Spatrick DFMT_8_8 | (NFMT_USCALED << NFMT_SHIFT), 30873471bf0Spatrick DFMT_8_8 | (NFMT_SSCALED << NFMT_SHIFT), 30973471bf0Spatrick DFMT_8_8 | (NFMT_UINT << NFMT_SHIFT), 31073471bf0Spatrick DFMT_8_8 | (NFMT_SINT << NFMT_SHIFT), 31173471bf0Spatrick 31273471bf0Spatrick DFMT_32 | (NFMT_UINT << NFMT_SHIFT), 31373471bf0Spatrick DFMT_32 | (NFMT_SINT << NFMT_SHIFT), 31473471bf0Spatrick DFMT_32 | (NFMT_FLOAT << NFMT_SHIFT), 31573471bf0Spatrick 31673471bf0Spatrick DFMT_16_16 | (NFMT_UNORM << NFMT_SHIFT), 31773471bf0Spatrick DFMT_16_16 | (NFMT_SNORM << NFMT_SHIFT), 31873471bf0Spatrick DFMT_16_16 | (NFMT_USCALED << NFMT_SHIFT), 31973471bf0Spatrick DFMT_16_16 | (NFMT_SSCALED << NFMT_SHIFT), 32073471bf0Spatrick DFMT_16_16 | (NFMT_UINT << NFMT_SHIFT), 32173471bf0Spatrick DFMT_16_16 | (NFMT_SINT << NFMT_SHIFT), 32273471bf0Spatrick DFMT_16_16 | (NFMT_FLOAT << NFMT_SHIFT), 32373471bf0Spatrick 32473471bf0Spatrick DFMT_10_11_11 | (NFMT_UNORM << NFMT_SHIFT), 32573471bf0Spatrick DFMT_10_11_11 | (NFMT_SNORM << NFMT_SHIFT), 32673471bf0Spatrick DFMT_10_11_11 | (NFMT_USCALED << NFMT_SHIFT), 32773471bf0Spatrick DFMT_10_11_11 | (NFMT_SSCALED << NFMT_SHIFT), 32873471bf0Spatrick DFMT_10_11_11 | (NFMT_UINT << NFMT_SHIFT), 32973471bf0Spatrick DFMT_10_11_11 | (NFMT_SINT << NFMT_SHIFT), 33073471bf0Spatrick DFMT_10_11_11 | (NFMT_FLOAT << NFMT_SHIFT), 33173471bf0Spatrick 33273471bf0Spatrick DFMT_11_11_10 | (NFMT_UNORM << NFMT_SHIFT), 33373471bf0Spatrick DFMT_11_11_10 | (NFMT_SNORM << NFMT_SHIFT), 33473471bf0Spatrick DFMT_11_11_10 | (NFMT_USCALED << NFMT_SHIFT), 33573471bf0Spatrick DFMT_11_11_10 | (NFMT_SSCALED << NFMT_SHIFT), 33673471bf0Spatrick DFMT_11_11_10 | (NFMT_UINT << NFMT_SHIFT), 33773471bf0Spatrick DFMT_11_11_10 | (NFMT_SINT << NFMT_SHIFT), 33873471bf0Spatrick DFMT_11_11_10 | (NFMT_FLOAT << NFMT_SHIFT), 33973471bf0Spatrick 34073471bf0Spatrick DFMT_10_10_10_2 | (NFMT_UNORM << NFMT_SHIFT), 34173471bf0Spatrick DFMT_10_10_10_2 | (NFMT_SNORM << NFMT_SHIFT), 34273471bf0Spatrick DFMT_10_10_10_2 | (NFMT_USCALED << NFMT_SHIFT), 34373471bf0Spatrick DFMT_10_10_10_2 | (NFMT_SSCALED << NFMT_SHIFT), 34473471bf0Spatrick DFMT_10_10_10_2 | (NFMT_UINT << NFMT_SHIFT), 34573471bf0Spatrick DFMT_10_10_10_2 | (NFMT_SINT << NFMT_SHIFT), 34673471bf0Spatrick 34773471bf0Spatrick DFMT_2_10_10_10 | (NFMT_UNORM << NFMT_SHIFT), 34873471bf0Spatrick DFMT_2_10_10_10 | (NFMT_SNORM << NFMT_SHIFT), 34973471bf0Spatrick DFMT_2_10_10_10 | (NFMT_USCALED << NFMT_SHIFT), 35073471bf0Spatrick DFMT_2_10_10_10 | (NFMT_SSCALED << NFMT_SHIFT), 35173471bf0Spatrick DFMT_2_10_10_10 | (NFMT_UINT << NFMT_SHIFT), 35273471bf0Spatrick DFMT_2_10_10_10 | (NFMT_SINT << NFMT_SHIFT), 35373471bf0Spatrick 35473471bf0Spatrick DFMT_8_8_8_8 | (NFMT_UNORM << NFMT_SHIFT), 35573471bf0Spatrick DFMT_8_8_8_8 | (NFMT_SNORM << NFMT_SHIFT), 35673471bf0Spatrick DFMT_8_8_8_8 | (NFMT_USCALED << NFMT_SHIFT), 35773471bf0Spatrick DFMT_8_8_8_8 | (NFMT_SSCALED << NFMT_SHIFT), 35873471bf0Spatrick DFMT_8_8_8_8 | (NFMT_UINT << NFMT_SHIFT), 35973471bf0Spatrick DFMT_8_8_8_8 | (NFMT_SINT << NFMT_SHIFT), 36073471bf0Spatrick 36173471bf0Spatrick DFMT_32_32 | (NFMT_UINT << NFMT_SHIFT), 36273471bf0Spatrick DFMT_32_32 | (NFMT_SINT << NFMT_SHIFT), 36373471bf0Spatrick DFMT_32_32 | (NFMT_FLOAT << NFMT_SHIFT), 36473471bf0Spatrick 36573471bf0Spatrick DFMT_16_16_16_16 | (NFMT_UNORM << NFMT_SHIFT), 36673471bf0Spatrick DFMT_16_16_16_16 | (NFMT_SNORM << NFMT_SHIFT), 36773471bf0Spatrick DFMT_16_16_16_16 | (NFMT_USCALED << NFMT_SHIFT), 36873471bf0Spatrick DFMT_16_16_16_16 | (NFMT_SSCALED << NFMT_SHIFT), 36973471bf0Spatrick DFMT_16_16_16_16 | (NFMT_UINT << NFMT_SHIFT), 37073471bf0Spatrick DFMT_16_16_16_16 | (NFMT_SINT << NFMT_SHIFT), 37173471bf0Spatrick DFMT_16_16_16_16 | (NFMT_FLOAT << NFMT_SHIFT), 37273471bf0Spatrick 37373471bf0Spatrick DFMT_32_32_32 | (NFMT_UINT << NFMT_SHIFT), 37473471bf0Spatrick DFMT_32_32_32 | (NFMT_SINT << NFMT_SHIFT), 37573471bf0Spatrick DFMT_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT), 37673471bf0Spatrick DFMT_32_32_32_32 | (NFMT_UINT << NFMT_SHIFT), 37773471bf0Spatrick DFMT_32_32_32_32 | (NFMT_SINT << NFMT_SHIFT), 37873471bf0Spatrick DFMT_32_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT) 37973471bf0Spatrick }; 38073471bf0Spatrick 381*d415bd75Srobert StringLiteral const UfmtSymbolicGFX11[] = { 382*d415bd75Srobert "BUF_FMT_INVALID", 383*d415bd75Srobert 384*d415bd75Srobert "BUF_FMT_8_UNORM", 385*d415bd75Srobert "BUF_FMT_8_SNORM", 386*d415bd75Srobert "BUF_FMT_8_USCALED", 387*d415bd75Srobert "BUF_FMT_8_SSCALED", 388*d415bd75Srobert "BUF_FMT_8_UINT", 389*d415bd75Srobert "BUF_FMT_8_SINT", 390*d415bd75Srobert 391*d415bd75Srobert "BUF_FMT_16_UNORM", 392*d415bd75Srobert "BUF_FMT_16_SNORM", 393*d415bd75Srobert "BUF_FMT_16_USCALED", 394*d415bd75Srobert "BUF_FMT_16_SSCALED", 395*d415bd75Srobert "BUF_FMT_16_UINT", 396*d415bd75Srobert "BUF_FMT_16_SINT", 397*d415bd75Srobert "BUF_FMT_16_FLOAT", 398*d415bd75Srobert 399*d415bd75Srobert "BUF_FMT_8_8_UNORM", 400*d415bd75Srobert "BUF_FMT_8_8_SNORM", 401*d415bd75Srobert "BUF_FMT_8_8_USCALED", 402*d415bd75Srobert "BUF_FMT_8_8_SSCALED", 403*d415bd75Srobert "BUF_FMT_8_8_UINT", 404*d415bd75Srobert "BUF_FMT_8_8_SINT", 405*d415bd75Srobert 406*d415bd75Srobert "BUF_FMT_32_UINT", 407*d415bd75Srobert "BUF_FMT_32_SINT", 408*d415bd75Srobert "BUF_FMT_32_FLOAT", 409*d415bd75Srobert 410*d415bd75Srobert "BUF_FMT_16_16_UNORM", 411*d415bd75Srobert "BUF_FMT_16_16_SNORM", 412*d415bd75Srobert "BUF_FMT_16_16_USCALED", 413*d415bd75Srobert "BUF_FMT_16_16_SSCALED", 414*d415bd75Srobert "BUF_FMT_16_16_UINT", 415*d415bd75Srobert "BUF_FMT_16_16_SINT", 416*d415bd75Srobert "BUF_FMT_16_16_FLOAT", 417*d415bd75Srobert 418*d415bd75Srobert "BUF_FMT_10_11_11_FLOAT", 419*d415bd75Srobert 420*d415bd75Srobert "BUF_FMT_11_11_10_FLOAT", 421*d415bd75Srobert 422*d415bd75Srobert "BUF_FMT_10_10_10_2_UNORM", 423*d415bd75Srobert "BUF_FMT_10_10_10_2_SNORM", 424*d415bd75Srobert "BUF_FMT_10_10_10_2_UINT", 425*d415bd75Srobert "BUF_FMT_10_10_10_2_SINT", 426*d415bd75Srobert 427*d415bd75Srobert "BUF_FMT_2_10_10_10_UNORM", 428*d415bd75Srobert "BUF_FMT_2_10_10_10_SNORM", 429*d415bd75Srobert "BUF_FMT_2_10_10_10_USCALED", 430*d415bd75Srobert "BUF_FMT_2_10_10_10_SSCALED", 431*d415bd75Srobert "BUF_FMT_2_10_10_10_UINT", 432*d415bd75Srobert "BUF_FMT_2_10_10_10_SINT", 433*d415bd75Srobert 434*d415bd75Srobert "BUF_FMT_8_8_8_8_UNORM", 435*d415bd75Srobert "BUF_FMT_8_8_8_8_SNORM", 436*d415bd75Srobert "BUF_FMT_8_8_8_8_USCALED", 437*d415bd75Srobert "BUF_FMT_8_8_8_8_SSCALED", 438*d415bd75Srobert "BUF_FMT_8_8_8_8_UINT", 439*d415bd75Srobert "BUF_FMT_8_8_8_8_SINT", 440*d415bd75Srobert 441*d415bd75Srobert "BUF_FMT_32_32_UINT", 442*d415bd75Srobert "BUF_FMT_32_32_SINT", 443*d415bd75Srobert "BUF_FMT_32_32_FLOAT", 444*d415bd75Srobert 445*d415bd75Srobert "BUF_FMT_16_16_16_16_UNORM", 446*d415bd75Srobert "BUF_FMT_16_16_16_16_SNORM", 447*d415bd75Srobert "BUF_FMT_16_16_16_16_USCALED", 448*d415bd75Srobert "BUF_FMT_16_16_16_16_SSCALED", 449*d415bd75Srobert "BUF_FMT_16_16_16_16_UINT", 450*d415bd75Srobert "BUF_FMT_16_16_16_16_SINT", 451*d415bd75Srobert "BUF_FMT_16_16_16_16_FLOAT", 452*d415bd75Srobert 453*d415bd75Srobert "BUF_FMT_32_32_32_UINT", 454*d415bd75Srobert "BUF_FMT_32_32_32_SINT", 455*d415bd75Srobert "BUF_FMT_32_32_32_FLOAT", 456*d415bd75Srobert "BUF_FMT_32_32_32_32_UINT", 457*d415bd75Srobert "BUF_FMT_32_32_32_32_SINT", 458*d415bd75Srobert "BUF_FMT_32_32_32_32_FLOAT" 459*d415bd75Srobert }; 460*d415bd75Srobert 461*d415bd75Srobert unsigned const DfmtNfmt2UFmtGFX11[] = { 462*d415bd75Srobert DFMT_INVALID | (NFMT_UNORM << NFMT_SHIFT), 463*d415bd75Srobert 464*d415bd75Srobert DFMT_8 | (NFMT_UNORM << NFMT_SHIFT), 465*d415bd75Srobert DFMT_8 | (NFMT_SNORM << NFMT_SHIFT), 466*d415bd75Srobert DFMT_8 | (NFMT_USCALED << NFMT_SHIFT), 467*d415bd75Srobert DFMT_8 | (NFMT_SSCALED << NFMT_SHIFT), 468*d415bd75Srobert DFMT_8 | (NFMT_UINT << NFMT_SHIFT), 469*d415bd75Srobert DFMT_8 | (NFMT_SINT << NFMT_SHIFT), 470*d415bd75Srobert 471*d415bd75Srobert DFMT_16 | (NFMT_UNORM << NFMT_SHIFT), 472*d415bd75Srobert DFMT_16 | (NFMT_SNORM << NFMT_SHIFT), 473*d415bd75Srobert DFMT_16 | (NFMT_USCALED << NFMT_SHIFT), 474*d415bd75Srobert DFMT_16 | (NFMT_SSCALED << NFMT_SHIFT), 475*d415bd75Srobert DFMT_16 | (NFMT_UINT << NFMT_SHIFT), 476*d415bd75Srobert DFMT_16 | (NFMT_SINT << NFMT_SHIFT), 477*d415bd75Srobert DFMT_16 | (NFMT_FLOAT << NFMT_SHIFT), 478*d415bd75Srobert 479*d415bd75Srobert DFMT_8_8 | (NFMT_UNORM << NFMT_SHIFT), 480*d415bd75Srobert DFMT_8_8 | (NFMT_SNORM << NFMT_SHIFT), 481*d415bd75Srobert DFMT_8_8 | (NFMT_USCALED << NFMT_SHIFT), 482*d415bd75Srobert DFMT_8_8 | (NFMT_SSCALED << NFMT_SHIFT), 483*d415bd75Srobert DFMT_8_8 | (NFMT_UINT << NFMT_SHIFT), 484*d415bd75Srobert DFMT_8_8 | (NFMT_SINT << NFMT_SHIFT), 485*d415bd75Srobert 486*d415bd75Srobert DFMT_32 | (NFMT_UINT << NFMT_SHIFT), 487*d415bd75Srobert DFMT_32 | (NFMT_SINT << NFMT_SHIFT), 488*d415bd75Srobert DFMT_32 | (NFMT_FLOAT << NFMT_SHIFT), 489*d415bd75Srobert 490*d415bd75Srobert DFMT_16_16 | (NFMT_UNORM << NFMT_SHIFT), 491*d415bd75Srobert DFMT_16_16 | (NFMT_SNORM << NFMT_SHIFT), 492*d415bd75Srobert DFMT_16_16 | (NFMT_USCALED << NFMT_SHIFT), 493*d415bd75Srobert DFMT_16_16 | (NFMT_SSCALED << NFMT_SHIFT), 494*d415bd75Srobert DFMT_16_16 | (NFMT_UINT << NFMT_SHIFT), 495*d415bd75Srobert DFMT_16_16 | (NFMT_SINT << NFMT_SHIFT), 496*d415bd75Srobert DFMT_16_16 | (NFMT_FLOAT << NFMT_SHIFT), 497*d415bd75Srobert 498*d415bd75Srobert DFMT_10_11_11 | (NFMT_FLOAT << NFMT_SHIFT), 499*d415bd75Srobert 500*d415bd75Srobert DFMT_11_11_10 | (NFMT_FLOAT << NFMT_SHIFT), 501*d415bd75Srobert 502*d415bd75Srobert DFMT_10_10_10_2 | (NFMT_UNORM << NFMT_SHIFT), 503*d415bd75Srobert DFMT_10_10_10_2 | (NFMT_SNORM << NFMT_SHIFT), 504*d415bd75Srobert DFMT_10_10_10_2 | (NFMT_UINT << NFMT_SHIFT), 505*d415bd75Srobert DFMT_10_10_10_2 | (NFMT_SINT << NFMT_SHIFT), 506*d415bd75Srobert 507*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_UNORM << NFMT_SHIFT), 508*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_SNORM << NFMT_SHIFT), 509*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_USCALED << NFMT_SHIFT), 510*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_SSCALED << NFMT_SHIFT), 511*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_UINT << NFMT_SHIFT), 512*d415bd75Srobert DFMT_2_10_10_10 | (NFMT_SINT << NFMT_SHIFT), 513*d415bd75Srobert 514*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_UNORM << NFMT_SHIFT), 515*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_SNORM << NFMT_SHIFT), 516*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_USCALED << NFMT_SHIFT), 517*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_SSCALED << NFMT_SHIFT), 518*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_UINT << NFMT_SHIFT), 519*d415bd75Srobert DFMT_8_8_8_8 | (NFMT_SINT << NFMT_SHIFT), 520*d415bd75Srobert 521*d415bd75Srobert DFMT_32_32 | (NFMT_UINT << NFMT_SHIFT), 522*d415bd75Srobert DFMT_32_32 | (NFMT_SINT << NFMT_SHIFT), 523*d415bd75Srobert DFMT_32_32 | (NFMT_FLOAT << NFMT_SHIFT), 524*d415bd75Srobert 525*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_UNORM << NFMT_SHIFT), 526*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_SNORM << NFMT_SHIFT), 527*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_USCALED << NFMT_SHIFT), 528*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_SSCALED << NFMT_SHIFT), 529*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_UINT << NFMT_SHIFT), 530*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_SINT << NFMT_SHIFT), 531*d415bd75Srobert DFMT_16_16_16_16 | (NFMT_FLOAT << NFMT_SHIFT), 532*d415bd75Srobert 533*d415bd75Srobert DFMT_32_32_32 | (NFMT_UINT << NFMT_SHIFT), 534*d415bd75Srobert DFMT_32_32_32 | (NFMT_SINT << NFMT_SHIFT), 535*d415bd75Srobert DFMT_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT), 536*d415bd75Srobert DFMT_32_32_32_32 | (NFMT_UINT << NFMT_SHIFT), 537*d415bd75Srobert DFMT_32_32_32_32 | (NFMT_SINT << NFMT_SHIFT), 538*d415bd75Srobert DFMT_32_32_32_32 | (NFMT_FLOAT << NFMT_SHIFT) 539*d415bd75Srobert }; 540*d415bd75Srobert 54173471bf0Spatrick } // namespace MTBUFFormat 54273471bf0Spatrick 54309467b48Spatrick namespace Swizzle { 54409467b48Spatrick 54509467b48Spatrick // This must be in sync with llvm::AMDGPU::Swizzle::Id enum members, see SIDefines.h. 54609467b48Spatrick const char* const IdSymbolic[] = { 54709467b48Spatrick "QUAD_PERM", 54809467b48Spatrick "BITMASK_PERM", 54909467b48Spatrick "SWAP", 55009467b48Spatrick "REVERSE", 55109467b48Spatrick "BROADCAST", 55209467b48Spatrick }; 55309467b48Spatrick 55409467b48Spatrick } // namespace Swizzle 55509467b48Spatrick 55609467b48Spatrick namespace VGPRIndexMode { 55709467b48Spatrick 55809467b48Spatrick // This must be in sync with llvm::AMDGPU::VGPRIndexMode::Id enum members, see SIDefines.h. 55909467b48Spatrick const char* const IdSymbolic[] = { 56009467b48Spatrick "SRC0", 56109467b48Spatrick "SRC1", 56209467b48Spatrick "SRC2", 56309467b48Spatrick "DST", 56409467b48Spatrick }; 56509467b48Spatrick 56609467b48Spatrick } // namespace VGPRIndexMode 56709467b48Spatrick 56809467b48Spatrick } // namespace AMDGPU 56909467b48Spatrick } // namespace llvm 570