From fab40fce3ffecc3f93068a15e370c0a1abfdb8d0 Mon Sep 17 00:00:00 2001 From: "Kevin P. Neal" Date: Fri, 6 Sep 2019 18:04:34 +0000 Subject: [FPEnv] Teach the IRBuilder about constrained FPToSI and FPToUI. The IRBuilder doesn't know that the two floating point to integer instructions have constrained equivalents. This patch adds the support by building on the strict FP mode now present in the IRBuilder. Reviewed by: John McCall Approved by: John McCall Differential Revision: https://reviews.llvm.org/D67291 llvm-svn: 371235 --- llvm/unittests/IR/IRBuilderTest.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'llvm/unittests/IR/IRBuilderTest.cpp') diff --git a/llvm/unittests/IR/IRBuilderTest.cpp b/llvm/unittests/IR/IRBuilderTest.cpp index 538c2a0dd93..8fb5337a291 100644 --- a/llvm/unittests/IR/IRBuilderTest.cpp +++ b/llvm/unittests/IR/IRBuilderTest.cpp @@ -171,6 +171,7 @@ TEST_F(IRBuilderTest, ConstrainedFP) { IRBuilder<> Builder(BB); Value *V; Value *VDouble; + Value *VInt; CallInst *Call; IntrinsicInst *II; GlobalVariable *GVDouble = new GlobalVariable(*M, Type::getDoubleTy(Ctx), @@ -208,6 +209,16 @@ TEST_F(IRBuilderTest, ConstrainedFP) { II = cast(V); EXPECT_EQ(II->getIntrinsicID(), Intrinsic::experimental_constrained_frem); + VInt = Builder.CreateFPToUI(VDouble, Builder.getInt32Ty()); + ASSERT_TRUE(isa(VInt)); + II = cast(VInt); + EXPECT_EQ(II->getIntrinsicID(), Intrinsic::experimental_constrained_fptoui); + + VInt = Builder.CreateFPToSI(VDouble, Builder.getInt32Ty()); + ASSERT_TRUE(isa(VInt)); + II = cast(VInt); + EXPECT_EQ(II->getIntrinsicID(), Intrinsic::experimental_constrained_fptosi); + V = Builder.CreateFPTrunc(VDouble, Type::getFloatTy(Ctx)); ASSERT_TRUE(isa(V)); II = cast(V); -- cgit v1.2.3