1010//
1111//===----------------------------------------------------------------------===//
1212
13- let Predicates = [HasShortForwardBranchOpt ], isSelect = 1,
13+ let Predicates = [HasShortForwardBranchIALU ], isSelect = 1,
1414 Constraints = "$dst = $falsev", isCommutable = 1, Size = 8 in {
1515// This instruction moves $truev to $dst when the condition is true. It will
1616// be expanded to control flow in RISCVExpandPseudoInsts.
@@ -28,7 +28,7 @@ def PseudoCCMOVGPR : Pseudo<(outs GPR:$dst),
2828
2929// This should always expand to a branch+c.mv so the size is 6 or 4 if the
3030// branch is compressible.
31- let Predicates = [HasConditionalMoveFusion, NoShortForwardBranchOpt ],
31+ let Predicates = [HasConditionalMoveFusion, NoShortForwardBranch ],
3232 Constraints = "$dst = $falsev", isCommutable = 1, Size = 6 in {
3333// This instruction moves $truev to $dst when the condition is true. It will
3434// be expanded to control flow in RISCVExpandPseudoInsts.
@@ -108,7 +108,7 @@ class SFBShiftW_ri
108108// is true. Returns $falsev otherwise. Selected by optimizeSelect.
109109// TODO: Can we use DefaultOperands on the regular binop to accomplish this more
110110// like how ARM does predication?
111- let Predicates = [HasShortForwardBranchOpt ] in {
111+ let Predicates = [HasShortForwardBranchIALU ] in {
112112def PseudoCCADD : SFBALU_rr;
113113def PseudoCCSUB : SFBALU_rr;
114114def PseudoCCSLL : SFBALU_rr;
@@ -117,11 +117,6 @@ def PseudoCCSRA : SFBALU_rr;
117117def PseudoCCAND : SFBALU_rr;
118118def PseudoCCOR : SFBALU_rr;
119119def PseudoCCXOR : SFBALU_rr;
120- def PseudoCCMAX : SFBALU_rr;
121- def PseudoCCMIN : SFBALU_rr;
122- def PseudoCCMAXU : SFBALU_rr;
123- def PseudoCCMINU : SFBALU_rr;
124- def PseudoCCMUL : SFBALU_rr;
125120
126121def PseudoCCADDI : SFBALU_ri;
127122def PseudoCCANDI : SFBALU_ri;
@@ -153,11 +148,21 @@ def PseudoCCORN : SFBALU_rr;
153148def PseudoCCXNOR : SFBALU_rr;
154149}
155150
156- let Predicates = [HasShortForwardBranchOpt ] in
151+ let Predicates = [HasShortForwardBranchIALU ] in
157152def : Pat<(XLenVT (abs GPR:$rs1)),
158153 (PseudoCCSUB (XLenVT GPR:$rs1), (XLenVT X0), /* COND_LT */ 2,
159154 (XLenVT GPR:$rs1), (XLenVT X0), (XLenVT GPR:$rs1))>;
160- let Predicates = [HasShortForwardBranchOpt , IsRV64] in
155+ let Predicates = [HasShortForwardBranchIALU , IsRV64] in
161156def : Pat<(sext_inreg (abs 33signbits_node:$rs1), i32),
162157 (PseudoCCSUBW (i64 GPR:$rs1), (i64 X0), /* COND_LT */ 2,
163158 (i64 GPR:$rs1), (i64 X0), (i64 GPR:$rs1))>;
159+
160+ let Predicates = [HasShortForwardBranchIMinMax] in {
161+ def PseudoCCMAX : SFBALU_rr;
162+ def PseudoCCMIN : SFBALU_rr;
163+ def PseudoCCMAXU : SFBALU_rr;
164+ def PseudoCCMINU : SFBALU_rr;
165+ }
166+
167+ let Predicates = [HasShortForwardBranchIMul] in
168+ def PseudoCCMUL : SFBALU_rr;
0 commit comments