@@ -557,6 +557,9 @@ class RISCVVPseudo {
557557 bit NeedBeInPseudoTable = 1;
558558}
559559
560+ // Class to filter for the RISCVVInversePseudosTable.
561+ class RISCVVPseudoInverse : RISCVVPseudo;
562+
560563// The actual table.
561564def RISCVVPseudosTable : GenericTable {
562565 let FilterClass = "RISCVVPseudo";
@@ -569,7 +572,7 @@ def RISCVVPseudosTable : GenericTable {
569572}
570573
571574def RISCVVInversePseudosTable : GenericTable {
572- let FilterClass = "RISCVVPseudo ";
575+ let FilterClass = "RISCVVPseudoInverse ";
573576 let CppTypeName = "PseudoInfo";
574577 let Fields = [ "Pseudo", "BaseInstr", "VLMul", "SEW"];
575578 let PrimaryKey = [ "BaseInstr", "VLMul", "SEW"];
@@ -785,7 +788,7 @@ class VPseudoUSLoadNoMask<VReg RetClass,
785788 Pseudo<(outs RetClass:$rd),
786789 (ins RetClass:$dest, GPRMem:$rs1, AVL:$vl, sewop:$sew,
787790 vec_policy:$policy), []>,
788- RISCVVPseudo ,
791+ RISCVVPseudoInverse ,
789792 RISCVVLE</*Masked*/0, /*Strided*/0, /*FF*/0, !logtwo(EEW), VLMul> {
790793 let mayLoad = 1;
791794 let mayStore = 0;
@@ -819,7 +822,7 @@ class VPseudoUSLoadFFNoMask<VReg RetClass,
819822 Pseudo<(outs RetClass:$rd, GPR:$vl),
820823 (ins RetClass:$dest, GPRMem:$rs1, AVL:$avl,
821824 sew:$sew, vec_policy:$policy), []>,
822- RISCVVPseudo ,
825+ RISCVVPseudoInverse ,
823826 RISCVVLE</*Masked*/0, /*Strided*/0, /*FF*/1, !logtwo(EEW), VLMul> {
824827 let mayLoad = 1;
825828 let mayStore = 0;
@@ -853,7 +856,7 @@ class VPseudoSLoadNoMask<VReg RetClass,
853856 Pseudo<(outs RetClass:$rd),
854857 (ins RetClass:$dest, GPRMem:$rs1, GPR:$rs2, AVL:$vl,
855858 sew:$sew, vec_policy:$policy), []>,
856- RISCVVPseudo ,
859+ RISCVVPseudoInverse ,
857860 RISCVVLE</*Masked*/0, /*Strided*/1, /*FF*/0, !logtwo(EEW), VLMul> {
858861 let mayLoad = 1;
859862 let mayStore = 0;
@@ -892,7 +895,7 @@ class VPseudoILoadNoMask<VReg RetClass,
892895 Pseudo<(outs RetClass:$rd),
893896 (ins RetClass:$dest, GPRMem:$rs1, IdxClass:$rs2, AVL:$vl,
894897 sew:$sew, vec_policy:$policy), []>,
895- RISCVVPseudo ,
898+ RISCVVPseudoInverse ,
896899 RISCVVLX</*Masked*/0, Ordered, !logtwo(EEW), VLMul, LMUL> {
897900 let mayLoad = 1;
898901 let mayStore = 0;
@@ -933,7 +936,7 @@ class VPseudoUSStoreNoMask<VReg StClass,
933936 DAGOperand sewop = sew> :
934937 Pseudo<(outs),
935938 (ins StClass:$rd, GPRMem:$rs1, AVL:$vl, sewop:$sew), []>,
936- RISCVVPseudo ,
939+ RISCVVPseudoInverse ,
937940 RISCVVSE</*Masked*/0, /*Strided*/0, !logtwo(EEW), VLMul> {
938941 let mayLoad = 0;
939942 let mayStore = 1;
@@ -961,7 +964,7 @@ class VPseudoSStoreNoMask<VReg StClass,
961964 Pseudo<(outs),
962965 (ins StClass:$rd, GPRMem:$rs1, GPR:$rs2,
963966 AVL:$vl, sew:$sew), []>,
964- RISCVVPseudo ,
967+ RISCVVPseudoInverse ,
965968 RISCVVSE</*Masked*/0, /*Strided*/1, !logtwo(EEW), VLMul> {
966969 let mayLoad = 0;
967970 let mayStore = 1;
@@ -988,7 +991,7 @@ class VPseudoNullaryNoMask<VReg RegClass> :
988991 Pseudo<(outs RegClass:$rd),
989992 (ins RegClass:$passthru,
990993 AVL:$vl, sew:$sew, vec_policy:$policy), []>,
991- RISCVVPseudo {
994+ RISCVVPseudoInverse {
992995 let mayLoad = 0;
993996 let mayStore = 0;
994997 let hasSideEffects = 0;
@@ -1037,7 +1040,7 @@ class VPseudoUnaryNoMask<DAGOperand RetClass,
10371040 Pseudo<(outs RetClass:$rd),
10381041 (ins RetClass:$passthru, OpClass:$rs2,
10391042 AVL:$vl, sew:$sew, vec_policy:$policy), []>,
1040- RISCVVPseudo {
1043+ RISCVVPseudoInverse {
10411044 let mayLoad = 0;
10421045 let mayStore = 0;
10431046 let hasSideEffects = 0;
@@ -1054,7 +1057,7 @@ class VPseudoUnaryNoMaskNoPolicy<DAGOperand RetClass,
10541057 bits<2> TargetConstraintType = 1> :
10551058 Pseudo<(outs RetClass:$rd),
10561059 (ins OpClass:$rs2, AVL:$vl, sew_mask:$sew), []>,
1057- RISCVVPseudo {
1060+ RISCVVPseudoInverse {
10581061 let mayLoad = 0;
10591062 let mayStore = 0;
10601063 let hasSideEffects = 0;
@@ -1071,7 +1074,7 @@ class VPseudoUnaryNoMaskRoundingMode<DAGOperand RetClass,
10711074 Pseudo<(outs RetClass:$rd),
10721075 (ins RetClass:$passthru, OpClass:$rs2, vec_rm:$rm,
10731076 AVL:$vl, sew:$sew, vec_policy:$policy), []>,
1074- RISCVVPseudo {
1077+ RISCVVPseudoInverse {
10751078 let mayLoad = 0;
10761079 let mayStore = 0;
10771080 let hasSideEffects = 0;
@@ -1148,7 +1151,7 @@ class VPseudoUnaryMask_NoExcept<VReg RetClass,
11481151class VPseudoUnaryNoMaskGPROut :
11491152 Pseudo<(outs GPR:$rd),
11501153 (ins VR:$rs2, AVL:$vl, sew_mask:$sew), []>,
1151- RISCVVPseudo {
1154+ RISCVVPseudoInverse {
11521155 let mayLoad = 0;
11531156 let mayStore = 0;
11541157 let hasSideEffects = 0;
@@ -1173,7 +1176,7 @@ class VPseudoUnaryAnyMask<VReg RetClass,
11731176 Pseudo<(outs RetClass:$rd),
11741177 (ins RetClass:$passthru, Op1Class:$rs2,
11751178 VR:$vm, AVL:$vl, sew:$sew), []>,
1176- RISCVVPseudo {
1179+ RISCVVPseudoInverse {
11771180 let mayLoad = 0;
11781181 let mayStore = 0;
11791182 let hasSideEffects = 0;
@@ -1190,7 +1193,7 @@ class VPseudoBinaryNoMask<VReg RetClass,
11901193 DAGOperand sewop = sew> :
11911194 Pseudo<(outs RetClass:$rd),
11921195 (ins Op1Class:$rs2, Op2Class:$rs1, AVL:$vl, sewop:$sew), []>,
1193- RISCVVPseudo {
1196+ RISCVVPseudoInverse {
11941197 let mayLoad = 0;
11951198 let mayStore = 0;
11961199 let hasSideEffects = 0;
@@ -1208,7 +1211,7 @@ class VPseudoBinaryNoMaskPolicy<VReg RetClass,
12081211 Pseudo<(outs RetClass:$rd),
12091212 (ins RetClass:$passthru, Op1Class:$rs2, Op2Class:$rs1, AVL:$vl,
12101213 sew:$sew, vec_policy:$policy), []>,
1211- RISCVVPseudo {
1214+ RISCVVPseudoInverse {
12121215 let mayLoad = 0;
12131216 let mayStore = 0;
12141217 let hasSideEffects = 0;
@@ -1228,7 +1231,7 @@ class VPseudoBinaryNoMaskRoundingMode<VReg RetClass,
12281231 Pseudo<(outs RetClass:$rd),
12291232 (ins RetClass:$passthru, Op1Class:$rs2, Op2Class:$rs1, vec_rm:$rm,
12301233 AVL:$vl, sew:$sew, vec_policy:$policy), []>,
1231- RISCVVPseudo {
1234+ RISCVVPseudoInverse {
12321235 let mayLoad = 0;
12331236 let mayStore = 0;
12341237 let Constraints = !interleave([Constraint, "$rd = $passthru"], ",");
@@ -1319,7 +1322,7 @@ class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
13191322 Pseudo<(outs),
13201323 (ins StClass:$rd, GPRMem:$rs1, IdxClass:$rs2, AVL:$vl,
13211324 sew:$sew),[]>,
1322- RISCVVPseudo ,
1325+ RISCVVPseudoInverse ,
13231326 RISCVVSX</*Masked*/0, Ordered, !logtwo(EEW), VLMul, LMUL> {
13241327 let mayLoad = 0;
13251328 let mayStore = 1;
@@ -1487,7 +1490,7 @@ class VPseudoBinaryCarry<VReg RetClass,
14871490 VMV0:$carry, AVL:$vl, sew:$sew),
14881491 (ins Op1Class:$rs2, Op2Class:$rs1,
14891492 AVL:$vl, sew:$sew)), []>,
1490- RISCVVPseudo {
1493+ RISCVVPseudoInverse {
14911494 let mayLoad = 0;
14921495 let mayStore = 0;
14931496 let hasSideEffects = 0;
@@ -1506,7 +1509,7 @@ class VPseudoTiedBinaryCarryIn<VReg RetClass,
15061509 Pseudo<(outs RetClass:$rd),
15071510 (ins RetClass:$passthru, Op1Class:$rs2, Op2Class:$rs1,
15081511 VMV0:$carry, AVL:$vl, sew:$sew), []>,
1509- RISCVVPseudo {
1512+ RISCVVPseudoInverse {
15101513 let mayLoad = 0;
15111514 let mayStore = 0;
15121515 let hasSideEffects = 0;
@@ -1525,7 +1528,7 @@ class VPseudoTernaryNoMask<VReg RetClass,
15251528 Pseudo<(outs RetClass:$rd),
15261529 (ins RetClass:$rs3, Op1Class:$rs1, Op2Class:$rs2,
15271530 AVL:$vl, sew:$sew), []>,
1528- RISCVVPseudo {
1531+ RISCVVPseudoInverse {
15291532 let mayLoad = 0;
15301533 let mayStore = 0;
15311534 let hasSideEffects = 0;
@@ -1542,7 +1545,7 @@ class VPseudoTernaryNoMaskWithPolicy<VReg RetClass,
15421545 Pseudo<(outs RetClass:$rd),
15431546 (ins RetClass:$rs3, Op1Class:$rs1, Op2Class:$rs2,
15441547 AVL:$vl, sew:$sew, vec_policy:$policy), []>,
1545- RISCVVPseudo {
1548+ RISCVVPseudoInverse {
15461549 let mayLoad = 0;
15471550 let mayStore = 0;
15481551 let hasSideEffects = 0;
@@ -1561,7 +1564,7 @@ class VPseudoTernaryNoMaskWithPolicyRoundingMode<VReg RetClass,
15611564 Pseudo<(outs RetClass:$rd),
15621565 (ins RetClass:$rs3, Op1Class:$rs1, Op2Class:$rs2,
15631566 vec_rm:$rm, AVL:$vl, sew:$sew, vec_policy:$policy), []>,
1564- RISCVVPseudo {
1567+ RISCVVPseudoInverse {
15651568 let mayLoad = 0;
15661569 let mayStore = 0;
15671570 let hasSideEffects = 0;
@@ -1581,7 +1584,7 @@ class VPseudoUSSegLoadNoMask<VReg RetClass,
15811584 Pseudo<(outs RetClass:$rd),
15821585 (ins RetClass:$dest, GPRMem:$rs1, AVL:$vl,
15831586 sew:$sew, vec_policy:$policy), []>,
1584- RISCVVPseudo ,
1587+ RISCVVPseudoInverse ,
15851588 RISCVVLSEG<NF, /*Masked*/0, /*Strided*/0, /*FF*/0, !logtwo(EEW), VLMul> {
15861589 let mayLoad = 1;
15871590 let mayStore = 0;
@@ -1616,7 +1619,7 @@ class VPseudoUSSegLoadFFNoMask<VReg RetClass,
16161619 Pseudo<(outs RetClass:$rd, GPR:$vl),
16171620 (ins RetClass:$dest, GPRMem:$rs1, AVL:$avl,
16181621 sew:$sew, vec_policy:$policy), []>,
1619- RISCVVPseudo ,
1622+ RISCVVPseudoInverse ,
16201623 RISCVVLSEG<NF, /*Masked*/0, /*Strided*/0, /*FF*/1, !logtwo(EEW), VLMul> {
16211624 let mayLoad = 1;
16221625 let mayStore = 0;
@@ -1651,7 +1654,7 @@ class VPseudoSSegLoadNoMask<VReg RetClass,
16511654 Pseudo<(outs RetClass:$rd),
16521655 (ins RetClass:$passthru, GPRMem:$rs1, GPR:$offset, AVL:$vl,
16531656 sew:$sew, vec_policy:$policy), []>,
1654- RISCVVPseudo ,
1657+ RISCVVPseudoInverse ,
16551658 RISCVVLSEG<NF, /*Masked*/0, /*Strided*/1, /*FF*/0, !logtwo(EEW), VLMul> {
16561659 let mayLoad = 1;
16571660 let mayStore = 0;
@@ -1690,7 +1693,7 @@ class VPseudoISegLoadNoMask<VReg RetClass,
16901693 Pseudo<(outs RetClass:$rd),
16911694 (ins RetClass:$passthru, GPRMem:$rs1, IdxClass:$offset, AVL:$vl,
16921695 sew:$sew, vec_policy:$policy), []>,
1693- RISCVVPseudo ,
1696+ RISCVVPseudoInverse ,
16941697 RISCVVLXSEG<NF, /*Masked*/0, Ordered, !logtwo(EEW), VLMul, LMUL> {
16951698 let mayLoad = 1;
16961699 let mayStore = 0;
@@ -1732,7 +1735,7 @@ class VPseudoUSSegStoreNoMask<VReg ValClass,
17321735 bits<4> NF> :
17331736 Pseudo<(outs),
17341737 (ins ValClass:$rd, GPRMem:$rs1, AVL:$vl, sew:$sew), []>,
1735- RISCVVPseudo ,
1738+ RISCVVPseudoInverse ,
17361739 RISCVVSSEG<NF, /*Masked*/0, /*Strided*/0, !logtwo(EEW), VLMul> {
17371740 let mayLoad = 0;
17381741 let mayStore = 1;
@@ -1762,7 +1765,7 @@ class VPseudoSSegStoreNoMask<VReg ValClass,
17621765 Pseudo<(outs),
17631766 (ins ValClass:$rd, GPRMem:$rs1, GPR:$offset,
17641767 AVL:$vl, sew:$sew), []>,
1765- RISCVVPseudo ,
1768+ RISCVVPseudoInverse ,
17661769 RISCVVSSEG<NF, /*Masked*/0, /*Strided*/1, !logtwo(EEW), VLMul> {
17671770 let mayLoad = 0;
17681771 let mayStore = 1;
@@ -1795,7 +1798,7 @@ class VPseudoISegStoreNoMask<VReg ValClass,
17951798 Pseudo<(outs),
17961799 (ins ValClass:$rd, GPRMem:$rs1, IdxClass: $index,
17971800 AVL:$vl, sew:$sew), []>,
1798- RISCVVPseudo ,
1801+ RISCVVPseudoInverse ,
17991802 RISCVVSXSEG<NF, /*Masked*/0, Ordered, !logtwo(EEW), VLMul, LMUL> {
18001803 let mayLoad = 0;
18011804 let mayStore = 1;
@@ -6680,14 +6683,14 @@ let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in {
66806683 def PseudoVMV_X_S:
66816684 Pseudo<(outs GPR:$rd), (ins VR:$rs2, sew:$sew), []>,
66826685 Sched<[WriteVMovXS, ReadVMovXS]>,
6683- RISCVVPseudo ;
6686+ RISCVVPseudoInverse ;
66846687 let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VMV_S_X, isReMaterializable = 1,
66856688 Constraints = "$rd = $rs1" in
66866689 def PseudoVMV_S_X: Pseudo<(outs VR:$rd),
66876690 (ins VR:$rs1, GPR:$rs2, AVL:$vl, sew:$sew),
66886691 []>,
66896692 Sched<[WriteVMovSX, ReadVMovSX_V, ReadVMovSX_X]>,
6690- RISCVVPseudo ;
6693+ RISCVVPseudoInverse ;
66916694}
66926695} // Predicates = [HasVInstructions]
66936696
@@ -6703,15 +6706,15 @@ let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in {
67036706 Pseudo<(outs f.fprclass:$rd),
67046707 (ins VR:$rs2, sew:$sew), []>,
67056708 Sched<[WriteVMovFS, ReadVMovFS]>,
6706- RISCVVPseudo ;
6709+ RISCVVPseudoInverse ;
67076710 let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VFMV_S_F, isReMaterializable = 1,
67086711 Constraints = "$rd = $rs1" in
67096712 def "PseudoVFMV_S_" # f.FX :
67106713 Pseudo<(outs VR:$rd),
67116714 (ins VR:$rs1, f.fprclass:$rs2, AVL:$vl, sew:$sew),
67126715 []>,
67136716 Sched<[WriteVMovSF, ReadVMovSF_V, ReadVMovSF_F]>,
6714- RISCVVPseudo ;
6717+ RISCVVPseudoInverse ;
67156718 }
67166719}
67176720} // Predicates = [HasVInstructionsAnyF]
0 commit comments