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

Side by Side Diff: tests_lit/llvm2ice_tests/nacl-other-intrinsics.ll

Issue 1266263003: Add the ARM32 FP register table entries, simple arith, and args. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: format more Created 5 years, 4 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
« no previous file with comments | « tests_lit/llvm2ice_tests/fp.pnacl.ll ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This tests the NaCl intrinsics not related to atomic operations. 1 ; This tests the NaCl intrinsics not related to atomic operations.
2 2
3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
4 ; RUN: --target x8632 -i %s --args -O2 -sandbox \ 4 ; RUN: --target x8632 -i %s --args -O2 -sandbox \
5 ; RUN: | %if --need=target_X8632 --command FileCheck %s 5 ; RUN: | %if --need=target_X8632 --command FileCheck %s
6 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 6 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
7 ; RUN: --target x8632 -i %s --args -Om1 -sandbox \ 7 ; RUN: --target x8632 -i %s --args -Om1 -sandbox \
8 ; RUN: | %if --need=target_X8632 --command FileCheck %s 8 ; RUN: | %if --need=target_X8632 --command FileCheck %s
9 9
10 ; Do another run w/ O2 and a different check-prefix (otherwise O2 and Om1 10 ; Do another run w/ O2 and a different check-prefix (otherwise O2 and Om1
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 %r = call float @llvm.sqrt.f32(float %x) 143 %r = call float @llvm.sqrt.f32(float %x)
144 %r2 = call float @llvm.sqrt.f32(float %r) 144 %r2 = call float @llvm.sqrt.f32(float %r)
145 %r3 = call float @llvm.sqrt.f32(float -0.0) 145 %r3 = call float @llvm.sqrt.f32(float -0.0)
146 %r4 = fadd float %r2, %r3 146 %r4 = fadd float %r2, %r3
147 ret float %r4 147 ret float %r4
148 } 148 }
149 ; CHECK-LABEL: test_sqrt_float 149 ; CHECK-LABEL: test_sqrt_float
150 ; CHECK: sqrtss xmm{{.*}} 150 ; CHECK: sqrtss xmm{{.*}}
151 ; CHECK: sqrtss xmm{{.*}} 151 ; CHECK: sqrtss xmm{{.*}}
152 ; CHECK: sqrtss xmm{{.*}},DWORD PTR 152 ; CHECK: sqrtss xmm{{.*}},DWORD PTR
153 ; ARM32-LABEL: test_sqrt_float
154 ; ARM32: vsqrt.f32
155 ; ARM32: vsqrt.f32
156 ; ARM32: vsqrt.f32
157 ; ARM32: vadd.f32
153 158
154 define float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) { 159 define float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) {
155 entry: 160 entry:
156 %__2 = inttoptr i32 %iptr to float* 161 %__2 = inttoptr i32 %iptr to float*
157 %y = load float, float* %__2, align 4 162 %y = load float, float* %__2, align 4
158 %r5 = call float @llvm.sqrt.f32(float %y) 163 %r5 = call float @llvm.sqrt.f32(float %y)
159 %r6 = fadd float %x, %r5 164 %r6 = fadd float %x, %r5
160 ret float %r6 165 ret float %r6
161 } 166 }
162 ; CHECK-LABEL: test_sqrt_float_mergeable_load 167 ; CHECK-LABEL: test_sqrt_float_mergeable_load
163 ; We could fold the load and the sqrt into one operation, but the 168 ; We could fold the load and the sqrt into one operation, but the
164 ; current folding only handles load + arithmetic op. The sqrt inst 169 ; current folding only handles load + arithmetic op. The sqrt inst
165 ; is considered an intrinsic call and not an arithmetic op. 170 ; is considered an intrinsic call and not an arithmetic op.
166 ; CHECK: sqrtss xmm{{.*}} 171 ; CHECK: sqrtss xmm{{.*}}
172 ; ARM32-LABEL: test_sqrt_float_mergeable_load
173 ; ARM32: vldr s{{.*}}
174 ; ARM32: vsqrt.f32
167 175
168 define double @test_sqrt_double(double %x, i32 %iptr) { 176 define double @test_sqrt_double(double %x, i32 %iptr) {
169 entry: 177 entry:
170 %r = call double @llvm.sqrt.f64(double %x) 178 %r = call double @llvm.sqrt.f64(double %x)
171 %r2 = call double @llvm.sqrt.f64(double %r) 179 %r2 = call double @llvm.sqrt.f64(double %r)
172 %r3 = call double @llvm.sqrt.f64(double -0.0) 180 %r3 = call double @llvm.sqrt.f64(double -0.0)
173 %r4 = fadd double %r2, %r3 181 %r4 = fadd double %r2, %r3
174 ret double %r4 182 ret double %r4
175 } 183 }
176 ; CHECK-LABEL: test_sqrt_double 184 ; CHECK-LABEL: test_sqrt_double
177 ; CHECK: sqrtsd xmm{{.*}} 185 ; CHECK: sqrtsd xmm{{.*}}
178 ; CHECK: sqrtsd xmm{{.*}} 186 ; CHECK: sqrtsd xmm{{.*}}
179 ; CHECK: sqrtsd xmm{{.*}},QWORD PTR 187 ; CHECK: sqrtsd xmm{{.*}},QWORD PTR
188 ; ARM32-LABEL: test_sqrt_double
189 ; ARM32: vsqrt.f64
190 ; ARM32: vsqrt.f64
191 ; ARM32: vsqrt.f64
192 ; ARM32: vadd.f64
180 193
181 define double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) { 194 define double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) {
182 entry: 195 entry:
183 %__2 = inttoptr i32 %iptr to double* 196 %__2 = inttoptr i32 %iptr to double*
184 %y = load double, double* %__2, align 8 197 %y = load double, double* %__2, align 8
185 %r5 = call double @llvm.sqrt.f64(double %y) 198 %r5 = call double @llvm.sqrt.f64(double %y)
186 %r6 = fadd double %x, %r5 199 %r6 = fadd double %x, %r5
187 ret double %r6 200 ret double %r6
188 } 201 }
189 ; CHECK-LABEL: test_sqrt_double_mergeable_load 202 ; CHECK-LABEL: test_sqrt_double_mergeable_load
190 ; CHECK: sqrtsd xmm{{.*}} 203 ; CHECK: sqrtsd xmm{{.*}}
204 ; ARM32-LABEL: test_sqrt_double_mergeable_load
205 ; ARM32: vldr d{{.*}}
206 ; ARM32: vsqrt.f64
191 207
192 define float @test_sqrt_ignored(float %x, double %y) { 208 define float @test_sqrt_ignored(float %x, double %y) {
193 entry: 209 entry:
194 %ignored1 = call float @llvm.sqrt.f32(float %x) 210 %ignored1 = call float @llvm.sqrt.f32(float %x)
195 %ignored2 = call double @llvm.sqrt.f64(double %y) 211 %ignored2 = call double @llvm.sqrt.f64(double %y)
196 ret float 0.0 212 ret float 0.0
197 } 213 }
198 ; CHECKO2REM-LABEL: test_sqrt_ignored 214 ; CHECKO2REM-LABEL: test_sqrt_ignored
199 ; CHECKO2REM-NOT: sqrtss 215 ; CHECKO2REM-NOT: sqrtss
200 ; CHECKO2REM-NOT: sqrtsd 216 ; CHECKO2REM-NOT: sqrtsd
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 ; At least 3 copies of esp, but probably more from having to do the allocas. 538 ; At least 3 copies of esp, but probably more from having to do the allocas.
523 ; CHECK: mov {{.*}},esp 539 ; CHECK: mov {{.*}},esp
524 ; CHECK: mov {{.*}},esp 540 ; CHECK: mov {{.*}},esp
525 ; CHECK: mov {{.*}},esp 541 ; CHECK: mov {{.*}},esp
526 ; CHECK: mov esp,{{.*}} 542 ; CHECK: mov esp,{{.*}}
527 ; ARM32-LABEL: test_stacksave_multiple 543 ; ARM32-LABEL: test_stacksave_multiple
528 ; ARM32: mov {{.*}}, sp 544 ; ARM32: mov {{.*}}, sp
529 ; ARM32: mov {{.*}}, sp 545 ; ARM32: mov {{.*}}, sp
530 ; ARM32: mov {{.*}}, sp 546 ; ARM32: mov {{.*}}, sp
531 ; ARM32: mov sp, {{.*}} 547 ; ARM32: mov sp, {{.*}}
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/fp.pnacl.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698