Go to file
Quentin Colombet 1111e6fe84 [PeepholeOptimizer] Advanced rewriting of copies to avoid cross register banks
copies.

This patch extends the peephole optimization introduced in r190713 to produce
register-coalescer friendly copies when possible.

This extension taught the existing cross-bank copy optimization how to deal
with the instructions that generate cross-bank copies, i.e., insert_subreg,
extract_subreg, reg_sequence, and subreg_to_reg.
E.g.
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy b.sub0 <-- cross-bank copy

Would produce the following code:
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy A <-- same-bank copy

This patch also introduces a new helper class for that: ValueTracker.
This class implements the logic to look through the copy related instructions
and get the related source.

For now, the advanced rewriting is disabled by default as we are lacking the
semantic on target specific instructions to catch the motivating examples.

Related to <rdar://problem/12702965>.

llvm-svn: 212100
2014-07-01 14:33:36 +00:00
clang Remove CleanupHackLevel from CGException. 2014-07-01 11:47:10 +00:00
clang-tools-extra Initialize ClangTidyMessage::FileOffset field to avoid unitialized variable access when sorting errors on output. 2014-06-30 14:29:03 +00:00
compiler-rt Add the way to disable MSan unit tests for _mm_* intrinsics 2014-07-01 01:38:52 +00:00
debuginfo-tests relax testcase for LLDB output format compatibility. 2014-03-19 23:06:18 +00:00
libclc OpenCL 1.1 does not define CL_VERSION_1_2 so use hardcoded number instead 2014-06-26 15:26:38 +00:00
libcxx Fix libc++ bug #20039: 'Constructing std::function from empty compatible std::function results in half-empty state' Thanks to Agustin Berge for the report, and for his and Eric Fiselier's work on a fix. 2014-06-30 21:27:51 +00:00
libcxxabi Revert the LSDA change to scan_eh_tab. 2014-06-30 12:35:29 +00:00
lld [mach-o]: make the default dylib install-name the output filename. 2014-07-01 08:41:45 +00:00
lldb Fix Windows build after llgs upstream. 2014-07-01 00:18:46 +00:00
llvm [PeepholeOptimizer] Advanced rewriting of copies to avoid cross register banks 2014-07-01 14:33:36 +00:00
openmp CMake: remove duplicated source file from list 2014-06-02 13:09:24 +00:00
polly [FIX] Don't consider reductions which are partially outside the SCoP 2014-07-01 00:32:29 +00:00