Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / Mips / llvm-ir / or.ll
blobc595ff42086b2516f696441cc82da5ec00000f75
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips2 | FileCheck %s -check-prefix=GP32
3 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 | FileCheck %s -check-prefix=GP32
4 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r2 | FileCheck %s -check-prefix=GP32
5 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 | FileCheck %s -check-prefix=GP32
6 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 | FileCheck %s -check-prefix=GP32
7 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 | FileCheck %s -check-prefix=GP32
8 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips3 | FileCheck %s -check-prefix=GP64
9 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips4 | FileCheck %s -check-prefix=GP64
10 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64 | FileCheck %s -check-prefix=GP64
11 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r2 | FileCheck %s -check-prefix=GP64
12 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r3 | FileCheck %s -check-prefix=GP64
13 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r5 | FileCheck %s -check-prefix=GP64
14 ; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r6 | FileCheck %s -check-prefix=GP64
15 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
16 ; RUN:    -check-prefix=MM32
17 ; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \
18 ; RUN:    -check-prefix=MM32R6
20 define signext i1 @or_i1(i1 signext %a, i1 signext %b) {
21 ; GP32-LABEL: or_i1:
22 ; GP32:       # %bb.0: # %entry
23 ; GP32-NEXT:    jr $ra
24 ; GP32-NEXT:    or $2, $4, $5
26 ; GP64-LABEL: or_i1:
27 ; GP64:       # %bb.0: # %entry
28 ; GP64-NEXT:    or $1, $4, $5
29 ; GP64-NEXT:    jr $ra
30 ; GP64-NEXT:    sll $2, $1, 0
32 ; MM32-LABEL: or_i1:
33 ; MM32:       # %bb.0: # %entry
34 ; MM32-NEXT:    or16 $4, $5
35 ; MM32-NEXT:    move $2, $4
36 ; MM32-NEXT:    jrc $ra
38 ; MM32R6-LABEL: or_i1:
39 ; MM32R6:       # %bb.0: # %entry
40 ; MM32R6-NEXT:    or $2, $4, $5
41 ; MM32R6-NEXT:    jrc $ra
42 entry:
43   %r = or i1 %a, %b
44   ret i1 %r
47 define signext i8 @or_i8(i8 signext %a, i8 signext %b) {
48 ; GP32-LABEL: or_i8:
49 ; GP32:       # %bb.0: # %entry
50 ; GP32-NEXT:    jr $ra
51 ; GP32-NEXT:    or $2, $4, $5
53 ; GP64-LABEL: or_i8:
54 ; GP64:       # %bb.0: # %entry
55 ; GP64-NEXT:    or $1, $4, $5
56 ; GP64-NEXT:    jr $ra
57 ; GP64-NEXT:    sll $2, $1, 0
59 ; MM32-LABEL: or_i8:
60 ; MM32:       # %bb.0: # %entry
61 ; MM32-NEXT:    or16 $4, $5
62 ; MM32-NEXT:    move $2, $4
63 ; MM32-NEXT:    jrc $ra
65 ; MM32R6-LABEL: or_i8:
66 ; MM32R6:       # %bb.0: # %entry
67 ; MM32R6-NEXT:    or $2, $4, $5
68 ; MM32R6-NEXT:    jrc $ra
69 entry:
70   %r = or i8 %a, %b
71   ret i8 %r
74 define signext i16 @or_i16(i16 signext %a, i16 signext %b) {
75 ; GP32-LABEL: or_i16:
76 ; GP32:       # %bb.0: # %entry
77 ; GP32-NEXT:    jr $ra
78 ; GP32-NEXT:    or $2, $4, $5
80 ; GP64-LABEL: or_i16:
81 ; GP64:       # %bb.0: # %entry
82 ; GP64-NEXT:    or $1, $4, $5
83 ; GP64-NEXT:    jr $ra
84 ; GP64-NEXT:    sll $2, $1, 0
86 ; MM32-LABEL: or_i16:
87 ; MM32:       # %bb.0: # %entry
88 ; MM32-NEXT:    or16 $4, $5
89 ; MM32-NEXT:    move $2, $4
90 ; MM32-NEXT:    jrc $ra
92 ; MM32R6-LABEL: or_i16:
93 ; MM32R6:       # %bb.0: # %entry
94 ; MM32R6-NEXT:    or $2, $4, $5
95 ; MM32R6-NEXT:    jrc $ra
96 entry:
97   %r = or i16 %a, %b
98   ret i16 %r
101 define signext i32 @or_i32(i32 signext %a, i32 signext %b) {
102 ; GP32-LABEL: or_i32:
103 ; GP32:       # %bb.0: # %entry
104 ; GP32-NEXT:    jr $ra
105 ; GP32-NEXT:    or $2, $4, $5
107 ; GP64-LABEL: or_i32:
108 ; GP64:       # %bb.0: # %entry
109 ; GP64-NEXT:    jr $ra
110 ; GP64-NEXT:    or $2, $4, $5
112 ; MM32-LABEL: or_i32:
113 ; MM32:       # %bb.0: # %entry
114 ; MM32-NEXT:    or16 $4, $5
115 ; MM32-NEXT:    move $2, $4
116 ; MM32-NEXT:    jrc $ra
118 ; MM32R6-LABEL: or_i32:
119 ; MM32R6:       # %bb.0: # %entry
120 ; MM32R6-NEXT:    or $2, $4, $5
121 ; MM32R6-NEXT:    jrc $ra
122 entry:
123   %r = or i32 %a, %b
124   ret i32 %r
127 define signext i64 @or_i64(i64 signext %a, i64 signext %b) {
128 ; GP32-LABEL: or_i64:
129 ; GP32:       # %bb.0: # %entry
130 ; GP32-NEXT:    or $2, $4, $6
131 ; GP32-NEXT:    jr $ra
132 ; GP32-NEXT:    or $3, $5, $7
134 ; GP64-LABEL: or_i64:
135 ; GP64:       # %bb.0: # %entry
136 ; GP64-NEXT:    jr $ra
137 ; GP64-NEXT:    or $2, $4, $5
139 ; MM32-LABEL: or_i64:
140 ; MM32:       # %bb.0: # %entry
141 ; MM32-NEXT:    or16 $4, $6
142 ; MM32-NEXT:    or16 $5, $7
143 ; MM32-NEXT:    move $2, $4
144 ; MM32-NEXT:    move $3, $5
145 ; MM32-NEXT:    jrc $ra
147 ; MM32R6-LABEL: or_i64:
148 ; MM32R6:       # %bb.0: # %entry
149 ; MM32R6-NEXT:    or $2, $4, $6
150 ; MM32R6-NEXT:    or $3, $5, $7
151 ; MM32R6-NEXT:    jrc $ra
152 entry:
153   %r = or i64 %a, %b
154   ret i64 %r
157 define signext i128 @or_i128(i128 signext %a, i128 signext %b) {
158 ; GP32-LABEL: or_i128:
159 ; GP32:       # %bb.0: # %entry
160 ; GP32-NEXT:    lw $1, 20($sp)
161 ; GP32-NEXT:    lw $2, 16($sp)
162 ; GP32-NEXT:    or $2, $4, $2
163 ; GP32-NEXT:    or $3, $5, $1
164 ; GP32-NEXT:    lw $1, 24($sp)
165 ; GP32-NEXT:    or $4, $6, $1
166 ; GP32-NEXT:    lw $1, 28($sp)
167 ; GP32-NEXT:    jr $ra
168 ; GP32-NEXT:    or $5, $7, $1
170 ; GP64-LABEL: or_i128:
171 ; GP64:       # %bb.0: # %entry
172 ; GP64-NEXT:    or $2, $4, $6
173 ; GP64-NEXT:    jr $ra
174 ; GP64-NEXT:    or $3, $5, $7
176 ; MM32-LABEL: or_i128:
177 ; MM32:       # %bb.0: # %entry
178 ; MM32-NEXT:    lwp $2, 16($sp)
179 ; MM32-NEXT:    or16 $2, $4
180 ; MM32-NEXT:    or16 $3, $5
181 ; MM32-NEXT:    lw $4, 24($sp)
182 ; MM32-NEXT:    or16 $4, $6
183 ; MM32-NEXT:    lw $5, 28($sp)
184 ; MM32-NEXT:    or16 $5, $7
185 ; MM32-NEXT:    jrc $ra
187 ; MM32R6-LABEL: or_i128:
188 ; MM32R6:       # %bb.0: # %entry
189 ; MM32R6-NEXT:    lw $1, 20($sp)
190 ; MM32R6-NEXT:    lw $2, 16($sp)
191 ; MM32R6-NEXT:    or $2, $4, $2
192 ; MM32R6-NEXT:    or $3, $5, $1
193 ; MM32R6-NEXT:    lw $1, 24($sp)
194 ; MM32R6-NEXT:    or $4, $6, $1
195 ; MM32R6-NEXT:    lw $1, 28($sp)
196 ; MM32R6-NEXT:    or $5, $7, $1
197 ; MM32R6-NEXT:    jrc $ra
198 entry:
199   %r = or i128 %a, %b
200   ret i128 %r
203 define signext i1 @or_i1_4(i1 signext %b) {
204 ; GP32-LABEL: or_i1_4:
205 ; GP32:       # %bb.0: # %entry
206 ; GP32-NEXT:    jr $ra
207 ; GP32-NEXT:    move $2, $4
209 ; GP64-LABEL: or_i1_4:
210 ; GP64:       # %bb.0: # %entry
211 ; GP64-NEXT:    jr $ra
212 ; GP64-NEXT:    move $2, $4
214 ; MM32-LABEL: or_i1_4:
215 ; MM32:       # %bb.0: # %entry
216 ; MM32-NEXT:    move $2, $4
217 ; MM32-NEXT:    jrc $ra
219 ; MM32R6-LABEL: or_i1_4:
220 ; MM32R6:       # %bb.0: # %entry
221 ; MM32R6-NEXT:    move $2, $4
222 ; MM32R6-NEXT:    jrc $ra
223 entry:
224   %r = or i1 4, %b
225   ret i1 %r
228 define signext i8 @or_i8_4(i8 signext %b) {
229 ; GP32-LABEL: or_i8_4:
230 ; GP32:       # %bb.0: # %entry
231 ; GP32-NEXT:    jr $ra
232 ; GP32-NEXT:    ori $2, $4, 4
234 ; GP64-LABEL: or_i8_4:
235 ; GP64:       # %bb.0: # %entry
236 ; GP64-NEXT:    jr $ra
237 ; GP64-NEXT:    ori $2, $4, 4
239 ; MM32-LABEL: or_i8_4:
240 ; MM32:       # %bb.0: # %entry
241 ; MM32-NEXT:    jr $ra
242 ; MM32-NEXT:    ori $2, $4, 4
244 ; MM32R6-LABEL: or_i8_4:
245 ; MM32R6:       # %bb.0: # %entry
246 ; MM32R6-NEXT:    ori $2, $4, 4
247 ; MM32R6-NEXT:    jrc $ra
248 entry:
249   %r = or i8 4, %b
250   ret i8 %r
253 define signext i16 @or_i16_4(i16 signext %b) {
254 ; GP32-LABEL: or_i16_4:
255 ; GP32:       # %bb.0: # %entry
256 ; GP32-NEXT:    jr $ra
257 ; GP32-NEXT:    ori $2, $4, 4
259 ; GP64-LABEL: or_i16_4:
260 ; GP64:       # %bb.0: # %entry
261 ; GP64-NEXT:    jr $ra
262 ; GP64-NEXT:    ori $2, $4, 4
264 ; MM32-LABEL: or_i16_4:
265 ; MM32:       # %bb.0: # %entry
266 ; MM32-NEXT:    jr $ra
267 ; MM32-NEXT:    ori $2, $4, 4
269 ; MM32R6-LABEL: or_i16_4:
270 ; MM32R6:       # %bb.0: # %entry
271 ; MM32R6-NEXT:    ori $2, $4, 4
272 ; MM32R6-NEXT:    jrc $ra
273 entry:
274   %r = or i16 4, %b
275   ret i16 %r
278 define signext i32 @or_i32_4(i32 signext %b) {
279 ; GP32-LABEL: or_i32_4:
280 ; GP32:       # %bb.0: # %entry
281 ; GP32-NEXT:    jr $ra
282 ; GP32-NEXT:    ori $2, $4, 4
284 ; GP64-LABEL: or_i32_4:
285 ; GP64:       # %bb.0: # %entry
286 ; GP64-NEXT:    ori $1, $4, 4
287 ; GP64-NEXT:    jr $ra
288 ; GP64-NEXT:    sll $2, $1, 0
290 ; MM32-LABEL: or_i32_4:
291 ; MM32:       # %bb.0: # %entry
292 ; MM32-NEXT:    jr $ra
293 ; MM32-NEXT:    ori $2, $4, 4
295 ; MM32R6-LABEL: or_i32_4:
296 ; MM32R6:       # %bb.0: # %entry
297 ; MM32R6-NEXT:    ori $2, $4, 4
298 ; MM32R6-NEXT:    jrc $ra
299 entry:
300   %r = or i32 4, %b
301   ret i32 %r
304 define signext i64 @or_i64_4(i64 signext %b) {
305 ; GP32-LABEL: or_i64_4:
306 ; GP32:       # %bb.0: # %entry
307 ; GP32-NEXT:    ori $3, $5, 4
308 ; GP32-NEXT:    jr $ra
309 ; GP32-NEXT:    move $2, $4
311 ; GP64-LABEL: or_i64_4:
312 ; GP64:       # %bb.0: # %entry
313 ; GP64-NEXT:    jr $ra
314 ; GP64-NEXT:    ori $2, $4, 4
316 ; MM32-LABEL: or_i64_4:
317 ; MM32:       # %bb.0: # %entry
318 ; MM32-NEXT:    ori $3, $5, 4
319 ; MM32-NEXT:    move $2, $4
320 ; MM32-NEXT:    jrc $ra
322 ; MM32R6-LABEL: or_i64_4:
323 ; MM32R6:       # %bb.0: # %entry
324 ; MM32R6-NEXT:    ori $3, $5, 4
325 ; MM32R6-NEXT:    move $2, $4
326 ; MM32R6-NEXT:    jrc $ra
327 entry:
328   %r = or i64 4, %b
329   ret i64 %r
332 define signext i128 @or_i128_4(i128 signext %b) {
333 ; GP32-LABEL: or_i128_4:
334 ; GP32:       # %bb.0: # %entry
335 ; GP32-NEXT:    ori $1, $7, 4
336 ; GP32-NEXT:    move $2, $4
337 ; GP32-NEXT:    move $3, $5
338 ; GP32-NEXT:    move $4, $6
339 ; GP32-NEXT:    jr $ra
340 ; GP32-NEXT:    move $5, $1
342 ; GP64-LABEL: or_i128_4:
343 ; GP64:       # %bb.0: # %entry
344 ; GP64-NEXT:    ori $3, $5, 4
345 ; GP64-NEXT:    jr $ra
346 ; GP64-NEXT:    move $2, $4
348 ; MM32-LABEL: or_i128_4:
349 ; MM32:       # %bb.0: # %entry
350 ; MM32-NEXT:    ori $1, $7, 4
351 ; MM32-NEXT:    move $2, $4
352 ; MM32-NEXT:    move $3, $5
353 ; MM32-NEXT:    move $4, $6
354 ; MM32-NEXT:    move $5, $1
355 ; MM32-NEXT:    jrc $ra
357 ; MM32R6-LABEL: or_i128_4:
358 ; MM32R6:       # %bb.0: # %entry
359 ; MM32R6-NEXT:    ori $1, $7, 4
360 ; MM32R6-NEXT:    move $2, $4
361 ; MM32R6-NEXT:    move $3, $5
362 ; MM32R6-NEXT:    move $4, $6
363 ; MM32R6-NEXT:    move $5, $1
364 ; MM32R6-NEXT:    jrc $ra
365 entry:
366   %r = or i128 4, %b
367   ret i128 %r
370 define signext i1 @or_i1_31(i1 signext %b) {
371 ; GP32-LABEL: or_i1_31:
372 ; GP32:       # %bb.0: # %entry
373 ; GP32-NEXT:    jr $ra
374 ; GP32-NEXT:    addiu $2, $zero, -1
376 ; GP64-LABEL: or_i1_31:
377 ; GP64:       # %bb.0: # %entry
378 ; GP64-NEXT:    jr $ra
379 ; GP64-NEXT:    addiu $2, $zero, -1
381 ; MM32-LABEL: or_i1_31:
382 ; MM32:       # %bb.0: # %entry
383 ; MM32-NEXT:    li16 $2, -1
384 ; MM32-NEXT:    jrc $ra
386 ; MM32R6-LABEL: or_i1_31:
387 ; MM32R6:       # %bb.0: # %entry
388 ; MM32R6-NEXT:    li16 $2, -1
389 ; MM32R6-NEXT:    jrc $ra
390 entry:
391   %r = or i1 31, %b
392   ret i1 %r
395 define signext i8 @or_i8_31(i8 signext %b) {
396 ; GP32-LABEL: or_i8_31:
397 ; GP32:       # %bb.0: # %entry
398 ; GP32-NEXT:    jr $ra
399 ; GP32-NEXT:    ori $2, $4, 31
401 ; GP64-LABEL: or_i8_31:
402 ; GP64:       # %bb.0: # %entry
403 ; GP64-NEXT:    jr $ra
404 ; GP64-NEXT:    ori $2, $4, 31
406 ; MM32-LABEL: or_i8_31:
407 ; MM32:       # %bb.0: # %entry
408 ; MM32-NEXT:    jr $ra
409 ; MM32-NEXT:    ori $2, $4, 31
411 ; MM32R6-LABEL: or_i8_31:
412 ; MM32R6:       # %bb.0: # %entry
413 ; MM32R6-NEXT:    ori $2, $4, 31
414 ; MM32R6-NEXT:    jrc $ra
415 entry:
416   %r = or i8 31, %b
417   ret i8 %r
420 define signext i16 @or_i16_31(i16 signext %b) {
421 ; GP32-LABEL: or_i16_31:
422 ; GP32:       # %bb.0: # %entry
423 ; GP32-NEXT:    jr $ra
424 ; GP32-NEXT:    ori $2, $4, 31
426 ; GP64-LABEL: or_i16_31:
427 ; GP64:       # %bb.0: # %entry
428 ; GP64-NEXT:    jr $ra
429 ; GP64-NEXT:    ori $2, $4, 31
431 ; MM32-LABEL: or_i16_31:
432 ; MM32:       # %bb.0: # %entry
433 ; MM32-NEXT:    jr $ra
434 ; MM32-NEXT:    ori $2, $4, 31
436 ; MM32R6-LABEL: or_i16_31:
437 ; MM32R6:       # %bb.0: # %entry
438 ; MM32R6-NEXT:    ori $2, $4, 31
439 ; MM32R6-NEXT:    jrc $ra
440 entry:
441   %r = or i16 31, %b
442   ret i16 %r
445 define signext i32 @or_i32_31(i32 signext %b) {
446 ; GP32-LABEL: or_i32_31:
447 ; GP32:       # %bb.0: # %entry
448 ; GP32-NEXT:    jr $ra
449 ; GP32-NEXT:    ori $2, $4, 31
451 ; GP64-LABEL: or_i32_31:
452 ; GP64:       # %bb.0: # %entry
453 ; GP64-NEXT:    ori $1, $4, 31
454 ; GP64-NEXT:    jr $ra
455 ; GP64-NEXT:    sll $2, $1, 0
457 ; MM32-LABEL: or_i32_31:
458 ; MM32:       # %bb.0: # %entry
459 ; MM32-NEXT:    jr $ra
460 ; MM32-NEXT:    ori $2, $4, 31
462 ; MM32R6-LABEL: or_i32_31:
463 ; MM32R6:       # %bb.0: # %entry
464 ; MM32R6-NEXT:    ori $2, $4, 31
465 ; MM32R6-NEXT:    jrc $ra
466 entry:
467   %r = or i32 31, %b
468   ret i32 %r
471 define signext i64 @or_i64_31(i64 signext %b) {
472 ; GP32-LABEL: or_i64_31:
473 ; GP32:       # %bb.0: # %entry
474 ; GP32-NEXT:    ori $3, $5, 31
475 ; GP32-NEXT:    jr $ra
476 ; GP32-NEXT:    move $2, $4
478 ; GP64-LABEL: or_i64_31:
479 ; GP64:       # %bb.0: # %entry
480 ; GP64-NEXT:    jr $ra
481 ; GP64-NEXT:    ori $2, $4, 31
483 ; MM32-LABEL: or_i64_31:
484 ; MM32:       # %bb.0: # %entry
485 ; MM32-NEXT:    ori $3, $5, 31
486 ; MM32-NEXT:    move $2, $4
487 ; MM32-NEXT:    jrc $ra
489 ; MM32R6-LABEL: or_i64_31:
490 ; MM32R6:       # %bb.0: # %entry
491 ; MM32R6-NEXT:    ori $3, $5, 31
492 ; MM32R6-NEXT:    move $2, $4
493 ; MM32R6-NEXT:    jrc $ra
494 entry:
495   %r = or i64 31, %b
496   ret i64 %r
499 define signext i128 @or_i128_31(i128 signext %b) {
500 ; GP32-LABEL: or_i128_31:
501 ; GP32:       # %bb.0: # %entry
502 ; GP32-NEXT:    ori $1, $7, 31
503 ; GP32-NEXT:    move $2, $4
504 ; GP32-NEXT:    move $3, $5
505 ; GP32-NEXT:    move $4, $6
506 ; GP32-NEXT:    jr $ra
507 ; GP32-NEXT:    move $5, $1
509 ; GP64-LABEL: or_i128_31:
510 ; GP64:       # %bb.0: # %entry
511 ; GP64-NEXT:    ori $3, $5, 31
512 ; GP64-NEXT:    jr $ra
513 ; GP64-NEXT:    move $2, $4
515 ; MM32-LABEL: or_i128_31:
516 ; MM32:       # %bb.0: # %entry
517 ; MM32-NEXT:    ori $1, $7, 31
518 ; MM32-NEXT:    move $2, $4
519 ; MM32-NEXT:    move $3, $5
520 ; MM32-NEXT:    move $4, $6
521 ; MM32-NEXT:    move $5, $1
522 ; MM32-NEXT:    jrc $ra
524 ; MM32R6-LABEL: or_i128_31:
525 ; MM32R6:       # %bb.0: # %entry
526 ; MM32R6-NEXT:    ori $1, $7, 31
527 ; MM32R6-NEXT:    move $2, $4
528 ; MM32R6-NEXT:    move $3, $5
529 ; MM32R6-NEXT:    move $4, $6
530 ; MM32R6-NEXT:    move $5, $1
531 ; MM32R6-NEXT:    jrc $ra
532 entry:
533   %r = or i128 31, %b
534   ret i128 %r
537 define signext i1 @or_i1_255(i1 signext %b) {
538 ; GP32-LABEL: or_i1_255:
539 ; GP32:       # %bb.0: # %entry
540 ; GP32-NEXT:    jr $ra
541 ; GP32-NEXT:    addiu $2, $zero, -1
543 ; GP64-LABEL: or_i1_255:
544 ; GP64:       # %bb.0: # %entry
545 ; GP64-NEXT:    jr $ra
546 ; GP64-NEXT:    addiu $2, $zero, -1
548 ; MM32-LABEL: or_i1_255:
549 ; MM32:       # %bb.0: # %entry
550 ; MM32-NEXT:    li16 $2, -1
551 ; MM32-NEXT:    jrc $ra
553 ; MM32R6-LABEL: or_i1_255:
554 ; MM32R6:       # %bb.0: # %entry
555 ; MM32R6-NEXT:    li16 $2, -1
556 ; MM32R6-NEXT:    jrc $ra
557 entry:
558   %r = or i1 255, %b
559   ret i1 %r
562 define signext i8 @or_i8_255(i8 signext %b) {
563 ; GP32-LABEL: or_i8_255:
564 ; GP32:       # %bb.0: # %entry
565 ; GP32-NEXT:    jr $ra
566 ; GP32-NEXT:    addiu $2, $zero, -1
568 ; GP64-LABEL: or_i8_255:
569 ; GP64:       # %bb.0: # %entry
570 ; GP64-NEXT:    jr $ra
571 ; GP64-NEXT:    addiu $2, $zero, -1
573 ; MM32-LABEL: or_i8_255:
574 ; MM32:       # %bb.0: # %entry
575 ; MM32-NEXT:    li16 $2, -1
576 ; MM32-NEXT:    jrc $ra
578 ; MM32R6-LABEL: or_i8_255:
579 ; MM32R6:       # %bb.0: # %entry
580 ; MM32R6-NEXT:    li16 $2, -1
581 ; MM32R6-NEXT:    jrc $ra
582 entry:
583   %r = or i8 255, %b
584   ret i8 %r
587 define signext i16 @or_i16_255(i16 signext %b) {
588 ; GP32-LABEL: or_i16_255:
589 ; GP32:       # %bb.0: # %entry
590 ; GP32-NEXT:    jr $ra
591 ; GP32-NEXT:    ori $2, $4, 255
593 ; GP64-LABEL: or_i16_255:
594 ; GP64:       # %bb.0: # %entry
595 ; GP64-NEXT:    jr $ra
596 ; GP64-NEXT:    ori $2, $4, 255
598 ; MM32-LABEL: or_i16_255:
599 ; MM32:       # %bb.0: # %entry
600 ; MM32-NEXT:    jr $ra
601 ; MM32-NEXT:    ori $2, $4, 255
603 ; MM32R6-LABEL: or_i16_255:
604 ; MM32R6:       # %bb.0: # %entry
605 ; MM32R6-NEXT:    ori $2, $4, 255
606 ; MM32R6-NEXT:    jrc $ra
607 entry:
608   %r = or i16 255, %b
609   ret i16 %r
612 define signext i32 @or_i32_255(i32 signext %b) {
613 ; GP32-LABEL: or_i32_255:
614 ; GP32:       # %bb.0: # %entry
615 ; GP32-NEXT:    jr $ra
616 ; GP32-NEXT:    ori $2, $4, 255
618 ; GP64-LABEL: or_i32_255:
619 ; GP64:       # %bb.0: # %entry
620 ; GP64-NEXT:    ori $1, $4, 255
621 ; GP64-NEXT:    jr $ra
622 ; GP64-NEXT:    sll $2, $1, 0
624 ; MM32-LABEL: or_i32_255:
625 ; MM32:       # %bb.0: # %entry
626 ; MM32-NEXT:    jr $ra
627 ; MM32-NEXT:    ori $2, $4, 255
629 ; MM32R6-LABEL: or_i32_255:
630 ; MM32R6:       # %bb.0: # %entry
631 ; MM32R6-NEXT:    ori $2, $4, 255
632 ; MM32R6-NEXT:    jrc $ra
633 entry:
634   %r = or i32 255, %b
635   ret i32 %r
638 define signext i64 @or_i64_255(i64 signext %b) {
639 ; GP32-LABEL: or_i64_255:
640 ; GP32:       # %bb.0: # %entry
641 ; GP32-NEXT:    ori $3, $5, 255
642 ; GP32-NEXT:    jr $ra
643 ; GP32-NEXT:    move $2, $4
645 ; GP64-LABEL: or_i64_255:
646 ; GP64:       # %bb.0: # %entry
647 ; GP64-NEXT:    jr $ra
648 ; GP64-NEXT:    ori $2, $4, 255
650 ; MM32-LABEL: or_i64_255:
651 ; MM32:       # %bb.0: # %entry
652 ; MM32-NEXT:    ori $3, $5, 255
653 ; MM32-NEXT:    move $2, $4
654 ; MM32-NEXT:    jrc $ra
656 ; MM32R6-LABEL: or_i64_255:
657 ; MM32R6:       # %bb.0: # %entry
658 ; MM32R6-NEXT:    ori $3, $5, 255
659 ; MM32R6-NEXT:    move $2, $4
660 ; MM32R6-NEXT:    jrc $ra
661 entry:
662   %r = or i64 255, %b
663   ret i64 %r
666 define signext i128 @or_i128_255(i128 signext %b) {
667 ; GP32-LABEL: or_i128_255:
668 ; GP32:       # %bb.0: # %entry
669 ; GP32-NEXT:    ori $1, $7, 255
670 ; GP32-NEXT:    move $2, $4
671 ; GP32-NEXT:    move $3, $5
672 ; GP32-NEXT:    move $4, $6
673 ; GP32-NEXT:    jr $ra
674 ; GP32-NEXT:    move $5, $1
676 ; GP64-LABEL: or_i128_255:
677 ; GP64:       # %bb.0: # %entry
678 ; GP64-NEXT:    ori $3, $5, 255
679 ; GP64-NEXT:    jr $ra
680 ; GP64-NEXT:    move $2, $4
682 ; MM32-LABEL: or_i128_255:
683 ; MM32:       # %bb.0: # %entry
684 ; MM32-NEXT:    ori $1, $7, 255
685 ; MM32-NEXT:    move $2, $4
686 ; MM32-NEXT:    move $3, $5
687 ; MM32-NEXT:    move $4, $6
688 ; MM32-NEXT:    move $5, $1
689 ; MM32-NEXT:    jrc $ra
691 ; MM32R6-LABEL: or_i128_255:
692 ; MM32R6:       # %bb.0: # %entry
693 ; MM32R6-NEXT:    ori $1, $7, 255
694 ; MM32R6-NEXT:    move $2, $4
695 ; MM32R6-NEXT:    move $3, $5
696 ; MM32R6-NEXT:    move $4, $6
697 ; MM32R6-NEXT:    move $5, $1
698 ; MM32R6-NEXT:    jrc $ra
699 entry:
700   %r = or i128 255, %b
701   ret i128 %r
704 define signext i1 @or_i1_32768(i1 signext %b) {
705 ; GP32-LABEL: or_i1_32768:
706 ; GP32:       # %bb.0: # %entry
707 ; GP32-NEXT:    jr $ra
708 ; GP32-NEXT:    move $2, $4
710 ; GP64-LABEL: or_i1_32768:
711 ; GP64:       # %bb.0: # %entry
712 ; GP64-NEXT:    jr $ra
713 ; GP64-NEXT:    move $2, $4
715 ; MM32-LABEL: or_i1_32768:
716 ; MM32:       # %bb.0: # %entry
717 ; MM32-NEXT:    move $2, $4
718 ; MM32-NEXT:    jrc $ra
720 ; MM32R6-LABEL: or_i1_32768:
721 ; MM32R6:       # %bb.0: # %entry
722 ; MM32R6-NEXT:    move $2, $4
723 ; MM32R6-NEXT:    jrc $ra
724 entry:
725   %r = or i1 32768, %b
726   ret i1 %r
729 define signext i8 @or_i8_32768(i8 signext %b) {
730 ; GP32-LABEL: or_i8_32768:
731 ; GP32:       # %bb.0: # %entry
732 ; GP32-NEXT:    jr $ra
733 ; GP32-NEXT:    move $2, $4
735 ; GP64-LABEL: or_i8_32768:
736 ; GP64:       # %bb.0: # %entry
737 ; GP64-NEXT:    jr $ra
738 ; GP64-NEXT:    move $2, $4
740 ; MM32-LABEL: or_i8_32768:
741 ; MM32:       # %bb.0: # %entry
742 ; MM32-NEXT:    move $2, $4
743 ; MM32-NEXT:    jrc $ra
745 ; MM32R6-LABEL: or_i8_32768:
746 ; MM32R6:       # %bb.0: # %entry
747 ; MM32R6-NEXT:    move $2, $4
748 ; MM32R6-NEXT:    jrc $ra
749 entry:
750   %r = or i8 32768, %b
751   ret i8 %r
754 define signext i16 @or_i16_32768(i16 signext %b) {
755 ; GP32-LABEL: or_i16_32768:
756 ; GP32:       # %bb.0: # %entry
757 ; GP32-NEXT:    addiu $1, $zero, -32768
758 ; GP32-NEXT:    jr $ra
759 ; GP32-NEXT:    or $2, $4, $1
761 ; GP64-LABEL: or_i16_32768:
762 ; GP64:       # %bb.0: # %entry
763 ; GP64-NEXT:    addiu $1, $zero, -32768
764 ; GP64-NEXT:    jr $ra
765 ; GP64-NEXT:    or $2, $4, $1
767 ; MM32-LABEL: or_i16_32768:
768 ; MM32:       # %bb.0: # %entry
769 ; MM32-NEXT:    addiu $2, $zero, -32768
770 ; MM32-NEXT:    or16 $2, $4
771 ; MM32-NEXT:    jrc $ra
773 ; MM32R6-LABEL: or_i16_32768:
774 ; MM32R6:       # %bb.0: # %entry
775 ; MM32R6-NEXT:    addiu $1, $zero, -32768
776 ; MM32R6-NEXT:    or $2, $4, $1
777 ; MM32R6-NEXT:    jrc $ra
778 entry:
779   %r = or i16 32768, %b
780   ret i16 %r
783 define signext i32 @or_i32_32768(i32 signext %b) {
784 ; GP32-LABEL: or_i32_32768:
785 ; GP32:       # %bb.0: # %entry
786 ; GP32-NEXT:    jr $ra
787 ; GP32-NEXT:    ori $2, $4, 32768
789 ; GP64-LABEL: or_i32_32768:
790 ; GP64:       # %bb.0: # %entry
791 ; GP64-NEXT:    ori $1, $4, 32768
792 ; GP64-NEXT:    jr $ra
793 ; GP64-NEXT:    sll $2, $1, 0
795 ; MM32-LABEL: or_i32_32768:
796 ; MM32:       # %bb.0: # %entry
797 ; MM32-NEXT:    jr $ra
798 ; MM32-NEXT:    ori $2, $4, 32768
800 ; MM32R6-LABEL: or_i32_32768:
801 ; MM32R6:       # %bb.0: # %entry
802 ; MM32R6-NEXT:    ori $2, $4, 32768
803 ; MM32R6-NEXT:    jrc $ra
804 entry:
805   %r = or i32 32768, %b
806   ret i32 %r
809 define signext i64 @or_i64_32768(i64 signext %b) {
810 ; GP32-LABEL: or_i64_32768:
811 ; GP32:       # %bb.0: # %entry
812 ; GP32-NEXT:    ori $3, $5, 32768
813 ; GP32-NEXT:    jr $ra
814 ; GP32-NEXT:    move $2, $4
816 ; GP64-LABEL: or_i64_32768:
817 ; GP64:       # %bb.0: # %entry
818 ; GP64-NEXT:    jr $ra
819 ; GP64-NEXT:    ori $2, $4, 32768
821 ; MM32-LABEL: or_i64_32768:
822 ; MM32:       # %bb.0: # %entry
823 ; MM32-NEXT:    ori $3, $5, 32768
824 ; MM32-NEXT:    move $2, $4
825 ; MM32-NEXT:    jrc $ra
827 ; MM32R6-LABEL: or_i64_32768:
828 ; MM32R6:       # %bb.0: # %entry
829 ; MM32R6-NEXT:    ori $3, $5, 32768
830 ; MM32R6-NEXT:    move $2, $4
831 ; MM32R6-NEXT:    jrc $ra
832 entry:
833   %r = or i64 32768, %b
834   ret i64 %r
837 define signext i128 @or_i128_32768(i128 signext %b) {
838 ; GP32-LABEL: or_i128_32768:
839 ; GP32:       # %bb.0: # %entry
840 ; GP32-NEXT:    ori $1, $7, 32768
841 ; GP32-NEXT:    move $2, $4
842 ; GP32-NEXT:    move $3, $5
843 ; GP32-NEXT:    move $4, $6
844 ; GP32-NEXT:    jr $ra
845 ; GP32-NEXT:    move $5, $1
847 ; GP64-LABEL: or_i128_32768:
848 ; GP64:       # %bb.0: # %entry
849 ; GP64-NEXT:    ori $3, $5, 32768
850 ; GP64-NEXT:    jr $ra
851 ; GP64-NEXT:    move $2, $4
853 ; MM32-LABEL: or_i128_32768:
854 ; MM32:       # %bb.0: # %entry
855 ; MM32-NEXT:    ori $1, $7, 32768
856 ; MM32-NEXT:    move $2, $4
857 ; MM32-NEXT:    move $3, $5
858 ; MM32-NEXT:    move $4, $6
859 ; MM32-NEXT:    move $5, $1
860 ; MM32-NEXT:    jrc $ra
862 ; MM32R6-LABEL: or_i128_32768:
863 ; MM32R6:       # %bb.0: # %entry
864 ; MM32R6-NEXT:    ori $1, $7, 32768
865 ; MM32R6-NEXT:    move $2, $4
866 ; MM32R6-NEXT:    move $3, $5
867 ; MM32R6-NEXT:    move $4, $6
868 ; MM32R6-NEXT:    move $5, $1
869 ; MM32R6-NEXT:    jrc $ra
870 entry:
871   %r = or i128 32768, %b
872   ret i128 %r
875 define signext i1 @or_i1_65(i1 signext %b) {
876 ; GP32-LABEL: or_i1_65:
877 ; GP32:       # %bb.0: # %entry
878 ; GP32-NEXT:    jr $ra
879 ; GP32-NEXT:    addiu $2, $zero, -1
881 ; GP64-LABEL: or_i1_65:
882 ; GP64:       # %bb.0: # %entry
883 ; GP64-NEXT:    jr $ra
884 ; GP64-NEXT:    addiu $2, $zero, -1
886 ; MM32-LABEL: or_i1_65:
887 ; MM32:       # %bb.0: # %entry
888 ; MM32-NEXT:    li16 $2, -1
889 ; MM32-NEXT:    jrc $ra
891 ; MM32R6-LABEL: or_i1_65:
892 ; MM32R6:       # %bb.0: # %entry
893 ; MM32R6-NEXT:    li16 $2, -1
894 ; MM32R6-NEXT:    jrc $ra
895 entry:
896   %r = or i1 65, %b
897   ret i1 %r
900 define signext i8 @or_i8_65(i8 signext %b) {
901 ; GP32-LABEL: or_i8_65:
902 ; GP32:       # %bb.0: # %entry
903 ; GP32-NEXT:    jr $ra
904 ; GP32-NEXT:    ori $2, $4, 65
906 ; GP64-LABEL: or_i8_65:
907 ; GP64:       # %bb.0: # %entry
908 ; GP64-NEXT:    jr $ra
909 ; GP64-NEXT:    ori $2, $4, 65
911 ; MM32-LABEL: or_i8_65:
912 ; MM32:       # %bb.0: # %entry
913 ; MM32-NEXT:    jr $ra
914 ; MM32-NEXT:    ori $2, $4, 65
916 ; MM32R6-LABEL: or_i8_65:
917 ; MM32R6:       # %bb.0: # %entry
918 ; MM32R6-NEXT:    ori $2, $4, 65
919 ; MM32R6-NEXT:    jrc $ra
920 entry:
921   %r = or i8 65, %b
922   ret i8 %r
925 define signext i16 @or_i16_65(i16 signext %b) {
926 ; GP32-LABEL: or_i16_65:
927 ; GP32:       # %bb.0: # %entry
928 ; GP32-NEXT:    jr $ra
929 ; GP32-NEXT:    ori $2, $4, 65
931 ; GP64-LABEL: or_i16_65:
932 ; GP64:       # %bb.0: # %entry
933 ; GP64-NEXT:    jr $ra
934 ; GP64-NEXT:    ori $2, $4, 65
936 ; MM32-LABEL: or_i16_65:
937 ; MM32:       # %bb.0: # %entry
938 ; MM32-NEXT:    jr $ra
939 ; MM32-NEXT:    ori $2, $4, 65
941 ; MM32R6-LABEL: or_i16_65:
942 ; MM32R6:       # %bb.0: # %entry
943 ; MM32R6-NEXT:    ori $2, $4, 65
944 ; MM32R6-NEXT:    jrc $ra
945 entry:
946   %r = or i16 65, %b
947   ret i16 %r
950 define signext i32 @or_i32_65(i32 signext %b) {
951 ; GP32-LABEL: or_i32_65:
952 ; GP32:       # %bb.0: # %entry
953 ; GP32-NEXT:    jr $ra
954 ; GP32-NEXT:    ori $2, $4, 65
956 ; GP64-LABEL: or_i32_65:
957 ; GP64:       # %bb.0: # %entry
958 ; GP64-NEXT:    ori $1, $4, 65
959 ; GP64-NEXT:    jr $ra
960 ; GP64-NEXT:    sll $2, $1, 0
962 ; MM32-LABEL: or_i32_65:
963 ; MM32:       # %bb.0: # %entry
964 ; MM32-NEXT:    jr $ra
965 ; MM32-NEXT:    ori $2, $4, 65
967 ; MM32R6-LABEL: or_i32_65:
968 ; MM32R6:       # %bb.0: # %entry
969 ; MM32R6-NEXT:    ori $2, $4, 65
970 ; MM32R6-NEXT:    jrc $ra
971 entry:
972   %r = or i32 65, %b
973   ret i32 %r
976 define signext i64 @or_i64_65(i64 signext %b) {
977 ; GP32-LABEL: or_i64_65:
978 ; GP32:       # %bb.0: # %entry
979 ; GP32-NEXT:    ori $3, $5, 65
980 ; GP32-NEXT:    jr $ra
981 ; GP32-NEXT:    move $2, $4
983 ; GP64-LABEL: or_i64_65:
984 ; GP64:       # %bb.0: # %entry
985 ; GP64-NEXT:    jr $ra
986 ; GP64-NEXT:    ori $2, $4, 65
988 ; MM32-LABEL: or_i64_65:
989 ; MM32:       # %bb.0: # %entry
990 ; MM32-NEXT:    ori $3, $5, 65
991 ; MM32-NEXT:    move $2, $4
992 ; MM32-NEXT:    jrc $ra
994 ; MM32R6-LABEL: or_i64_65:
995 ; MM32R6:       # %bb.0: # %entry
996 ; MM32R6-NEXT:    ori $3, $5, 65
997 ; MM32R6-NEXT:    move $2, $4
998 ; MM32R6-NEXT:    jrc $ra
999 entry:
1000   %r = or i64 65, %b
1001   ret i64 %r
1004 define signext i128 @or_i128_65(i128 signext %b) {
1005 ; GP32-LABEL: or_i128_65:
1006 ; GP32:       # %bb.0: # %entry
1007 ; GP32-NEXT:    ori $1, $7, 65
1008 ; GP32-NEXT:    move $2, $4
1009 ; GP32-NEXT:    move $3, $5
1010 ; GP32-NEXT:    move $4, $6
1011 ; GP32-NEXT:    jr $ra
1012 ; GP32-NEXT:    move $5, $1
1014 ; GP64-LABEL: or_i128_65:
1015 ; GP64:       # %bb.0: # %entry
1016 ; GP64-NEXT:    ori $3, $5, 65
1017 ; GP64-NEXT:    jr $ra
1018 ; GP64-NEXT:    move $2, $4
1020 ; MM32-LABEL: or_i128_65:
1021 ; MM32:       # %bb.0: # %entry
1022 ; MM32-NEXT:    ori $1, $7, 65
1023 ; MM32-NEXT:    move $2, $4
1024 ; MM32-NEXT:    move $3, $5
1025 ; MM32-NEXT:    move $4, $6
1026 ; MM32-NEXT:    move $5, $1
1027 ; MM32-NEXT:    jrc $ra
1029 ; MM32R6-LABEL: or_i128_65:
1030 ; MM32R6:       # %bb.0: # %entry
1031 ; MM32R6-NEXT:    ori $1, $7, 65
1032 ; MM32R6-NEXT:    move $2, $4
1033 ; MM32R6-NEXT:    move $3, $5
1034 ; MM32R6-NEXT:    move $4, $6
1035 ; MM32R6-NEXT:    move $5, $1
1036 ; MM32R6-NEXT:    jrc $ra
1037 entry:
1038   %r = or i128 65, %b
1039   ret i128 %r
1042 define signext i1 @or_i1_256(i1 signext %b) {
1043 ; GP32-LABEL: or_i1_256:
1044 ; GP32:       # %bb.0: # %entry
1045 ; GP32-NEXT:    jr $ra
1046 ; GP32-NEXT:    move $2, $4
1048 ; GP64-LABEL: or_i1_256:
1049 ; GP64:       # %bb.0: # %entry
1050 ; GP64-NEXT:    jr $ra
1051 ; GP64-NEXT:    move $2, $4
1053 ; MM32-LABEL: or_i1_256:
1054 ; MM32:       # %bb.0: # %entry
1055 ; MM32-NEXT:    move $2, $4
1056 ; MM32-NEXT:    jrc $ra
1058 ; MM32R6-LABEL: or_i1_256:
1059 ; MM32R6:       # %bb.0: # %entry
1060 ; MM32R6-NEXT:    move $2, $4
1061 ; MM32R6-NEXT:    jrc $ra
1062 entry:
1063   %r = or i1 256, %b
1064   ret i1 %r
1067 define signext i8 @or_i8_256(i8 signext %b) {
1068 ; GP32-LABEL: or_i8_256:
1069 ; GP32:       # %bb.0: # %entry
1070 ; GP32-NEXT:    jr $ra
1071 ; GP32-NEXT:    move $2, $4
1073 ; GP64-LABEL: or_i8_256:
1074 ; GP64:       # %bb.0: # %entry
1075 ; GP64-NEXT:    jr $ra
1076 ; GP64-NEXT:    move $2, $4
1078 ; MM32-LABEL: or_i8_256:
1079 ; MM32:       # %bb.0: # %entry
1080 ; MM32-NEXT:    move $2, $4
1081 ; MM32-NEXT:    jrc $ra
1083 ; MM32R6-LABEL: or_i8_256:
1084 ; MM32R6:       # %bb.0: # %entry
1085 ; MM32R6-NEXT:    move $2, $4
1086 ; MM32R6-NEXT:    jrc $ra
1087 entry:
1088   %r = or i8 256, %b
1089   ret i8 %r
1092 define signext i16 @or_i16_256(i16 signext %b) {
1093 ; GP32-LABEL: or_i16_256:
1094 ; GP32:       # %bb.0: # %entry
1095 ; GP32-NEXT:    jr $ra
1096 ; GP32-NEXT:    ori $2, $4, 256
1098 ; GP64-LABEL: or_i16_256:
1099 ; GP64:       # %bb.0: # %entry
1100 ; GP64-NEXT:    jr $ra
1101 ; GP64-NEXT:    ori $2, $4, 256
1103 ; MM32-LABEL: or_i16_256:
1104 ; MM32:       # %bb.0: # %entry
1105 ; MM32-NEXT:    jr $ra
1106 ; MM32-NEXT:    ori $2, $4, 256
1108 ; MM32R6-LABEL: or_i16_256:
1109 ; MM32R6:       # %bb.0: # %entry
1110 ; MM32R6-NEXT:    ori $2, $4, 256
1111 ; MM32R6-NEXT:    jrc $ra
1112 entry:
1113   %r = or i16 256, %b
1114   ret i16 %r
1117 define signext i32 @or_i32_256(i32 signext %b) {
1118 ; GP32-LABEL: or_i32_256:
1119 ; GP32:       # %bb.0: # %entry
1120 ; GP32-NEXT:    jr $ra
1121 ; GP32-NEXT:    ori $2, $4, 256
1123 ; GP64-LABEL: or_i32_256:
1124 ; GP64:       # %bb.0: # %entry
1125 ; GP64-NEXT:    ori $1, $4, 256
1126 ; GP64-NEXT:    jr $ra
1127 ; GP64-NEXT:    sll $2, $1, 0
1129 ; MM32-LABEL: or_i32_256:
1130 ; MM32:       # %bb.0: # %entry
1131 ; MM32-NEXT:    jr $ra
1132 ; MM32-NEXT:    ori $2, $4, 256
1134 ; MM32R6-LABEL: or_i32_256:
1135 ; MM32R6:       # %bb.0: # %entry
1136 ; MM32R6-NEXT:    ori $2, $4, 256
1137 ; MM32R6-NEXT:    jrc $ra
1138 entry:
1139   %r = or i32 256, %b
1140   ret i32 %r
1143 define signext i64 @or_i64_256(i64 signext %b) {
1144 ; GP32-LABEL: or_i64_256:
1145 ; GP32:       # %bb.0: # %entry
1146 ; GP32-NEXT:    ori $3, $5, 256
1147 ; GP32-NEXT:    jr $ra
1148 ; GP32-NEXT:    move $2, $4
1150 ; GP64-LABEL: or_i64_256:
1151 ; GP64:       # %bb.0: # %entry
1152 ; GP64-NEXT:    jr $ra
1153 ; GP64-NEXT:    ori $2, $4, 256
1155 ; MM32-LABEL: or_i64_256:
1156 ; MM32:       # %bb.0: # %entry
1157 ; MM32-NEXT:    ori $3, $5, 256
1158 ; MM32-NEXT:    move $2, $4
1159 ; MM32-NEXT:    jrc $ra
1161 ; MM32R6-LABEL: or_i64_256:
1162 ; MM32R6:       # %bb.0: # %entry
1163 ; MM32R6-NEXT:    ori $3, $5, 256
1164 ; MM32R6-NEXT:    move $2, $4
1165 ; MM32R6-NEXT:    jrc $ra
1166 entry:
1167   %r = or i64 256, %b
1168   ret i64 %r
1171 define signext i128 @or_i128_256(i128 signext %b) {
1172 ; GP32-LABEL: or_i128_256:
1173 ; GP32:       # %bb.0: # %entry
1174 ; GP32-NEXT:    ori $1, $7, 256
1175 ; GP32-NEXT:    move $2, $4
1176 ; GP32-NEXT:    move $3, $5
1177 ; GP32-NEXT:    move $4, $6
1178 ; GP32-NEXT:    jr $ra
1179 ; GP32-NEXT:    move $5, $1
1181 ; GP64-LABEL: or_i128_256:
1182 ; GP64:       # %bb.0: # %entry
1183 ; GP64-NEXT:    ori $3, $5, 256
1184 ; GP64-NEXT:    jr $ra
1185 ; GP64-NEXT:    move $2, $4
1187 ; MM32-LABEL: or_i128_256:
1188 ; MM32:       # %bb.0: # %entry
1189 ; MM32-NEXT:    ori $1, $7, 256
1190 ; MM32-NEXT:    move $2, $4
1191 ; MM32-NEXT:    move $3, $5
1192 ; MM32-NEXT:    move $4, $6
1193 ; MM32-NEXT:    move $5, $1
1194 ; MM32-NEXT:    jrc $ra
1196 ; MM32R6-LABEL: or_i128_256:
1197 ; MM32R6:       # %bb.0: # %entry
1198 ; MM32R6-NEXT:    ori $1, $7, 256
1199 ; MM32R6-NEXT:    move $2, $4
1200 ; MM32R6-NEXT:    move $3, $5
1201 ; MM32R6-NEXT:    move $4, $6
1202 ; MM32R6-NEXT:    move $5, $1
1203 ; MM32R6-NEXT:    jrc $ra
1204 entry:
1205   %r = or i128 256, %b
1206   ret i128 %r