OLD | NEW |
1 ; RUN: llc < %s -mattr=-avx -fast-isel -mcpu=core2 -O0 -regalloc=fast -asm-verbo
se=0 -fast-isel-abort | FileCheck %s | 1 ; RUN: llc < %s -mattr=-avx -fast-isel -mcpu=core2 -O0 -regalloc=fast -asm-verbo
se=0 -fast-isel-abort | FileCheck %s |
2 ; RUN: llc < %s -mattr=+avx -fast-isel -mcpu=core2 -O0 -regalloc=fast -asm-verbo
se=0 -fast-isel-abort | FileCheck %s --check-prefix=AVX | 2 ; RUN: llc < %s -mattr=+avx -fast-isel -mcpu=core2 -O0 -regalloc=fast -asm-verbo
se=0 -fast-isel-abort | FileCheck %s --check-prefix=AVX |
| 3 ; RUN: llc < %s -fast-isel -O0 -regalloc=fast -asm-verbose=0 -fast-isel-abort -m
triple=x86_64-none-nacl | FileCheck %s --check-prefix=NACL64 |
| 4 ; RUN: llc < %s -fast-isel -O0 -regalloc=fast -asm-verbose=0 -fast-isel-abort -m
triple=x86_64-none-nacl -relocation-model=pic | FileCheck %s --check-prefix=NACL
64_PIC |
3 | 5 |
4 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
2:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:6
4" | 6 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
2:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:6
4" |
5 target triple = "x86_64-apple-darwin10.0.0" | 7 target triple = "x86_64-apple-darwin10.0.0" |
6 | 8 |
7 ; Make sure that fast-isel folds the immediate into the binop even though it | 9 ; Make sure that fast-isel folds the immediate into the binop even though it |
8 ; is non-canonical. | 10 ; is non-canonical. |
9 define i32 @test1(i32 %i) nounwind ssp { | 11 define i32 @test1(i32 %i) nounwind ssp { |
10 %and = and i32 8, %i | 12 %and = and i32 8, %i |
11 ret i32 %and | 13 ret i32 %and |
12 } | 14 } |
(...skipping 26 matching lines...) Expand all Loading... |
39 | 41 |
40 @G = external global i32 | 42 @G = external global i32 |
41 define i64 @test3() nounwind { | 43 define i64 @test3() nounwind { |
42 %A = ptrtoint i32* @G to i64 | 44 %A = ptrtoint i32* @G to i64 |
43 ret i64 %A | 45 ret i64 %A |
44 ; CHECK-LABEL: test3: | 46 ; CHECK-LABEL: test3: |
45 ; CHECK: movq _G@GOTPCREL(%rip), %rax | 47 ; CHECK: movq _G@GOTPCREL(%rip), %rax |
46 ; CHECK-NEXT: ret | 48 ; CHECK-NEXT: ret |
47 } | 49 } |
48 | 50 |
| 51 ; NACL64 version uses i32 for 32-bit pointers. |
| 52 define i32 @test3_nacl64() nounwind { |
| 53 %A = ptrtoint i32* @G to i32 |
| 54 ret i32 %A |
| 55 |
| 56 ; NACL64_PIC: test3_nacl64: |
| 57 ; NACL64_PIC: movl G@GOTPCREL(%rip), %eax |
| 58 ; NACL64_PIC-NEXT: popq %r11 |
| 59 ; NACL64_PIC-NEXT: nacljmp %r11d, %r15 |
| 60 } |
49 | 61 |
50 | 62 |
51 ; rdar://9289558 | 63 ; rdar://9289558 |
52 @rtx_length = external global [153 x i8] | 64 @rtx_length = external global [153 x i8] |
53 | 65 |
54 define i32 @test4(i64 %idxprom9) nounwind { | 66 define i32 @test4(i64 %idxprom9) nounwind { |
55 %arrayidx10 = getelementptr inbounds [153 x i8]* @rtx_length, i32 0, i64 %idxp
rom9 | 67 %arrayidx10 = getelementptr inbounds [153 x i8]* @rtx_length, i32 0, i64 %idxp
rom9 |
56 %tmp11 = load i8* %arrayidx10, align 1 | 68 %tmp11 = load i8* %arrayidx10, align 1 |
57 %conv = zext i8 %tmp11 to i32 | 69 %conv = zext i8 %tmp11 to i32 |
58 ret i32 %conv | 70 ret i32 %conv |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 | 304 |
293 ; PR13563 | 305 ; PR13563 |
294 define void @test23(i8* noalias sret %result) { | 306 define void @test23(i8* noalias sret %result) { |
295 %a = alloca i8 | 307 %a = alloca i8 |
296 %b = call i8* @foo23() | 308 %b = call i8* @foo23() |
297 ret void | 309 ret void |
298 ; CHECK-LABEL: test23: | 310 ; CHECK-LABEL: test23: |
299 ; CHECK: call | 311 ; CHECK: call |
300 ; CHECK: movq %rdi, %rax | 312 ; CHECK: movq %rdi, %rax |
301 ; CHECK: ret | 313 ; CHECK: ret |
| 314 ; NACL64: test23: |
| 315 ; NACL64: call |
| 316 ; NACL64: movl %edi, %eax |
| 317 ; NACL64: popq %r11 |
| 318 ; NACL64: nacljmp %r11d, %r15 |
302 } | 319 } |
303 | 320 |
304 declare i8* @foo23() | 321 declare i8* @foo23() |
305 | 322 |
306 declare void @takesi32ptr(i32* %arg) | 323 declare void @takesi32ptr(i32* %arg) |
307 | 324 |
308 ; CHECK-LABEL: allocamaterialize | 325 ; CHECK-LABEL: allocamaterialize |
309 define void @allocamaterialize() { | 326 define void @allocamaterialize() { |
310 %a = alloca i32 | 327 %a = alloca i32 |
311 ; CHECK: leaq {{.*}}, %rdi | 328 ; CHECK: leaq {{.*}}, %rdi |
312 call void @takesi32ptr(i32* %a) | 329 call void @takesi32ptr(i32* %a) |
313 ret void | 330 ret void |
314 } | 331 } |
OLD | NEW |