[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / BPF / 32-bit-subreg-cond-select.ll
bloba48141cf0404ddaa9144f5bf38cbad4aad9bced7
1 ; RUN: llc -O2 -march=bpfel -mattr=+alu32 < %s | FileCheck %s
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 ; }
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 ; }
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 ; }
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 ; }
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 ; }
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 ; }
51 ; Function Attrs: norecurse nounwind readnone
52 define dso_local i32 @select_cc_32(i32 %a, i32 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
53 entry:
54   %cmp = icmp ugt i32 %a, %b
55   %c.d = select i1 %cmp, i32 %c, i32 %d
56   ret i32 %c.d
59 ; Function Attrs: norecurse nounwind readnone
60 define dso_local i64 @select_cc_32_64(i32 %a, i32 %b, i64 %c, i64 %d) local_unnamed_addr #0 {
61 entry:
62   %cmp = icmp ugt i32 %a, %b
63   %c.d = select i1 %cmp, i64 %c, i64 %d
64   ret i64 %c.d
67 ; Function Attrs: norecurse nounwind readnone
68 define dso_local i32 @select_cc_64_32(i64 %a, i64 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
69 entry:
70   %cmp = icmp sgt i64 %a, %b
71   %c.d = select i1 %cmp, i32 %c, i32 %d
72   ret i32 %c.d
75 ; Function Attrs: norecurse nounwind readnone
76 define dso_local i32 @selecti_cc_32(i32 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
77 entry:
78   %cmp = icmp ugt i32 %a, 10
79   %c.d = select i1 %cmp, i32 %c, i32 %d
80   ret i32 %c.d
83 ; Function Attrs: norecurse nounwind readnone
84 define dso_local i64 @selecti_cc_32_64(i32 %a, i64 %c, i64 %d) local_unnamed_addr #0 {
85 entry:
86   %cmp = icmp ugt i32 %a, 11
87   %c.d = select i1 %cmp, i64 %c, i64 %d
88   ret i64 %c.d
91 ; Function Attrs: norecurse nounwind readnone
92 define dso_local i32 @selecti_cc_64_32(i64 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
93 entry:
94   %cmp = icmp sgt i64 %a, 12
95   %c.d = select i1 %cmp, i32 %c, i32 %d
96   ret i32 %c.d
98 ; There shouldn't be any type promotion, all of them are expected to be
99 ; eliminated by peephole optimization.
100 ; CHECK-NOT: r{{[0-9]+}} <<= 32