1208 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips2 | FileCheck %s -check-prefix=GP323; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 | FileCheck %s -check-prefix=GP324; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r2 | FileCheck %s -check-prefix=GP325; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 | FileCheck %s -check-prefix=GP326; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 | FileCheck %s -check-prefix=GP327; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 | FileCheck %s -check-prefix=GP328; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips3 | FileCheck %s -check-prefix=GP649; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips4 | FileCheck %s -check-prefix=GP6410; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64 | FileCheck %s -check-prefix=GP6411; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r2 | FileCheck %s -check-prefix=GP6412; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r3 | FileCheck %s -check-prefix=GP6413; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r5 | FileCheck %s -check-prefix=GP6414; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r6 | FileCheck %s -check-prefix=GP6415; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \16; RUN: -check-prefix=MM3217; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \18; RUN: -check-prefix=MM32R619 20define signext i1 @or_i1(i1 signext %a, i1 signext %b) {21; GP32-LABEL: or_i1:22; GP32: # %bb.0: # %entry23; GP32-NEXT: jr $ra24; GP32-NEXT: or $2, $4, $525;26; GP64-LABEL: or_i1:27; GP64: # %bb.0: # %entry28; GP64-NEXT: or $1, $4, $529; GP64-NEXT: jr $ra30; GP64-NEXT: sll $2, $1, 031;32; MM32-LABEL: or_i1:33; MM32: # %bb.0: # %entry34; MM32-NEXT: or16 $4, $535; MM32-NEXT: move $2, $436; MM32-NEXT: jrc $ra37;38; MM32R6-LABEL: or_i1:39; MM32R6: # %bb.0: # %entry40; MM32R6-NEXT: or $2, $4, $541; MM32R6-NEXT: jrc $ra42entry:43 %r = or i1 %a, %b44 ret i1 %r45}46 47define signext i8 @or_i8(i8 signext %a, i8 signext %b) {48; GP32-LABEL: or_i8:49; GP32: # %bb.0: # %entry50; GP32-NEXT: jr $ra51; GP32-NEXT: or $2, $4, $552;53; GP64-LABEL: or_i8:54; GP64: # %bb.0: # %entry55; GP64-NEXT: or $1, $4, $556; GP64-NEXT: jr $ra57; GP64-NEXT: sll $2, $1, 058;59; MM32-LABEL: or_i8:60; MM32: # %bb.0: # %entry61; MM32-NEXT: or16 $4, $562; MM32-NEXT: move $2, $463; MM32-NEXT: jrc $ra64;65; MM32R6-LABEL: or_i8:66; MM32R6: # %bb.0: # %entry67; MM32R6-NEXT: or $2, $4, $568; MM32R6-NEXT: jrc $ra69entry:70 %r = or i8 %a, %b71 ret i8 %r72}73 74define signext i16 @or_i16(i16 signext %a, i16 signext %b) {75; GP32-LABEL: or_i16:76; GP32: # %bb.0: # %entry77; GP32-NEXT: jr $ra78; GP32-NEXT: or $2, $4, $579;80; GP64-LABEL: or_i16:81; GP64: # %bb.0: # %entry82; GP64-NEXT: or $1, $4, $583; GP64-NEXT: jr $ra84; GP64-NEXT: sll $2, $1, 085;86; MM32-LABEL: or_i16:87; MM32: # %bb.0: # %entry88; MM32-NEXT: or16 $4, $589; MM32-NEXT: move $2, $490; MM32-NEXT: jrc $ra91;92; MM32R6-LABEL: or_i16:93; MM32R6: # %bb.0: # %entry94; MM32R6-NEXT: or $2, $4, $595; MM32R6-NEXT: jrc $ra96entry:97 %r = or i16 %a, %b98 ret i16 %r99}100 101define signext i32 @or_i32(i32 signext %a, i32 signext %b) {102; GP32-LABEL: or_i32:103; GP32: # %bb.0: # %entry104; GP32-NEXT: jr $ra105; GP32-NEXT: or $2, $4, $5106;107; GP64-LABEL: or_i32:108; GP64: # %bb.0: # %entry109; GP64-NEXT: jr $ra110; GP64-NEXT: or $2, $4, $5111;112; MM32-LABEL: or_i32:113; MM32: # %bb.0: # %entry114; MM32-NEXT: or16 $4, $5115; MM32-NEXT: move $2, $4116; MM32-NEXT: jrc $ra117;118; MM32R6-LABEL: or_i32:119; MM32R6: # %bb.0: # %entry120; MM32R6-NEXT: or $2, $4, $5121; MM32R6-NEXT: jrc $ra122entry:123 %r = or i32 %a, %b124 ret i32 %r125}126 127define signext i64 @or_i64(i64 signext %a, i64 signext %b) {128; GP32-LABEL: or_i64:129; GP32: # %bb.0: # %entry130; GP32-NEXT: or $2, $4, $6131; GP32-NEXT: jr $ra132; GP32-NEXT: or $3, $5, $7133;134; GP64-LABEL: or_i64:135; GP64: # %bb.0: # %entry136; GP64-NEXT: jr $ra137; GP64-NEXT: or $2, $4, $5138;139; MM32-LABEL: or_i64:140; MM32: # %bb.0: # %entry141; MM32-NEXT: or16 $4, $6142; MM32-NEXT: or16 $5, $7143; MM32-NEXT: move $2, $4144; MM32-NEXT: move $3, $5145; MM32-NEXT: jrc $ra146;147; MM32R6-LABEL: or_i64:148; MM32R6: # %bb.0: # %entry149; MM32R6-NEXT: or $2, $4, $6150; MM32R6-NEXT: or $3, $5, $7151; MM32R6-NEXT: jrc $ra152entry:153 %r = or i64 %a, %b154 ret i64 %r155}156 157define signext i128 @or_i128(i128 signext %a, i128 signext %b) {158; GP32-LABEL: or_i128:159; GP32: # %bb.0: # %entry160; GP32-NEXT: lw $1, 20($sp)161; GP32-NEXT: lw $2, 16($sp)162; GP32-NEXT: or $2, $4, $2163; GP32-NEXT: or $3, $5, $1164; GP32-NEXT: lw $1, 24($sp)165; GP32-NEXT: or $4, $6, $1166; GP32-NEXT: lw $1, 28($sp)167; GP32-NEXT: jr $ra168; GP32-NEXT: or $5, $7, $1169;170; GP64-LABEL: or_i128:171; GP64: # %bb.0: # %entry172; GP64-NEXT: or $2, $4, $6173; GP64-NEXT: jr $ra174; GP64-NEXT: or $3, $5, $7175;176; MM32-LABEL: or_i128:177; MM32: # %bb.0: # %entry178; MM32-NEXT: lwp $2, 16($sp)179; MM32-NEXT: or16 $2, $4180; MM32-NEXT: or16 $3, $5181; MM32-NEXT: lw $4, 24($sp)182; MM32-NEXT: or16 $4, $6183; MM32-NEXT: lw $5, 28($sp)184; MM32-NEXT: or16 $5, $7185; MM32-NEXT: jrc $ra186;187; MM32R6-LABEL: or_i128:188; MM32R6: # %bb.0: # %entry189; MM32R6-NEXT: lw $1, 20($sp)190; MM32R6-NEXT: lw $2, 16($sp)191; MM32R6-NEXT: or $2, $4, $2192; MM32R6-NEXT: or $3, $5, $1193; MM32R6-NEXT: lw $1, 24($sp)194; MM32R6-NEXT: or $4, $6, $1195; MM32R6-NEXT: lw $1, 28($sp)196; MM32R6-NEXT: or $5, $7, $1197; MM32R6-NEXT: jrc $ra198entry:199 %r = or i128 %a, %b200 ret i128 %r201}202 203define signext i1 @or_i1_4(i1 signext %b) {204; GP32-LABEL: or_i1_4:205; GP32: # %bb.0: # %entry206; GP32-NEXT: jr $ra207; GP32-NEXT: move $2, $4208;209; GP64-LABEL: or_i1_4:210; GP64: # %bb.0: # %entry211; GP64-NEXT: jr $ra212; GP64-NEXT: move $2, $4213;214; MM32-LABEL: or_i1_4:215; MM32: # %bb.0: # %entry216; MM32-NEXT: move $2, $4217; MM32-NEXT: jrc $ra218;219; MM32R6-LABEL: or_i1_4:220; MM32R6: # %bb.0: # %entry221; MM32R6-NEXT: move $2, $4222; MM32R6-NEXT: jrc $ra223entry:224 %r = or i1 4, %b225 ret i1 %r226}227 228define signext i8 @or_i8_4(i8 signext %b) {229; GP32-LABEL: or_i8_4:230; GP32: # %bb.0: # %entry231; GP32-NEXT: jr $ra232; GP32-NEXT: ori $2, $4, 4233;234; GP64-LABEL: or_i8_4:235; GP64: # %bb.0: # %entry236; GP64-NEXT: jr $ra237; GP64-NEXT: ori $2, $4, 4238;239; MM32-LABEL: or_i8_4:240; MM32: # %bb.0: # %entry241; MM32-NEXT: jr $ra242; MM32-NEXT: ori $2, $4, 4243;244; MM32R6-LABEL: or_i8_4:245; MM32R6: # %bb.0: # %entry246; MM32R6-NEXT: ori $2, $4, 4247; MM32R6-NEXT: jrc $ra248entry:249 %r = or i8 4, %b250 ret i8 %r251}252 253define signext i16 @or_i16_4(i16 signext %b) {254; GP32-LABEL: or_i16_4:255; GP32: # %bb.0: # %entry256; GP32-NEXT: jr $ra257; GP32-NEXT: ori $2, $4, 4258;259; GP64-LABEL: or_i16_4:260; GP64: # %bb.0: # %entry261; GP64-NEXT: jr $ra262; GP64-NEXT: ori $2, $4, 4263;264; MM32-LABEL: or_i16_4:265; MM32: # %bb.0: # %entry266; MM32-NEXT: jr $ra267; MM32-NEXT: ori $2, $4, 4268;269; MM32R6-LABEL: or_i16_4:270; MM32R6: # %bb.0: # %entry271; MM32R6-NEXT: ori $2, $4, 4272; MM32R6-NEXT: jrc $ra273entry:274 %r = or i16 4, %b275 ret i16 %r276}277 278define signext i32 @or_i32_4(i32 signext %b) {279; GP32-LABEL: or_i32_4:280; GP32: # %bb.0: # %entry281; GP32-NEXT: jr $ra282; GP32-NEXT: ori $2, $4, 4283;284; GP64-LABEL: or_i32_4:285; GP64: # %bb.0: # %entry286; GP64-NEXT: ori $1, $4, 4287; GP64-NEXT: jr $ra288; GP64-NEXT: sll $2, $1, 0289;290; MM32-LABEL: or_i32_4:291; MM32: # %bb.0: # %entry292; MM32-NEXT: jr $ra293; MM32-NEXT: ori $2, $4, 4294;295; MM32R6-LABEL: or_i32_4:296; MM32R6: # %bb.0: # %entry297; MM32R6-NEXT: ori $2, $4, 4298; MM32R6-NEXT: jrc $ra299entry:300 %r = or i32 4, %b301 ret i32 %r302}303 304define signext i64 @or_i64_4(i64 signext %b) {305; GP32-LABEL: or_i64_4:306; GP32: # %bb.0: # %entry307; GP32-NEXT: ori $3, $5, 4308; GP32-NEXT: jr $ra309; GP32-NEXT: move $2, $4310;311; GP64-LABEL: or_i64_4:312; GP64: # %bb.0: # %entry313; GP64-NEXT: jr $ra314; GP64-NEXT: ori $2, $4, 4315;316; MM32-LABEL: or_i64_4:317; MM32: # %bb.0: # %entry318; MM32-NEXT: ori $3, $5, 4319; MM32-NEXT: move $2, $4320; MM32-NEXT: jrc $ra321;322; MM32R6-LABEL: or_i64_4:323; MM32R6: # %bb.0: # %entry324; MM32R6-NEXT: ori $3, $5, 4325; MM32R6-NEXT: move $2, $4326; MM32R6-NEXT: jrc $ra327entry:328 %r = or i64 4, %b329 ret i64 %r330}331 332define signext i128 @or_i128_4(i128 signext %b) {333; GP32-LABEL: or_i128_4:334; GP32: # %bb.0: # %entry335; GP32-NEXT: ori $1, $7, 4336; GP32-NEXT: move $2, $4337; GP32-NEXT: move $3, $5338; GP32-NEXT: move $4, $6339; GP32-NEXT: jr $ra340; GP32-NEXT: move $5, $1341;342; GP64-LABEL: or_i128_4:343; GP64: # %bb.0: # %entry344; GP64-NEXT: ori $3, $5, 4345; GP64-NEXT: jr $ra346; GP64-NEXT: move $2, $4347;348; MM32-LABEL: or_i128_4:349; MM32: # %bb.0: # %entry350; MM32-NEXT: ori $1, $7, 4351; MM32-NEXT: move $2, $4352; MM32-NEXT: move $3, $5353; MM32-NEXT: move $4, $6354; MM32-NEXT: move $5, $1355; MM32-NEXT: jrc $ra356;357; MM32R6-LABEL: or_i128_4:358; MM32R6: # %bb.0: # %entry359; MM32R6-NEXT: ori $1, $7, 4360; MM32R6-NEXT: move $2, $4361; MM32R6-NEXT: move $3, $5362; MM32R6-NEXT: move $4, $6363; MM32R6-NEXT: move $5, $1364; MM32R6-NEXT: jrc $ra365entry:366 %r = or i128 4, %b367 ret i128 %r368}369 370define signext i1 @or_i1_31(i1 signext %b) {371; GP32-LABEL: or_i1_31:372; GP32: # %bb.0: # %entry373; GP32-NEXT: jr $ra374; GP32-NEXT: addiu $2, $zero, -1375;376; GP64-LABEL: or_i1_31:377; GP64: # %bb.0: # %entry378; GP64-NEXT: jr $ra379; GP64-NEXT: addiu $2, $zero, -1380;381; MM32-LABEL: or_i1_31:382; MM32: # %bb.0: # %entry383; MM32-NEXT: li16 $2, -1384; MM32-NEXT: jrc $ra385;386; MM32R6-LABEL: or_i1_31:387; MM32R6: # %bb.0: # %entry388; MM32R6-NEXT: li16 $2, -1389; MM32R6-NEXT: jrc $ra390entry:391 %r = or i1 31, %b392 ret i1 %r393}394 395define signext i8 @or_i8_31(i8 signext %b) {396; GP32-LABEL: or_i8_31:397; GP32: # %bb.0: # %entry398; GP32-NEXT: jr $ra399; GP32-NEXT: ori $2, $4, 31400;401; GP64-LABEL: or_i8_31:402; GP64: # %bb.0: # %entry403; GP64-NEXT: jr $ra404; GP64-NEXT: ori $2, $4, 31405;406; MM32-LABEL: or_i8_31:407; MM32: # %bb.0: # %entry408; MM32-NEXT: jr $ra409; MM32-NEXT: ori $2, $4, 31410;411; MM32R6-LABEL: or_i8_31:412; MM32R6: # %bb.0: # %entry413; MM32R6-NEXT: ori $2, $4, 31414; MM32R6-NEXT: jrc $ra415entry:416 %r = or i8 31, %b417 ret i8 %r418}419 420define signext i16 @or_i16_31(i16 signext %b) {421; GP32-LABEL: or_i16_31:422; GP32: # %bb.0: # %entry423; GP32-NEXT: jr $ra424; GP32-NEXT: ori $2, $4, 31425;426; GP64-LABEL: or_i16_31:427; GP64: # %bb.0: # %entry428; GP64-NEXT: jr $ra429; GP64-NEXT: ori $2, $4, 31430;431; MM32-LABEL: or_i16_31:432; MM32: # %bb.0: # %entry433; MM32-NEXT: jr $ra434; MM32-NEXT: ori $2, $4, 31435;436; MM32R6-LABEL: or_i16_31:437; MM32R6: # %bb.0: # %entry438; MM32R6-NEXT: ori $2, $4, 31439; MM32R6-NEXT: jrc $ra440entry:441 %r = or i16 31, %b442 ret i16 %r443}444 445define signext i32 @or_i32_31(i32 signext %b) {446; GP32-LABEL: or_i32_31:447; GP32: # %bb.0: # %entry448; GP32-NEXT: jr $ra449; GP32-NEXT: ori $2, $4, 31450;451; GP64-LABEL: or_i32_31:452; GP64: # %bb.0: # %entry453; GP64-NEXT: ori $1, $4, 31454; GP64-NEXT: jr $ra455; GP64-NEXT: sll $2, $1, 0456;457; MM32-LABEL: or_i32_31:458; MM32: # %bb.0: # %entry459; MM32-NEXT: jr $ra460; MM32-NEXT: ori $2, $4, 31461;462; MM32R6-LABEL: or_i32_31:463; MM32R6: # %bb.0: # %entry464; MM32R6-NEXT: ori $2, $4, 31465; MM32R6-NEXT: jrc $ra466entry:467 %r = or i32 31, %b468 ret i32 %r469}470 471define signext i64 @or_i64_31(i64 signext %b) {472; GP32-LABEL: or_i64_31:473; GP32: # %bb.0: # %entry474; GP32-NEXT: ori $3, $5, 31475; GP32-NEXT: jr $ra476; GP32-NEXT: move $2, $4477;478; GP64-LABEL: or_i64_31:479; GP64: # %bb.0: # %entry480; GP64-NEXT: jr $ra481; GP64-NEXT: ori $2, $4, 31482;483; MM32-LABEL: or_i64_31:484; MM32: # %bb.0: # %entry485; MM32-NEXT: ori $3, $5, 31486; MM32-NEXT: move $2, $4487; MM32-NEXT: jrc $ra488;489; MM32R6-LABEL: or_i64_31:490; MM32R6: # %bb.0: # %entry491; MM32R6-NEXT: ori $3, $5, 31492; MM32R6-NEXT: move $2, $4493; MM32R6-NEXT: jrc $ra494entry:495 %r = or i64 31, %b496 ret i64 %r497}498 499define signext i128 @or_i128_31(i128 signext %b) {500; GP32-LABEL: or_i128_31:501; GP32: # %bb.0: # %entry502; GP32-NEXT: ori $1, $7, 31503; GP32-NEXT: move $2, $4504; GP32-NEXT: move $3, $5505; GP32-NEXT: move $4, $6506; GP32-NEXT: jr $ra507; GP32-NEXT: move $5, $1508;509; GP64-LABEL: or_i128_31:510; GP64: # %bb.0: # %entry511; GP64-NEXT: ori $3, $5, 31512; GP64-NEXT: jr $ra513; GP64-NEXT: move $2, $4514;515; MM32-LABEL: or_i128_31:516; MM32: # %bb.0: # %entry517; MM32-NEXT: ori $1, $7, 31518; MM32-NEXT: move $2, $4519; MM32-NEXT: move $3, $5520; MM32-NEXT: move $4, $6521; MM32-NEXT: move $5, $1522; MM32-NEXT: jrc $ra523;524; MM32R6-LABEL: or_i128_31:525; MM32R6: # %bb.0: # %entry526; MM32R6-NEXT: ori $1, $7, 31527; MM32R6-NEXT: move $2, $4528; MM32R6-NEXT: move $3, $5529; MM32R6-NEXT: move $4, $6530; MM32R6-NEXT: move $5, $1531; MM32R6-NEXT: jrc $ra532entry:533 %r = or i128 31, %b534 ret i128 %r535}536 537define signext i1 @or_i1_255(i1 signext %b) {538; GP32-LABEL: or_i1_255:539; GP32: # %bb.0: # %entry540; GP32-NEXT: jr $ra541; GP32-NEXT: addiu $2, $zero, -1542;543; GP64-LABEL: or_i1_255:544; GP64: # %bb.0: # %entry545; GP64-NEXT: jr $ra546; GP64-NEXT: addiu $2, $zero, -1547;548; MM32-LABEL: or_i1_255:549; MM32: # %bb.0: # %entry550; MM32-NEXT: li16 $2, -1551; MM32-NEXT: jrc $ra552;553; MM32R6-LABEL: or_i1_255:554; MM32R6: # %bb.0: # %entry555; MM32R6-NEXT: li16 $2, -1556; MM32R6-NEXT: jrc $ra557entry:558 %r = or i1 255, %b559 ret i1 %r560}561 562define signext i8 @or_i8_255(i8 signext %b) {563; GP32-LABEL: or_i8_255:564; GP32: # %bb.0: # %entry565; GP32-NEXT: jr $ra566; GP32-NEXT: addiu $2, $zero, -1567;568; GP64-LABEL: or_i8_255:569; GP64: # %bb.0: # %entry570; GP64-NEXT: jr $ra571; GP64-NEXT: addiu $2, $zero, -1572;573; MM32-LABEL: or_i8_255:574; MM32: # %bb.0: # %entry575; MM32-NEXT: li16 $2, -1576; MM32-NEXT: jrc $ra577;578; MM32R6-LABEL: or_i8_255:579; MM32R6: # %bb.0: # %entry580; MM32R6-NEXT: li16 $2, -1581; MM32R6-NEXT: jrc $ra582entry:583 %r = or i8 255, %b584 ret i8 %r585}586 587define signext i16 @or_i16_255(i16 signext %b) {588; GP32-LABEL: or_i16_255:589; GP32: # %bb.0: # %entry590; GP32-NEXT: jr $ra591; GP32-NEXT: ori $2, $4, 255592;593; GP64-LABEL: or_i16_255:594; GP64: # %bb.0: # %entry595; GP64-NEXT: jr $ra596; GP64-NEXT: ori $2, $4, 255597;598; MM32-LABEL: or_i16_255:599; MM32: # %bb.0: # %entry600; MM32-NEXT: jr $ra601; MM32-NEXT: ori $2, $4, 255602;603; MM32R6-LABEL: or_i16_255:604; MM32R6: # %bb.0: # %entry605; MM32R6-NEXT: ori $2, $4, 255606; MM32R6-NEXT: jrc $ra607entry:608 %r = or i16 255, %b609 ret i16 %r610}611 612define signext i32 @or_i32_255(i32 signext %b) {613; GP32-LABEL: or_i32_255:614; GP32: # %bb.0: # %entry615; GP32-NEXT: jr $ra616; GP32-NEXT: ori $2, $4, 255617;618; GP64-LABEL: or_i32_255:619; GP64: # %bb.0: # %entry620; GP64-NEXT: ori $1, $4, 255621; GP64-NEXT: jr $ra622; GP64-NEXT: sll $2, $1, 0623;624; MM32-LABEL: or_i32_255:625; MM32: # %bb.0: # %entry626; MM32-NEXT: jr $ra627; MM32-NEXT: ori $2, $4, 255628;629; MM32R6-LABEL: or_i32_255:630; MM32R6: # %bb.0: # %entry631; MM32R6-NEXT: ori $2, $4, 255632; MM32R6-NEXT: jrc $ra633entry:634 %r = or i32 255, %b635 ret i32 %r636}637 638define signext i64 @or_i64_255(i64 signext %b) {639; GP32-LABEL: or_i64_255:640; GP32: # %bb.0: # %entry641; GP32-NEXT: ori $3, $5, 255642; GP32-NEXT: jr $ra643; GP32-NEXT: move $2, $4644;645; GP64-LABEL: or_i64_255:646; GP64: # %bb.0: # %entry647; GP64-NEXT: jr $ra648; GP64-NEXT: ori $2, $4, 255649;650; MM32-LABEL: or_i64_255:651; MM32: # %bb.0: # %entry652; MM32-NEXT: ori $3, $5, 255653; MM32-NEXT: move $2, $4654; MM32-NEXT: jrc $ra655;656; MM32R6-LABEL: or_i64_255:657; MM32R6: # %bb.0: # %entry658; MM32R6-NEXT: ori $3, $5, 255659; MM32R6-NEXT: move $2, $4660; MM32R6-NEXT: jrc $ra661entry:662 %r = or i64 255, %b663 ret i64 %r664}665 666define signext i128 @or_i128_255(i128 signext %b) {667; GP32-LABEL: or_i128_255:668; GP32: # %bb.0: # %entry669; GP32-NEXT: ori $1, $7, 255670; GP32-NEXT: move $2, $4671; GP32-NEXT: move $3, $5672; GP32-NEXT: move $4, $6673; GP32-NEXT: jr $ra674; GP32-NEXT: move $5, $1675;676; GP64-LABEL: or_i128_255:677; GP64: # %bb.0: # %entry678; GP64-NEXT: ori $3, $5, 255679; GP64-NEXT: jr $ra680; GP64-NEXT: move $2, $4681;682; MM32-LABEL: or_i128_255:683; MM32: # %bb.0: # %entry684; MM32-NEXT: ori $1, $7, 255685; MM32-NEXT: move $2, $4686; MM32-NEXT: move $3, $5687; MM32-NEXT: move $4, $6688; MM32-NEXT: move $5, $1689; MM32-NEXT: jrc $ra690;691; MM32R6-LABEL: or_i128_255:692; MM32R6: # %bb.0: # %entry693; MM32R6-NEXT: ori $1, $7, 255694; MM32R6-NEXT: move $2, $4695; MM32R6-NEXT: move $3, $5696; MM32R6-NEXT: move $4, $6697; MM32R6-NEXT: move $5, $1698; MM32R6-NEXT: jrc $ra699entry:700 %r = or i128 255, %b701 ret i128 %r702}703 704define signext i1 @or_i1_32768(i1 signext %b) {705; GP32-LABEL: or_i1_32768:706; GP32: # %bb.0: # %entry707; GP32-NEXT: jr $ra708; GP32-NEXT: move $2, $4709;710; GP64-LABEL: or_i1_32768:711; GP64: # %bb.0: # %entry712; GP64-NEXT: jr $ra713; GP64-NEXT: move $2, $4714;715; MM32-LABEL: or_i1_32768:716; MM32: # %bb.0: # %entry717; MM32-NEXT: move $2, $4718; MM32-NEXT: jrc $ra719;720; MM32R6-LABEL: or_i1_32768:721; MM32R6: # %bb.0: # %entry722; MM32R6-NEXT: move $2, $4723; MM32R6-NEXT: jrc $ra724entry:725 %r = or i1 32768, %b726 ret i1 %r727}728 729define signext i8 @or_i8_32768(i8 signext %b) {730; GP32-LABEL: or_i8_32768:731; GP32: # %bb.0: # %entry732; GP32-NEXT: jr $ra733; GP32-NEXT: move $2, $4734;735; GP64-LABEL: or_i8_32768:736; GP64: # %bb.0: # %entry737; GP64-NEXT: jr $ra738; GP64-NEXT: move $2, $4739;740; MM32-LABEL: or_i8_32768:741; MM32: # %bb.0: # %entry742; MM32-NEXT: move $2, $4743; MM32-NEXT: jrc $ra744;745; MM32R6-LABEL: or_i8_32768:746; MM32R6: # %bb.0: # %entry747; MM32R6-NEXT: move $2, $4748; MM32R6-NEXT: jrc $ra749entry:750 %r = or i8 32768, %b751 ret i8 %r752}753 754define signext i16 @or_i16_32768(i16 signext %b) {755; GP32-LABEL: or_i16_32768:756; GP32: # %bb.0: # %entry757; GP32-NEXT: addiu $1, $zero, -32768758; GP32-NEXT: jr $ra759; GP32-NEXT: or $2, $4, $1760;761; GP64-LABEL: or_i16_32768:762; GP64: # %bb.0: # %entry763; GP64-NEXT: addiu $1, $zero, -32768764; GP64-NEXT: jr $ra765; GP64-NEXT: or $2, $4, $1766;767; MM32-LABEL: or_i16_32768:768; MM32: # %bb.0: # %entry769; MM32-NEXT: addiu $2, $zero, -32768770; MM32-NEXT: or16 $2, $4771; MM32-NEXT: jrc $ra772;773; MM32R6-LABEL: or_i16_32768:774; MM32R6: # %bb.0: # %entry775; MM32R6-NEXT: addiu $1, $zero, -32768776; MM32R6-NEXT: or $2, $4, $1777; MM32R6-NEXT: jrc $ra778entry:779 %r = or i16 32768, %b780 ret i16 %r781}782 783define signext i32 @or_i32_32768(i32 signext %b) {784; GP32-LABEL: or_i32_32768:785; GP32: # %bb.0: # %entry786; GP32-NEXT: jr $ra787; GP32-NEXT: ori $2, $4, 32768788;789; GP64-LABEL: or_i32_32768:790; GP64: # %bb.0: # %entry791; GP64-NEXT: ori $1, $4, 32768792; GP64-NEXT: jr $ra793; GP64-NEXT: sll $2, $1, 0794;795; MM32-LABEL: or_i32_32768:796; MM32: # %bb.0: # %entry797; MM32-NEXT: jr $ra798; MM32-NEXT: ori $2, $4, 32768799;800; MM32R6-LABEL: or_i32_32768:801; MM32R6: # %bb.0: # %entry802; MM32R6-NEXT: ori $2, $4, 32768803; MM32R6-NEXT: jrc $ra804entry:805 %r = or i32 32768, %b806 ret i32 %r807}808 809define signext i64 @or_i64_32768(i64 signext %b) {810; GP32-LABEL: or_i64_32768:811; GP32: # %bb.0: # %entry812; GP32-NEXT: ori $3, $5, 32768813; GP32-NEXT: jr $ra814; GP32-NEXT: move $2, $4815;816; GP64-LABEL: or_i64_32768:817; GP64: # %bb.0: # %entry818; GP64-NEXT: jr $ra819; GP64-NEXT: ori $2, $4, 32768820;821; MM32-LABEL: or_i64_32768:822; MM32: # %bb.0: # %entry823; MM32-NEXT: ori $3, $5, 32768824; MM32-NEXT: move $2, $4825; MM32-NEXT: jrc $ra826;827; MM32R6-LABEL: or_i64_32768:828; MM32R6: # %bb.0: # %entry829; MM32R6-NEXT: ori $3, $5, 32768830; MM32R6-NEXT: move $2, $4831; MM32R6-NEXT: jrc $ra832entry:833 %r = or i64 32768, %b834 ret i64 %r835}836 837define signext i128 @or_i128_32768(i128 signext %b) {838; GP32-LABEL: or_i128_32768:839; GP32: # %bb.0: # %entry840; GP32-NEXT: ori $1, $7, 32768841; GP32-NEXT: move $2, $4842; GP32-NEXT: move $3, $5843; GP32-NEXT: move $4, $6844; GP32-NEXT: jr $ra845; GP32-NEXT: move $5, $1846;847; GP64-LABEL: or_i128_32768:848; GP64: # %bb.0: # %entry849; GP64-NEXT: ori $3, $5, 32768850; GP64-NEXT: jr $ra851; GP64-NEXT: move $2, $4852;853; MM32-LABEL: or_i128_32768:854; MM32: # %bb.0: # %entry855; MM32-NEXT: ori $1, $7, 32768856; MM32-NEXT: move $2, $4857; MM32-NEXT: move $3, $5858; MM32-NEXT: move $4, $6859; MM32-NEXT: move $5, $1860; MM32-NEXT: jrc $ra861;862; MM32R6-LABEL: or_i128_32768:863; MM32R6: # %bb.0: # %entry864; MM32R6-NEXT: ori $1, $7, 32768865; MM32R6-NEXT: move $2, $4866; MM32R6-NEXT: move $3, $5867; MM32R6-NEXT: move $4, $6868; MM32R6-NEXT: move $5, $1869; MM32R6-NEXT: jrc $ra870entry:871 %r = or i128 32768, %b872 ret i128 %r873}874 875define signext i1 @or_i1_65(i1 signext %b) {876; GP32-LABEL: or_i1_65:877; GP32: # %bb.0: # %entry878; GP32-NEXT: jr $ra879; GP32-NEXT: addiu $2, $zero, -1880;881; GP64-LABEL: or_i1_65:882; GP64: # %bb.0: # %entry883; GP64-NEXT: jr $ra884; GP64-NEXT: addiu $2, $zero, -1885;886; MM32-LABEL: or_i1_65:887; MM32: # %bb.0: # %entry888; MM32-NEXT: li16 $2, -1889; MM32-NEXT: jrc $ra890;891; MM32R6-LABEL: or_i1_65:892; MM32R6: # %bb.0: # %entry893; MM32R6-NEXT: li16 $2, -1894; MM32R6-NEXT: jrc $ra895entry:896 %r = or i1 65, %b897 ret i1 %r898}899 900define signext i8 @or_i8_65(i8 signext %b) {901; GP32-LABEL: or_i8_65:902; GP32: # %bb.0: # %entry903; GP32-NEXT: jr $ra904; GP32-NEXT: ori $2, $4, 65905;906; GP64-LABEL: or_i8_65:907; GP64: # %bb.0: # %entry908; GP64-NEXT: jr $ra909; GP64-NEXT: ori $2, $4, 65910;911; MM32-LABEL: or_i8_65:912; MM32: # %bb.0: # %entry913; MM32-NEXT: jr $ra914; MM32-NEXT: ori $2, $4, 65915;916; MM32R6-LABEL: or_i8_65:917; MM32R6: # %bb.0: # %entry918; MM32R6-NEXT: ori $2, $4, 65919; MM32R6-NEXT: jrc $ra920entry:921 %r = or i8 65, %b922 ret i8 %r923}924 925define signext i16 @or_i16_65(i16 signext %b) {926; GP32-LABEL: or_i16_65:927; GP32: # %bb.0: # %entry928; GP32-NEXT: jr $ra929; GP32-NEXT: ori $2, $4, 65930;931; GP64-LABEL: or_i16_65:932; GP64: # %bb.0: # %entry933; GP64-NEXT: jr $ra934; GP64-NEXT: ori $2, $4, 65935;936; MM32-LABEL: or_i16_65:937; MM32: # %bb.0: # %entry938; MM32-NEXT: jr $ra939; MM32-NEXT: ori $2, $4, 65940;941; MM32R6-LABEL: or_i16_65:942; MM32R6: # %bb.0: # %entry943; MM32R6-NEXT: ori $2, $4, 65944; MM32R6-NEXT: jrc $ra945entry:946 %r = or i16 65, %b947 ret i16 %r948}949 950define signext i32 @or_i32_65(i32 signext %b) {951; GP32-LABEL: or_i32_65:952; GP32: # %bb.0: # %entry953; GP32-NEXT: jr $ra954; GP32-NEXT: ori $2, $4, 65955;956; GP64-LABEL: or_i32_65:957; GP64: # %bb.0: # %entry958; GP64-NEXT: ori $1, $4, 65959; GP64-NEXT: jr $ra960; GP64-NEXT: sll $2, $1, 0961;962; MM32-LABEL: or_i32_65:963; MM32: # %bb.0: # %entry964; MM32-NEXT: jr $ra965; MM32-NEXT: ori $2, $4, 65966;967; MM32R6-LABEL: or_i32_65:968; MM32R6: # %bb.0: # %entry969; MM32R6-NEXT: ori $2, $4, 65970; MM32R6-NEXT: jrc $ra971entry:972 %r = or i32 65, %b973 ret i32 %r974}975 976define signext i64 @or_i64_65(i64 signext %b) {977; GP32-LABEL: or_i64_65:978; GP32: # %bb.0: # %entry979; GP32-NEXT: ori $3, $5, 65980; GP32-NEXT: jr $ra981; GP32-NEXT: move $2, $4982;983; GP64-LABEL: or_i64_65:984; GP64: # %bb.0: # %entry985; GP64-NEXT: jr $ra986; GP64-NEXT: ori $2, $4, 65987;988; MM32-LABEL: or_i64_65:989; MM32: # %bb.0: # %entry990; MM32-NEXT: ori $3, $5, 65991; MM32-NEXT: move $2, $4992; MM32-NEXT: jrc $ra993;994; MM32R6-LABEL: or_i64_65:995; MM32R6: # %bb.0: # %entry996; MM32R6-NEXT: ori $3, $5, 65997; MM32R6-NEXT: move $2, $4998; MM32R6-NEXT: jrc $ra999entry:1000 %r = or i64 65, %b1001 ret i64 %r1002}1003 1004define signext i128 @or_i128_65(i128 signext %b) {1005; GP32-LABEL: or_i128_65:1006; GP32: # %bb.0: # %entry1007; GP32-NEXT: ori $1, $7, 651008; GP32-NEXT: move $2, $41009; GP32-NEXT: move $3, $51010; GP32-NEXT: move $4, $61011; GP32-NEXT: jr $ra1012; GP32-NEXT: move $5, $11013;1014; GP64-LABEL: or_i128_65:1015; GP64: # %bb.0: # %entry1016; GP64-NEXT: ori $3, $5, 651017; GP64-NEXT: jr $ra1018; GP64-NEXT: move $2, $41019;1020; MM32-LABEL: or_i128_65:1021; MM32: # %bb.0: # %entry1022; MM32-NEXT: ori $1, $7, 651023; MM32-NEXT: move $2, $41024; MM32-NEXT: move $3, $51025; MM32-NEXT: move $4, $61026; MM32-NEXT: move $5, $11027; MM32-NEXT: jrc $ra1028;1029; MM32R6-LABEL: or_i128_65:1030; MM32R6: # %bb.0: # %entry1031; MM32R6-NEXT: ori $1, $7, 651032; MM32R6-NEXT: move $2, $41033; MM32R6-NEXT: move $3, $51034; MM32R6-NEXT: move $4, $61035; MM32R6-NEXT: move $5, $11036; MM32R6-NEXT: jrc $ra1037entry:1038 %r = or i128 65, %b1039 ret i128 %r1040}1041 1042define signext i1 @or_i1_256(i1 signext %b) {1043; GP32-LABEL: or_i1_256:1044; GP32: # %bb.0: # %entry1045; GP32-NEXT: jr $ra1046; GP32-NEXT: move $2, $41047;1048; GP64-LABEL: or_i1_256:1049; GP64: # %bb.0: # %entry1050; GP64-NEXT: jr $ra1051; GP64-NEXT: move $2, $41052;1053; MM32-LABEL: or_i1_256:1054; MM32: # %bb.0: # %entry1055; MM32-NEXT: move $2, $41056; MM32-NEXT: jrc $ra1057;1058; MM32R6-LABEL: or_i1_256:1059; MM32R6: # %bb.0: # %entry1060; MM32R6-NEXT: move $2, $41061; MM32R6-NEXT: jrc $ra1062entry:1063 %r = or i1 256, %b1064 ret i1 %r1065}1066 1067define signext i8 @or_i8_256(i8 signext %b) {1068; GP32-LABEL: or_i8_256:1069; GP32: # %bb.0: # %entry1070; GP32-NEXT: jr $ra1071; GP32-NEXT: move $2, $41072;1073; GP64-LABEL: or_i8_256:1074; GP64: # %bb.0: # %entry1075; GP64-NEXT: jr $ra1076; GP64-NEXT: move $2, $41077;1078; MM32-LABEL: or_i8_256:1079; MM32: # %bb.0: # %entry1080; MM32-NEXT: move $2, $41081; MM32-NEXT: jrc $ra1082;1083; MM32R6-LABEL: or_i8_256:1084; MM32R6: # %bb.0: # %entry1085; MM32R6-NEXT: move $2, $41086; MM32R6-NEXT: jrc $ra1087entry:1088 %r = or i8 256, %b1089 ret i8 %r1090}1091 1092define signext i16 @or_i16_256(i16 signext %b) {1093; GP32-LABEL: or_i16_256:1094; GP32: # %bb.0: # %entry1095; GP32-NEXT: jr $ra1096; GP32-NEXT: ori $2, $4, 2561097;1098; GP64-LABEL: or_i16_256:1099; GP64: # %bb.0: # %entry1100; GP64-NEXT: jr $ra1101; GP64-NEXT: ori $2, $4, 2561102;1103; MM32-LABEL: or_i16_256:1104; MM32: # %bb.0: # %entry1105; MM32-NEXT: jr $ra1106; MM32-NEXT: ori $2, $4, 2561107;1108; MM32R6-LABEL: or_i16_256:1109; MM32R6: # %bb.0: # %entry1110; MM32R6-NEXT: ori $2, $4, 2561111; MM32R6-NEXT: jrc $ra1112entry:1113 %r = or i16 256, %b1114 ret i16 %r1115}1116 1117define signext i32 @or_i32_256(i32 signext %b) {1118; GP32-LABEL: or_i32_256:1119; GP32: # %bb.0: # %entry1120; GP32-NEXT: jr $ra1121; GP32-NEXT: ori $2, $4, 2561122;1123; GP64-LABEL: or_i32_256:1124; GP64: # %bb.0: # %entry1125; GP64-NEXT: ori $1, $4, 2561126; GP64-NEXT: jr $ra1127; GP64-NEXT: sll $2, $1, 01128;1129; MM32-LABEL: or_i32_256:1130; MM32: # %bb.0: # %entry1131; MM32-NEXT: jr $ra1132; MM32-NEXT: ori $2, $4, 2561133;1134; MM32R6-LABEL: or_i32_256:1135; MM32R6: # %bb.0: # %entry1136; MM32R6-NEXT: ori $2, $4, 2561137; MM32R6-NEXT: jrc $ra1138entry:1139 %r = or i32 256, %b1140 ret i32 %r1141}1142 1143define signext i64 @or_i64_256(i64 signext %b) {1144; GP32-LABEL: or_i64_256:1145; GP32: # %bb.0: # %entry1146; GP32-NEXT: ori $3, $5, 2561147; GP32-NEXT: jr $ra1148; GP32-NEXT: move $2, $41149;1150; GP64-LABEL: or_i64_256:1151; GP64: # %bb.0: # %entry1152; GP64-NEXT: jr $ra1153; GP64-NEXT: ori $2, $4, 2561154;1155; MM32-LABEL: or_i64_256:1156; MM32: # %bb.0: # %entry1157; MM32-NEXT: ori $3, $5, 2561158; MM32-NEXT: move $2, $41159; MM32-NEXT: jrc $ra1160;1161; MM32R6-LABEL: or_i64_256:1162; MM32R6: # %bb.0: # %entry1163; MM32R6-NEXT: ori $3, $5, 2561164; MM32R6-NEXT: move $2, $41165; MM32R6-NEXT: jrc $ra1166entry:1167 %r = or i64 256, %b1168 ret i64 %r1169}1170 1171define signext i128 @or_i128_256(i128 signext %b) {1172; GP32-LABEL: or_i128_256:1173; GP32: # %bb.0: # %entry1174; GP32-NEXT: ori $1, $7, 2561175; GP32-NEXT: move $2, $41176; GP32-NEXT: move $3, $51177; GP32-NEXT: move $4, $61178; GP32-NEXT: jr $ra1179; GP32-NEXT: move $5, $11180;1181; GP64-LABEL: or_i128_256:1182; GP64: # %bb.0: # %entry1183; GP64-NEXT: ori $3, $5, 2561184; GP64-NEXT: jr $ra1185; GP64-NEXT: move $2, $41186;1187; MM32-LABEL: or_i128_256:1188; MM32: # %bb.0: # %entry1189; MM32-NEXT: ori $1, $7, 2561190; MM32-NEXT: move $2, $41191; MM32-NEXT: move $3, $51192; MM32-NEXT: move $4, $61193; MM32-NEXT: move $5, $11194; MM32-NEXT: jrc $ra1195;1196; MM32R6-LABEL: or_i128_256:1197; MM32R6: # %bb.0: # %entry1198; MM32R6-NEXT: ori $1, $7, 2561199; MM32R6-NEXT: move $2, $41200; MM32R6-NEXT: move $3, $51201; MM32R6-NEXT: move $4, $61202; MM32R6-NEXT: move $5, $11203; MM32R6-NEXT: jrc $ra1204entry:1205 %r = or i128 256, %b1206 ret i128 %r1207}1208