diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2045,28 +2045,18 @@ // --(bitcast)--------> // --(vector_extract)-> llvm::Value *BitCast = Builder.CreateBitCast(Ops[0], Boolean64Ty); - - ID = Intrinsic::vector_extract; - llvm::Value *Operands[2]; - Operands[0] = BitCast; - Operands[1] = ConstantInt::get(Int64Ty, 0); - IntrinsicTypes = {ResultType, Boolean64Ty}; - - return Builder.CreateCall(CGM.getIntrinsic(ID, IntrinsicTypes), Operands, ""); + return Builder.CreateExtractVector(ResultType, BitCast, + ConstantInt::get(Int64Ty, 0)); } else { // Casting from vector boolean -> m1 vector integer // Ex: // --(vector_insert)-> // --(bitcast)-------> - ID = Intrinsic::vector_insert; - llvm::Value *Operands[3]; - Operands[0] = llvm::PoisonValue::get(Boolean64Ty); - Operands[1] = Ops[0]; - Operands[2] = ConstantInt::get(Int64Ty, 0); - IntrinsicTypes = {Boolean64Ty, Ops[0]->getType()}; llvm::Value *Boolean64Val = - Builder.CreateCall(CGM.getIntrinsic(ID, IntrinsicTypes), Operands, ""); - + Builder.CreateInsertVector(Boolean64Ty, + llvm::PoisonValue::get(Boolean64Ty), + Ops[0], + ConstantInt::get(Int64Ty, 0)); return Builder.CreateBitCast(Boolean64Val, ResultType); } }