@@ -4185,6 +4185,9 @@ SDValue RISCVTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
4185
4185
: RISCVISD::BDECOMPRESS;
4186
4186
return DAG.getNode(Opc, DL, XLenVT, Op.getOperand(1), Op.getOperand(2));
4187
4187
}
4188
+ case Intrinsic::riscv_bfp:
4189
+ return DAG.getNode(RISCVISD::BFP, DL, XLenVT, Op.getOperand(1),
4190
+ Op.getOperand(2));
4188
4191
case Intrinsic::riscv_vmv_x_s:
4189
4192
assert(Op.getValueType() == XLenVT && "Unexpected VT!");
4190
4193
return DAG.getNode(RISCVISD::VMV_X_S, DL, Op.getValueType(),
@@ -6275,6 +6278,17 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N,
6275
6278
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res));
6276
6279
break;
6277
6280
}
6281
+ case Intrinsic::riscv_bfp: {
6282
+ assert(N->getValueType(0) == MVT::i32 && Subtarget.is64Bit() &&
6283
+ "Unexpected custom legalisation");
6284
+ SDValue NewOp1 =
6285
+ DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(1));
6286
+ SDValue NewOp2 =
6287
+ DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, N->getOperand(2));
6288
+ SDValue Res = DAG.getNode(RISCVISD::BFPW, DL, MVT::i64, NewOp1, NewOp2);
6289
+ Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, Res));
6290
+ break;
6291
+ }
6278
6292
case Intrinsic::riscv_vmv_x_s: {
6279
6293
EVT VT = N->getValueType(0);
6280
6294
MVT XLenVT = Subtarget.getXLenVT();
@@ -9699,6 +9713,8 @@ const char *RISCVTargetLowering::getTargetNodeName(unsigned Opcode) const {
9699
9713
NODE_NAME_CASE(SHFLW)
9700
9714
NODE_NAME_CASE(UNSHFL)
9701
9715
NODE_NAME_CASE(UNSHFLW)
9716
+ NODE_NAME_CASE(BFP)
9717
+ NODE_NAME_CASE(BFPW)
9702
9718
NODE_NAME_CASE(BCOMPRESS)
9703
9719
NODE_NAME_CASE(BCOMPRESSW)
9704
9720
NODE_NAME_CASE(BDECOMPRESS)
0 commit comments