================ @@ -817,6 +817,66 @@ bool RISCVDAGToDAGISel::tryIndexedLoad(SDNode *Node) { return true; } +void RISCVDAGToDAGISel::selectSF_VC_X_SE(SDNode *Node) { + if (!Subtarget->hasVInstructions()) + return; + + assert(Node->getOpcode() == ISD::INTRINSIC_VOID && "Unexpected opcode"); + + SDLoc DL(Node); + unsigned IntNo = Node->getConstantOperandVal(1); + + assert((IntNo == Intrinsic::riscv_sf_vc_x_se || + IntNo == Intrinsic::riscv_sf_vc_i_se) && + "Unexpected vsetvli intrinsic"); + + // imm, imm, imm, simm5/scalar, sew, log2lmul, vl + auto *SewSDNode = dyn_cast<ConstantSDNode>(Node->getOperand(6)); + unsigned Log2SEW = Log2_32(SewSDNode->getZExtValue()); + SDValue SEWOp = + CurDAG->getTargetConstant(Log2SEW, DL, Subtarget->getXLenVT()); + SmallVector<SDValue, 8> Operands = {Node->getOperand(2), Node->getOperand(3), + Node->getOperand(4), Node->getOperand(5), + Node->getOperand(8), SEWOp, + Node->getOperand(0)}; + + unsigned Opcode; + auto *LMulSDNode = dyn_cast<ConstantSDNode>(Node->getOperand(7)); ---------------- topperc wrote:
dyn_cast -> cast https://github.com/llvm/llvm-project/pull/79407 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits