From fa15619b76f609796a1eff6bef04d20515c5f269 Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Fri, 1 Nov 2019 07:31:33 -0700 Subject: [PATCH] [mlir][llvm] Add missing cast ops Also adds a builder method for fcmp, identical to that for icmp. PiperOrigin-RevId: 277923158 Change-Id: I0b7881787e62a007bb981d060b0e216637e43d5d --- .../mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td index d781f58902c..9bce041e7c5 100644 --- a/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -230,6 +230,13 @@ def LLVM_FCmpOp : LLVM_OneResultOp<"fcmp", [NoSideEffect]>, let llvmBuilder = [{ $res = builder.CreateFCmp(getLLVMCmpPredicate($predicate), $lhs, $rhs); }]; + let builders = [OpBuilder< + "Builder *b, OperationState &result, FCmpPredicate predicate, Value *lhs, " + "Value *rhs", [{ + LLVMDialect *dialect = &lhs->getType().cast().getDialect(); + build(b, result, LLVMType::getInt1Ty(dialect), + b->getI64IntegerAttr(static_cast(predicate)), lhs, rhs); + }]>]; let parser = [{ return parseCmpOp(parser, result); }]; let printer = [{ printFCmpOp(p, *this); }]; } @@ -309,13 +316,16 @@ class LLVM_CastOpgetOperation(), p); }]; } def LLVM_BitcastOp : LLVM_CastOp<"bitcast", "CreateBitCast">; +def LLVM_AddrSpaceCastOp : LLVM_CastOp<"addrspacecast", "CreateAddrSpaceCast">; def LLVM_IntToPtrOp : LLVM_CastOp<"inttoptr", "CreateIntToPtr">; def LLVM_PtrToIntOp : LLVM_CastOp<"ptrtoint", "CreatePtrToInt">; def LLVM_SExtOp : LLVM_CastOp<"sext", "CreateSExt">; def LLVM_ZExtOp : LLVM_CastOp<"zext", "CreateZExt">; def LLVM_TruncOp : LLVM_CastOp<"trunc", "CreateTrunc">; def LLVM_SIToFPOp : LLVM_CastOp<"sitofp", "CreateSIToFP">; +def LLVM_UIToFPOp : LLVM_CastOp<"uitofp", "CreateUIToFP">; def LLVM_FPToSIOp : LLVM_CastOp<"fptosi", "CreateFPToSI">; +def LLVM_FPToUIOp : LLVM_CastOp<"fptoui", "CreateFPToUI">; def LLVM_FPExtOp : LLVM_CastOp<"fpext", "CreateFPExt">; def LLVM_FPTruncOp : LLVM_CastOp<"fptrunc", "CreateFPTrunc">;