• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
2; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
3
4define i32 @t1(i1 %c) nounwind readnone {
5entry:
6; ARM: t1
7; ARM: movw r{{[1-9]}}, #10
8; ARM: cmp r0, #0
9; ARM: moveq r{{[1-9]}}, #20
10; ARM: mov r0, r{{[1-9]}}
11; THUMB: t1
12; THUMB: movs r{{[1-9]}}, #10
13; THUMB: movt r{{[1-9]}}, #0
14; THUMB: cmp r0, #0
15; THUMB: it eq
16; THUMB: moveq r{{[1-9]}}, #20
17; THUMB: mov r0, r{{[1-9]}}
18  %0 = select i1 %c, i32 10, i32 20
19  ret i32 %0
20}
21
22define i32 @t2(i1 %c, i32 %a) nounwind readnone {
23entry:
24; ARM: t2
25; ARM: cmp r0, #0
26; ARM: moveq r{{[1-9]}}, #20
27; ARM: mov r0, r{{[1-9]}}
28; THUMB: t2
29; THUMB: cmp r0, #0
30; THUMB: it eq
31; THUMB: moveq r{{[1-9]}}, #20
32; THUMB: mov r0, r{{[1-9]}}
33  %0 = select i1 %c, i32 %a, i32 20
34  ret i32 %0
35}
36
37define i32 @t3(i1 %c, i32 %a, i32 %b) nounwind readnone {
38entry:
39; ARM: t3
40; ARM: cmp r0, #0
41; ARM: movne r{{[1-9]}}, r{{[1-9]}}
42; ARM: mov r0, r{{[1-9]}}
43; THUMB: t3
44; THUMB: cmp r0, #0
45; THUMB: it ne
46; THUMB: movne r{{[1-9]}}, r{{[1-9]}}
47; THUMB: mov r0, r{{[1-9]}}
48  %0 = select i1 %c, i32 %a, i32 %b
49  ret i32 %0
50}
51
52define i32 @t4(i1 %c) nounwind readnone {
53entry:
54; ARM: t4
55; ARM: mvn r{{[1-9]}}, #9
56; ARM: cmp r0, #0
57; ARM: mvneq r{{[1-9]}}, #0
58; ARM: mov r0, r{{[1-9]}}
59; THUMB: t4
60; THUMB: movw r{{[1-9]}}, #65526
61; THUMB: movt r{{[1-9]}}, #65535
62; THUMB: cmp r0, #0
63; THUMB: it eq
64; THUMB: mvneq r{{[1-9]}}, #0
65; THUMB: mov r0, r{{[1-9]}}
66  %0 = select i1 %c, i32 -10, i32 -1
67  ret i32 %0
68}
69
70define i32 @t5(i1 %c, i32 %a) nounwind readnone {
71entry:
72; ARM: t5
73; ARM: cmp r0, #0
74; ARM: mvneq r{{[1-9]}}, #1
75; ARM: mov r0, r{{[1-9]}}
76; THUMB: t5
77; THUMB: cmp r0, #0
78; THUMB: it eq
79; THUMB: mvneq r{{[1-9]}}, #1
80; THUMB: mov r0, r{{[1-9]}}
81  %0 = select i1 %c, i32 %a, i32 -2
82  ret i32 %0
83}
84
85; Check one large negative immediates.
86define i32 @t6(i1 %c, i32 %a) nounwind readnone {
87entry:
88; ARM: t6
89; ARM: cmp r0, #0
90; ARM: mvneq r{{[1-9]}}, #978944
91; ARM: mov r0, r{{[1-9]}}
92; THUMB: t6
93; THUMB: cmp r0, #0
94; THUMB: it eq
95; THUMB: mvneq r{{[1-9]}}, #978944
96; THUMB: mov r0, r{{[1-9]}}
97  %0 = select i1 %c, i32 %a, i32 -978945
98  ret i32 %0
99}
100