@@ -2660,11 +2660,11 @@ let True16Predicate = NotHasTrue16BitInsts in {
26602660let SubtargetPredicate = isNotGFX9Plus in {
26612661def : ROTRPattern <V_ALIGNBIT_B32_e64>;
26622662
2663- def : GCNPat<(i32 (trunc (srl i64:$src0, (and i32:$src1, (i32 31))))),
2663+ def : GCNPat<(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (and i32:$src1, (i32 31))))),
26642664 (V_ALIGNBIT_B32_e64 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
26652665 (i32 (EXTRACT_SUBREG (i64 $src0), sub0)), $src1)>;
26662666
2667- def : GCNPat<(i32 (trunc (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
2667+ def : GCNPat<(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
26682668 (V_ALIGNBIT_B32_e64 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
26692669 (i32 (EXTRACT_SUBREG (i64 $src0), sub0)), $src1)>;
26702670} // isNotGFX9Plus
@@ -2678,8 +2678,8 @@ def : GCNPat <
26782678 $src1, /* clamp */ 0, /* op_sel */ 0)
26792679>;
26802680
2681- foreach pat = [(i32 (trunc (srl i64:$src0, (and i32:$src1, (i32 31))))),
2682- (i32 (trunc (srl i64:$src0, (i32 ShiftAmt32Imm:$src1))))] in
2681+ foreach pat = [(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (and i32:$src1, (i32 31))))),
2682+ (i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (i32 ShiftAmt32Imm:$src1))))] in
26832683def : GCNPat<pat,
26842684 (V_ALIGNBIT_B32_opsel_e64 0, /* src0_modifiers */
26852685 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
@@ -2708,7 +2708,7 @@ def : GCNPat <
27082708 /* clamp */ 0, /* op_sel */ 0)
27092709>;
27102710
2711- def : GCNPat<(i32 (trunc (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
2711+ def : GCNPat<(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
27122712 (V_ALIGNBIT_B32_t16_e64 0, /* src0_modifiers */
27132713 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
27142714 0, /* src1_modifiers */
@@ -2734,7 +2734,7 @@ def : GCNPat <
27342734 $src1, /* clamp */ 0, /* op_sel */ 0)
27352735>;
27362736
2737- def : GCNPat<(i32 (trunc (srl i64:$src0, (and i32:$src1, (i32 31))))),
2737+ def : GCNPat<(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (and i32:$src1, (i32 31))))),
27382738 (V_ALIGNBIT_B32_fake16_e64 0, /* src0_modifiers */
27392739 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
27402740 0, /* src1_modifiers */
@@ -2743,7 +2743,7 @@ def : GCNPat<(i32 (trunc (srl i64:$src0, (and i32:$src1, (i32 31))))),
27432743 $src1, /* clamp */ 0, /* op_sel */ 0)
27442744>;
27452745
2746- def : GCNPat<(i32 (trunc (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
2746+ def : GCNPat<(i32 (DivergentUnaryFrag< trunc> (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
27472747 (V_ALIGNBIT_B32_fake16_e64 0, /* src0_modifiers */
27482748 (i32 (EXTRACT_SUBREG (i64 $src0), sub1)),
27492749 0, /* src1_modifiers */
0 commit comments