blob: 99602fd64ff59bdf953edff71f60f38e76b5222f [file] [log] [blame]
Evan Chengda3a8a62010-04-28 01:53:13 +00001; RUN: llc < %s -march=x86 | FileCheck %s
Dan Gohman74feef22008-10-17 01:23:35 +00002
3define i32 @foo(i32 %x, i32 %y, i32 %z) nounwind readnone {
4entry:
Evan Chengda3a8a62010-04-28 01:53:13 +00005; CHECK: foo:
6; CHECK: roll %cl
Dan Gohman74feef22008-10-17 01:23:35 +00007 %0 = shl i32 %x, %z
8 %1 = sub i32 32, %z
9 %2 = lshr i32 %x, %1
10 %3 = or i32 %2, %0
11 ret i32 %3
12}
13
14define i32 @bar(i32 %x, i32 %y, i32 %z) nounwind readnone {
15entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000016; CHECK: bar:
17; CHECK: shldl %cl
Dan Gohman74feef22008-10-17 01:23:35 +000018 %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:
Evan Chengda3a8a62010-04-28 01:53:13 +000027; CHECK: un:
28; CHECK: rorl %cl
Dan Gohman74feef22008-10-17 01:23:35 +000029 %0 = lshr i32 %x, %z
30 %1 = sub i32 32, %z
31 %2 = shl i32 %x, %1
32 %3 = or i32 %2, %0
33 ret i32 %3
34}
35
36define i32 @bu(i32 %x, i32 %y, i32 %z) nounwind readnone {
37entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000038; CHECK: bu:
39; CHECK: shrdl %cl
Dan Gohman74feef22008-10-17 01:23:35 +000040 %0 = lshr i32 %y, %z
41 %1 = sub i32 32, %z
42 %2 = shl i32 %x, %1
43 %3 = or i32 %2, %0
44 ret i32 %3
45}
46
47define i32 @xfoo(i32 %x, i32 %y, i32 %z) nounwind readnone {
48entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000049; CHECK: xfoo:
50; CHECK: roll $7
Dan Gohman74feef22008-10-17 01:23:35 +000051 %0 = lshr i32 %x, 25
52 %1 = shl i32 %x, 7
53 %2 = or i32 %0, %1
54 ret i32 %2
55}
56
57define i32 @xbar(i32 %x, i32 %y, i32 %z) nounwind readnone {
58entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000059; CHECK: xbar:
60; CHECK: shldl $7
Dan Gohman74feef22008-10-17 01:23:35 +000061 %0 = shl i32 %y, 7
62 %1 = lshr i32 %x, 25
63 %2 = or i32 %0, %1
64 ret i32 %2
65}
66
67define i32 @xun(i32 %x, i32 %y, i32 %z) nounwind readnone {
68entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000069; CHECK: xun:
70; CHECK: roll $25
Dan Gohman74feef22008-10-17 01:23:35 +000071 %0 = lshr i32 %x, 7
72 %1 = shl i32 %x, 25
73 %2 = or i32 %0, %1
74 ret i32 %2
75}
76
77define i32 @xbu(i32 %x, i32 %y, i32 %z) nounwind readnone {
78entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000079; CHECK: xbu:
80; CHECK: shldl
Dan Gohman74feef22008-10-17 01:23:35 +000081 %0 = lshr i32 %y, 7
82 %1 = shl i32 %x, 25
83 %2 = or i32 %0, %1
84 ret i32 %2
85}