xref: /llvm-project/llvm/test/CodeGen/Mips/llvm-ir/or.ll (revision 4a612d4bf290346ec018a74fd245c8e30ff93de7)
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
19
20define 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
25;
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
31;
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
37;
38; MM32R6-LABEL: or_i1:
39; MM32R6:       # %bb.0: # %entry
40; MM32R6-NEXT:    or $2, $4, $5
41; MM32R6-NEXT:    jrc $ra
42entry:
43  %r = or i1 %a, %b
44  ret i1 %r
45}
46
47define 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
52;
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
58;
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
64;
65; MM32R6-LABEL: or_i8:
66; MM32R6:       # %bb.0: # %entry
67; MM32R6-NEXT:    or $2, $4, $5
68; MM32R6-NEXT:    jrc $ra
69entry:
70  %r = or i8 %a, %b
71  ret i8 %r
72}
73
74define 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
79;
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
85;
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
91;
92; MM32R6-LABEL: or_i16:
93; MM32R6:       # %bb.0: # %entry
94; MM32R6-NEXT:    or $2, $4, $5
95; MM32R6-NEXT:    jrc $ra
96entry:
97  %r = or i16 %a, %b
98  ret i16 %r
99}
100
101define 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
106;
107; GP64-LABEL: or_i32:
108; GP64:       # %bb.0: # %entry
109; GP64-NEXT:    jr $ra
110; GP64-NEXT:    or $2, $4, $5
111;
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
117;
118; MM32R6-LABEL: or_i32:
119; MM32R6:       # %bb.0: # %entry
120; MM32R6-NEXT:    or $2, $4, $5
121; MM32R6-NEXT:    jrc $ra
122entry:
123  %r = or i32 %a, %b
124  ret i32 %r
125}
126
127define 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
133;
134; GP64-LABEL: or_i64:
135; GP64:       # %bb.0: # %entry
136; GP64-NEXT:    jr $ra
137; GP64-NEXT:    or $2, $4, $5
138;
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
146;
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
152entry:
153  %r = or i64 %a, %b
154  ret i64 %r
155}
156
157define 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
169;
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
175;
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
186;
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
198entry:
199  %r = or i128 %a, %b
200  ret i128 %r
201}
202
203define 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
208;
209; GP64-LABEL: or_i1_4:
210; GP64:       # %bb.0: # %entry
211; GP64-NEXT:    jr $ra
212; GP64-NEXT:    move $2, $4
213;
214; MM32-LABEL: or_i1_4:
215; MM32:       # %bb.0: # %entry
216; MM32-NEXT:    move $2, $4
217; MM32-NEXT:    jrc $ra
218;
219; MM32R6-LABEL: or_i1_4:
220; MM32R6:       # %bb.0: # %entry
221; MM32R6-NEXT:    move $2, $4
222; MM32R6-NEXT:    jrc $ra
223entry:
224  %r = or i1 4, %b
225  ret i1 %r
226}
227
228define 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
233;
234; GP64-LABEL: or_i8_4:
235; GP64:       # %bb.0: # %entry
236; GP64-NEXT:    jr $ra
237; GP64-NEXT:    ori $2, $4, 4
238;
239; MM32-LABEL: or_i8_4:
240; MM32:       # %bb.0: # %entry
241; MM32-NEXT:    jr $ra
242; MM32-NEXT:    ori $2, $4, 4
243;
244; MM32R6-LABEL: or_i8_4:
245; MM32R6:       # %bb.0: # %entry
246; MM32R6-NEXT:    ori $2, $4, 4
247; MM32R6-NEXT:    jrc $ra
248entry:
249  %r = or i8 4, %b
250  ret i8 %r
251}
252
253define 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
258;
259; GP64-LABEL: or_i16_4:
260; GP64:       # %bb.0: # %entry
261; GP64-NEXT:    jr $ra
262; GP64-NEXT:    ori $2, $4, 4
263;
264; MM32-LABEL: or_i16_4:
265; MM32:       # %bb.0: # %entry
266; MM32-NEXT:    jr $ra
267; MM32-NEXT:    ori $2, $4, 4
268;
269; MM32R6-LABEL: or_i16_4:
270; MM32R6:       # %bb.0: # %entry
271; MM32R6-NEXT:    ori $2, $4, 4
272; MM32R6-NEXT:    jrc $ra
273entry:
274  %r = or i16 4, %b
275  ret i16 %r
276}
277
278define 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
283;
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
289;
290; MM32-LABEL: or_i32_4:
291; MM32:       # %bb.0: # %entry
292; MM32-NEXT:    jr $ra
293; MM32-NEXT:    ori $2, $4, 4
294;
295; MM32R6-LABEL: or_i32_4:
296; MM32R6:       # %bb.0: # %entry
297; MM32R6-NEXT:    ori $2, $4, 4
298; MM32R6-NEXT:    jrc $ra
299entry:
300  %r = or i32 4, %b
301  ret i32 %r
302}
303
304define 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
310;
311; GP64-LABEL: or_i64_4:
312; GP64:       # %bb.0: # %entry
313; GP64-NEXT:    jr $ra
314; GP64-NEXT:    ori $2, $4, 4
315;
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
321;
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
327entry:
328  %r = or i64 4, %b
329  ret i64 %r
330}
331
332define 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
341;
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
347;
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
356;
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
365entry:
366  %r = or i128 4, %b
367  ret i128 %r
368}
369
370define 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
375;
376; GP64-LABEL: or_i1_31:
377; GP64:       # %bb.0: # %entry
378; GP64-NEXT:    jr $ra
379; GP64-NEXT:    addiu $2, $zero, -1
380;
381; MM32-LABEL: or_i1_31:
382; MM32:       # %bb.0: # %entry
383; MM32-NEXT:    li16 $2, -1
384; MM32-NEXT:    jrc $ra
385;
386; MM32R6-LABEL: or_i1_31:
387; MM32R6:       # %bb.0: # %entry
388; MM32R6-NEXT:    li16 $2, -1
389; MM32R6-NEXT:    jrc $ra
390entry:
391  %r = or i1 31, %b
392  ret i1 %r
393}
394
395define 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
400;
401; GP64-LABEL: or_i8_31:
402; GP64:       # %bb.0: # %entry
403; GP64-NEXT:    jr $ra
404; GP64-NEXT:    ori $2, $4, 31
405;
406; MM32-LABEL: or_i8_31:
407; MM32:       # %bb.0: # %entry
408; MM32-NEXT:    jr $ra
409; MM32-NEXT:    ori $2, $4, 31
410;
411; MM32R6-LABEL: or_i8_31:
412; MM32R6:       # %bb.0: # %entry
413; MM32R6-NEXT:    ori $2, $4, 31
414; MM32R6-NEXT:    jrc $ra
415entry:
416  %r = or i8 31, %b
417  ret i8 %r
418}
419
420define 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
425;
426; GP64-LABEL: or_i16_31:
427; GP64:       # %bb.0: # %entry
428; GP64-NEXT:    jr $ra
429; GP64-NEXT:    ori $2, $4, 31
430;
431; MM32-LABEL: or_i16_31:
432; MM32:       # %bb.0: # %entry
433; MM32-NEXT:    jr $ra
434; MM32-NEXT:    ori $2, $4, 31
435;
436; MM32R6-LABEL: or_i16_31:
437; MM32R6:       # %bb.0: # %entry
438; MM32R6-NEXT:    ori $2, $4, 31
439; MM32R6-NEXT:    jrc $ra
440entry:
441  %r = or i16 31, %b
442  ret i16 %r
443}
444
445define 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
450;
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
456;
457; MM32-LABEL: or_i32_31:
458; MM32:       # %bb.0: # %entry
459; MM32-NEXT:    jr $ra
460; MM32-NEXT:    ori $2, $4, 31
461;
462; MM32R6-LABEL: or_i32_31:
463; MM32R6:       # %bb.0: # %entry
464; MM32R6-NEXT:    ori $2, $4, 31
465; MM32R6-NEXT:    jrc $ra
466entry:
467  %r = or i32 31, %b
468  ret i32 %r
469}
470
471define 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
477;
478; GP64-LABEL: or_i64_31:
479; GP64:       # %bb.0: # %entry
480; GP64-NEXT:    jr $ra
481; GP64-NEXT:    ori $2, $4, 31
482;
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
488;
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
494entry:
495  %r = or i64 31, %b
496  ret i64 %r
497}
498
499define 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
508;
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
514;
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
523;
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
532entry:
533  %r = or i128 31, %b
534  ret i128 %r
535}
536
537define 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
542;
543; GP64-LABEL: or_i1_255:
544; GP64:       # %bb.0: # %entry
545; GP64-NEXT:    jr $ra
546; GP64-NEXT:    addiu $2, $zero, -1
547;
548; MM32-LABEL: or_i1_255:
549; MM32:       # %bb.0: # %entry
550; MM32-NEXT:    li16 $2, -1
551; MM32-NEXT:    jrc $ra
552;
553; MM32R6-LABEL: or_i1_255:
554; MM32R6:       # %bb.0: # %entry
555; MM32R6-NEXT:    li16 $2, -1
556; MM32R6-NEXT:    jrc $ra
557entry:
558  %r = or i1 255, %b
559  ret i1 %r
560}
561
562define 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
567;
568; GP64-LABEL: or_i8_255:
569; GP64:       # %bb.0: # %entry
570; GP64-NEXT:    jr $ra
571; GP64-NEXT:    addiu $2, $zero, -1
572;
573; MM32-LABEL: or_i8_255:
574; MM32:       # %bb.0: # %entry
575; MM32-NEXT:    li16 $2, -1
576; MM32-NEXT:    jrc $ra
577;
578; MM32R6-LABEL: or_i8_255:
579; MM32R6:       # %bb.0: # %entry
580; MM32R6-NEXT:    li16 $2, -1
581; MM32R6-NEXT:    jrc $ra
582entry:
583  %r = or i8 255, %b
584  ret i8 %r
585}
586
587define 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
592;
593; GP64-LABEL: or_i16_255:
594; GP64:       # %bb.0: # %entry
595; GP64-NEXT:    jr $ra
596; GP64-NEXT:    ori $2, $4, 255
597;
598; MM32-LABEL: or_i16_255:
599; MM32:       # %bb.0: # %entry
600; MM32-NEXT:    jr $ra
601; MM32-NEXT:    ori $2, $4, 255
602;
603; MM32R6-LABEL: or_i16_255:
604; MM32R6:       # %bb.0: # %entry
605; MM32R6-NEXT:    ori $2, $4, 255
606; MM32R6-NEXT:    jrc $ra
607entry:
608  %r = or i16 255, %b
609  ret i16 %r
610}
611
612define 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
617;
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
623;
624; MM32-LABEL: or_i32_255:
625; MM32:       # %bb.0: # %entry
626; MM32-NEXT:    jr $ra
627; MM32-NEXT:    ori $2, $4, 255
628;
629; MM32R6-LABEL: or_i32_255:
630; MM32R6:       # %bb.0: # %entry
631; MM32R6-NEXT:    ori $2, $4, 255
632; MM32R6-NEXT:    jrc $ra
633entry:
634  %r = or i32 255, %b
635  ret i32 %r
636}
637
638define 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
644;
645; GP64-LABEL: or_i64_255:
646; GP64:       # %bb.0: # %entry
647; GP64-NEXT:    jr $ra
648; GP64-NEXT:    ori $2, $4, 255
649;
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
655;
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
661entry:
662  %r = or i64 255, %b
663  ret i64 %r
664}
665
666define 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
675;
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
681;
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
690;
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
699entry:
700  %r = or i128 255, %b
701  ret i128 %r
702}
703
704define 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
709;
710; GP64-LABEL: or_i1_32768:
711; GP64:       # %bb.0: # %entry
712; GP64-NEXT:    jr $ra
713; GP64-NEXT:    move $2, $4
714;
715; MM32-LABEL: or_i1_32768:
716; MM32:       # %bb.0: # %entry
717; MM32-NEXT:    move $2, $4
718; MM32-NEXT:    jrc $ra
719;
720; MM32R6-LABEL: or_i1_32768:
721; MM32R6:       # %bb.0: # %entry
722; MM32R6-NEXT:    move $2, $4
723; MM32R6-NEXT:    jrc $ra
724entry:
725  %r = or i1 32768, %b
726  ret i1 %r
727}
728
729define 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
734;
735; GP64-LABEL: or_i8_32768:
736; GP64:       # %bb.0: # %entry
737; GP64-NEXT:    jr $ra
738; GP64-NEXT:    move $2, $4
739;
740; MM32-LABEL: or_i8_32768:
741; MM32:       # %bb.0: # %entry
742; MM32-NEXT:    move $2, $4
743; MM32-NEXT:    jrc $ra
744;
745; MM32R6-LABEL: or_i8_32768:
746; MM32R6:       # %bb.0: # %entry
747; MM32R6-NEXT:    move $2, $4
748; MM32R6-NEXT:    jrc $ra
749entry:
750  %r = or i8 32768, %b
751  ret i8 %r
752}
753
754define 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
760;
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
766;
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
772;
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
778entry:
779  %r = or i16 32768, %b
780  ret i16 %r
781}
782
783define 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
788;
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
794;
795; MM32-LABEL: or_i32_32768:
796; MM32:       # %bb.0: # %entry
797; MM32-NEXT:    jr $ra
798; MM32-NEXT:    ori $2, $4, 32768
799;
800; MM32R6-LABEL: or_i32_32768:
801; MM32R6:       # %bb.0: # %entry
802; MM32R6-NEXT:    ori $2, $4, 32768
803; MM32R6-NEXT:    jrc $ra
804entry:
805  %r = or i32 32768, %b
806  ret i32 %r
807}
808
809define 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
815;
816; GP64-LABEL: or_i64_32768:
817; GP64:       # %bb.0: # %entry
818; GP64-NEXT:    jr $ra
819; GP64-NEXT:    ori $2, $4, 32768
820;
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
826;
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
832entry:
833  %r = or i64 32768, %b
834  ret i64 %r
835}
836
837define 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
846;
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
852;
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
861;
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
870entry:
871  %r = or i128 32768, %b
872  ret i128 %r
873}
874
875define 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
880;
881; GP64-LABEL: or_i1_65:
882; GP64:       # %bb.0: # %entry
883; GP64-NEXT:    jr $ra
884; GP64-NEXT:    addiu $2, $zero, -1
885;
886; MM32-LABEL: or_i1_65:
887; MM32:       # %bb.0: # %entry
888; MM32-NEXT:    li16 $2, -1
889; MM32-NEXT:    jrc $ra
890;
891; MM32R6-LABEL: or_i1_65:
892; MM32R6:       # %bb.0: # %entry
893; MM32R6-NEXT:    li16 $2, -1
894; MM32R6-NEXT:    jrc $ra
895entry:
896  %r = or i1 65, %b
897  ret i1 %r
898}
899
900define 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
905;
906; GP64-LABEL: or_i8_65:
907; GP64:       # %bb.0: # %entry
908; GP64-NEXT:    jr $ra
909; GP64-NEXT:    ori $2, $4, 65
910;
911; MM32-LABEL: or_i8_65:
912; MM32:       # %bb.0: # %entry
913; MM32-NEXT:    jr $ra
914; MM32-NEXT:    ori $2, $4, 65
915;
916; MM32R6-LABEL: or_i8_65:
917; MM32R6:       # %bb.0: # %entry
918; MM32R6-NEXT:    ori $2, $4, 65
919; MM32R6-NEXT:    jrc $ra
920entry:
921  %r = or i8 65, %b
922  ret i8 %r
923}
924
925define 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
930;
931; GP64-LABEL: or_i16_65:
932; GP64:       # %bb.0: # %entry
933; GP64-NEXT:    jr $ra
934; GP64-NEXT:    ori $2, $4, 65
935;
936; MM32-LABEL: or_i16_65:
937; MM32:       # %bb.0: # %entry
938; MM32-NEXT:    jr $ra
939; MM32-NEXT:    ori $2, $4, 65
940;
941; MM32R6-LABEL: or_i16_65:
942; MM32R6:       # %bb.0: # %entry
943; MM32R6-NEXT:    ori $2, $4, 65
944; MM32R6-NEXT:    jrc $ra
945entry:
946  %r = or i16 65, %b
947  ret i16 %r
948}
949
950define 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
955;
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
961;
962; MM32-LABEL: or_i32_65:
963; MM32:       # %bb.0: # %entry
964; MM32-NEXT:    jr $ra
965; MM32-NEXT:    ori $2, $4, 65
966;
967; MM32R6-LABEL: or_i32_65:
968; MM32R6:       # %bb.0: # %entry
969; MM32R6-NEXT:    ori $2, $4, 65
970; MM32R6-NEXT:    jrc $ra
971entry:
972  %r = or i32 65, %b
973  ret i32 %r
974}
975
976define 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
982;
983; GP64-LABEL: or_i64_65:
984; GP64:       # %bb.0: # %entry
985; GP64-NEXT:    jr $ra
986; GP64-NEXT:    ori $2, $4, 65
987;
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
993;
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
999entry:
1000  %r = or i64 65, %b
1001  ret i64 %r
1002}
1003
1004define 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
1013;
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
1019;
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
1028;
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
1037entry:
1038  %r = or i128 65, %b
1039  ret i128 %r
1040}
1041
1042define 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
1047;
1048; GP64-LABEL: or_i1_256:
1049; GP64:       # %bb.0: # %entry
1050; GP64-NEXT:    jr $ra
1051; GP64-NEXT:    move $2, $4
1052;
1053; MM32-LABEL: or_i1_256:
1054; MM32:       # %bb.0: # %entry
1055; MM32-NEXT:    move $2, $4
1056; MM32-NEXT:    jrc $ra
1057;
1058; MM32R6-LABEL: or_i1_256:
1059; MM32R6:       # %bb.0: # %entry
1060; MM32R6-NEXT:    move $2, $4
1061; MM32R6-NEXT:    jrc $ra
1062entry:
1063  %r = or i1 256, %b
1064  ret i1 %r
1065}
1066
1067define 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
1072;
1073; GP64-LABEL: or_i8_256:
1074; GP64:       # %bb.0: # %entry
1075; GP64-NEXT:    jr $ra
1076; GP64-NEXT:    move $2, $4
1077;
1078; MM32-LABEL: or_i8_256:
1079; MM32:       # %bb.0: # %entry
1080; MM32-NEXT:    move $2, $4
1081; MM32-NEXT:    jrc $ra
1082;
1083; MM32R6-LABEL: or_i8_256:
1084; MM32R6:       # %bb.0: # %entry
1085; MM32R6-NEXT:    move $2, $4
1086; MM32R6-NEXT:    jrc $ra
1087entry:
1088  %r = or i8 256, %b
1089  ret i8 %r
1090}
1091
1092define 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
1097;
1098; GP64-LABEL: or_i16_256:
1099; GP64:       # %bb.0: # %entry
1100; GP64-NEXT:    jr $ra
1101; GP64-NEXT:    ori $2, $4, 256
1102;
1103; MM32-LABEL: or_i16_256:
1104; MM32:       # %bb.0: # %entry
1105; MM32-NEXT:    jr $ra
1106; MM32-NEXT:    ori $2, $4, 256
1107;
1108; MM32R6-LABEL: or_i16_256:
1109; MM32R6:       # %bb.0: # %entry
1110; MM32R6-NEXT:    ori $2, $4, 256
1111; MM32R6-NEXT:    jrc $ra
1112entry:
1113  %r = or i16 256, %b
1114  ret i16 %r
1115}
1116
1117define 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
1122;
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
1128;
1129; MM32-LABEL: or_i32_256:
1130; MM32:       # %bb.0: # %entry
1131; MM32-NEXT:    jr $ra
1132; MM32-NEXT:    ori $2, $4, 256
1133;
1134; MM32R6-LABEL: or_i32_256:
1135; MM32R6:       # %bb.0: # %entry
1136; MM32R6-NEXT:    ori $2, $4, 256
1137; MM32R6-NEXT:    jrc $ra
1138entry:
1139  %r = or i32 256, %b
1140  ret i32 %r
1141}
1142
1143define 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
1149;
1150; GP64-LABEL: or_i64_256:
1151; GP64:       # %bb.0: # %entry
1152; GP64-NEXT:    jr $ra
1153; GP64-NEXT:    ori $2, $4, 256
1154;
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
1160;
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
1166entry:
1167  %r = or i64 256, %b
1168  ret i64 %r
1169}
1170
1171define 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
1180;
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
1186;
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
1195;
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
1204entry:
1205  %r = or i128 256, %b
1206  ret i128 %r
1207}
1208