Merge branch 'master' into msp430
[llvm/msp430.git] / test / CodeGen / X86 / rot32.ll
blob7cebcb86ce120b3c1ee09778d041e6e7fe669d30
1 ; RUN: llvm-as < %s | llc -march=x86 > %t
2 ; 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
7 define i32 @foo(i32 %x, i32 %y, i32 %z) nounwind readnone {
8 entry:
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
16 define i32 @bar(i32 %x, i32 %y, i32 %z) nounwind readnone {
17 entry:
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
25 define i32 @un(i32 %x, i32 %y, i32 %z) nounwind readnone {
26 entry:
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
34 define i32 @bu(i32 %x, i32 %y, i32 %z) nounwind readnone {
35 entry:
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
43 define i32 @xfoo(i32 %x, i32 %y, i32 %z) nounwind readnone {
44 entry:
45         %0 = lshr i32 %x, 25
46         %1 = shl i32 %x, 7
47         %2 = or i32 %0, %1
48         ret i32 %2
51 define i32 @xbar(i32 %x, i32 %y, i32 %z) nounwind readnone {
52 entry:
53         %0 = shl i32 %y, 7
54         %1 = lshr i32 %x, 25
55         %2 = or i32 %0, %1
56         ret i32 %2
59 define i32 @xun(i32 %x, i32 %y, i32 %z) nounwind readnone {
60 entry:
61         %0 = lshr i32 %x, 7
62         %1 = shl i32 %x, 25
63         %2 = or i32 %0, %1
64         ret i32 %2
67 define i32 @xbu(i32 %x, i32 %y, i32 %z) nounwind readnone {
68 entry:
69         %0 = lshr i32 %y, 7
70         %1 = shl i32 %x, 25
71         %2 = or i32 %0, %1
72         ret i32 %2