craig.topper created this revision. craig.topper added reviewers: eopXD, kito-cheng. Herald added subscribers: jobnoorman, luke, VincentWu, vkmr, frasercrmck, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, arichardson. Herald added a project: All. craig.topper requested review of this revision. Herald added a subscriber: pcwang-thead. Herald added a project: clang.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D150690 Files: clang/include/clang/Basic/riscv_vector.td Index: clang/include/clang/Basic/riscv_vector.td =================================================================== --- clang/include/clang/Basic/riscv_vector.td +++ clang/include/clang/Basic/riscv_vector.td @@ -2045,28 +2045,18 @@ // --(bitcast)--------> <vscale x 64 x i1> // --(vector_extract)-> <vscale x 8 x i1> 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: <vscale x 1 x i1> // --(vector_insert)-> <vscale x 64 x i1> // --(bitcast)-------> <vscale x 8 x i8> - 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); } }
Index: clang/include/clang/Basic/riscv_vector.td =================================================================== --- clang/include/clang/Basic/riscv_vector.td +++ clang/include/clang/Basic/riscv_vector.td @@ -2045,28 +2045,18 @@ // --(bitcast)--------> <vscale x 64 x i1> // --(vector_extract)-> <vscale x 8 x i1> 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: <vscale x 1 x i1> // --(vector_insert)-> <vscale x 64 x i1> // --(bitcast)-------> <vscale x 8 x i8> - 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); } }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits