blob: de23dcb78f10bc0f37a0a75085d5bd9b575cf5dc [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 i16 @foo(i16 %x, i16 %y, i16 %z) nounwind readnone {
4entry:
Evan Chengda3a8a62010-04-28 01:53:13 +00005; CHECK: foo:
6; CHECK: rolw %cl
Dan Gohman74feef22008-10-17 01:23:35 +00007 %0 = shl i16 %x, %z
8 %1 = sub i16 16, %z
9 %2 = lshr i16 %x, %1
10 %3 = or i16 %2, %0
11 ret i16 %3
12}
13
14define i16 @bar(i16 %x, i16 %y, i16 %z) nounwind readnone {
15entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000016; CHECK: bar:
17; CHECK: shldw %cl
Dan Gohman74feef22008-10-17 01:23:35 +000018 %0 = shl i16 %y, %z
19 %1 = sub i16 16, %z
20 %2 = lshr i16 %x, %1
21 %3 = or i16 %2, %0
22 ret i16 %3
23}
24
25define i16 @un(i16 %x, i16 %y, i16 %z) nounwind readnone {
26entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000027; CHECK: un:
28; CHECK: rorw %cl
Dan Gohman74feef22008-10-17 01:23:35 +000029 %0 = lshr i16 %x, %z
30 %1 = sub i16 16, %z
31 %2 = shl i16 %x, %1
32 %3 = or i16 %2, %0
33 ret i16 %3
34}
35
36define i16 @bu(i16 %x, i16 %y, i16 %z) nounwind readnone {
37entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000038; CHECK: bu:
39; CHECK: shrdw
Dan Gohman74feef22008-10-17 01:23:35 +000040 %0 = lshr i16 %y, %z
41 %1 = sub i16 16, %z
42 %2 = shl i16 %x, %1
43 %3 = or i16 %2, %0
44 ret i16 %3
45}
46
47define i16 @xfoo(i16 %x, i16 %y, i16 %z) nounwind readnone {
48entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000049; CHECK: xfoo:
50; CHECK: rolw $5
Dan Gohman74feef22008-10-17 01:23:35 +000051 %0 = lshr i16 %x, 11
52 %1 = shl i16 %x, 5
53 %2 = or i16 %0, %1
54 ret i16 %2
55}
56
57define i16 @xbar(i16 %x, i16 %y, i16 %z) nounwind readnone {
58entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000059; CHECK: xbar:
60; CHECK: shldw $5
Dan Gohman74feef22008-10-17 01:23:35 +000061 %0 = shl i16 %y, 5
62 %1 = lshr i16 %x, 11
63 %2 = or i16 %0, %1
64 ret i16 %2
65}
66
67define i16 @xun(i16 %x, i16 %y, i16 %z) nounwind readnone {
68entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000069; CHECK: xun:
70; CHECK: rolw $11
Dan Gohman74feef22008-10-17 01:23:35 +000071 %0 = lshr i16 %x, 5
72 %1 = shl i16 %x, 11
73 %2 = or i16 %0, %1
74 ret i16 %2
75}
76
77define i16 @xbu(i16 %x, i16 %y, i16 %z) nounwind readnone {
78entry:
Evan Chengda3a8a62010-04-28 01:53:13 +000079; CHECK: xbu:
80; CHECK: shldw $11
Dan Gohman74feef22008-10-17 01:23:35 +000081 %0 = lshr i16 %y, 5
82 %1 = shl i16 %x, 11
83 %2 = or i16 %0, %1
84 ret i16 %2
85}