d7b9463b5e1b6bdcf80027040c8d90bcd761c852
[oota-llvm.git] / test / CodeGen / X86 / 2009-04-20-LinearScanOpt.ll
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10.0 -relocation-model=pic -disable-fp-elim -stats |& grep asm-printer | grep 83
2 ; rdar://6802189
3
4 ; Test if linearscan is unfavoring registers for allocation to allow more reuse
5 ; of reloads from stack slots.
6
7         %struct.SHA_CTX = type { i32, i32, i32, i32, i32, i32, i32, [16 x i32], i32 }
8
9 define fastcc void @sha1_block_data_order(%struct.SHA_CTX* nocapture %c, i8* %p, i64 %num) nounwind {
10 entry:
11         br label %bb
12
13 bb:             ; preds = %bb, %entry
14         %asmtmp511 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind          ; <i32> [#uses=3]
15         %asmtmp513 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind         ; <i32> [#uses=2]
16         %asmtmp516 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind         ; <i32> [#uses=1]
17         %asmtmp517 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind          ; <i32> [#uses=2]
18         %0 = xor i32 0, %asmtmp513              ; <i32> [#uses=0]
19         %1 = add i32 0, %asmtmp517              ; <i32> [#uses=1]
20         %2 = add i32 %1, 0              ; <i32> [#uses=1]
21         %3 = add i32 %2, 0              ; <i32> [#uses=1]
22         %asmtmp519 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind         ; <i32> [#uses=1]
23         %4 = xor i32 0, %asmtmp511              ; <i32> [#uses=1]
24         %asmtmp520 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %4) nounwind         ; <i32> [#uses=2]
25         %5 = xor i32 0, %asmtmp516              ; <i32> [#uses=1]
26         %6 = xor i32 %5, %asmtmp519             ; <i32> [#uses=1]
27         %7 = add i32 %asmtmp513, -899497514             ; <i32> [#uses=1]
28         %8 = add i32 %7, %asmtmp520             ; <i32> [#uses=1]
29         %9 = add i32 %8, %6             ; <i32> [#uses=1]
30         %10 = add i32 %9, 0             ; <i32> [#uses=1]
31         %asmtmp523 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind          ; <i32> [#uses=1]
32         %asmtmp525 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %3) nounwind                ; <i32> [#uses=2]
33         %11 = xor i32 0, %asmtmp525             ; <i32> [#uses=1]
34         %12 = add i32 0, %11            ; <i32> [#uses=1]
35         %13 = add i32 %12, 0            ; <i32> [#uses=2]
36         %asmtmp528 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %10) nounwind               ; <i32> [#uses=1]
37         %14 = xor i32 0, %asmtmp520             ; <i32> [#uses=1]
38         %asmtmp529 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %14) nounwind                ; <i32> [#uses=1]
39         %asmtmp530 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %13) nounwind                ; <i32> [#uses=1]
40         %15 = add i32 0, %asmtmp530             ; <i32> [#uses=1]
41         %16 = xor i32 0, %asmtmp523             ; <i32> [#uses=1]
42         %asmtmp532 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %16) nounwind                ; <i32> [#uses=2]
43         %asmtmp533 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %15) nounwind                ; <i32> [#uses=1]
44         %17 = xor i32 %13, %asmtmp528           ; <i32> [#uses=1]
45         %18 = xor i32 %17, 0            ; <i32> [#uses=1]
46         %19 = add i32 %asmtmp525, -899497514            ; <i32> [#uses=1]
47         %20 = add i32 %19, %asmtmp532           ; <i32> [#uses=1]
48         %21 = add i32 %20, %18          ; <i32> [#uses=1]
49         %22 = add i32 %21, %asmtmp533           ; <i32> [#uses=1]
50         %23 = xor i32 0, %asmtmp511             ; <i32> [#uses=1]
51         %24 = xor i32 %23, 0            ; <i32> [#uses=1]
52         %asmtmp535 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %24) nounwind                ; <i32> [#uses=3]
53         %25 = add i32 0, %asmtmp535             ; <i32> [#uses=1]
54         %26 = add i32 %25, 0            ; <i32> [#uses=1]
55         %27 = add i32 %26, 0            ; <i32> [#uses=1]
56         %28 = xor i32 0, %asmtmp529             ; <i32> [#uses=0]
57         %29 = xor i32 %22, 0            ; <i32> [#uses=1]
58         %30 = xor i32 %29, 0            ; <i32> [#uses=1]
59         %31 = add i32 0, %30            ; <i32> [#uses=1]
60         %32 = add i32 %31, 0            ; <i32> [#uses=3]
61         %asmtmp541 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind          ; <i32> [#uses=2]
62         %asmtmp542 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %32) nounwind                ; <i32> [#uses=1]
63         %33 = add i32 0, %asmtmp541             ; <i32> [#uses=1]
64         %34 = add i32 %33, 0            ; <i32> [#uses=1]
65         %35 = add i32 %34, %asmtmp542           ; <i32> [#uses=1]
66         %asmtmp543 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %27) nounwind               ; <i32> [#uses=2]
67         %36 = xor i32 0, %asmtmp535             ; <i32> [#uses=0]
68         %37 = xor i32 %32, 0            ; <i32> [#uses=1]
69         %38 = xor i32 %37, %asmtmp543           ; <i32> [#uses=1]
70         %39 = add i32 0, %38            ; <i32> [#uses=1]
71         %40 = add i32 %39, 0            ; <i32> [#uses=2]
72         %asmtmp546 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %32) nounwind               ; <i32> [#uses=1]
73         %asmtmp547 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind          ; <i32> [#uses=2]
74         %41 = add i32 0, -899497514             ; <i32> [#uses=1]
75         %42 = add i32 %41, %asmtmp547           ; <i32> [#uses=1]
76         %43 = add i32 %42, 0            ; <i32> [#uses=1]
77         %44 = add i32 %43, 0            ; <i32> [#uses=3]
78         %asmtmp549 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %35) nounwind               ; <i32> [#uses=2]
79         %45 = xor i32 0, %asmtmp541             ; <i32> [#uses=1]
80         %asmtmp550 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %45) nounwind                ; <i32> [#uses=2]
81         %asmtmp551 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %44) nounwind                ; <i32> [#uses=1]
82         %46 = xor i32 %40, %asmtmp546           ; <i32> [#uses=1]
83         %47 = xor i32 %46, %asmtmp549           ; <i32> [#uses=1]
84         %48 = add i32 %asmtmp543, -899497514            ; <i32> [#uses=1]
85         %49 = add i32 %48, %asmtmp550           ; <i32> [#uses=1]
86         %50 = add i32 %49, %47          ; <i32> [#uses=1]
87         %51 = add i32 %50, %asmtmp551           ; <i32> [#uses=1]
88         %asmtmp552 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %40) nounwind               ; <i32> [#uses=2]
89         %52 = xor i32 %44, %asmtmp549           ; <i32> [#uses=1]
90         %53 = xor i32 %52, %asmtmp552           ; <i32> [#uses=1]
91         %54 = add i32 0, %53            ; <i32> [#uses=1]
92         %55 = add i32 %54, 0            ; <i32> [#uses=2]
93         %asmtmp555 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %44) nounwind               ; <i32> [#uses=2]
94         %56 = xor i32 0, %asmtmp532             ; <i32> [#uses=1]
95         %57 = xor i32 %56, %asmtmp547           ; <i32> [#uses=1]
96         %asmtmp556 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %57) nounwind                ; <i32> [#uses=1]
97         %58 = add i32 0, %asmtmp556             ; <i32> [#uses=1]
98         %59 = add i32 %58, 0            ; <i32> [#uses=1]
99         %60 = add i32 %59, 0            ; <i32> [#uses=1]
100         %asmtmp558 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %51) nounwind               ; <i32> [#uses=1]
101         %61 = xor i32 %asmtmp517, %asmtmp511            ; <i32> [#uses=1]
102         %62 = xor i32 %61, %asmtmp535           ; <i32> [#uses=1]
103         %63 = xor i32 %62, %asmtmp550           ; <i32> [#uses=1]
104         %asmtmp559 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %63) nounwind                ; <i32> [#uses=1]
105         %64 = xor i32 %55, %asmtmp555           ; <i32> [#uses=1]
106         %65 = xor i32 %64, %asmtmp558           ; <i32> [#uses=1]
107         %asmtmp561 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %55) nounwind               ; <i32> [#uses=1]
108         %66 = add i32 %asmtmp552, -899497514            ; <i32> [#uses=1]
109         %67 = add i32 %66, %65          ; <i32> [#uses=1]
110         %68 = add i32 %67, %asmtmp559           ; <i32> [#uses=1]
111         %69 = add i32 %68, 0            ; <i32> [#uses=1]
112         %70 = add i32 %69, 0            ; <i32> [#uses=1]
113         store i32 %70, i32* null, align 4
114         %71 = add i32 0, %60            ; <i32> [#uses=1]
115         store i32 %71, i32* null, align 4
116         %72 = add i32 0, %asmtmp561             ; <i32> [#uses=1]
117         store i32 %72, i32* null, align 4
118         %73 = add i32 0, %asmtmp555             ; <i32> [#uses=1]
119         store i32 %73, i32* null, align 4
120         br label %bb
121 }