xref: /openbsd-src/gnu/llvm/llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
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