blob: 105c2672ee1b96bdcc69800a6c95124779638ca7 [file] [log] [blame]
Saleem Abdulrasool717c9912014-04-03 17:35:22 +00001; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 -show-mc-encoding %s -o - \
2; RUN: | FileCheck %s
Evan Chengd0611f92009-07-07 20:39:03 +00003
4define i32 @f1(i32 %a.s) {
5entry:
Stephen Lind24ab202013-07-14 06:24:09 +00006; CHECK-LABEL: f1:
Chris Lattnere3c47652009-07-10 18:34:47 +00007; CHECK: it eq
8; CHECK: moveq
9
Evan Chengd0611f92009-07-07 20:39:03 +000010 %tmp = icmp eq i32 %a.s, 4
11 %tmp1.s = select i1 %tmp, i32 2, i32 3
12 ret i32 %tmp1.s
13}
14
15define i32 @f2(i32 %a.s) {
16entry:
Stephen Lind24ab202013-07-14 06:24:09 +000017; CHECK-LABEL: f2:
Chris Lattnere3c47652009-07-10 18:34:47 +000018; CHECK: it gt
19; CHECK: movgt
Evan Chengd0611f92009-07-07 20:39:03 +000020 %tmp = icmp sgt i32 %a.s, 4
21 %tmp1.s = select i1 %tmp, i32 2, i32 3
22 ret i32 %tmp1.s
23}
24
25define i32 @f3(i32 %a.s, i32 %b.s) {
26entry:
Stephen Lind24ab202013-07-14 06:24:09 +000027; CHECK-LABEL: f3:
Chris Lattnere3c47652009-07-10 18:34:47 +000028; CHECK: it lt
29; CHECK: movlt
Evan Chengd0611f92009-07-07 20:39:03 +000030 %tmp = icmp slt i32 %a.s, %b.s
31 %tmp1.s = select i1 %tmp, i32 2, i32 3
32 ret i32 %tmp1.s
33}
34
35define i32 @f4(i32 %a.s, i32 %b.s) {
36entry:
Stephen Lind24ab202013-07-14 06:24:09 +000037; CHECK-LABEL: f4:
Chris Lattnere3c47652009-07-10 18:34:47 +000038; CHECK: it le
39; CHECK: movle
40
Evan Chengd0611f92009-07-07 20:39:03 +000041 %tmp = icmp sle i32 %a.s, %b.s
42 %tmp1.s = select i1 %tmp, i32 2, i32 3
43 ret i32 %tmp1.s
44}
45
46define i32 @f5(i32 %a.u, i32 %b.u) {
47entry:
Stephen Lind24ab202013-07-14 06:24:09 +000048; CHECK-LABEL: f5:
Chris Lattnere3c47652009-07-10 18:34:47 +000049; CHECK: it ls
50; CHECK: movls
Evan Chengd0611f92009-07-07 20:39:03 +000051 %tmp = icmp ule i32 %a.u, %b.u
52 %tmp1.s = select i1 %tmp, i32 2, i32 3
53 ret i32 %tmp1.s
54}
55
56define i32 @f6(i32 %a.u, i32 %b.u) {
57entry:
Stephen Lind24ab202013-07-14 06:24:09 +000058; CHECK-LABEL: f6:
Chris Lattnere3c47652009-07-10 18:34:47 +000059; CHECK: it hi
60; CHECK: movhi
Evan Chengd0611f92009-07-07 20:39:03 +000061 %tmp = icmp ugt i32 %a.u, %b.u
62 %tmp1.s = select i1 %tmp, i32 2, i32 3
63 ret i32 %tmp1.s
64}
Evan Chenge6e82892009-08-01 01:43:45 +000065
66define i32 @f7(i32 %a, i32 %b, i32 %c) {
67entry:
Stephen Lind24ab202013-07-14 06:24:09 +000068; CHECK-LABEL: f7:
Evan Chenge6e82892009-08-01 01:43:45 +000069; CHECK: it hi
Tim Northover42180442013-08-22 09:57:11 +000070; CHECK: lsrhi {{r[0-9]+}}
Evan Chenge6e82892009-08-01 01:43:45 +000071 %tmp1 = icmp ugt i32 %a, %b
72 %tmp2 = udiv i32 %c, 3
73 %tmp3 = select i1 %tmp1, i32 %tmp2, i32 3
74 ret i32 %tmp3
75}
76
77define i32 @f8(i32 %a, i32 %b, i32 %c) {
78entry:
Stephen Lind24ab202013-07-14 06:24:09 +000079; CHECK-LABEL: f8:
Evan Chenge6e82892009-08-01 01:43:45 +000080; CHECK: it lo
Tim Northover42180442013-08-22 09:57:11 +000081; CHECK: lsllo {{r[0-9]+}}
Evan Chenge6e82892009-08-01 01:43:45 +000082 %tmp1 = icmp ult i32 %a, %b
83 %tmp2 = mul i32 %c, 4
84 %tmp3 = select i1 %tmp1, i32 %tmp2, i32 3
85 ret i32 %tmp3
86}
87
88define i32 @f9(i32 %a, i32 %b, i32 %c) {
89entry:
Stephen Lind24ab202013-07-14 06:24:09 +000090; CHECK-LABEL: f9:
Evan Chenge6e82892009-08-01 01:43:45 +000091; CHECK: it ge
92; CHECK: rorge.w
93 %tmp1 = icmp sge i32 %a, %b
94 %tmp2 = shl i32 %c, 10
95 %tmp3 = lshr i32 %c, 22
96 %tmp4 = or i32 %tmp2, %tmp3
97 %tmp5 = select i1 %tmp1, i32 %tmp4, i32 3
98 ret i32 %tmp5
99}
Tim Northover42180442013-08-22 09:57:11 +0000100
101define i32 @f10(i32 %a, i32 %b) {
102; CHECK-LABEL: f10:
Tim Northover1f1b2752013-08-23 10:16:39 +0000103; CHECK: movwne {{r[0-9]+}}, #1234 @ encoding: [0x40,0xf2,0xd2,0x4{{[0-9a-f]+}}]
Tim Northover42180442013-08-22 09:57:11 +0000104 %tst = icmp ne i32 %a, %b
105 %val = select i1 %tst, i32 1234, i32 12345
106 ret i32 %val
107}
Tim Northover1f1b2752013-08-23 10:16:39 +0000108
109; Make sure we pick the Thumb encoding for movw/movt
110define i32 @f11(i32 %a, i32 %b) {
111; CHECK-LABEL: f11:
112; CHECK: movwne {{r[0-9]+}}, #50033 @ encoding: [0x4c,0xf2,0x71,0x3{{[0-9a-f]+}}]
113 %tst = icmp ne i32 %a, %b
114 %val = select i1 %tst, i32 123454321, i32 543212345
115 ret i32 %val
116}