diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2019-08-13 05:21:18 +0000 |
---|---|---|
committer | Serge Pavlov <sepavloff@gmail.com> | 2019-08-13 05:21:18 +0000 |
commit | 2a09b9acfb6fa14bbb08df3c13fb9fb0d09069d1 (patch) | |
tree | e6c9b43e08bedffafffe20e626bb853c4bda98e0 /llvm | |
parent | 892cdc73be231c0148ca092260644c30b1dd4e16 (diff) | |
download | bcm5719-llvm-2a09b9acfb6fa14bbb08df3c13fb9fb0d09069d1.tar.gz bcm5719-llvm-2a09b9acfb6fa14bbb08df3c13fb9fb0d09069d1.zip |
Added unit tests to check supported rounding modes
Also added fixed misspelled metadata name.
Differential Revision: https://reviews.llvm.org/D66073
llvm-svn: 368650
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/IR/IntrinsicInst.cpp | 2 | ||||
-rw-r--r-- | llvm/unittests/IR/IRBuilderTest.cpp | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/llvm/lib/IR/IntrinsicInst.cpp b/llvm/lib/IR/IntrinsicInst.cpp index 7a042326f67..b2471128007 100644 --- a/llvm/lib/IR/IntrinsicInst.cpp +++ b/llvm/lib/IR/IntrinsicInst.cpp @@ -143,7 +143,7 @@ ConstrainedFPIntrinsic::RoundingModeToStr(RoundingMode UseRounding) { RoundingStr = "round.upward"; break; case ConstrainedFPIntrinsic::rmTowardZero: - RoundingStr = "round.tozero"; + RoundingStr = "round.towardzero"; break; } return RoundingStr; diff --git a/llvm/unittests/IR/IRBuilderTest.cpp b/llvm/unittests/IR/IRBuilderTest.cpp index f73cf140e19..f7a932e2919 100644 --- a/llvm/unittests/IR/IRBuilderTest.cpp +++ b/llvm/unittests/IR/IRBuilderTest.cpp @@ -187,6 +187,34 @@ TEST_F(IRBuilderTest, ConstrainedFP) { ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebIgnore); ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmUpward); + Builder.setDefaultConstrainedExcept(ConstrainedFPIntrinsic::ebIgnore); + Builder.setDefaultConstrainedRounding(ConstrainedFPIntrinsic::rmToNearest); + V = Builder.CreateFAdd(V, V); + CII = cast<ConstrainedFPIntrinsic>(V); + ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebIgnore); + ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmToNearest); + + Builder.setDefaultConstrainedExcept(ConstrainedFPIntrinsic::ebMayTrap); + Builder.setDefaultConstrainedRounding(ConstrainedFPIntrinsic::rmDownward); + V = Builder.CreateFAdd(V, V); + CII = cast<ConstrainedFPIntrinsic>(V); + ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebMayTrap); + ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmDownward); + + Builder.setDefaultConstrainedExcept(ConstrainedFPIntrinsic::ebStrict); + Builder.setDefaultConstrainedRounding(ConstrainedFPIntrinsic::rmTowardZero); + V = Builder.CreateFAdd(V, V); + CII = cast<ConstrainedFPIntrinsic>(V); + ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebStrict); + ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmTowardZero); + + Builder.setDefaultConstrainedExcept(ConstrainedFPIntrinsic::ebIgnore); + Builder.setDefaultConstrainedRounding(ConstrainedFPIntrinsic::rmDynamic); + V = Builder.CreateFAdd(V, V); + CII = cast<ConstrainedFPIntrinsic>(V); + ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebIgnore); + ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmDynamic); + // Now override the defaults. Call = Builder.CreateConstrainedFPBinOp( Intrinsic::experimental_constrained_fadd, V, V, nullptr, "", nullptr, |