[llvm] [AMDGPU] Introduce fminmumnum/fmaximumnum into fminmun/fmaxnum_like pattern (PR #203150)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 14 16:47:09 PDT 2026
https://github.com/Shoreshen updated https://github.com/llvm/llvm-project/pull/203150
>From 65a9f62630c7e752113de5c649b5ff2380b2666d Mon Sep 17 00:00:00 2001
From: shore <372660931 at qq.com>
Date: Thu, 11 Jun 2026 10:00:45 +0800
Subject: [PATCH] introduce fminmumnum/fmaximumnum into fminmun/fmaxnum_like
pattern
---
llvm/lib/Target/AMDGPU/AMDGPUInstructions.td | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
index 11d8aef61c858..f34dbfe4a5b46 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
@@ -249,6 +249,8 @@ def umin_oneuse : HasOneUseBinOp<umin>;
def fminnum_oneuse : HasOneUseBinOp<fminnum>;
def fmaxnum_oneuse : HasOneUseBinOp<fmaxnum>;
+def fminimumnum_oneuse : HasOneUseBinOp<fminimumnum>;
+def fmaximumnum_oneuse : HasOneUseBinOp<fmaximumnum>;
def fminimum_oneuse : HasOneUseBinOp<fminimum>;
def fmaximum_oneuse : HasOneUseBinOp<fmaximum>;
@@ -847,13 +849,15 @@ class RcpPat<Instruction RcpInst, ValueType vt> : AMDGPUPat <
// Instructions which select to the same v_min_f*
def fminnum_like : PatFrags<(ops node:$src0, node:$src1),
[(fminnum_ieee node:$src0, node:$src1),
- (fminnum node:$src0, node:$src1)]
+ (fminnum node:$src0, node:$src1),
+ (fminimumnum node:$src0, node:$src1)]
>;
// Instructions which select to the same v_max_f*
def fmaxnum_like : PatFrags<(ops node:$src0, node:$src1),
[(fmaxnum_ieee node:$src0, node:$src1),
- (fmaxnum node:$src0, node:$src1)]
+ (fmaxnum node:$src0, node:$src1),
+ (fmaximumnum node:$src0, node:$src1)]
>;
class NeverNaNPats<dag ops, list<dag> frags> : PatFrags<ops, frags> {
@@ -867,22 +871,26 @@ class NeverNaNPats<dag ops, list<dag> frags> : PatFrags<ops, frags> {
def fminnum_like_nnan : NeverNaNPats<(ops node:$src0, node:$src1),
[(fminnum_ieee node:$src0, node:$src1),
- (fminnum node:$src0, node:$src1)]
+ (fminnum node:$src0, node:$src1),
+ (fminimumnum node:$src0, node:$src1)]
>;
def fmaxnum_like_nnan : NeverNaNPats<(ops node:$src0, node:$src1),
[(fmaxnum_ieee node:$src0, node:$src1),
- (fmaxnum node:$src0, node:$src1)]
+ (fmaxnum node:$src0, node:$src1),
+ (fmaximumnum node:$src0, node:$src1)]
>;
def fminnum_like_oneuse : PatFrags<(ops node:$src0, node:$src1),
[(fminnum_ieee_oneuse node:$src0, node:$src1),
- (fminnum_oneuse node:$src0, node:$src1)]
+ (fminnum_oneuse node:$src0, node:$src1),
+ (fminimumnum_oneuse node:$src0, node:$src1)]
>;
def fmaxnum_like_oneuse : PatFrags<(ops node:$src0, node:$src1),
[(fmaxnum_ieee_oneuse node:$src0, node:$src1),
- (fmaxnum_oneuse node:$src0, node:$src1)]
+ (fmaxnum_oneuse node:$src0, node:$src1),
+ (fmaximumnum_oneuse node:$src0, node:$src1)]
>;
def any_fmad : PatFrags<(ops node:$src0, node:$src1, node:$src2),
More information about the llvm-commits
mailing list