• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -mtriple=x86_64-apple-darwin10.0 -relocation-model=pic -disable-fp-elim -stats |& grep {Number of modref unfolded}
2; XFAIL: *
3; 69408 removed the opportunity for this optimization to work
4
5	%struct.SHA512_CTX = type { [8 x i64], i64, i64, %struct.anon, i32, i32 }
6	%struct.anon = type { [16 x i64] }
7@K512 = external constant [80 x i64], align 32		; <[80 x i64]*> [#uses=2]
8
9define fastcc void @sha512_block_data_order(%struct.SHA512_CTX* nocapture %ctx, i8* nocapture %in, i64 %num) nounwind ssp {
10entry:
11	br label %bb349
12
13bb349:		; preds = %bb349, %entry
14	%e.0489 = phi i64 [ 0, %entry ], [ %e.0, %bb349 ]		; <i64> [#uses=3]
15	%b.0472 = phi i64 [ 0, %entry ], [ %87, %bb349 ]		; <i64> [#uses=2]
16	%asmtmp356 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 41, i64 %e.0489) nounwind		; <i64> [#uses=1]
17	%0 = xor i64 0, %asmtmp356		; <i64> [#uses=1]
18	%1 = add i64 0, %0		; <i64> [#uses=1]
19	%2 = add i64 %1, 0		; <i64> [#uses=1]
20	%3 = add i64 %2, 0		; <i64> [#uses=1]
21	%4 = add i64 %3, 0		; <i64> [#uses=5]
22	%asmtmp372 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 34, i64 %4) nounwind		; <i64> [#uses=1]
23	%asmtmp373 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 39, i64 %4) nounwind		; <i64> [#uses=0]
24	%5 = xor i64 %asmtmp372, 0		; <i64> [#uses=0]
25	%6 = xor i64 0, %b.0472		; <i64> [#uses=1]
26	%7 = and i64 %4, %6		; <i64> [#uses=1]
27	%8 = xor i64 %7, 0		; <i64> [#uses=1]
28	%9 = add i64 0, %8		; <i64> [#uses=1]
29	%10 = add i64 %9, 0		; <i64> [#uses=2]
30	%asmtmp377 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 61, i64 0) nounwind		; <i64> [#uses=1]
31	%11 = xor i64 0, %asmtmp377		; <i64> [#uses=1]
32	%12 = add i64 0, %11		; <i64> [#uses=1]
33	%13 = add i64 %12, 0		; <i64> [#uses=1]
34	%not381 = xor i64 0, -1		; <i64> [#uses=1]
35	%14 = and i64 %e.0489, %not381		; <i64> [#uses=1]
36	%15 = xor i64 0, %14		; <i64> [#uses=1]
37	%16 = add i64 %15, 0		; <i64> [#uses=1]
38	%17 = add i64 %16, %13		; <i64> [#uses=1]
39	%18 = add i64 %17, 0		; <i64> [#uses=1]
40	%19 = add i64 %18, 0		; <i64> [#uses=2]
41	%20 = add i64 %19, %b.0472		; <i64> [#uses=3]
42	%21 = add i64 %19, 0		; <i64> [#uses=1]
43	%22 = add i64 %21, 0		; <i64> [#uses=1]
44	%23 = add i32 0, 12		; <i32> [#uses=1]
45	%24 = and i32 %23, 12		; <i32> [#uses=1]
46	%25 = zext i32 %24 to i64		; <i64> [#uses=1]
47	%26 = getelementptr [16 x i64]* null, i64 0, i64 %25		; <i64*> [#uses=0]
48	%27 = add i64 0, %e.0489		; <i64> [#uses=1]
49	%28 = add i64 %27, 0		; <i64> [#uses=1]
50	%29 = add i64 %28, 0		; <i64> [#uses=1]
51	%30 = add i64 %29, 0		; <i64> [#uses=2]
52	%31 = and i64 %10, %4		; <i64> [#uses=1]
53	%32 = xor i64 0, %31		; <i64> [#uses=1]
54	%33 = add i64 %30, 0		; <i64> [#uses=3]
55	%34 = add i64 %30, %32		; <i64> [#uses=1]
56	%35 = add i64 %34, 0		; <i64> [#uses=1]
57	%36 = and i64 %33, %20		; <i64> [#uses=1]
58	%37 = xor i64 %36, 0		; <i64> [#uses=1]
59	%38 = add i64 %37, 0		; <i64> [#uses=1]
60	%39 = add i64 %38, 0		; <i64> [#uses=1]
61	%40 = add i64 %39, 0		; <i64> [#uses=1]
62	%41 = add i64 %40, 0		; <i64> [#uses=1]
63	%42 = add i64 %41, %4		; <i64> [#uses=3]
64	%43 = or i32 0, 6		; <i32> [#uses=1]
65	%44 = and i32 %43, 14		; <i32> [#uses=1]
66	%45 = zext i32 %44 to i64		; <i64> [#uses=1]
67	%46 = getelementptr [16 x i64]* null, i64 0, i64 %45		; <i64*> [#uses=1]
68	%not417 = xor i64 %42, -1		; <i64> [#uses=1]
69	%47 = and i64 %20, %not417		; <i64> [#uses=1]
70	%48 = xor i64 0, %47		; <i64> [#uses=1]
71	%49 = getelementptr [80 x i64]* @K512, i64 0, i64 0		; <i64*> [#uses=1]
72	%50 = load i64* %49, align 8		; <i64> [#uses=1]
73	%51 = add i64 %48, 0		; <i64> [#uses=1]
74	%52 = add i64 %51, 0		; <i64> [#uses=1]
75	%53 = add i64 %52, 0		; <i64> [#uses=1]
76	%54 = add i64 %53, %50		; <i64> [#uses=2]
77	%asmtmp420 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 34, i64 0) nounwind		; <i64> [#uses=1]
78	%asmtmp421 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 39, i64 0) nounwind		; <i64> [#uses=1]
79	%55 = xor i64 %asmtmp420, 0		; <i64> [#uses=1]
80	%56 = xor i64 %55, %asmtmp421		; <i64> [#uses=1]
81	%57 = add i64 %54, %10		; <i64> [#uses=5]
82	%58 = add i64 %54, 0		; <i64> [#uses=1]
83	%59 = add i64 %58, %56		; <i64> [#uses=2]
84	%60 = or i32 0, 7		; <i32> [#uses=1]
85	%61 = and i32 %60, 15		; <i32> [#uses=1]
86	%62 = zext i32 %61 to i64		; <i64> [#uses=1]
87	%63 = getelementptr [16 x i64]* null, i64 0, i64 %62		; <i64*> [#uses=2]
88	%64 = load i64* null, align 8		; <i64> [#uses=1]
89	%65 = lshr i64 %64, 6		; <i64> [#uses=1]
90	%66 = xor i64 0, %65		; <i64> [#uses=1]
91	%67 = xor i64 %66, 0		; <i64> [#uses=1]
92	%68 = load i64* %46, align 8		; <i64> [#uses=1]
93	%69 = load i64* null, align 8		; <i64> [#uses=1]
94	%70 = add i64 %68, 0		; <i64> [#uses=1]
95	%71 = add i64 %70, %67		; <i64> [#uses=1]
96	%72 = add i64 %71, %69		; <i64> [#uses=1]
97	%asmtmp427 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 18, i64 %57) nounwind		; <i64> [#uses=1]
98	%asmtmp428 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 41, i64 %57) nounwind		; <i64> [#uses=1]
99	%73 = xor i64 %asmtmp427, 0		; <i64> [#uses=1]
100	%74 = xor i64 %73, %asmtmp428		; <i64> [#uses=1]
101	%75 = and i64 %57, %42		; <i64> [#uses=1]
102	%not429 = xor i64 %57, -1		; <i64> [#uses=1]
103	%76 = and i64 %33, %not429		; <i64> [#uses=1]
104	%77 = xor i64 %75, %76		; <i64> [#uses=1]
105	%78 = getelementptr [80 x i64]* @K512, i64 0, i64 0		; <i64*> [#uses=1]
106	%79 = load i64* %78, align 16		; <i64> [#uses=1]
107	%80 = add i64 %77, %20		; <i64> [#uses=1]
108	%81 = add i64 %80, %72		; <i64> [#uses=1]
109	%82 = add i64 %81, %74		; <i64> [#uses=1]
110	%83 = add i64 %82, %79		; <i64> [#uses=1]
111	%asmtmp432 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 34, i64 %59) nounwind		; <i64> [#uses=1]
112	%asmtmp433 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 39, i64 %59) nounwind		; <i64> [#uses=1]
113	%84 = xor i64 %asmtmp432, 0		; <i64> [#uses=1]
114	%85 = xor i64 %84, %asmtmp433		; <i64> [#uses=1]
115	%86 = add i64 %83, %22		; <i64> [#uses=2]
116	%87 = add i64 0, %85		; <i64> [#uses=1]
117	%asmtmp435 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 8, i64 0) nounwind		; <i64> [#uses=1]
118	%88 = xor i64 0, %asmtmp435		; <i64> [#uses=1]
119	%89 = load i64* null, align 8		; <i64> [#uses=3]
120	%asmtmp436 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 19, i64 %89) nounwind		; <i64> [#uses=1]
121	%asmtmp437 = call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 61, i64 %89) nounwind		; <i64> [#uses=1]
122	%90 = lshr i64 %89, 6		; <i64> [#uses=1]
123	%91 = xor i64 %asmtmp436, %90		; <i64> [#uses=1]
124	%92 = xor i64 %91, %asmtmp437		; <i64> [#uses=1]
125	%93 = load i64* %63, align 8		; <i64> [#uses=1]
126	%94 = load i64* null, align 8		; <i64> [#uses=1]
127	%95 = add i64 %93, %88		; <i64> [#uses=1]
128	%96 = add i64 %95, %92		; <i64> [#uses=1]
129	%97 = add i64 %96, %94		; <i64> [#uses=2]
130	store i64 %97, i64* %63, align 8
131	%98 = and i64 %86, %57		; <i64> [#uses=1]
132	%not441 = xor i64 %86, -1		; <i64> [#uses=1]
133	%99 = and i64 %42, %not441		; <i64> [#uses=1]
134	%100 = xor i64 %98, %99		; <i64> [#uses=1]
135	%101 = add i64 %100, %33		; <i64> [#uses=1]
136	%102 = add i64 %101, %97		; <i64> [#uses=1]
137	%103 = add i64 %102, 0		; <i64> [#uses=1]
138	%104 = add i64 %103, 0		; <i64> [#uses=1]
139	%e.0 = add i64 %104, %35		; <i64> [#uses=1]
140	br label %bb349
141}
142