blob: 578834ec93bc46a5a0c780d98489ff7aceadbb7a [file] [log] [blame]
Evan Chenge5e0ef12010-11-13 00:27:47 +00001; RUN: llc < %s -march=arm | FileCheck %s --check-prefix=ARM
Evan Cheng63f35442010-11-13 02:25:14 +00002; RUN: llc < %s -march=arm -mattr=+thumb2 | FileCheck %s --check-prefix=ARMT2
3; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s --check-prefix=THUMB2
Evan Cheng9ef48352009-11-20 00:54:03 +00004
Rafael Espindola1e819662010-06-17 15:18:27 +00005define i32 @t1(i32 %c) nounwind readnone {
Evan Cheng9ef48352009-11-20 00:54:03 +00006entry:
7; ARM: t1:
8; ARM: mov r1, #101
9; ARM: orr r1, r1, #1, 24
10; ARM: movgt r0, #123
11
Evan Cheng63f35442010-11-13 02:25:14 +000012; ARMT2: t1:
13; ARMT2: movw r0, #357
14; ARMT2: movgt r0, #123
15
16; THUMB2: t1:
17; THUMB2: movw r0, #357
18; THUMB2: movgt r0, #123
Evan Cheng9ef48352009-11-20 00:54:03 +000019
20 %0 = icmp sgt i32 %c, 1
21 %1 = select i1 %0, i32 123, i32 357
22 ret i32 %1
23}
24
Rafael Espindola1e819662010-06-17 15:18:27 +000025define i32 @t2(i32 %c) nounwind readnone {
Evan Cheng9ef48352009-11-20 00:54:03 +000026entry:
27; ARM: t2:
Evan Cheng63f35442010-11-13 02:25:14 +000028; ARM: mov r0, #123
29; ARM: movgt r0, #101
30; ARM: orrgt r0, r0, #1, 24
Evan Cheng9ef48352009-11-20 00:54:03 +000031
Evan Cheng63f35442010-11-13 02:25:14 +000032; ARMT2: t2:
33; ARMT2: mov r0, #123
34; ARMT2: movwgt r0, #357
35
36; THUMB2: t2:
37; THUMB2: mov.w r0, #123
38; THUMB2: movwgt r0, #357
Evan Cheng9ef48352009-11-20 00:54:03 +000039
40 %0 = icmp sgt i32 %c, 1
41 %1 = select i1 %0, i32 357, i32 123
42 ret i32 %1
43}
44
Rafael Espindola1e819662010-06-17 15:18:27 +000045define i32 @t3(i32 %a) nounwind readnone {
Evan Cheng9ef48352009-11-20 00:54:03 +000046entry:
47; ARM: t3:
48; ARM: mov r0, #0
49; ARM: moveq r0, #1
50
Evan Cheng63f35442010-11-13 02:25:14 +000051; ARMT2: t3:
52; ARMT2: mov r0, #0
53; ARMT2: moveq r0, #1
54
55; THUMB2: t3:
56; THUMB2: mov.w r0, #0
57; THUMB2: moveq r0, #1
Evan Cheng9ef48352009-11-20 00:54:03 +000058 %0 = icmp eq i32 %a, 160
59 %1 = zext i1 %0 to i32
60 ret i32 %1
61}
Evan Chenge5e0ef12010-11-13 00:27:47 +000062
63define i32 @t4(i32 %a, i32 %b, i32 %x) nounwind {
64entry:
65; ARM: t4:
66; ARM: ldr
67; ARM: movlt
68
Evan Cheng63f35442010-11-13 02:25:14 +000069; ARMT2: t4:
70; ARMT2: movwlt r0, #65365
71; ARMT2: movtlt r0, #65365
72
73; THUMB2: t4:
74; THUMB2: mvnlt.w r0, #11141290
Evan Chenge5e0ef12010-11-13 00:27:47 +000075 %0 = icmp slt i32 %a, %b
76 %1 = select i1 %0, i32 4283826005, i32 %x
77 ret i32 %1
78}