[llvm] 253a762 - AMDGPU: Consolidiate f16 med3 patterns (#97399)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 2 03:26:15 PDT 2024
Author: Matt Arsenault
Date: 2024-07-02T12:26:11+02:00
New Revision: 253a76261901d966cc803077294bf3fc9ef9ea18
URL: https://github.com/llvm/llvm-project/commit/253a76261901d966cc803077294bf3fc9ef9ea18
DIFF: https://github.com/llvm/llvm-project/commit/253a76261901d966cc803077294bf3fc9ef9ea18.diff
LOG: AMDGPU: Consolidiate f16 med3 patterns (#97399)
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPU.td
llvm/lib/Target/AMDGPU/SIInstructions.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index 63d83346528ab..2f3890e0ff2ae 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -2013,6 +2013,7 @@ def HasVOP3PInsts : Predicate<"Subtarget->hasVOP3PInsts()">,
AssemblerPredicate<(all_of FeatureVOP3P)>;
def NotHasMed3_16 : Predicate<"!Subtarget->hasMed3_16()">;
+def HasMed3_16 : Predicate<"Subtarget->hasMed3_16()">;
def HasMinMaxDenormModes : Predicate<"Subtarget->supportsMinMaxDenormModes()">;
def NotHasMinMaxDenormModes : Predicate<"!Subtarget->supportsMinMaxDenormModes()">;
diff --git a/llvm/lib/Target/AMDGPU/SIInstructions.td b/llvm/lib/Target/AMDGPU/SIInstructions.td
index 835f44f9d0d61..77b17a0f2789b 100644
--- a/llvm/lib/Target/AMDGPU/SIInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SIInstructions.td
@@ -3534,16 +3534,6 @@ multiclass FPMed3Pat<ValueType vt,
DSTCLAMP.NONE, DSTOMOD.NONE)>;
}
-class FP16Med3Pat<ValueType vt,
- Instruction med3Inst> : GCNPat<
- (fmaxnum_like_nnan (fminnum_like (VOP3Mods vt:$src0, i32:$src0_mods),
- (VOP3Mods vt:$src1, i32:$src1_mods)),
- (fminnum_like (fmaxnum_like (VOP3Mods vt:$src0, i32:$src0_mods),
- (VOP3Mods vt:$src1, i32:$src1_mods)),
- (vt (VOP3Mods vt:$src2, i32:$src2_mods)))),
- (med3Inst $src0_mods, $src0, $src1_mods, $src1, $src2_mods, $src2, DSTCLAMP.NONE)
->;
-
multiclass Int16Med3Pat<Instruction med3Inst,
SDPatternOperator min,
SDPatternOperator max> {
@@ -3566,6 +3556,10 @@ multiclass Int16Med3Pat<Instruction med3Inst,
defm : FPMed3Pat<f32, V_MED3_F32_e64>;
+let SubtargetPredicate = HasMed3_16 in {
+defm : FPMed3Pat<f16, V_MED3_F16_e64>;
+}
+
class
IntMinMaxPat<Instruction minmaxInst, SDPatternOperator min_or_max,
SDPatternOperator max_or_min_oneuse> : AMDGPUPat <
@@ -3611,7 +3605,6 @@ def : FPMinCanonMaxPat<V_MAXMIN_F16_e64, f16, fminnum_like, fmaxnum_like_oneuse>
}
let OtherPredicates = [isGFX9Plus] in {
-def : FP16Med3Pat<f16, V_MED3_F16_e64>;
defm : Int16Med3Pat<V_MED3_I16_e64, smin, smax>;
defm : Int16Med3Pat<V_MED3_U16_e64, umin, umax>;
} // End Predicates = [isGFX9Plus]
More information about the llvm-commits
mailing list