Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / BPF / 32-bit-subreg-cond-select.ll
blobe8a4f81a0240ead847071eb4368b08ebeaf5d84a
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
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
63 ; Function Attrs: norecurse nounwind readnone
64 define dso_local i64 @select_cc_32_64(i32 %a, i32 %b, i64 %c, i64 %d) local_unnamed_addr #0 {
65 entry:
66   %cmp = icmp ugt i32 %a, %b
67   %c.d = select i1 %cmp, i64 %c, i64 %d
68   ret i64 %c.d
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
75 ; Function Attrs: norecurse nounwind readnone
76 define dso_local i32 @select_cc_64_32(i64 %a, i64 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
77 entry:
78   %cmp = icmp sgt i64 %a, %b
79   %c.d = select i1 %cmp, i32 %c, i32 %d
80   ret i32 %c.d
82 ; CHECK-LABEL: select_cc_64_32
83 ; CHECK-NOT: r{{[0-9]+}} <<= 32
85 ; Function Attrs: norecurse nounwind readnone
86 define dso_local i32 @selecti_cc_32(i32 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
87 entry:
88   %cmp = icmp ugt i32 %a, 10
89   %c.d = select i1 %cmp, i32 %c, i32 %d
90   ret i32 %c.d
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
97 ; Function Attrs: norecurse nounwind readnone
98 define dso_local i64 @selecti_cc_32_64(i32 %a, i64 %c, i64 %d) local_unnamed_addr #0 {
99 entry:
100   %cmp = icmp ugt i32 %a, 11
101   %c.d = select i1 %cmp, i64 %c, i64 %d
102   ret i64 %c.d
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
109 ; Function Attrs: norecurse nounwind readnone
110 define dso_local i32 @selecti_cc_64_32(i64 %a, i32 %c, i32 %d) local_unnamed_addr #0 {
111 entry:
112   %cmp = icmp sgt i64 %a, 12
113   %c.d = select i1 %cmp, i32 %c, i32 %d
114   ret i32 %c.d
116 ; CHECK-LABEL: selecti_cc_64_32
117 ; CHECK-NOT: r{{[0-9]+}} <<= 32