[llvm] [AMDGPU] Add GFX11_7Insts feature, eliminate isGFX1170 helpers. NFC (PR #185878)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 11 06:36:34 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Mirko BrkuĊĦanin (mbrkusanin)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/185878.diff
8 Files Affected:
- (modified) llvm/lib/Target/AMDGPU/AMDGPU.td (+13-10)
- (modified) llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp (-2)
- (modified) llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp (+3-1)
- (modified) llvm/lib/Target/AMDGPU/GCNSubtarget.h (-4)
- (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.cpp (+3-2)
- (modified) llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (-4)
- (modified) llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h (-1)
- (modified) llvm/lib/Target/AMDGPU/VOP3Instructions.td (+2-2)
``````````diff
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index cf638b1b5778f..1eb668682527a 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -532,6 +532,11 @@ defm GFX10_3Insts : AMDGPUSubtargetFeature<"gfx10-3-insts",
/*GenPredicate=*/0
>;
+defm GFX11_7Insts : AMDGPUSubtargetFeature<"gfx1170-insts",
+ "Additional instructions for GFX1170",
+ /*GenPredicate=*/0
+>;
+
defm GFX7GFX8GFX9Insts : AMDGPUSubtargetFeature<"gfx7-gfx8-gfx9-insts",
"Instructions shared in GFX7, GFX8, GFX9",
/*GenPredicate=*/0
@@ -1933,7 +1938,8 @@ def FeatureISAVersion11_5_3 : FeatureSet<
def FeatureISAVersion11_7_0 : FeatureSet<
!listconcat(FeatureISAVersion11_Common.Features,
- [FeatureSALUFloatInsts,
+ [FeatureGFX11_7Insts,
+ FeatureSALUFloatInsts,
FeatureDPPSrc1SGPR,
FeatureFP8ConversionInsts,
FeatureDot11Insts,
@@ -2449,18 +2455,13 @@ def isGFX11Only :
def isGFX11Not11_70 :
Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX11 &&"
- "!Subtarget->hasIEEEMinimumMaximumInsts()">,
- AssemblerPredicate<(all_of FeatureGFX11Insts, (not FeatureIEEEMinimumMaximumInsts))>;
+ "!Subtarget->hasGFX11_7Insts()">,
+ AssemblerPredicate<(all_of FeatureGFX11Insts, (not FeatureGFX12Insts), (not FeatureGFX11_7Insts))>;
def isGFX1170Only :
Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX11 &&"
- "Subtarget->hasIEEEMinimumMaximumInsts()">,
- AssemblerPredicate<(all_of FeatureIEEEMinimumMaximumInsts, (not FeatureGFX12Insts))>;
-
-def isNotGFX1170Plus :
- Predicate<"Subtarget->getGeneration() <= AMDGPUSubtarget::GFX11 &&"
- "!Subtarget->hasIEEEMinimumMaximumInsts()">,
- AssemblerPredicate<(all_of (not FeatureGFX12Insts), (not FeatureIEEEMinimumMaximumInsts))>;
+ "Subtarget->hasGFX11_7Insts()">,
+ AssemblerPredicate<(all_of FeatureGFX11_7Insts, (not FeatureGFX12Insts))>;
def isGFX11Plus :
Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX11">,
@@ -2677,6 +2678,8 @@ def NotHasMADIntraFwdBug : Predicate<"!Subtarget->hasMADIntraFwdBug()">;
def NotHasSALUFloatInsts : Predicate<"!Subtarget->hasSALUFloatInsts()">,
AssemblerPredicate<(all_of (not FeatureSALUFloatInsts))>;
+def NotHasIEEEMinimumMaximumInsts : Predicate<"!Subtarget->hasIEEEMinimumMaximumInsts()">;
+
def NotHasCvtFP8VOP1Bug : Predicate<"!Subtarget->hasCvtFP8VOP1Bug()">;
def NeedsAlignedVGPRs : Predicate<"Subtarget->needsAlignedVGPRs()">,
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index fddb36133afb8..bbf1e2be86950 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -1556,8 +1556,6 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
return AMDGPU::isGFX11Plus(getSTI());
}
- bool isGFX1170() const { return AMDGPU::isGFX1170(getSTI()); }
-
bool isGFX12() const { return AMDGPU::isGFX12(getSTI()); }
bool isGFX12Plus() const { return AMDGPU::isGFX12Plus(getSTI()); }
diff --git a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
index 39b1651974de7..886fd9894adf3 100644
--- a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
+++ b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
@@ -2274,7 +2274,9 @@ bool AMDGPUDisassembler::isGFX11Plus() const {
return AMDGPU::isGFX11Plus(STI);
}
-bool AMDGPUDisassembler::isGFX1170() const { return AMDGPU::isGFX1170(STI); }
+bool AMDGPUDisassembler::isGFX1170() const {
+ return STI.hasFeature(AMDGPU::FeatureGFX11_7Insts);
+}
bool AMDGPUDisassembler::isGFX12() const {
return STI.hasFeature(AMDGPU::FeatureGFX12);
diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.h b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
index 695dd7db61e53..ea5c308a38f9b 100644
--- a/llvm/lib/Target/AMDGPU/GCNSubtarget.h
+++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
@@ -402,10 +402,6 @@ class GCNSubtarget final : public AMDGPUGenSubtargetInfo,
return isMesa3DOS() && AMDGPU::isShader(F.getCallingConv());
}
- bool isGFX1170() const {
- return getGeneration() == GFX11 && hasWMMA128bInsts();
- }
-
bool hasMad64_32() const { return getGeneration() >= SEA_ISLANDS; }
bool hasAtomicFaddInsts() const {
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 3cc0ecf8130f1..96ad12337d62a 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -10268,7 +10268,8 @@ static unsigned subtargetEncodingFamily(const GCNSubtarget &ST) {
case AMDGPUSubtarget::GFX10:
return SIEncodingFamily::GFX10;
case AMDGPUSubtarget::GFX11:
- return ST.isGFX1170() ? SIEncodingFamily::GFX1170 : SIEncodingFamily::GFX11;
+ return ST.hasGFX11_7Insts() ? SIEncodingFamily::GFX1170
+ : SIEncodingFamily::GFX11;
case AMDGPUSubtarget::GFX12:
return ST.hasGFX1250Insts() ? SIEncodingFamily::GFX1250
: SIEncodingFamily::GFX12;
@@ -10368,7 +10369,7 @@ int SIInstrInfo::pseudoToMCOpcode(int Opcode) const {
int32_t MCOp = AMDGPU::getMCOpcode(Opcode, Gen);
- if (MCOp == AMDGPU::INSTRUCTION_LIST_END && ST.isGFX1170())
+ if (MCOp == AMDGPU::INSTRUCTION_LIST_END && ST.hasGFX11_7Insts())
MCOp = AMDGPU::getMCOpcode(Opcode, SIEncodingFamily::GFX11);
if (MCOp == AMDGPU::INSTRUCTION_LIST_END && ST.hasGFX1250Insts())
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index 710e9c5166f2e..acf7c57acf6b4 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -2613,10 +2613,6 @@ bool isGFX11(const MCSubtargetInfo &STI) {
return STI.hasFeature(AMDGPU::FeatureGFX11);
}
-bool isGFX1170(const MCSubtargetInfo &STI) {
- return isGFX11(STI) && STI.hasFeature(AMDGPU::FeatureWMMA128bInsts);
-}
-
bool isGFX11Plus(const MCSubtargetInfo &STI) {
return isGFX11(STI) || isGFX12Plus(STI);
}
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
index 44462e4c244bd..5216f5527135b 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
@@ -1724,7 +1724,6 @@ bool isGFX10Plus(const MCSubtargetInfo &STI);
bool isNotGFX10Plus(const MCSubtargetInfo &STI);
bool isGFX10Before1030(const MCSubtargetInfo &STI);
bool isGFX11(const MCSubtargetInfo &STI);
-bool isGFX1170(const MCSubtargetInfo &STI);
bool isGFX11Plus(const MCSubtargetInfo &STI);
bool isGFX12(const MCSubtargetInfo &STI);
bool isGFX12Plus(const MCSubtargetInfo &STI);
diff --git a/llvm/lib/Target/AMDGPU/VOP3Instructions.td b/llvm/lib/Target/AMDGPU/VOP3Instructions.td
index a112ae513268f..83f9b05ee3f52 100644
--- a/llvm/lib/Target/AMDGPU/VOP3Instructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3Instructions.td
@@ -207,10 +207,10 @@ let IsDPMACCInstruction = 1 in
defm V_MUL_F64 : VOP3Inst <"v_mul_f64", VOP3_Profile<VOP_F64_F64_F64>, any_fmul>;
} // End SubtargetPredicate = isNotGFX12Plus
} // End FPDPRounding = 1
-let SubtargetPredicate = isNotGFX1170Plus in {
+let SubtargetPredicate = NotHasIEEEMinimumMaximumInsts in {
defm V_MIN_F64 : VOP3Inst <"v_min_f64", VOP3_Profile<VOP_F64_F64_F64>, fminnum_like>;
defm V_MAX_F64 : VOP3Inst <"v_max_f64", VOP3_Profile<VOP_F64_F64_F64>, fmaxnum_like>;
-} // End SubtargetPredicate = isNotGFX1170Plus
+} // End SubtargetPredicate = NotHasIEEEMinimumMaximumInsts
} // End SchedRW = [WriteDoubleAdd]
let SchedRW = [WriteIntMul] in {
``````````
</details>
https://github.com/llvm/llvm-project/pull/185878
More information about the llvm-commits
mailing list