Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: tests_lit/llvm2ice_tests/address-mode-opt.ll

Issue 2085383002: Treat ORs as ADDs for address optimization if operand has enough zero bits on the right (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; This file checks support for address mode optimization. 1 ; This file checks support for address mode optimization.
2 2
3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
4 ; RUN: -allow-externally-defined-symbols | FileCheck %s 4 ; RUN: -allow-externally-defined-symbols | FileCheck %s
5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 -mattr=sse4.1 \ 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 -mattr=sse4.1 \
6 ; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=SSE41 %s 6 ; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=SSE41 %s
7 7
8 define internal float @load_arg_plus_200000(float* %arg) { 8 define internal float @load_arg_plus_200000(float* %arg) {
9 entry: 9 entry:
10 %arg.int = ptrtoint float* %arg to i32 10 %arg.int = ptrtoint float* %arg to i32
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 define internal float @address_mode_opt_sub_min_int(float* %arg) { 141 define internal float @address_mode_opt_sub_min_int(float* %arg) {
142 entry: 142 entry:
143 %arg.int = ptrtoint float* %arg to i32 143 %arg.int = ptrtoint float* %arg to i32
144 %addr1.int = sub i32 %arg.int, 2147483648 144 %addr1.int = sub i32 %arg.int, 2147483648
145 %addr1.ptr = inttoptr i32 %addr1.int to float* 145 %addr1.ptr = inttoptr i32 %addr1.int to float*
146 %addr1.load = load float, float* %addr1.ptr, align 4 146 %addr1.load = load float, float* %addr1.ptr, align 4
147 ret float %addr1.load 147 ret float %addr1.load
148 ; CHECK-LABEL: address_mode_opt_sub_min_int 148 ; CHECK-LABEL: address_mode_opt_sub_min_int
149 ; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000] 149 ; CHECK: movss xmm0,DWORD PTR [{{.*}}-0x80000000]
150 } 150 }
151
152 define internal float @load_1_or__2_shl_arg(float* %arg) {
153 entry:
154 %arg.int = ptrtoint float* %arg to i32
155 %shl1 = shl i32 %arg.int, 2
156 %addr.int = or i32 1, %shl1
Jim Stichnoth 2016/06/22 20:01:14 I would like to see two more tests: (1) "or i32 4
manasijm 2016/06/27 18:04:19 Done.
157 %addr.ptr = inttoptr i32 %addr.int to float*
158 %addr.load = load float, float* %addr.ptr, align 4
159 ret float %addr.load
160 ; CHECK-LABEL: load_1_or__2_shl_arg
161 ; CHECK: movss xmm0,DWORD PTR [eax*4+0x1]
Jim Stichnoth 2016/06/22 20:01:14 It would be better to not hard-code specific regis
manasijm 2016/06/27 18:04:19 Done.
162 }
OLDNEW
« src/IceTargetLoweringX86BaseImpl.h ('K') | « src/IceTargetLoweringX86BaseImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698