[llvm] [GlobalISel][AMDGPU] Import patterns with multiple defs (PR #84171)
Pierre van Houtryve via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 6 06:28:27 PST 2024
================
@@ -728,25 +728,34 @@ def : OpSelBinOpClampPat<saddsat, V_ADD_I16_e64>;
def : OpSelBinOpClampPat<ssubsat, V_SUB_I16_e64>;
} // End SubtargetPredicate = isGFX9Plus
-// FIXME: GlobalISel in general does not handle instructions with 2 results,
-// so it cannot use these patterns.
multiclass IMAD32_Pats <VOP3_Pseudo inst> {
def : GCNPat <
(ThreeOpFrag<mul, add> i32:$src0, i32:$src1, i32:$src2),
- (EXTRACT_SUBREG (inst $src0, $src1,
+ (EXTRACT_SUBREG (inst i32:$src0, i32:$src1,
(REG_SEQUENCE SReg_64, // Use scalar and let it be legalized
$src2, sub0,
(i32 (IMPLICIT_DEF)), sub1),
0 /* clamp */),
sub0)
>;
+
+ // GISel-specific pattern that avoids creating a SGPR->VGPR copy if
+ // $src2 is a VGPR.
----------------
Pierre-vh wrote:
Doesn't seem to work, we need two patterns
https://github.com/llvm/llvm-project/pull/84171
More information about the llvm-commits
mailing list