blob: 655ed272837ac3c0d55fbfdc86eb31e5ac687037 [file] [log] [blame]
Dan Gohman0a063102009-09-08 23:54:48 +00001; RUN: llc < %s -march=x86 > %t
Dan Gohman921581d2008-10-17 01:23:35 +00002; RUN: grep rol %t | count 3
3; RUN: grep ror %t | count 1
4; RUN: grep shld %t | count 2
5; RUN: grep shrd %t | count 2
6
7define i32 @foo(i32 %x, i32 %y, i32 %z) nounwind readnone {
8entry:
9 %0 = shl i32 %x, %z
10 %1 = sub i32 32, %z
11 %2 = lshr i32 %x, %1
12 %3 = or i32 %2, %0
13 ret i32 %3
14}
15
16define i32 @bar(i32 %x, i32 %y, i32 %z) nounwind readnone {
17entry:
18 %0 = shl i32 %y, %z
19 %1 = sub i32 32, %z
20 %2 = lshr i32 %x, %1
21 %3 = or i32 %2, %0
22 ret i32 %3
23}
24
25define i32 @un(i32 %x, i32 %y, i32 %z) nounwind readnone {
26entry:
27 %0 = lshr i32 %x, %z
28 %1 = sub i32 32, %z
29 %2 = shl i32 %x, %1
30 %3 = or i32 %2, %0
31 ret i32 %3
32}
33
34define i32 @bu(i32 %x, i32 %y, i32 %z) nounwind readnone {
35entry:
36 %0 = lshr i32 %y, %z
37 %1 = sub i32 32, %z
38 %2 = shl i32 %x, %1
39 %3 = or i32 %2, %0
40 ret i32 %3
41}
42
43define i32 @xfoo(i32 %x, i32 %y, i32 %z) nounwind readnone {
44entry:
45 %0 = lshr i32 %x, 25
46 %1 = shl i32 %x, 7
47 %2 = or i32 %0, %1
48 ret i32 %2
49}
50
51define i32 @xbar(i32 %x, i32 %y, i32 %z) nounwind readnone {
52entry:
53 %0 = shl i32 %y, 7
54 %1 = lshr i32 %x, 25
55 %2 = or i32 %0, %1
56 ret i32 %2
57}
58
59define i32 @xun(i32 %x, i32 %y, i32 %z) nounwind readnone {
60entry:
61 %0 = lshr i32 %x, 7
62 %1 = shl i32 %x, 25
63 %2 = or i32 %0, %1
64 ret i32 %2
65}
66
67define i32 @xbu(i32 %x, i32 %y, i32 %z) nounwind readnone {
68entry:
69 %0 = lshr i32 %y, 7
70 %1 = shl i32 %x, 25
71 %2 = or i32 %0, %1
72 ret i32 %2
73}