Skip to content

Commit d8f9663

Browse files
committed
[RISCV] Rename RISCVISD::FMINNUM_VL/FMAXNUM_VL to VFMIN_VL/VFMAX_VL. NFC
I want these to have RISC-V semantics not LLVM IR semantics. Specifically that -0.0 comes before +0.0. This is needed to emulate FMAXIMUM/FMINIMUM for vectors.
1 parent 30b11b0 commit d8f9663

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4727,8 +4727,6 @@ static unsigned getRISCVVLOp(SDValue Op) {
47274727
OP_CASE(SMAX)
47284728
OP_CASE(UMIN)
47294729
OP_CASE(UMAX)
4730-
OP_CASE(FMINNUM)
4731-
OP_CASE(FMAXNUM)
47324730
OP_CASE(STRICT_FADD)
47334731
OP_CASE(STRICT_FSUB)
47344732
OP_CASE(STRICT_FMUL)
@@ -4752,8 +4750,6 @@ static unsigned getRISCVVLOp(SDValue Op) {
47524750
VP_CASE(SMAX) // VP_SMAX
47534751
VP_CASE(UMIN) // VP_UMIN
47544752
VP_CASE(UMAX) // VP_UMAX
4755-
VP_CASE(FMINNUM) // VP_FMINNUM
4756-
VP_CASE(FMAXNUM) // VP_FMAXNUM
47574753
VP_CASE(FCOPYSIGN) // VP_FCOPYSIGN
47584754
VP_CASE(SETCC) // VP_SETCC
47594755
VP_CASE(SINT_TO_FP) // VP_SINT_TO_FP
@@ -4805,6 +4801,12 @@ static unsigned getRISCVVLOp(SDValue Op) {
48054801
return RISCVISD::VFCVT_RTZ_X_F_VL;
48064802
case ISD::VP_FP_TO_UINT:
48074803
return RISCVISD::VFCVT_RTZ_XU_F_VL;
4804+
case ISD::FMINNUM:
4805+
case ISD::VP_FMINNUM:
4806+
return RISCVISD::VFMIN_VL;
4807+
case ISD::FMAXNUM:
4808+
case ISD::VP_FMAXNUM:
4809+
return RISCVISD::VFMAX_VL;
48084810
}
48094811
// clang-format on
48104812
#undef OP_CASE
@@ -4821,7 +4823,7 @@ static bool hasMergeOp(unsigned Opcode) {
48214823
ISD::FIRST_TARGET_STRICTFP_OPCODE ==
48224824
21 &&
48234825
"adding target specific op should update this function");
4824-
if (Opcode >= RISCVISD::ADD_VL && Opcode <= RISCVISD::FMAXNUM_VL)
4826+
if (Opcode >= RISCVISD::ADD_VL && Opcode <= RISCVISD::VFMAX_VL)
48254827
return true;
48264828
if (Opcode == RISCVISD::FCOPYSIGN_VL)
48274829
return true;
@@ -16324,8 +16326,8 @@ const char *RISCVTargetLowering::getTargetNodeName(unsigned Opcode) const {
1632416326
NODE_NAME_CASE(CTLZ_VL)
1632516327
NODE_NAME_CASE(CTTZ_VL)
1632616328
NODE_NAME_CASE(CTPOP_VL)
16327-
NODE_NAME_CASE(FMINNUM_VL)
16328-
NODE_NAME_CASE(FMAXNUM_VL)
16329+
NODE_NAME_CASE(VFMIN_VL)
16330+
NODE_NAME_CASE(VFMAX_VL)
1632916331
NODE_NAME_CASE(MULHS_VL)
1633016332
NODE_NAME_CASE(MULHU_VL)
1633116333
NODE_NAME_CASE(VFCVT_RTZ_X_F_VL)

llvm/lib/Target/RISCV/RISCVISelLowering.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ enum NodeType : unsigned {
257257
FSUB_VL,
258258
FMUL_VL,
259259
FDIV_VL,
260-
FMINNUM_VL,
261-
FMAXNUM_VL,
260+
VFMIN_VL,
261+
VFMAX_VL,
262262

263263
// Vector unary ops with a mask as a second operand and VL as a third operand.
264264
FNEG_VL,

llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ def riscv_fneg_vl : SDNode<"RISCVISD::FNEG_VL", SDT_RISCVFPUnOp_VL>;
122122
def riscv_fabs_vl : SDNode<"RISCVISD::FABS_VL", SDT_RISCVFPUnOp_VL>;
123123
def riscv_fsqrt_vl : SDNode<"RISCVISD::FSQRT_VL", SDT_RISCVFPUnOp_VL>;
124124
def riscv_fcopysign_vl : SDNode<"RISCVISD::FCOPYSIGN_VL", SDT_RISCVCopySign_VL>;
125-
def riscv_fminnum_vl : SDNode<"RISCVISD::FMINNUM_VL", SDT_RISCVFPBinOp_VL, [SDNPCommutative]>;
126-
def riscv_fmaxnum_vl : SDNode<"RISCVISD::FMAXNUM_VL", SDT_RISCVFPBinOp_VL, [SDNPCommutative]>;
125+
def riscv_vfmin_vl : SDNode<"RISCVISD::VFMIN_VL", SDT_RISCVFPBinOp_VL, [SDNPCommutative]>;
126+
def riscv_vfmax_vl : SDNode<"RISCVISD::VFMAX_VL", SDT_RISCVFPBinOp_VL, [SDNPCommutative]>;
127127

128128
def riscv_strict_fadd_vl : SDNode<"RISCVISD::STRICT_FADD_VL", SDT_RISCVFPBinOp_VL, [SDNPCommutative, SDNPHasChain]>;
129129
def riscv_strict_fsub_vl : SDNode<"RISCVISD::STRICT_FSUB_VL", SDT_RISCVFPBinOp_VL, [SDNPHasChain]>;
@@ -2375,8 +2375,8 @@ defm : VPatWidenFPMulAccVL_VV_VF_RM<riscv_vfwmsub_vl, "PseudoVFWMSAC">;
23752375
defm : VPatWidenFPMulAccVL_VV_VF_RM<riscv_vfwnmsub_vl, "PseudoVFWNMSAC">;
23762376

23772377
// 13.11. Vector Floating-Point MIN/MAX Instructions
2378-
defm : VPatBinaryFPVL_VV_VF<riscv_fminnum_vl, "PseudoVFMIN">;
2379-
defm : VPatBinaryFPVL_VV_VF<riscv_fmaxnum_vl, "PseudoVFMAX">;
2378+
defm : VPatBinaryFPVL_VV_VF<riscv_vfmin_vl, "PseudoVFMIN">;
2379+
defm : VPatBinaryFPVL_VV_VF<riscv_vfmax_vl, "PseudoVFMAX">;
23802380

23812381
// 13.13. Vector Floating-Point Compare Instructions
23822382
defm : VPatFPSetCCVL_VV_VF_FV<any_riscv_fsetcc_vl, SETEQ,

0 commit comments

Comments
 (0)