• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -O2 -march=bpfel -mattr=+alu32 < %s | FileCheck %s
2;
3; unsigned int select_cc_32 (unsigned a, unsigned b, int c, int d)
4; {
5;   if (a > b)
6;     return c;
7;   else
8;     return d;
9; }
10;
11; long long select_cc_32_64 (unsigned a, unsigned b, long long c, long long d)
12; {
13;   if (a > b)
14;     return c;
15;   else
16;     return d;
17; }
18;
19; int select_cc_64_32 (long long a, long long b, int c, int d)
20; {
21;   if (a > b)
22;     return c;
23;   else
24;     return d;
25; }
26;
27; int selecti_cc_32 (unsigned a, int c, int d)
28; {
29;   if (a > 10)
30;     return c;
31;   else
32;     return d;
33; }
34;
35; long long selecti_cc_32_64 (unsigned a, long long c, long long d)
36; {
37;   if (a > 11)
38;     return c;
39;   else
40;     return d;
41; }
42;
43; int selecti_cc_64_32 (long long a, int c, int d)
44; {
45;   if (a > 12)
46;     return c;
47;   else
48;     return d;
49; }
50
51; Function Attrs: norecurse nounwind readnone
52define dso_local i32 @select_cc_32(i32 %a, i32 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
53entry:
54  %cmp = icmp ugt i32 %a, %b
55  %c.d = select i1 %cmp, i32 %c, i32 %d
56  ret i32 %c.d
57}
58; CHECK-LABEL: select_cc_32
59; CHECK: r{{[0-9]+}} = w{{[0-9]+}}
60; CHECK-NOT: r{{[0-9]+}} <<= 32
61; CHECK-NOT: r{{[0-9]+}} >>= 32
62
63; Function Attrs: norecurse nounwind readnone
64define dso_local i64 @select_cc_32_64(i32 %a, i32 %b, i64 %c, i64 %d) local_unnamed_addr #0 {
65entry:
66  %cmp = icmp ugt i32 %a, %b
67  %c.d = select i1 %cmp, i64 %c, i64 %d
68  ret i64 %c.d
69}
70; CHECK-LABEL: select_cc_32_64
71; CHECK: r{{[0-9]+}} = w{{[0-9]+}}
72; CHECK-NOT: r{{[0-9]+}} <<= 32
73; CHECK-NOT: r{{[0-9]+}} >>= 32
74
75; Function Attrs: norecurse nounwind readnone
76define dso_local i32 @select_cc_64_32(i64 %a, i64 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
77entry:
78  %cmp = icmp sgt i64 %a, %b
79  %c.d = select i1 %cmp, i32 %c, i32 %d
80  ret i32 %c.d
81}
82; CHECK-LABEL: select_cc_64_32
83; CHECK-NOT: r{{[0-9]+}} <<= 32
84
85; Function Attrs: norecurse nounwind readnone
86define dso_local i32 @selecti_cc_32(i32 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
87entry:
88  %cmp = icmp ugt i32 %a, 10
89  %c.d = select i1 %cmp, i32 %c, i32 %d
90  ret i32 %c.d
91}
92; CHECK-LABEL: selecti_cc_32
93; CHECK: r{{[0-9]+}} = w{{[0-9]+}}
94; CHECK-NOT: r{{[0-9]+}} <<= 32
95; CHECK-NOT: r{{[0-9]+}} >>= 32
96
97; Function Attrs: norecurse nounwind readnone
98define dso_local i64 @selecti_cc_32_64(i32 %a, i64 %c, i64 %d) local_unnamed_addr #0 {
99entry:
100  %cmp = icmp ugt i32 %a, 11
101  %c.d = select i1 %cmp, i64 %c, i64 %d
102  ret i64 %c.d
103}
104; CHECK-LABEL: selecti_cc_32_64
105; CHECK: r{{[0-9]+}} = w{{[0-9]+}}
106; CHECK-NOT: r{{[0-9]+}} <<= 32
107; CHECK-NOT: r{{[0-9]+}} >>= 32
108
109; Function Attrs: norecurse nounwind readnone
110define dso_local i32 @selecti_cc_64_32(i64 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
111entry:
112  %cmp = icmp sgt i64 %a, 12
113  %c.d = select i1 %cmp, i32 %c, i32 %d
114  ret i32 %c.d
115}
116; CHECK-LABEL: selecti_cc_64_32
117; CHECK-NOT: r{{[0-9]+}} <<= 32
118