1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 06:22:56 +02:00
llvm-mirror/lib
Stanislav Mekhanoshin 8fd3071d3d [AMDGPU] Allow hoisting of comparisons out of a loop and eliminate condition copies
Codegen prepare sinks comparisons close to a user is we have only one register
for conditions. For AMDGPU we have many SGPRs capable to hold vector conditions.
Changed BE to report we have many condition registers. That way IR LICM pass
would hoist an invariant comparison out of a loop and codegen prepare will not
sink it.

With that done a condition is calculated in one block and used in another.
Current behavior is to store workitem's condition in a VGPR using v_cndmask
and then restore it with yet another v_cmp instruction from that v_cndmask's
result. To mitigate the issue a forward propagation of a v_cmp 64 bit result
to an user is implemented. Additional side effect of this is that we may
consume less VGPRs in a cost of more SGPRs in case if holding of multiple
conditions is needed, and that is a clear win in most cases.

llvm-svn: 286171
2016-11-07 23:04:50 +00:00
..
Analysis [OptDiag, opt-viewer] Save callee's location and display as link 2016-11-07 22:41:13 +00:00
AsmParser Add DWARF debug info support for C++11 inline namespaces. 2016-11-03 19:42:02 +00:00
Bitcode [BitcodeWriter] Replace a manual byteswap with read32be. 2016-11-06 13:26:39 +00:00
CodeGen Add -O0 support for @llvm.invariant.group.barrier by discarding it if it gets to ISel. 2016-11-07 16:47:20 +00:00
DebugInfo PDB: Fix some APIs to avoid use-after-frees 2016-11-03 18:28:04 +00:00
Demangle
ExecutionEngine Fix cross-endianness RuntimeDyld relocation for ARM 2016-10-20 22:15:56 +00:00
Fuzzer [libFuzzer] fix -error_exitcode=N, now with a test 2016-11-03 19:31:18 +00:00
IR [OptDiag, opt-viewer] Save callee's location and display as link 2016-11-07 22:41:13 +00:00
IRReader
LibDriver
LineEditor
Linker Typo: nomed struct -> named struct 2016-10-19 20:10:03 +00:00
LTO [ThinLTO] Disable importing and other cross-module optis at -O0 2016-10-31 22:12:21 +00:00
MC Fix 24560: assembler does not share constant pool for same constants 2016-11-04 19:17:32 +00:00
Object [lib/Object] Modernize. NFCI. 2016-11-07 21:01:42 +00:00
ObjectYAML Fix Clang-tidy readability-redundant-string-cstr warnings 2016-11-02 16:43:50 +00:00
Option
Passes Conditionally eliminate library calls where the result value is not used 2016-10-18 21:36:27 +00:00
ProfileData Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Support [APFloat] Make functions that produce APFloaat objects use correct semantics. 2016-11-06 07:38:37 +00:00
TableGen
Target [AMDGPU] Allow hoisting of comparisons out of a loop and eliminate condition copies 2016-11-07 23:04:50 +00:00
Transforms [TRE] Remove dead code 2016-11-07 22:17:37 +00:00
CMakeLists.txt
LLVMBuild.txt