diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIInstrFormats.td')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstrFormats.td | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrFormats.td b/llvm/lib/Target/AMDGPU/SIInstrFormats.td index 428c21c896d5..7ce042b67aba 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrFormats.td +++ b/llvm/lib/Target/AMDGPU/SIInstrFormats.td @@ -33,6 +33,7 @@ class InstSI <dag outs, dag ins, string asm = "", field bit VINTRP = 0; field bit SDWA = 0; field bit DPP = 0; + field bit TRANS = 0; // Memory instruction formats. field bit MUBUF = 0; @@ -110,9 +111,9 @@ class InstSI <dag outs, dag ins, string asm = "", // This bit indicates that this is a D16 buffer instruction. field bit D16Buf = 0; - // This field indicates that FLAT instruction accesses FLAT_GLBL or - // FLAT_SCRATCH segment. Must be 0 for non-FLAT instructions. - field bit IsNonFlatSeg = 0; + // This field indicates that FLAT instruction accesses FLAT_GLBL segment. + // Must be 0 for non-FLAT instructions. + field bit IsFlatGlobal = 0; // Reads the mode register, usually for FP environment. field bit ReadsModeReg = 0; @@ -130,6 +131,10 @@ class InstSI <dag outs, dag ins, string asm = "", // This bit indicates that this is one of DOT instructions. field bit IsDOT = 0; + // This field indicates that FLAT instruction accesses FLAT_SCRATCH segment. + // Must be 0 for non-FLAT instructions. + field bit IsFlatScratch = 0; + // These need to be kept in sync with the enum in SIInstrFlags. let TSFlags{0} = SALU; let TSFlags{1} = VALU; @@ -149,17 +154,18 @@ class InstSI <dag outs, dag ins, string asm = "", let TSFlags{13} = VINTRP; let TSFlags{14} = SDWA; let TSFlags{15} = DPP; + let TSFlags{16} = TRANS; - let TSFlags{16} = MUBUF; - let TSFlags{17} = MTBUF; - let TSFlags{18} = SMRD; - let TSFlags{19} = MIMG; - let TSFlags{20} = EXP; - let TSFlags{21} = FLAT; - let TSFlags{22} = DS; + let TSFlags{17} = MUBUF; + let TSFlags{18} = MTBUF; + let TSFlags{19} = SMRD; + let TSFlags{20} = MIMG; + let TSFlags{21} = EXP; + let TSFlags{22} = FLAT; + let TSFlags{23} = DS; - let TSFlags{23} = VGPRSpill; - let TSFlags{24} = SGPRSpill; + let TSFlags{24} = VGPRSpill; + let TSFlags{25} = SGPRSpill; let TSFlags{32} = VM_CNT; let TSFlags{33} = EXP_CNT; @@ -187,7 +193,7 @@ class InstSI <dag outs, dag ins, string asm = "", let TSFlags{50} = D16Buf; - let TSFlags{51} = IsNonFlatSeg; + let TSFlags{51} = IsFlatGlobal; let TSFlags{52} = FPDPRounding; @@ -197,17 +203,14 @@ class InstSI <dag outs, dag ins, string asm = "", let TSFlags{55} = IsDOT; - let SchedRW = [Write32Bit]; + let TSFlags{56} = IsFlatScratch; - field bits<1> DisableSIDecoder = 0; - field bits<1> DisableVIDecoder = 0; - field bits<1> DisableDecoder = 0; + let SchedRW = [Write32Bit]; - let isAsmParserOnly = !if(!eq(DisableDecoder{0}, {0}), 0, 1); let AsmVariantName = AMDGPUAsmVariants.Default; // Avoid changing source registers in a way that violates constant bus read limitations. - let hasExtraSrcRegAllocReq = !if(VOP1,1,!if(VOP2,1,!if(VOP3,1,!if(VOPC,1,!if(SDWA,1, !if(VALU,1,0)))))); + let hasExtraSrcRegAllocReq = !or(VOP1, VOP2, VOP3, VOPC, SDWA, VALU); } class PseudoInstSI<dag outs, dag ins, list<dag> pattern = [], string asm = ""> @@ -362,15 +365,4 @@ class VINTRPCommon <dag outs, dag ins, string asm, list<dag> pattern> : let VALU = 1; } -class EXPCommon<dag outs, dag ins, string asm, list<dag> pattern> : - InstSI<outs, ins, asm, pattern> { - let EXP = 1; - let EXP_CNT = 1; - let mayLoad = 0; // Set to 1 if done bit is set. - let mayStore = 1; - let UseNamedOperandTable = 1; - let Uses = [EXEC]; - let SchedRW = [WriteExport]; -} - } // End Uses = [EXEC] |
