@@ -1503,7 +1503,7 @@ defm VFNCVT_ROD_F_F_W : VNCVTF_FV_VS2<"vfncvt.rod.f.f.w", 0b010010, 0b10101>;
1503
1503
let Predicates = [HasVInstructions] in {
1504
1504
1505
1505
// Vector Single-Width Integer Reduction Instructions
1506
- let RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1 in {
1506
+ let RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask in {
1507
1507
defm VREDSUM : VRED_MV_V<"vredsum", 0b000000>;
1508
1508
defm VREDMAXU : VREDMINMAX_MV_V<"vredmaxu", 0b000110>;
1509
1509
defm VREDMAX : VREDMINMAX_MV_V<"vredmax", 0b000111>;
@@ -1512,23 +1512,23 @@ defm VREDMIN : VREDMINMAX_MV_V<"vredmin", 0b000101>;
1512
1512
defm VREDAND : VRED_MV_V<"vredand", 0b000001>;
1513
1513
defm VREDOR : VRED_MV_V<"vredor", 0b000010>;
1514
1514
defm VREDXOR : VRED_MV_V<"vredxor", 0b000011>;
1515
- } // RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1
1515
+ } // RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask
1516
1516
1517
1517
// Vector Widening Integer Reduction Instructions
1518
- let Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1 in {
1518
+ let Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask in {
1519
1519
// Set earlyclobber for following instructions for second and mask operands.
1520
1520
// This has the downside that the earlyclobber constraint is too coarse and
1521
1521
// will impose unnecessary restrictions by not allowing the destination to
1522
1522
// overlap with the first (wide) operand.
1523
1523
defm VWREDSUMU : VWRED_IV_V<"vwredsumu", 0b110000>;
1524
1524
defm VWREDSUM : VWRED_IV_V<"vwredsum", 0b110001>;
1525
- } // Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1
1525
+ } // Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask
1526
1526
1527
1527
} // Predicates = [HasVInstructions]
1528
1528
1529
1529
let Predicates = [HasVInstructionsAnyF] in {
1530
1530
// Vector Single-Width Floating-Point Reduction Instructions
1531
- let RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1 in {
1531
+ let RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask in {
1532
1532
let Uses = [FRM], mayRaiseFPException = true in {
1533
1533
defm VFREDOSUM : VREDO_FV_V<"vfredosum", 0b000011>;
1534
1534
defm VFREDUSUM : VRED_FV_V<"vfredusum", 0b000001>;
@@ -1537,13 +1537,13 @@ let mayRaiseFPException = true in {
1537
1537
defm VFREDMAX : VREDMINMAX_FV_V<"vfredmax", 0b000111>;
1538
1538
defm VFREDMIN : VREDMINMAX_FV_V<"vfredmin", 0b000101>;
1539
1539
}
1540
- } // RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1
1540
+ } // RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask
1541
1541
1542
1542
def : InstAlias<"vfredsum.vs $vd, $vs2, $vs1$vm",
1543
1543
(VFREDUSUM_VS VR:$vd, VR:$vs2, VR:$vs1, VMaskOp:$vm), 0>;
1544
1544
1545
1545
// Vector Widening Floating-Point Reduction Instructions
1546
- let Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1 in {
1546
+ let Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask in {
1547
1547
// Set earlyclobber for following instructions for second and mask operands.
1548
1548
// This has the downside that the earlyclobber constraint is too coarse and
1549
1549
// will impose unnecessary restrictions by not allowing the destination to
@@ -1552,7 +1552,7 @@ let Uses = [FRM], mayRaiseFPException = true in {
1552
1552
defm VFWREDOSUM : VWREDO_FV_V<"vfwredosum", 0b110011>;
1553
1553
defm VFWREDUSUM : VWRED_FV_V<"vfwredusum", 0b110001>;
1554
1554
}
1555
- } // Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1
1555
+ } // Constraints = "@earlyclobber $vd", RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask
1556
1556
1557
1557
def : InstAlias<"vfwredsum.vs $vd, $vs2, $vs1$vm",
1558
1558
(VFWREDUSUM_VS VR:$vd, VR:$vs2, VR:$vs1, VMaskOp:$vm), 0>;
@@ -1586,7 +1586,7 @@ def : InstAlias<"vmornot.mm $vd, $vs2, $vs1",
1586
1586
(VMORN_MM VR:$vd, VR:$vs2, VR:$vs1), 0>;
1587
1587
1588
1588
let hasSideEffects = 0, mayLoad = 0, mayStore = 0,
1589
- RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1 in {
1589
+ RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask in {
1590
1590
1591
1591
// Vector mask population count vcpop
1592
1592
def VCPOP_M : RVInstV<0b010000, 0b10000, OPMVV, (outs GPR:$vd),
@@ -1600,12 +1600,12 @@ def VFIRST_M : RVInstV<0b010000, 0b10001, OPMVV, (outs GPR:$vd),
1600
1600
"vfirst.m", "$vd, $vs2$vm">,
1601
1601
SchedUnaryMC<"WriteVMFFSV", "ReadVMFFSV">;
1602
1602
1603
- } // hasSideEffects = 0, mayLoad = 0, mayStore = 0, RVVConstraint = NoConstraint, ActiveElementsAffectResult = 1
1603
+ } // hasSideEffects = 0, mayLoad = 0, mayStore = 0, RVVConstraint = NoConstraint, ElementsDependOn = EltDepsVLMask
1604
1604
1605
1605
def : InstAlias<"vpopc.m $vd, $vs2$vm",
1606
1606
(VCPOP_M GPR:$vd, VR:$vs2, VMaskOp:$vm), 0>;
1607
1607
1608
- let Constraints = "@earlyclobber $vd", RVVConstraint = Iota, ActiveElementsAffectResult = 1 in {
1608
+ let Constraints = "@earlyclobber $vd", RVVConstraint = Iota, ElementsDependOn = EltDepsVLMask in {
1609
1609
1610
1610
// vmsbf.m set-before-first mask bit
1611
1611
defm VMSBF_M : VMSFS_MV_V<"vmsbf.m", 0b010100, 0b00001>;
@@ -1616,7 +1616,7 @@ defm VMSOF_M : VMSFS_MV_V<"vmsof.m", 0b010100, 0b00010>;
1616
1616
// Vector Iota Instruction
1617
1617
defm VIOTA_M : VIOTA_MV_V<"viota.m", 0b010100, 0b10000>;
1618
1618
1619
- } // Constraints = "@earlyclobber $vd", RVVConstraint = Iota, ActiveElementsAffectResult = 1
1619
+ } // Constraints = "@earlyclobber $vd", RVVConstraint = Iota, ElementsDependOn = EltDepsVLMask
1620
1620
1621
1621
// Vector Element Index Instruction
1622
1622
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
@@ -1665,15 +1665,15 @@ defm VSLIDEUP_V : VSLD_IV_X_I<"vslideup", 0b001110, /*slidesUp=*/true>;
1665
1665
defm VSLIDE1UP_V : VSLD1_MV_X<"vslide1up", 0b001110>;
1666
1666
} // Constraints = "@earlyclobber $vd", RVVConstraint = SlideUp
1667
1667
defm VSLIDEDOWN_V : VSLD_IV_X_I<"vslidedown", 0b001111, /*slidesUp=*/false>;
1668
- let ActiveElementsAffectResult = 1 in
1668
+ let ElementsDependOn = EltDepsVL in
1669
1669
defm VSLIDE1DOWN_V : VSLD1_MV_X<"vslide1down", 0b001111>;
1670
1670
} // Predicates = [HasVInstructions]
1671
1671
1672
1672
let Predicates = [HasVInstructionsAnyF] in {
1673
1673
let Constraints = "@earlyclobber $vd", RVVConstraint = SlideUp in {
1674
1674
defm VFSLIDE1UP_V : VSLD1_FV_F<"vfslide1up", 0b001110>;
1675
1675
} // Constraints = "@earlyclobber $vd", RVVConstraint = SlideUp
1676
- let ActiveElementsAffectResult = 1 in
1676
+ let ElementsDependOn = EltDepsVL in
1677
1677
defm VFSLIDE1DOWN_V : VSLD1_FV_F<"vfslide1down", 0b001111>;
1678
1678
} // Predicates = [HasVInstructionsAnyF]
1679
1679
@@ -1688,9 +1688,9 @@ def VRGATHEREI16_VV : VALUVV<0b001110, OPIVV, "vrgatherei16.vv">,
1688
1688
} // Constraints = "@earlyclobber $vd", RVVConstraint = Vrgather
1689
1689
1690
1690
// Vector Compress Instruction
1691
- let Constraints = "@earlyclobber $vd", RVVConstraint = Vcompress, ActiveElementsAffectResult = 1 in {
1691
+ let Constraints = "@earlyclobber $vd", RVVConstraint = Vcompress, ElementsDependOn = EltDepsVLMask in {
1692
1692
defm VCOMPRESS_V : VCPR_MV_Mask<"vcompress", 0b010111>;
1693
- } // Constraints = "@earlyclobber $vd", RVVConstraint = Vcompress, ActiveElementsAffectResult = 1
1693
+ } // Constraints = "@earlyclobber $vd", RVVConstraint = Vcompress, ElementsDependOn = EltDepsVLMask
1694
1694
1695
1695
let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isMoveReg = 1,
1696
1696
RVVConstraint = NoConstraint in {
0 commit comments