Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 ; This tests parsing NaCl intrinsics not related to atomic operations. | 1 ; This tests parsing NaCl intrinsics not related to atomic operations. |
| 2 | 2 |
| 3 ; RUN: %p2i -i %s --insts | FileCheck %s | 3 ; RUN: %p2i -i %s --insts | FileCheck %s |
| 4 ; RUN: %if --need=allow_disable_ir_gen --command \ | 4 ; RUN: %if --need=allow_disable_ir_gen --command \ |
| 5 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ | 5 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ |
| 6 ; RUN: | %if --need=allow_disable_ir_gen --command \ | 6 ; RUN: | %if --need=allow_disable_ir_gen --command \ |
| 7 ; RUN: FileCheck --check-prefix=NOIR %s | 7 ; RUN: FileCheck --check-prefix=NOIR %s |
| 8 | 8 |
| 9 declare i8* @llvm.nacl.read.tp() | 9 declare i8* @llvm.nacl.read.tp() |
| 10 declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) | 10 declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) |
| 11 declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) | 11 declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) |
| 12 declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1) | 12 declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1) |
| 13 declare void @llvm.nacl.longjmp(i8*, i32) | 13 declare void @llvm.nacl.longjmp(i8*, i32) |
| 14 declare i32 @llvm.nacl.setjmp(i8*) | 14 declare i32 @llvm.nacl.setjmp(i8*) |
| 15 declare float @llvm.sqrt.f32(float) | 15 declare float @llvm.sqrt.f32(float) |
| 16 declare double @llvm.sqrt.f64(double) | 16 declare double @llvm.sqrt.f64(double) |
| 17 declare float @llvm.fabs.f32(float) | |
| 18 declare double @llvm.fabs.f64(double) | |
| 19 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) | |
| 17 declare void @llvm.trap() | 20 declare void @llvm.trap() |
| 18 declare i16 @llvm.bswap.i16(i16) | 21 declare i16 @llvm.bswap.i16(i16) |
| 19 declare i32 @llvm.bswap.i32(i32) | 22 declare i32 @llvm.bswap.i32(i32) |
| 20 declare i64 @llvm.bswap.i64(i64) | 23 declare i64 @llvm.bswap.i64(i64) |
| 21 declare i32 @llvm.ctlz.i32(i32, i1) | 24 declare i32 @llvm.ctlz.i32(i32, i1) |
| 22 declare i64 @llvm.ctlz.i64(i64, i1) | 25 declare i64 @llvm.ctlz.i64(i64, i1) |
| 23 declare i32 @llvm.cttz.i32(i32, i1) | 26 declare i32 @llvm.cttz.i32(i32, i1) |
| 24 declare i64 @llvm.cttz.i64(i64, i1) | 27 declare i64 @llvm.cttz.i64(i64, i1) |
| 25 declare i32 @llvm.ctpop.i32(i32) | 28 declare i32 @llvm.ctpop.i32(i32) |
| 26 declare i64 @llvm.ctpop.i64(i64) | 29 declare i64 @llvm.ctpop.i64(i64) |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 | 145 |
| 143 ; CHECK-NEXT: define double @test_sqrt_double(double %x, i32 %iptr) { | 146 ; CHECK-NEXT: define double @test_sqrt_double(double %x, i32 %iptr) { |
| 144 ; CHECK-NEXT: entry: | 147 ; CHECK-NEXT: entry: |
| 145 ; CHECK-NEXT: %r = call double @llvm.sqrt.f64(double %x) | 148 ; CHECK-NEXT: %r = call double @llvm.sqrt.f64(double %x) |
| 146 ; CHECK-NEXT: %r2 = call double @llvm.sqrt.f64(double %r) | 149 ; CHECK-NEXT: %r2 = call double @llvm.sqrt.f64(double %r) |
| 147 ; CHECK-NEXT: %r3 = call double @llvm.sqrt.f64(double -0.000000e+00) | 150 ; CHECK-NEXT: %r3 = call double @llvm.sqrt.f64(double -0.000000e+00) |
| 148 ; CHECK-NEXT: %r4 = fadd double %r2, %r3 | 151 ; CHECK-NEXT: %r4 = fadd double %r2, %r3 |
| 149 ; CHECK-NEXT: ret double %r4 | 152 ; CHECK-NEXT: ret double %r4 |
| 150 ; CHECK-NEXT: } | 153 ; CHECK-NEXT: } |
| 151 | 154 |
| 155 define float @test_fabs_float(float %x, i32 %iptr) { | |
|
jvoung (off chromium)
2015/03/19 16:37:53
similar -- iptr not needed?
Jim Stichnoth
2015/03/19 18:35:15
Done.
| |
| 156 entry: | |
| 157 %r = call float @llvm.fabs.f32(float %x) | |
| 158 %r2 = call float @llvm.fabs.f32(float %r) | |
| 159 %r3 = call float @llvm.fabs.f32(float -0.0) | |
| 160 %r4 = fadd float %r2, %r3 | |
| 161 ret float %r4 | |
| 162 } | |
| 163 | |
| 164 ; CHECK-NEXT: define float @test_fabs_float(float %x, i32 %iptr) { | |
| 165 ; CHECK-NEXT: entry: | |
| 166 ; CHECK-NEXT: %r = call float @llvm.fabs.f32(float %x) | |
| 167 ; CHECK-NEXT: %r2 = call float @llvm.fabs.f32(float %r) | |
| 168 ; CHECK-NEXT: %r3 = call float @llvm.fabs.f32(float -0.000000e+00) | |
| 169 ; CHECK-NEXT: %r4 = fadd float %r2, %r3 | |
| 170 ; CHECK-NEXT: ret float %r4 | |
| 171 ; CHECK-NEXT: } | |
| 172 | |
| 173 define double @test_fabs_double(double %x, i32 %iptr) { | |
| 174 entry: | |
| 175 %r = call double @llvm.fabs.f64(double %x) | |
| 176 %r2 = call double @llvm.fabs.f64(double %r) | |
| 177 %r3 = call double @llvm.fabs.f64(double -0.0) | |
| 178 %r4 = fadd double %r2, %r3 | |
| 179 ret double %r4 | |
| 180 } | |
| 181 | |
| 182 ; CHECK-NEXT: define double @test_fabs_double(double %x, i32 %iptr) { | |
| 183 ; CHECK-NEXT: entry: | |
| 184 ; CHECK-NEXT: %r = call double @llvm.fabs.f64(double %x) | |
| 185 ; CHECK-NEXT: %r2 = call double @llvm.fabs.f64(double %r) | |
| 186 ; CHECK-NEXT: %r3 = call double @llvm.fabs.f64(double -0.000000e+00) | |
| 187 ; CHECK-NEXT: %r4 = fadd double %r2, %r3 | |
| 188 ; CHECK-NEXT: ret double %r4 | |
| 189 ; CHECK-NEXT: } | |
| 190 | |
| 191 define <4 x float> @test_fabs_v4f32(<4 x float> %x, i32 %iptr) { | |
| 192 entry: | |
| 193 %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x) | |
| 194 %r2 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %r) | |
| 195 %r3 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef) | |
| 196 %r4 = fadd <4 x float> %r2, %r3 | |
| 197 ret <4 x float> %r4 | |
| 198 } | |
| 199 | |
| 200 ; CHECK-NEXT: define <4 x float> @test_fabs_v4f32(<4 x float> %x, i32 %iptr) { | |
| 201 ; CHECK-NEXT: entry: | |
| 202 ; CHECK-NEXT: %r = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x) | |
| 203 ; CHECK-NEXT: %r2 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %r) | |
| 204 ; CHECK-NEXT: %r3 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef) | |
| 205 ; CHECK-NEXT: %r4 = fadd <4 x float> %r2, %r3 | |
| 206 ; CHECK-NEXT: ret <4 x float> %r4 | |
| 207 ; CHECK-NEXT: } | |
| 208 | |
| 152 define i32 @test_trap(i32 %br) { | 209 define i32 @test_trap(i32 %br) { |
| 153 entry: | 210 entry: |
| 154 %r1 = icmp eq i32 %br, 0 | 211 %r1 = icmp eq i32 %br, 0 |
| 155 br i1 %r1, label %Zero, label %NonZero | 212 br i1 %r1, label %Zero, label %NonZero |
| 156 Zero: | 213 Zero: |
| 157 call void @llvm.trap() | 214 call void @llvm.trap() |
| 158 unreachable | 215 unreachable |
| 159 NonZero: | 216 NonZero: |
| 160 ret i32 1 | 217 ret i32 1 |
| 161 } | 218 } |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 337 ; CHECK-NEXT: %sp3 = call i32 @llvm.stacksave() | 394 ; CHECK-NEXT: %sp3 = call i32 @llvm.stacksave() |
| 338 ; CHECK-NEXT: %tmp3 = alloca i8, i32 %x_4, align 4 | 395 ; CHECK-NEXT: %tmp3 = alloca i8, i32 %x_4, align 4 |
| 339 ; CHECK-NEXT: store i32 %y, i32* %tmp1, align 1 | 396 ; CHECK-NEXT: store i32 %y, i32* %tmp1, align 1 |
| 340 ; CHECK-NEXT: store i32 %x, i32* %tmp2, align 1 | 397 ; CHECK-NEXT: store i32 %x, i32* %tmp2, align 1 |
| 341 ; CHECK-NEXT: store i32 %x, i32* %tmp3, align 1 | 398 ; CHECK-NEXT: store i32 %x, i32* %tmp3, align 1 |
| 342 ; CHECK-NEXT: call void @llvm.stackrestore(i32 %sp1) | 399 ; CHECK-NEXT: call void @llvm.stackrestore(i32 %sp1) |
| 343 ; CHECK-NEXT: ret void | 400 ; CHECK-NEXT: ret void |
| 344 ; CHECK-NEXT: } | 401 ; CHECK-NEXT: } |
| 345 | 402 |
| 346 ; NOIR: Total across all functions | 403 ; NOIR: Total across all functions |
| OLD | NEW |