blob: 43f8a66bb21df06521b7556d15610c1601498757 [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:
Jakob Stoklund Olesenfeaf3472011-05-03 22:31:21 +00008; ARM: mov [[R1:r[0-9]+]], #101
9; ARM: orr [[R1b:r[0-9]+]], [[R1]], #1, #24
Evan Cheng9ef48352009-11-20 00:54:03 +000010; 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
Johnny Chend05a8242011-04-05 18:41:40 +000030; 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:
Jakob Stoklund Olesenfeaf3472011-05-03 22:31:21 +000037; THUMB2: mov{{(s|\.w)}} r0, #123
Evan Cheng63f35442010-11-13 02:25:14 +000038; 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:
Jakob Stoklund Olesenfeaf3472011-05-03 22:31:21 +000056; THUMB2: mov{{(s|\.w)}} r0, #0
Evan Cheng63f35442010-11-13 02:25:14 +000057; 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:
Jakob Stoklund Olesenfeaf3472011-05-03 22:31:21 +000070; ARMT2: movwlt [[R0:r[0-9]+]], #65365
71; ARMT2: movtlt [[R0]], #65365
Evan Cheng63f35442010-11-13 02:25:14 +000072
73; THUMB2: t4:
Jakob Stoklund Olesenfeaf3472011-05-03 22:31:21 +000074; THUMB2: mvnlt.w [[R0:r[0-9]+]], #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}