1 ; RUN: llc < %s -march=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 {
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 {
43 %t2 = and i64 %t1, 4294967295
44 store i64 %t2, i64* %z
47 define void @foo(i64 *%x, i64 *%y, i64* %z) nounwind readnone {
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 {
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 {
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 {
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