diff options
| author | Dehao Chen <dehao@google.com> | 2016-09-09 18:42:35 +0000 |
|---|---|---|
| committer | Dehao Chen <dehao@google.com> | 2016-09-09 18:42:35 +0000 |
| commit | 22ce5eb051591b828b1ce4238624b6e95d334a5b (patch) | |
| tree | 7620ab9e27ab4e5ee5e3fa1d5baf39f4f14ae3d3 /llvm/test/Transforms/GVN/PRE/rle.ll | |
| parent | a5edf655af475d80b83e9b685aea896f0ee2ad18 (diff) | |
| download | bcm5719-llvm-22ce5eb051591b828b1ce4238624b6e95d334a5b.tar.gz bcm5719-llvm-22ce5eb051591b828b1ce4238624b6e95d334a5b.zip | |
Do not widen load for different variable in GVN.
Summary:
Widening load in GVN is too early because it will block other optimizations like PRE, LICM.
https://llvm.org/bugs/show_bug.cgi?id=29110
The SPECCPU2006 benchmark impact of this patch:
Reference: o2_nopatch
(1): o2_patched
Benchmark Base:Reference (1)
-------------------------------------------------------
spec/2006/fp/C++/444.namd 25.2 -0.08%
spec/2006/fp/C++/447.dealII 45.92 +1.05%
spec/2006/fp/C++/450.soplex 41.7 -0.26%
spec/2006/fp/C++/453.povray 35.65 +1.68%
spec/2006/fp/C/433.milc 23.79 +0.42%
spec/2006/fp/C/470.lbm 41.88 -1.12%
spec/2006/fp/C/482.sphinx3 47.94 +1.67%
spec/2006/int/C++/471.omnetpp 22.46 -0.36%
spec/2006/int/C++/473.astar 21.19 +0.24%
spec/2006/int/C++/483.xalancbmk 36.09 -0.11%
spec/2006/int/C/400.perlbench 33.28 +1.35%
spec/2006/int/C/401.bzip2 22.76 -0.04%
spec/2006/int/C/403.gcc 32.36 +0.12%
spec/2006/int/C/429.mcf 41.04 -0.41%
spec/2006/int/C/445.gobmk 26.94 +0.04%
spec/2006/int/C/456.hmmer 24.5 -0.20%
spec/2006/int/C/458.sjeng 28 -0.46%
spec/2006/int/C/462.libquantum 55.25 +0.27%
spec/2006/int/C/464.h264ref 45.87 +0.72%
geometric mean +0.23%
For most benchmarks, it's a wash, but we do see stable improvements on some benchmarks, e.g. 447,453,482,400.
Reviewers: davidxl, hfinkel, dberlin, sanjoy, reames
Subscribers: gberry, junbuml
Differential Revision: https://reviews.llvm.org/D24096
llvm-svn: 281074
Diffstat (limited to 'llvm/test/Transforms/GVN/PRE/rle.ll')
| -rw-r--r-- | llvm/test/Transforms/GVN/PRE/rle.ll | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/test/Transforms/GVN/PRE/rle.ll b/llvm/test/Transforms/GVN/PRE/rle.ll index 3f42135b409..121fe6ebb3d 100644 --- a/llvm/test/Transforms/GVN/PRE/rle.ll +++ b/llvm/test/Transforms/GVN/PRE/rle.ll @@ -624,6 +624,7 @@ if.end: ;;===----------------------------------------------------------------------===;; ;; Load Widening +;; We explicitly choose NOT to widen. And are testing to make sure we don't. ;;===----------------------------------------------------------------------===;; %widening1 = type { i32, i8, i8, i8, i8 } @@ -640,7 +641,8 @@ entry: ret i32 %add ; CHECK-LABEL: @test_widening1( ; CHECK-NOT: load -; CHECK: load i16, i16* +; CHECK: load i8, i8* +; CHECK: load i8, i8* ; CHECK-NOT: load ; CHECK: ret i32 } @@ -664,7 +666,10 @@ entry: ret i32 %add3 ; CHECK-LABEL: @test_widening2( ; CHECK-NOT: load -; CHECK: load i32, i32* +; CHECK: load i8, i8* +; CHECK: load i8, i8* +; CHECK: load i8, i8* +; CHECK: load i8, i8* ; CHECK-NOT: load ; CHECK: ret i32 } |

