mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
Added unit tests to check supported rounding modes
Also added fixed misspelled metadata name. Differential Revision: https://reviews.llvm.org/D66073 llvm-svn: 368650
This commit is contained in:
parent
8603d4c930
commit
2dd1bcc226
@ -143,7 +143,7 @@ ConstrainedFPIntrinsic::RoundingModeToStr(RoundingMode UseRounding) {
|
|||||||
RoundingStr = "round.upward";
|
RoundingStr = "round.upward";
|
||||||
break;
|
break;
|
||||||
case ConstrainedFPIntrinsic::rmTowardZero:
|
case ConstrainedFPIntrinsic::rmTowardZero:
|
||||||
RoundingStr = "round.tozero";
|
RoundingStr = "round.towardzero";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return RoundingStr;
|
return RoundingStr;
|
||||||
|
@ -187,6 +187,34 @@ TEST_F(IRBuilderTest, ConstrainedFP) {
|
|||||||
ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebIgnore);
|
ASSERT_TRUE(CII->getExceptionBehavior() == ConstrainedFPIntrinsic::ebIgnore);
|
||||||
ASSERT_TRUE(CII->getRoundingMode() == ConstrainedFPIntrinsic::rmUpward);
|
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.
|
// Now override the defaults.
|
||||||
Call = Builder.CreateConstrainedFPBinOp(
|
Call = Builder.CreateConstrainedFPBinOp(
|
||||||
Intrinsic::experimental_constrained_fadd, V, V, nullptr, "", nullptr,
|
Intrinsic::experimental_constrained_fadd, V, V, nullptr, "", nullptr,
|
||||||
|
Loading…
Reference in New Issue
Block a user