diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td index 63861a1a90527..dfe6dd7042f98 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -723,6 +723,12 @@ def FeatureVOPD : SubtargetFeature<"vopd", "Has VOPD dual issue wave32 instructions" >; +def FeatureVALUTransUseHazard : SubtargetFeature<"valu-trans-use-hazard", + "HasVALUTransUseHazard", + "true", + "Hazard when TRANS instructions are closely followed by a use of the result" +>; + //===------------------------------------------------------------===// // Subtarget Features (options and debugging) //===------------------------------------------------------------===// @@ -1305,6 +1311,7 @@ def FeatureISAVersion11_Common : FeatureSet< FeatureImageInsts, FeaturePackedTID, FeatureVcmpxPermlaneHazard, + FeatureVALUTransUseHazard, FeatureBackOffBarrier, FeatureMADIntraFwdBug]>; diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.h b/llvm/lib/Target/AMDGPU/GCNSubtarget.h index 5ebec834b1426..ba24630cb70ec 100644 --- a/llvm/lib/Target/AMDGPU/GCNSubtarget.h +++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.h @@ -195,6 +195,7 @@ class GCNSubtarget final : public AMDGPUGenSubtargetInfo, bool HasGFX11FullVGPRs = false; bool HasMADIntraFwdBug = false; bool HasVOPDInsts = false; + bool HasVALUTransUseHazard = false; // Dummy feature to use for assembler in tablegen. bool FeatureDisable = false; @@ -1063,7 +1064,7 @@ class GCNSubtarget final : public AMDGPUGenSubtargetInfo, return getGeneration() >= GFX11; } - bool hasVALUTransUseHazard() const { return getGeneration() >= GFX11; } + bool hasVALUTransUseHazard() const { return HasVALUTransUseHazard; } bool hasVALUMaskWriteHazard() const { return getGeneration() >= GFX11; }