1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/unittests
Simon Pilgrim 8366289c89 [DemandedBits] Improve accuracy of Add propagator
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
2020-08-17 12:54:09 +01:00
..
ADT [SystemZ/ZOS] Add binary format goff and operating system zos to the triple 2020-08-11 05:26:26 -04:00
Analysis [NFC]{MLInliner] Point out the tests' model dependencies 2020-08-06 09:57:26 -07:00
AsmParser [SVE] Remove calls to VectorType::getNumElements from AsmParserTest 2020-07-07 14:55:42 -07:00
BinaryFormat [BinaryFormat] Add formatv support for DW_OP constants 2020-06-08 15:27:44 +02:00
Bitcode [strictfp] Replace dangling strictfp attrs with nobuiltin 2020-06-15 10:05:35 -04:00
Bitstream [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00
CodeGen [X86][MC][Target] Initial backend support a tune CPU to support -mtune 2020-08-14 15:31:50 -07:00
DebugInfo [DebugInfo] Don't error for zero-length arange entries 2020-08-10 14:57:52 +01:00
Demangle
ExecutionEngine [ORC] Refactor TrampolinePool to reduce virtual function calls. 2020-07-19 22:38:41 -07:00
Frontend [OpenMP][OMPBuilder] Adding support for omp single 2020-08-16 01:15:16 -04:00
FuzzMutate [SVE] Deprecate default false variant of VectorType::get 2020-06-16 15:16:11 -07:00
InterfaceStub [elfabi] Move llvm-elfabi related code to InterfaceStub library 2020-08-13 11:51:44 -07:00
IR [DemandedBits] Improve accuracy of Add propagator 2020-08-17 12:54:09 +01:00
LineEditor
Linker [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
MC [AIX][XCOFF] add symbol priority for the llvm-objdump -D -symbol-description 2020-05-29 11:08:51 -04:00
MI LIS: fix handleMove to properly extend main range 2020-07-07 11:52:32 -07:00
Object [ELF] Fixing an issue in Elf_Note_Impl::getDescAsStringRef 2020-06-16 10:08:31 +00:00
ObjectYAML [DWARFYAML] Replace InitialLength with Format and Length. NFC. 2020-08-13 18:39:03 +08:00
Option [OptTable] Support grouped short options 2020-07-17 09:32:43 -07:00
Passes Don't export symbols from clang/opt/llc if plugins are disabled. 2020-03-23 12:17:09 -07:00
ProfileData [llvm-cov] reset executation count to 0 after wrapped segment 2020-08-04 18:38:44 -07:00
Remarks [Remarks] Fix error message check in unit test 2019-10-31 15:51:36 -07:00
Support [DemandedBits] Improve accuracy of Add propagator 2020-08-17 12:54:09 +01:00
TableGen Make unittests include path relative 2020-02-21 10:19:11 +01:00
Target [ARM] More unpredictable VCVT instructions. 2020-07-21 07:24:37 +01:00
TextAPI [MachO] Add skeletal support for DriverKit platform 2020-08-14 12:36:43 -07:00
tools [llvm][NFC] Add missing 'override's in unittests/ 2020-07-17 17:35:59 -07:00
Transforms Attributor.h - remove unnecessary includes. NFCI. 2020-07-30 15:26:41 +01:00
XRay Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
CMakeLists.txt [elfabi] Move llvm-elfabi related code to InterfaceStub library 2020-08-13 11:51:44 -07:00
unittest.cfg.in