diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td index 88e82ce48959b..97b8dae79a2f2 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -1943,6 +1943,13 @@ def LLVM_CallIntrinsicOp attr-dict }]; + let builders = [ + OpBuilder<(ins "StringAttr":$intrin, "ValueRange":$args)>, + OpBuilder<(ins "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>, + OpBuilder<(ins "Type": $resultType, "StringAttr":$intrin, "ValueRange":$args)>, + OpBuilder<(ins "TypeRange": $resultTypes, "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)> + ]; + let hasVerifier = 1; } diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp index fb7024a14f8d4..57766545b24a6 100644 --- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp +++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp @@ -3324,6 +3324,36 @@ LogicalResult CallIntrinsicOp::verify() { return success(); } +void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state, + mlir::StringAttr intrin, mlir::ValueRange args) { + build(builder, state, /*resultTypes=*/TypeRange{}, intrin, args, + FastmathFlagsAttr{}, + /*op_bundle_operands=*/{}); +} + +void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state, + mlir::StringAttr intrin, mlir::ValueRange args, + mlir::LLVM::FastmathFlagsAttr fastMathFlags) { + build(builder, state, /*resultTypes=*/TypeRange{}, intrin, args, + fastMathFlags, + /*op_bundle_operands=*/{}); +} + +void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state, + mlir::Type resultType, mlir::StringAttr intrin, + mlir::ValueRange args) { + build(builder, state, {resultType}, intrin, args, FastmathFlagsAttr{}, + /*op_bundle_operands=*/{}); +} + +void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state, + mlir::TypeRange resultTypes, + mlir::StringAttr intrin, mlir::ValueRange args, + mlir::LLVM::FastmathFlagsAttr fastMathFlags) { + build(builder, state, resultTypes, intrin, args, fastMathFlags, + /*op_bundle_operands=*/{}); +} + //===----------------------------------------------------------------------===// // OpAsmDialectInterface //===----------------------------------------------------------------------===//