1 ; RUN: llc < %s -mtriple=x86_64-- > %t
2 ; RUN: not grep leaq %t
3 ; RUN: not grep incq %t
4 ; RUN: not grep decq %t
5 ; RUN: not grep negq %t
6 ; RUN: not grep addq %t
7 ; RUN: not grep subq %t
8 ; RUN: not grep "movl %" %t
10 ; Utilize implicit zero-extension on x86-64 to eliminate explicit
11 ; zero-extensions. Shrink 64-bit adds to 32-bit when the high
12 ; 32-bits will be zeroed.
14 define void @bar(i64 %x, i64 %y, i64* %z) nounwind readnone {
17 %t1 = and i64 %t0, 4294967295
18 store i64 %t1, i64* %z
21 define void @easy(i32 %x, i32 %y, i64* %z) nounwind readnone {
24 %tn = zext i32 %t0 to i64
25 %t1 = and i64 %tn, 4294967295
26 store i64 %t1, i64* %z
29 define void @cola(i64 *%x, i64 %y, i64* %z, i64 %u) nounwind readnone {
31 %p = load i64, i64* %x
33 %t1 = and i64 %t0, 4294967295
35 store i64 %t2, i64* %z
38 define void @yaks(i64 *%x, i64 %y, i64* %z, i64 %u) nounwind readnone {
40 %p = load i64, i64* %x
43 %t2 = and i64 %t1, 4294967295
44 store i64 %t2, i64* %z
47 define void @foo(i64 *%x, i64 *%y, i64* %z) nounwind readnone {
49 %a = load i64, i64* %x
50 %b = load i64, i64* %y
52 %t1 = and i64 %t0, 4294967295
53 store i64 %t1, i64* %z
56 define void @avo(i64 %x, i64* %z, i64 %u) nounwind readnone {
58 %t0 = add i64 %x, 734847
59 %t1 = and i64 %t0, 4294967295
61 store i64 %t2, i64* %z
64 define void @phe(i64 %x, i64* %z, i64 %u) nounwind readnone {
66 %t0 = add i64 %x, 734847
68 %t2 = and i64 %t1, 4294967295
69 store i64 %t2, i64* %z
72 define void @oze(i64 %y, i64* %z) nounwind readnone {
75 %t1 = and i64 %t0, 4294967295
76 store i64 %t1, i64* %z
80 define void @sbar(i64 %x, i64 %y, i64* %z) nounwind readnone {
83 %t1 = and i64 %t0, 4294967295
84 store i64 %t1, i64* %z
87 define void @seasy(i32 %x, i32 %y, i64* %z) nounwind readnone {
90 %tn = zext i32 %t0 to i64
91 %t1 = and i64 %tn, 4294967295
92 store i64 %t1, i64* %z
95 define void @scola(i64 *%x, i64 %y, i64* %z, i64 %u) nounwind readnone {
97 %p = load i64, i64* %x
99 %t1 = and i64 %t0, 4294967295
100 %t2 = xor i64 %t1, %u
101 store i64 %t2, i64* %z
104 define void @syaks(i64 *%x, i64 %y, i64* %z, i64 %u) nounwind readnone {
106 %p = load i64, i64* %x
108 %t1 = xor i64 %t0, %u
109 %t2 = and i64 %t1, 4294967295
110 store i64 %t2, i64* %z
113 define void @sfoo(i64 *%x, i64 *%y, i64* %z) nounwind readnone {
115 %a = load i64, i64* %x
116 %b = load i64, i64* %y
118 %t1 = and i64 %t0, 4294967295
119 store i64 %t1, i64* %z
122 define void @swya(i64 %y, i64* %z) nounwind readnone {
125 %t1 = and i64 %t0, 4294967295
126 store i64 %t1, i64* %z
129 define void @soze(i64 %y, i64* %z) nounwind readnone {
132 %t1 = and i64 %t0, 4294967295
133 store i64 %t1, i64* %z