mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
8366289c89
The current demand propagator for addition will mark all input bits at and right of the alive output bit as alive. But carry won't propagate beyond a bit for which both operands are zero (or one/zero in the case of subtraction) so a more accurate answer is possible given known bits. I derived a propagator by working through truth tables and using a bit-reversed addition to make demand ripple to the right, but I'm not sure how to make a convincing argument for its correctness in the comments yet. Nevertheless, here's a minimal implementation and test to get feedback. This would help in a situation where, for example, four bytes (<128) packed into an int are added with four others SIMD-style but only one of the four results is actually read. Known A: 0_______0_______0_______0_______ Known B: 0_______0_______0_______0_______ AOut: 00000000001000000000000000000000 AB, current: 00000000001111111111111111111111 AB, patch: 00000000001111111000000000000000 Committed on behalf of: @rrika (Erika) Differential Revision: https://reviews.llvm.org/D72423
49 lines
933 B
CMake
49 lines
933 B
CMake
set(LLVM_LINK_COMPONENTS
|
|
Analysis
|
|
AsmParser
|
|
Core
|
|
Support
|
|
Passes
|
|
TransformUtils
|
|
)
|
|
|
|
add_llvm_unittest(IRTests
|
|
AbstractCallSiteTest.cpp
|
|
AsmWriterTest.cpp
|
|
AttributesTest.cpp
|
|
BasicBlockTest.cpp
|
|
CFGBuilder.cpp
|
|
ConstantRangeTest.cpp
|
|
ConstantsTest.cpp
|
|
DataLayoutTest.cpp
|
|
DebugInfoTest.cpp
|
|
DebugTypeODRUniquingTest.cpp
|
|
DemandedBitsTest.cpp
|
|
DominatorTreeTest.cpp
|
|
DominatorTreeBatchUpdatesTest.cpp
|
|
FunctionTest.cpp
|
|
PassBuilderCallbacksTest.cpp
|
|
IRBuilderTest.cpp
|
|
InstructionsTest.cpp
|
|
IntrinsicsTest.cpp
|
|
LegacyPassManagerTest.cpp
|
|
MDBuilderTest.cpp
|
|
ManglerTest.cpp
|
|
MetadataTest.cpp
|
|
ModuleTest.cpp
|
|
PassManagerTest.cpp
|
|
PatternMatch.cpp
|
|
TimePassesTest.cpp
|
|
TypesTest.cpp
|
|
UseTest.cpp
|
|
UserTest.cpp
|
|
ValueHandleTest.cpp
|
|
ValueMapTest.cpp
|
|
ValueTest.cpp
|
|
VectorTypesTest.cpp
|
|
VerifierTest.cpp
|
|
VPIntrinsicTest.cpp
|
|
)
|
|
|
|
target_link_libraries(IRTests PRIVATE LLVMTestingSupport)
|