llvm-project/llvm/unittests/IR
Serge Pavlov c7ff5b38f2 [FPEnv] Use single enum to represent rounding mode
Now compiler defines 5 sets of constants to represent rounding mode.
These are:

1. `llvm::APFloatBase::roundingMode`. It specifies all 5 rounding modes
defined by IEEE-754 and is used in `APFloat` implementation.

2. `clang::LangOptions::FPRoundingModeKind`. It specifies 4 of 5 IEEE-754
rounding modes and a special value for dynamic rounding mode. It is used
in clang frontend.

3. `llvm::fp::RoundingMode`. Defines the same values as
`clang::LangOptions::FPRoundingModeKind` but in different order. It is
used to specify rounding mode in in IR and functions that operate IR.

4. Rounding mode representation used by `FLT_ROUNDS` (C11, 5.2.4.2.2p7).
Besides constants for rounding mode it also uses a special value to
indicate error. It is convenient to use in intrinsic functions, as it
represents platform-independent representation for rounding mode. In this
role it is used in some pending patches.

5. Values like `FE_DOWNWARD` and other, which specify rounding mode in
library calls `fesetround` and `fegetround`. Often they represent bits
of some control register, so they are target-dependent. The same names
(not values) and a special name `FE_DYNAMIC` are used in
`#pragma STDC FENV_ROUND`.

The first 4 sets of constants are target independent and could have the
same numerical representation. It would simplify conversion between the
representations. Also now `clang::LangOptions::FPRoundingModeKind` and
`llvm::fp::RoundingMode` do not contain the value for IEEE-754 rounding
direction `roundTiesToAway`, although it is supported natively on
some targets.

This change defines all the rounding mode type via one `llvm::RoundingMode`,
which also contains rounding mode for IEEE rounding direction `roundTiesToAway`.

Differential Revision: https://reviews.llvm.org/D77379
2020-04-09 13:26:47 +07:00
..
AsmWriterTest.cpp IR: Cleanup after test to silence ASAN builds 2019-08-03 15:40:00 +00:00
AttributesTest.cpp [Alignment][NFC] Attributes use Align/MaybeAlign 2019-10-22 09:51:06 +00:00
BasicBlockTest.cpp [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
CFGBuilder.cpp [CFG/BasicBlock] Rename succ_const to const_succ. [NFC] 2020-03-25 12:40:55 -07:00
CFGBuilder.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [NFC] Split Knowledge retention and place it more appropriatly 2020-04-02 15:01:41 +02:00
ConstantRangeTest.cpp [ConstantRange] Add initial support for binaryXor. 2020-03-24 12:59:50 +00:00
ConstantsTest.cpp [IR] fix Constant::isElementWiseEqual() to allow for all undef elements compare 2020-01-17 08:31:16 -05:00
DataLayoutTest.cpp [Alignment][NFC] Add a helper function to DataLayout 2019-10-21 13:58:33 +00:00
DebugInfoTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DebugTypeODRUniquingTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DominatorTreeBatchUpdatesTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DominatorTreeTest.cpp [Dominators] Use Instruction::comesBefore for block-local queries, NFC 2020-02-20 16:41:51 -08:00
FunctionTest.cpp [Alignment][NFC] Value::getPointerAlignment returns MaybeAlign 2019-10-15 13:58:22 +00:00
IRBuilderTest.cpp [FPEnv] Use single enum to represent rounding mode 2020-04-09 13:26:47 +07:00
InstructionsTest.cpp [llvm][IR][CastInst] Update `castIsValid` for scalable vectors. 2020-03-30 21:13:40 +00:00
IntrinsicsTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LegacyPassManagerTest.cpp Introduce a CallGraph updater helper class 2020-02-08 14:16:48 -06:00
MDBuilderTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ManglerTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MetadataTest.cpp Add debug info support for Swift/Clang APINotes. 2020-03-11 18:47:30 -07:00
ModuleTest.cpp [Typo fix] RNG: Take pass name as argument instead of pass pointer. 2020-01-31 14:40:45 -05:00
PassBuilderCallbacksTest.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
PassManagerTest.cpp Add PassManagerImpl.h to hide implementation details 2020-02-03 11:15:55 -08:00
PatternMatch.cpp Remove "mask" operand from shufflevector. 2020-03-31 13:08:59 -07:00
TimePassesTest.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
TypesTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
UseTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
UserTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPIntrinsicTest.cpp [VP,Integer,#1] Vector-predicated integer intrinsics 2020-03-19 10:51:47 +01:00
ValueHandleTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ValueMapTest.cpp Replace non-recursive sys::Mutex users with std::mutex 2019-08-07 11:59:44 +00:00
ValueTest.cpp [Alignment][NFC] Remove dependency on GlobalObject::setAlignment(unsigned) 2019-10-15 11:24:36 +00:00
VectorTypesTest.cpp [SVE][IR] Scalable Vector size queries and IR instruction support 2019-10-08 12:53:54 +00:00
VerifierTest.cpp [SVE] Update API ConstantVector::getSplat() to use ElementCount. 2020-03-12 13:22:41 -07:00
WaymarkTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00