• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -march=cellspu > %t1.s
2; RUN: grep selb   %t1.s | count 56
3
4target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
5target triple = "spu"
6
7;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
8; v2i64
9;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
10
11; (or (and rC, rB), (and (not rC), rA))
12define <2 x i64> @selectbits_v2i64_01(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
13        %C = and <2 x i64> %rC, %rB
14        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
15        %B = and <2 x i64> %A, %rA
16        %D = or <2 x i64> %C, %B
17        ret <2 x i64> %D
18}
19
20; (or (and rB, rC), (and (not rC), rA))
21define <2 x i64> @selectbits_v2i64_02(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
22        %C = and <2 x i64> %rB, %rC
23        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
24        %B = and <2 x i64> %A, %rA
25        %D = or <2 x i64> %C, %B
26        ret <2 x i64> %D
27}
28
29; (or (and (not rC), rA), (and rB, rC))
30define <2 x i64> @selectbits_v2i64_03(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
31        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
32        %B = and <2 x i64> %A, %rA
33        %C = and <2 x i64> %rB, %rC
34        %D = or <2 x i64> %C, %B
35        ret <2 x i64> %D
36}
37
38; (or (and (not rC), rA), (and rC, rB))
39define <2 x i64> @selectbits_v2i64_04(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
40        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
41        %B = and <2 x i64> %A, %rA
42        %C = and <2 x i64> %rC, %rB
43        %D = or <2 x i64> %C, %B
44        ret <2 x i64> %D
45}
46
47; (or (and rC, rB), (and rA, (not rC)))
48define <2 x i64> @selectbits_v2i64_05(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
49        %C = and <2 x i64> %rC, %rB
50        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
51        %B = and <2 x i64> %rA, %A
52        %D = or <2 x i64> %C, %B
53        ret <2 x i64> %D
54}
55
56; (or (and rB, rC), (and rA, (not rC)))
57define <2 x i64> @selectbits_v2i64_06(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
58        %C = and <2 x i64> %rB, %rC
59        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
60        %B = and <2 x i64> %rA, %A
61        %D = or <2 x i64> %C, %B
62        ret <2 x i64> %D
63}
64
65; (or (and rA, (not rC)), (and rB, rC))
66define <2 x i64> @selectbits_v2i64_07(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
67        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
68        %B = and <2 x i64> %rA, %A
69        %C = and <2 x i64> %rB, %rC
70        %D = or <2 x i64> %C, %B
71        ret <2 x i64> %D
72}
73
74; (or (and rA, (not rC)), (and rC, rB))
75define <2 x i64> @selectbits_v2i64_08(<2 x i64> %rA, <2 x i64> %rB, <2 x i64> %rC) {
76        %A = xor <2 x i64> %rC, < i64 -1, i64 -1 >
77        %B = and <2 x i64> %rA, %A
78        %C = and <2 x i64> %rC, %rB
79        %D = or <2 x i64> %C, %B
80        ret <2 x i64> %D
81}
82
83;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
84; v4i32
85;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
86
87; (or (and rC, rB), (and (not rC), rA))
88define <4 x i32> @selectbits_v4i32_01(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
89        %C = and <4 x i32> %rC, %rB
90        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 >
91        %B = and <4 x i32> %A, %rA
92        %D = or <4 x i32> %C, %B
93        ret <4 x i32> %D
94}
95
96; (or (and rB, rC), (and (not rC), rA))
97define <4 x i32> @selectbits_v4i32_02(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
98        %C = and <4 x i32> %rB, %rC
99        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 >
100        %B = and <4 x i32> %A, %rA
101        %D = or <4 x i32> %C, %B
102        ret <4 x i32> %D
103}
104
105; (or (and (not rC), rA), (and rB, rC))
106define <4 x i32> @selectbits_v4i32_03(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
107        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1 >
108        %B = and <4 x i32> %A, %rA
109        %C = and <4 x i32> %rB, %rC
110        %D = or <4 x i32> %C, %B
111        ret <4 x i32> %D
112}
113
114; (or (and (not rC), rA), (and rC, rB))
115define <4 x i32> @selectbits_v4i32_04(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
116        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1>
117        %B = and <4 x i32> %A, %rA
118        %C = and <4 x i32> %rC, %rB
119        %D = or <4 x i32> %C, %B
120        ret <4 x i32> %D
121}
122
123; (or (and rC, rB), (and rA, (not rC)))
124define <4 x i32> @selectbits_v4i32_05(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
125        %C = and <4 x i32> %rC, %rB
126        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1>
127        %B = and <4 x i32> %rA, %A
128        %D = or <4 x i32> %C, %B
129        ret <4 x i32> %D
130}
131
132; (or (and rB, rC), (and rA, (not rC)))
133define <4 x i32> @selectbits_v4i32_06(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
134        %C = and <4 x i32> %rB, %rC
135        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1>
136        %B = and <4 x i32> %rA, %A
137        %D = or <4 x i32> %C, %B
138        ret <4 x i32> %D
139}
140
141; (or (and rA, (not rC)), (and rB, rC))
142define <4 x i32> @selectbits_v4i32_07(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
143        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1>
144        %B = and <4 x i32> %rA, %A
145        %C = and <4 x i32> %rB, %rC
146        %D = or <4 x i32> %C, %B
147        ret <4 x i32> %D
148}
149
150; (or (and rA, (not rC)), (and rC, rB))
151define <4 x i32> @selectbits_v4i32_08(<4 x i32> %rA, <4 x i32> %rB, <4 x i32> %rC) {
152        %A = xor <4 x i32> %rC, < i32 -1, i32 -1, i32 -1, i32 -1>
153        %B = and <4 x i32> %rA, %A
154        %C = and <4 x i32> %rC, %rB
155        %D = or <4 x i32> %C, %B
156        ret <4 x i32> %D
157}
158
159;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
160; v8i16
161;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
162
163; (or (and rC, rB), (and (not rC), rA))
164define <8 x i16> @selectbits_v8i16_01(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
165        %C = and <8 x i16> %rC, %rB
166        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
167                                  i16 -1, i16 -1, i16 -1, i16 -1 >
168        %B = and <8 x i16> %A, %rA
169        %D = or <8 x i16> %C, %B
170        ret <8 x i16> %D
171}
172
173; (or (and rB, rC), (and (not rC), rA))
174define <8 x i16> @selectbits_v8i16_02(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
175        %C = and <8 x i16> %rB, %rC
176        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
177                                  i16 -1, i16 -1, i16 -1, i16 -1 >
178        %B = and <8 x i16> %A, %rA
179        %D = or <8 x i16> %C, %B
180        ret <8 x i16> %D
181}
182
183; (or (and (not rC), rA), (and rB, rC))
184define <8 x i16> @selectbits_v8i16_03(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
185        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
186                                  i16 -1, i16 -1, i16 -1, i16 -1 >
187        %B = and <8 x i16> %A, %rA
188        %C = and <8 x i16> %rB, %rC
189        %D = or <8 x i16> %C, %B
190        ret <8 x i16> %D
191}
192
193; (or (and (not rC), rA), (and rC, rB))
194define <8 x i16> @selectbits_v8i16_04(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
195        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
196                                  i16 -1, i16 -1, i16 -1, i16 -1 >
197        %B = and <8 x i16> %A, %rA
198        %C = and <8 x i16> %rC, %rB
199        %D = or <8 x i16> %C, %B
200        ret <8 x i16> %D
201}
202
203; (or (and rC, rB), (and rA, (not rC)))
204define <8 x i16> @selectbits_v8i16_05(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
205        %C = and <8 x i16> %rC, %rB
206        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
207                                  i16 -1, i16 -1, i16 -1, i16 -1 >
208        %B = and <8 x i16> %rA, %A
209        %D = or <8 x i16> %C, %B
210        ret <8 x i16> %D
211}
212
213; (or (and rB, rC), (and rA, (not rC)))
214define <8 x i16> @selectbits_v8i16_06(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
215        %C = and <8 x i16> %rB, %rC
216        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
217                                  i16 -1, i16 -1, i16 -1, i16 -1 >
218        %B = and <8 x i16> %rA, %A
219        %D = or <8 x i16> %C, %B
220        ret <8 x i16> %D
221}
222
223; (or (and rA, (not rC)), (and rB, rC))
224define <8 x i16> @selectbits_v8i16_07(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
225        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
226                                  i16 -1, i16 -1, i16 -1, i16 -1 >
227        %B = and <8 x i16> %rA, %A
228        %C = and <8 x i16> %rB, %rC
229        %D = or <8 x i16> %C, %B
230        ret <8 x i16> %D
231}
232
233; (or (and rA, (not rC)), (and rC, rB))
234define <8 x i16> @selectbits_v8i16_08(<8 x i16> %rA, <8 x i16> %rB, <8 x i16> %rC) {
235        %A = xor <8 x i16> %rC, < i16 -1, i16 -1, i16 -1, i16 -1,
236                                  i16 -1, i16 -1, i16 -1, i16 -1 >
237        %B = and <8 x i16> %rA, %A
238        %C = and <8 x i16> %rC, %rB
239        %D = or <8 x i16> %C, %B
240        ret <8 x i16> %D
241}
242
243;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
244; v16i8
245;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
246
247; (or (and rC, rB), (and (not rC), rA))
248define <16 x i8> @selectbits_v16i8_01(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
249        %C = and <16 x i8> %rC, %rB
250        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
251                                  i8 -1, i8 -1, i8 -1, i8 -1,
252                                  i8 -1, i8 -1, i8 -1, i8 -1,
253                                  i8 -1, i8 -1, i8 -1, i8 -1 >
254        %B = and <16 x i8> %A, %rA
255        %D = or <16 x i8> %C, %B
256        ret <16 x i8> %D
257}
258
259; (or (and rB, rC), (and (not rC), rA))
260define <16 x i8> @selectbits_v16i8_02(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
261        %C = and <16 x i8> %rB, %rC
262        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
263                                  i8 -1, i8 -1, i8 -1, i8 -1,
264                                  i8 -1, i8 -1, i8 -1, i8 -1,
265                                  i8 -1, i8 -1, i8 -1, i8 -1 >
266        %B = and <16 x i8> %A, %rA
267        %D = or <16 x i8> %C, %B
268        ret <16 x i8> %D
269}
270
271; (or (and (not rC), rA), (and rB, rC))
272define <16 x i8> @selectbits_v16i8_03(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
273        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
274                                  i8 -1, i8 -1, i8 -1, i8 -1,
275                                  i8 -1, i8 -1, i8 -1, i8 -1,
276                                  i8 -1, i8 -1, i8 -1, i8 -1 >
277        %B = and <16 x i8> %A, %rA
278        %C = and <16 x i8> %rB, %rC
279        %D = or <16 x i8> %C, %B
280        ret <16 x i8> %D
281}
282
283; (or (and (not rC), rA), (and rC, rB))
284define <16 x i8> @selectbits_v16i8_04(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
285        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
286                                  i8 -1, i8 -1, i8 -1, i8 -1,
287                                  i8 -1, i8 -1, i8 -1, i8 -1,
288                                  i8 -1, i8 -1, i8 -1, i8 -1 >
289        %B = and <16 x i8> %A, %rA
290        %C = and <16 x i8> %rC, %rB
291        %D = or <16 x i8> %C, %B
292        ret <16 x i8> %D
293}
294
295; (or (and rC, rB), (and rA, (not rC)))
296define <16 x i8> @selectbits_v16i8_05(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
297        %C = and <16 x i8> %rC, %rB
298        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
299                                  i8 -1, i8 -1, i8 -1, i8 -1,
300                                  i8 -1, i8 -1, i8 -1, i8 -1,
301                                  i8 -1, i8 -1, i8 -1, i8 -1 >
302        %B = and <16 x i8> %rA, %A
303        %D = or <16 x i8> %C, %B
304        ret <16 x i8> %D
305}
306
307; (or (and rB, rC), (and rA, (not rC)))
308define <16 x i8> @selectbits_v16i8_06(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
309        %C = and <16 x i8> %rB, %rC
310        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
311                                  i8 -1, i8 -1, i8 -1, i8 -1,
312                                  i8 -1, i8 -1, i8 -1, i8 -1,
313                                  i8 -1, i8 -1, i8 -1, i8 -1 >
314        %B = and <16 x i8> %rA, %A
315        %D = or <16 x i8> %C, %B
316        ret <16 x i8> %D
317}
318
319; (or (and rA, (not rC)), (and rB, rC))
320define <16 x i8> @selectbits_v16i8_07(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
321        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
322                                  i8 -1, i8 -1, i8 -1, i8 -1,
323                                  i8 -1, i8 -1, i8 -1, i8 -1,
324                                  i8 -1, i8 -1, i8 -1, i8 -1 >
325        %B = and <16 x i8> %rA, %A
326        %C = and <16 x i8> %rB, %rC
327        %D = or <16 x i8> %C, %B
328        ret <16 x i8> %D
329}
330
331; (or (and rA, (not rC)), (and rC, rB))
332define <16 x i8> @selectbits_v16i8_08(<16 x i8> %rA, <16 x i8> %rB, <16 x i8> %rC) {
333        %A = xor <16 x i8> %rC, < i8 -1, i8 -1, i8 -1, i8 -1,
334                                  i8 -1, i8 -1, i8 -1, i8 -1,
335                                  i8 -1, i8 -1, i8 -1, i8 -1,
336                                  i8 -1, i8 -1, i8 -1, i8 -1 >
337        %B = and <16 x i8> %rA, %A
338        %C = and <16 x i8> %rC, %rB
339        %D = or <16 x i8> %C, %B
340        ret <16 x i8> %D
341}
342
343;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
344; i32
345;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
346
347; (or (and rC, rB), (and (not rC), rA))
348define i32 @selectbits_i32_01(i32 %rA, i32 %rB, i32 %rC) {
349        %C = and i32 %rC, %rB
350        %A = xor i32 %rC, -1
351        %B = and i32 %A, %rA
352        %D = or i32 %C, %B
353        ret i32 %D
354}
355
356; (or (and rB, rC), (and (not rC), rA))
357define i32 @selectbits_i32_02(i32 %rA, i32 %rB, i32 %rC) {
358        %C = and i32 %rB, %rC
359        %A = xor i32 %rC, -1
360        %B = and i32 %A, %rA
361        %D = or i32 %C, %B
362        ret i32 %D
363}
364
365; (or (and (not rC), rA), (and rB, rC))
366define i32 @selectbits_i32_03(i32 %rA, i32 %rB, i32 %rC) {
367        %A = xor i32 %rC, -1
368        %B = and i32 %A, %rA
369        %C = and i32 %rB, %rC
370        %D = or i32 %C, %B
371        ret i32 %D
372}
373
374; (or (and (not rC), rA), (and rC, rB))
375define i32 @selectbits_i32_04(i32 %rA, i32 %rB, i32 %rC) {
376        %A = xor i32 %rC, -1
377        %B = and i32 %A, %rA
378        %C = and i32 %rC, %rB
379        %D = or i32 %C, %B
380        ret i32 %D
381}
382
383; (or (and rC, rB), (and rA, (not rC)))
384define i32 @selectbits_i32_05(i32 %rA, i32 %rB, i32 %rC) {
385        %C = and i32 %rC, %rB
386        %A = xor i32 %rC, -1
387        %B = and i32 %rA, %A
388        %D = or i32 %C, %B
389        ret i32 %D
390}
391
392; (or (and rB, rC), (and rA, (not rC)))
393define i32 @selectbits_i32_06(i32 %rA, i32 %rB, i32 %rC) {
394        %C = and i32 %rB, %rC
395        %A = xor i32 %rC, -1
396        %B = and i32 %rA, %A
397        %D = or i32 %C, %B
398        ret i32 %D
399}
400
401; (or (and rA, (not rC)), (and rB, rC))
402define i32 @selectbits_i32_07(i32 %rA, i32 %rB, i32 %rC) {
403        %A = xor i32 %rC, -1
404        %B = and i32 %rA, %A
405        %C = and i32 %rB, %rC
406        %D = or i32 %C, %B
407        ret i32 %D
408}
409
410; (or (and rA, (not rC)), (and rC, rB))
411define i32 @selectbits_i32_08(i32 %rA, i32 %rB, i32 %rC) {
412        %A = xor i32 %rC, -1
413        %B = and i32 %rA, %A
414        %C = and i32 %rC, %rB
415        %D = or i32 %C, %B
416        ret i32 %D
417}
418
419;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
420; i16
421;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
422
423; (or (and rC, rB), (and (not rC), rA))
424define i16 @selectbits_i16_01(i16 %rA, i16 %rB, i16 %rC) {
425        %C = and i16 %rC, %rB
426        %A = xor i16 %rC, -1
427        %B = and i16 %A, %rA
428        %D = or i16 %C, %B
429        ret i16 %D
430}
431
432; (or (and rB, rC), (and (not rC), rA))
433define i16 @selectbits_i16_02(i16 %rA, i16 %rB, i16 %rC) {
434        %C = and i16 %rB, %rC
435        %A = xor i16 %rC, -1
436        %B = and i16 %A, %rA
437        %D = or i16 %C, %B
438        ret i16 %D
439}
440
441; (or (and (not rC), rA), (and rB, rC))
442define i16 @selectbits_i16_03(i16 %rA, i16 %rB, i16 %rC) {
443        %A = xor i16 %rC, -1
444        %B = and i16 %A, %rA
445        %C = and i16 %rB, %rC
446        %D = or i16 %C, %B
447        ret i16 %D
448}
449
450; (or (and (not rC), rA), (and rC, rB))
451define i16 @selectbits_i16_04(i16 %rA, i16 %rB, i16 %rC) {
452        %A = xor i16 %rC, -1
453        %B = and i16 %A, %rA
454        %C = and i16 %rC, %rB
455        %D = or i16 %C, %B
456        ret i16 %D
457}
458
459; (or (and rC, rB), (and rA, (not rC)))
460define i16 @selectbits_i16_05(i16 %rA, i16 %rB, i16 %rC) {
461        %C = and i16 %rC, %rB
462        %A = xor i16 %rC, -1
463        %B = and i16 %rA, %A
464        %D = or i16 %C, %B
465        ret i16 %D
466}
467
468; (or (and rB, rC), (and rA, (not rC)))
469define i16 @selectbits_i16_06(i16 %rA, i16 %rB, i16 %rC) {
470        %C = and i16 %rB, %rC
471        %A = xor i16 %rC, -1
472        %B = and i16 %rA, %A
473        %D = or i16 %C, %B
474        ret i16 %D
475}
476
477; (or (and rA, (not rC)), (and rB, rC))
478define i16 @selectbits_i16_07(i16 %rA, i16 %rB, i16 %rC) {
479        %A = xor i16 %rC, -1
480        %B = and i16 %rA, %A
481        %C = and i16 %rB, %rC
482        %D = or i16 %C, %B
483        ret i16 %D
484}
485
486; (or (and rA, (not rC)), (and rC, rB))
487define i16 @selectbits_i16_08(i16 %rA, i16 %rB, i16 %rC) {
488        %A = xor i16 %rC, -1
489        %B = and i16 %rA, %A
490        %C = and i16 %rC, %rB
491        %D = or i16 %C, %B
492        ret i16 %D
493}
494
495;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
496; i8
497;-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
498
499; (or (and rC, rB), (and (not rC), rA))
500define i8 @selectbits_i8_01(i8 %rA, i8 %rB, i8 %rC) {
501        %C = and i8 %rC, %rB
502        %A = xor i8 %rC, -1
503        %B = and i8 %A, %rA
504        %D = or i8 %C, %B
505        ret i8 %D
506}
507
508; (or (and rB, rC), (and (not rC), rA))
509define i8 @selectbits_i8_02(i8 %rA, i8 %rB, i8 %rC) {
510        %C = and i8 %rB, %rC
511        %A = xor i8 %rC, -1
512        %B = and i8 %A, %rA
513        %D = or i8 %C, %B
514        ret i8 %D
515}
516
517; (or (and (not rC), rA), (and rB, rC))
518define i8 @selectbits_i8_03(i8 %rA, i8 %rB, i8 %rC) {
519        %A = xor i8 %rC, -1
520        %B = and i8 %A, %rA
521        %C = and i8 %rB, %rC
522        %D = or i8 %C, %B
523        ret i8 %D
524}
525
526; (or (and (not rC), rA), (and rC, rB))
527define i8 @selectbits_i8_04(i8 %rA, i8 %rB, i8 %rC) {
528        %A = xor i8 %rC, -1
529        %B = and i8 %A, %rA
530        %C = and i8 %rC, %rB
531        %D = or i8 %C, %B
532        ret i8 %D
533}
534
535; (or (and rC, rB), (and rA, (not rC)))
536define i8 @selectbits_i8_05(i8 %rA, i8 %rB, i8 %rC) {
537        %C = and i8 %rC, %rB
538        %A = xor i8 %rC, -1
539        %B = and i8 %rA, %A
540        %D = or i8 %C, %B
541        ret i8 %D
542}
543
544; (or (and rB, rC), (and rA, (not rC)))
545define i8 @selectbits_i8_06(i8 %rA, i8 %rB, i8 %rC) {
546        %C = and i8 %rB, %rC
547        %A = xor i8 %rC, -1
548        %B = and i8 %rA, %A
549        %D = or i8 %C, %B
550        ret i8 %D
551}
552
553; (or (and rA, (not rC)), (and rB, rC))
554define i8 @selectbits_i8_07(i8 %rA, i8 %rB, i8 %rC) {
555        %A = xor i8 %rC, -1
556        %B = and i8 %rA, %A
557        %C = and i8 %rB, %rC
558        %D = or i8 %C, %B
559        ret i8 %D
560}
561
562; (or (and rA, (not rC)), (and rC, rB))
563define i8 @selectbits_i8_08(i8 %rA, i8 %rB, i8 %rC) {
564        %A = xor i8 %rC, -1
565        %B = and i8 %rA, %A
566        %C = and i8 %rC, %rB
567        %D = or i8 %C, %B
568        ret i8 %D
569}
570