654 lines · plain
1; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips2 | FileCheck %s -check-prefix=MIPS2; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 | FileCheck %s -check-prefix=MIPS3; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r2 | FileCheck %s \4; RUN: -check-prefix=MIPS32R25; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 | FileCheck %s \6; RUN: -check-prefix=MIPS32R27; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 | FileCheck %s \8; RUN: -check-prefix=MIPS32R29; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 | FileCheck %s \10; RUN: -check-prefix=MIPS32R611; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips3 | FileCheck %s \12; RUN: -check-prefix=MIPS6413; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips4 | FileCheck %s \14; RUN: -check-prefix=MIPS6415; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64 | FileCheck %s \16; RUN: -check-prefix=MIPS6417; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r2 | FileCheck %s \18; RUN: -check-prefix=MIPS64R219; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r3 | FileCheck %s \20; RUN: -check-prefix=MIPS64R221; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r5 | FileCheck %s \22; RUN: -check-prefix=MIPS64R223; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r6 | FileCheck %s \24; RUN: -check-prefix=MIPS64R625; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \26; RUN: -check-prefix=MM32R327; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \28; RUN: -check-prefix=MM32R629 30define signext i1 @xor_i1(i1 signext %a, i1 signext %b) {31; MIPS-LABEL: xor_i1:32; MIPS: # %bb.0: # %entry33; MIPS-NEXT: jr $ra34; MIPS-NEXT: xor $2, $4, $535;36; MIPS32R2-LABEL: xor_i1:37; MIPS32R2: # %bb.0: # %entry38; MIPS32R2-NEXT: jr $ra39; MIPS32R2-NEXT: xor $2, $4, $540;41; MIPS32R6-LABEL: xor_i1:42; MIPS32R6: # %bb.0: # %entry43; MIPS32R6-NEXT: jr $ra44; MIPS32R6-NEXT: xor $2, $4, $545;46; MIPS64-LABEL: xor_i1:47; MIPS64: # %bb.0: # %entry48; MIPS64-NEXT: xor $1, $4, $549; MIPS64-NEXT: jr $ra50; MIPS64-NEXT: sll $2, $1, 051;52; MIPS64R2-LABEL: xor_i1:53; MIPS64R2: # %bb.0: # %entry54; MIPS64R2-NEXT: xor $1, $4, $555; MIPS64R2-NEXT: jr $ra56; MIPS64R2-NEXT: sll $2, $1, 057;58; MIPS64R6-LABEL: xor_i1:59; MIPS64R6: # %bb.0: # %entry60; MIPS64R6-NEXT: xor $1, $4, $561; MIPS64R6-NEXT: jr $ra62; MIPS64R6-NEXT: sll $2, $1, 063;64; MM32R3-LABEL: xor_i1:65; MM32R3: # %bb.0: # %entry66; MM32R3-NEXT: xor16 $4, $567; MM32R3-NEXT: move $2, $468; MM32R3-NEXT: jrc $ra69;70; MM32R6-LABEL: xor_i1:71; MM32R6: # %bb.0: # %entry72; MM32R6-NEXT: xor $2, $4, $573; MM32R6-NEXT: jrc $ra74entry:75 %r = xor i1 %a, %b76 ret i1 %r77}78 79define signext i8 @xor_i8(i8 signext %a, i8 signext %b) {80; MIPS-LABEL: xor_i8:81; MIPS: # %bb.0: # %entry82; MIPS-NEXT: jr $ra83; MIPS-NEXT: xor $2, $4, $584;85; MIPS32R2-LABEL: xor_i8:86; MIPS32R2: # %bb.0: # %entry87; MIPS32R2-NEXT: jr $ra88; MIPS32R2-NEXT: xor $2, $4, $589;90; MIPS32R6-LABEL: xor_i8:91; MIPS32R6: # %bb.0: # %entry92; MIPS32R6-NEXT: jr $ra93; MIPS32R6-NEXT: xor $2, $4, $594;95; MIPS64-LABEL: xor_i8:96; MIPS64: # %bb.0: # %entry97; MIPS64-NEXT: xor $1, $4, $598; MIPS64-NEXT: jr $ra99; MIPS64-NEXT: sll $2, $1, 0100;101; MIPS64R2-LABEL: xor_i8:102; MIPS64R2: # %bb.0: # %entry103; MIPS64R2-NEXT: xor $1, $4, $5104; MIPS64R2-NEXT: jr $ra105; MIPS64R2-NEXT: sll $2, $1, 0106;107; MIPS64R6-LABEL: xor_i8:108; MIPS64R6: # %bb.0: # %entry109; MIPS64R6-NEXT: xor $1, $4, $5110; MIPS64R6-NEXT: jr $ra111; MIPS64R6-NEXT: sll $2, $1, 0112;113; MM32R3-LABEL: xor_i8:114; MM32R3: # %bb.0: # %entry115; MM32R3-NEXT: xor16 $4, $5116; MM32R3-NEXT: move $2, $4117; MM32R3-NEXT: jrc $ra118;119; MM32R6-LABEL: xor_i8:120; MM32R6: # %bb.0: # %entry121; MM32R6-NEXT: xor $2, $4, $5122; MM32R6-NEXT: jrc $ra123entry:124 %r = xor i8 %a, %b125 ret i8 %r126}127 128define signext i16 @xor_i16(i16 signext %a, i16 signext %b) {129; MIPS-LABEL: xor_i16:130; MIPS: # %bb.0: # %entry131; MIPS-NEXT: jr $ra132; MIPS-NEXT: xor $2, $4, $5133;134; MIPS32R2-LABEL: xor_i16:135; MIPS32R2: # %bb.0: # %entry136; MIPS32R2-NEXT: jr $ra137; MIPS32R2-NEXT: xor $2, $4, $5138;139; MIPS32R6-LABEL: xor_i16:140; MIPS32R6: # %bb.0: # %entry141; MIPS32R6-NEXT: jr $ra142; MIPS32R6-NEXT: xor $2, $4, $5143;144; MIPS64-LABEL: xor_i16:145; MIPS64: # %bb.0: # %entry146; MIPS64-NEXT: xor $1, $4, $5147; MIPS64-NEXT: jr $ra148; MIPS64-NEXT: sll $2, $1, 0149;150; MIPS64R2-LABEL: xor_i16:151; MIPS64R2: # %bb.0: # %entry152; MIPS64R2-NEXT: xor $1, $4, $5153; MIPS64R2-NEXT: jr $ra154; MIPS64R2-NEXT: sll $2, $1, 0155;156; MIPS64R6-LABEL: xor_i16:157; MIPS64R6: # %bb.0: # %entry158; MIPS64R6-NEXT: xor $1, $4, $5159; MIPS64R6-NEXT: jr $ra160; MIPS64R6-NEXT: sll $2, $1, 0161;162; MM32R3-LABEL: xor_i16:163; MM32R3: # %bb.0: # %entry164; MM32R3-NEXT: xor16 $4, $5165; MM32R3-NEXT: move $2, $4166; MM32R3-NEXT: jrc $ra167;168; MM32R6-LABEL: xor_i16:169; MM32R6: # %bb.0: # %entry170; MM32R6-NEXT: xor $2, $4, $5171; MM32R6-NEXT: jrc $ra172entry:173 %r = xor i16 %a, %b174 ret i16 %r175}176 177define signext i32 @xor_i32(i32 signext %a, i32 signext %b) {178; MIPS-LABEL: xor_i32:179; MIPS: # %bb.0: # %entry180; MIPS-NEXT: jr $ra181; MIPS-NEXT: xor $2, $4, $5182;183; MIPS32R2-LABEL: xor_i32:184; MIPS32R2: # %bb.0: # %entry185; MIPS32R2-NEXT: jr $ra186; MIPS32R2-NEXT: xor $2, $4, $5187;188; MIPS32R6-LABEL: xor_i32:189; MIPS32R6: # %bb.0: # %entry190; MIPS32R6-NEXT: jr $ra191; MIPS32R6-NEXT: xor $2, $4, $5192;193; MIPS64-LABEL: xor_i32:194; MIPS64: # %bb.0: # %entry195; MIPS64-NEXT: jr $ra196; MIPS64-NEXT: xor $2, $4, $5197;198; MIPS64R2-LABEL: xor_i32:199; MIPS64R2: # %bb.0: # %entry200; MIPS64R2-NEXT: jr $ra201; MIPS64R2-NEXT: xor $2, $4, $5202;203; MIPS64R6-LABEL: xor_i32:204; MIPS64R6: # %bb.0: # %entry205; MIPS64R6-NEXT: jr $ra206; MIPS64R6-NEXT: xor $2, $4, $5207;208; MM32R3-LABEL: xor_i32:209; MM32R3: # %bb.0: # %entry210; MM32R3-NEXT: xor16 $4, $5211; MM32R3-NEXT: move $2, $4212; MM32R3-NEXT: jrc $ra213;214; MM32R6-LABEL: xor_i32:215; MM32R6: # %bb.0: # %entry216; MM32R6-NEXT: xor $2, $4, $5217; MM32R6-NEXT: jrc $ra218entry:219 %r = xor i32 %a, %b220 ret i32 %r221}222 223define signext i64 @xor_i64(i64 signext %a, i64 signext %b) {224; MIPS-LABEL: xor_i64:225; MIPS: # %bb.0: # %entry226; MIPS-NEXT: xor $2, $4, $6227; MIPS-NEXT: jr $ra228; MIPS-NEXT: xor $3, $5, $7229;230; MIPS32R2-LABEL: xor_i64:231; MIPS32R2: # %bb.0: # %entry232; MIPS32R2-NEXT: xor $2, $4, $6233; MIPS32R2-NEXT: jr $ra234; MIPS32R2-NEXT: xor $3, $5, $7235;236; MIPS32R6-LABEL: xor_i64:237; MIPS32R6: # %bb.0: # %entry238; MIPS32R6-NEXT: xor $2, $4, $6239; MIPS32R6-NEXT: jr $ra240; MIPS32R6-NEXT: xor $3, $5, $7241;242; MIPS64-LABEL: xor_i64:243; MIPS64: # %bb.0: # %entry244; MIPS64-NEXT: jr $ra245; MIPS64-NEXT: xor $2, $4, $5246;247; MIPS64R2-LABEL: xor_i64:248; MIPS64R2: # %bb.0: # %entry249; MIPS64R2-NEXT: jr $ra250; MIPS64R2-NEXT: xor $2, $4, $5251;252; MIPS64R6-LABEL: xor_i64:253; MIPS64R6: # %bb.0: # %entry254; MIPS64R6-NEXT: jr $ra255; MIPS64R6-NEXT: xor $2, $4, $5256;257; MM32R3-LABEL: xor_i64:258; MM32R3: # %bb.0: # %entry259; MM32R3-NEXT: xor16 $4, $6260; MM32R3-NEXT: xor16 $5, $7261; MM32R3-NEXT: move $2, $4262; MM32R3-NEXT: move $3, $5263; MM32R3-NEXT: jrc $ra264;265; MM32R6-LABEL: xor_i64:266; MM32R6: # %bb.0: # %entry267; MM32R6-NEXT: xor $2, $4, $6268; MM32R6-NEXT: xor $3, $5, $7269; MM32R6-NEXT: jrc $ra270entry:271 %r = xor i64 %a, %b272 ret i64 %r273}274 275define signext i128 @xor_i128(i128 signext %a, i128 signext %b) {276; MIPS-LABEL: xor_i128:277; MIPS: # %bb.0: # %entry278; MIPS-NEXT: lw $1, 20($sp)279; MIPS-NEXT: lw $2, 16($sp)280; MIPS-NEXT: xor $2, $4, $2281; MIPS-NEXT: xor $3, $5, $1282; MIPS-NEXT: lw $1, 24($sp)283; MIPS-NEXT: xor $4, $6, $1284; MIPS-NEXT: lw $1, 28($sp)285; MIPS-NEXT: jr $ra286; MIPS-NEXT: xor $5, $7, $1287;288; MIPS32R2-LABEL: xor_i128:289; MIPS32R2: # %bb.0: # %entry290; MIPS32R2-NEXT: lw $1, 20($sp)291; MIPS32R2-NEXT: lw $2, 16($sp)292; MIPS32R2-NEXT: xor $2, $4, $2293; MIPS32R2-NEXT: xor $3, $5, $1294; MIPS32R2-NEXT: lw $1, 24($sp)295; MIPS32R2-NEXT: xor $4, $6, $1296; MIPS32R2-NEXT: lw $1, 28($sp)297; MIPS32R2-NEXT: jr $ra298; MIPS32R2-NEXT: xor $5, $7, $1299;300; MIPS32R6-LABEL: xor_i128:301; MIPS32R6: # %bb.0: # %entry302; MIPS32R6-NEXT: lw $1, 20($sp)303; MIPS32R6-NEXT: lw $2, 16($sp)304; MIPS32R6-NEXT: xor $2, $4, $2305; MIPS32R6-NEXT: xor $3, $5, $1306; MIPS32R6-NEXT: lw $1, 24($sp)307; MIPS32R6-NEXT: xor $4, $6, $1308; MIPS32R6-NEXT: lw $1, 28($sp)309; MIPS32R6-NEXT: jr $ra310; MIPS32R6-NEXT: xor $5, $7, $1311;312; MIPS64-LABEL: xor_i128:313; MIPS64: # %bb.0: # %entry314; MIPS64-NEXT: xor $2, $4, $6315; MIPS64-NEXT: jr $ra316; MIPS64-NEXT: xor $3, $5, $7317;318; MIPS64R2-LABEL: xor_i128:319; MIPS64R2: # %bb.0: # %entry320; MIPS64R2-NEXT: xor $2, $4, $6321; MIPS64R2-NEXT: jr $ra322; MIPS64R2-NEXT: xor $3, $5, $7323;324; MIPS64R6-LABEL: xor_i128:325; MIPS64R6: # %bb.0: # %entry326; MIPS64R6-NEXT: xor $2, $4, $6327; MIPS64R6-NEXT: jr $ra328; MIPS64R6-NEXT: xor $3, $5, $7329;330; MM32R3-LABEL: xor_i128:331; MM32R3: # %bb.0: # %entry332; MM32R3-NEXT: lwp $2, 16($sp)333; MM32R3-NEXT: xor16 $2, $4334; MM32R3-NEXT: xor16 $3, $5335; MM32R3-NEXT: lw $4, 24($sp)336; MM32R3-NEXT: xor16 $4, $6337; MM32R3-NEXT: lw $5, 28($sp)338; MM32R3-NEXT: xor16 $5, $7339; MM32R3-NEXT: jrc $ra340;341; MM32R6-LABEL: xor_i128:342; MM32R6: # %bb.0: # %entry343; MM32R6-NEXT: lw $1, 20($sp)344; MM32R6-NEXT: lw $2, 16($sp)345; MM32R6-NEXT: xor $2, $4, $2346; MM32R6-NEXT: xor $3, $5, $1347; MM32R6-NEXT: lw $1, 24($sp)348; MM32R6-NEXT: xor $4, $6, $1349; MM32R6-NEXT: lw $1, 28($sp)350; MM32R6-NEXT: xor $5, $7, $1351; MM32R6-NEXT: jrc $ra352entry:353 %r = xor i128 %a, %b354 ret i128 %r355}356 357define signext i1 @xor_i1_4(i1 signext %b) {358; MIPS-LABEL: xor_i1_4:359; MIPS: # %bb.0: # %entry360; MIPS-NEXT: jr $ra361; MIPS-NEXT: move $2, $4362;363; MIPS32R2-LABEL: xor_i1_4:364; MIPS32R2: # %bb.0: # %entry365; MIPS32R2-NEXT: jr $ra366; MIPS32R2-NEXT: move $2, $4367;368; MIPS32R6-LABEL: xor_i1_4:369; MIPS32R6: # %bb.0: # %entry370; MIPS32R6-NEXT: jr $ra371; MIPS32R6-NEXT: move $2, $4372;373; MIPS64-LABEL: xor_i1_4:374; MIPS64: # %bb.0: # %entry375; MIPS64-NEXT: jr $ra376; MIPS64-NEXT: move $2, $4377;378; MIPS64R2-LABEL: xor_i1_4:379; MIPS64R2: # %bb.0: # %entry380; MIPS64R2-NEXT: jr $ra381; MIPS64R2-NEXT: move $2, $4382;383; MIPS64R6-LABEL: xor_i1_4:384; MIPS64R6: # %bb.0: # %entry385; MIPS64R6-NEXT: jr $ra386; MIPS64R6-NEXT: move $2, $4387;388; MM32R3-LABEL: xor_i1_4:389; MM32R3: # %bb.0: # %entry390; MM32R3-NEXT: move $2, $4391; MM32R3-NEXT: jrc $ra392;393; MM32R6-LABEL: xor_i1_4:394; MM32R6: # %bb.0: # %entry395; MM32R6-NEXT: move $2, $4396; MM32R6-NEXT: jrc $ra397entry:398 %r = xor i1 4, %b399 ret i1 %r400}401 402define signext i8 @xor_i8_4(i8 signext %b) {403; MIPS-LABEL: xor_i8_4:404; MIPS: # %bb.0: # %entry405; MIPS-NEXT: jr $ra406; MIPS-NEXT: xori $2, $4, 4407;408; MIPS32R2-LABEL: xor_i8_4:409; MIPS32R2: # %bb.0: # %entry410; MIPS32R2-NEXT: jr $ra411; MIPS32R2-NEXT: xori $2, $4, 4412;413; MIPS32R6-LABEL: xor_i8_4:414; MIPS32R6: # %bb.0: # %entry415; MIPS32R6-NEXT: jr $ra416; MIPS32R6-NEXT: xori $2, $4, 4417;418; MIPS64-LABEL: xor_i8_4:419; MIPS64: # %bb.0: # %entry420; MIPS64-NEXT: jr $ra421; MIPS64-NEXT: xori $2, $4, 4422;423; MIPS64R2-LABEL: xor_i8_4:424; MIPS64R2: # %bb.0: # %entry425; MIPS64R2-NEXT: jr $ra426; MIPS64R2-NEXT: xori $2, $4, 4427;428; MIPS64R6-LABEL: xor_i8_4:429; MIPS64R6: # %bb.0: # %entry430; MIPS64R6-NEXT: jr $ra431; MIPS64R6-NEXT: xori $2, $4, 4432;433; MM32R3-LABEL: xor_i8_4:434; MM32R3: # %bb.0: # %entry435; MM32R3-NEXT: jr $ra436; MM32R3-NEXT: xori $2, $4, 4437;438; MM32R6-LABEL: xor_i8_4:439; MM32R6: # %bb.0: # %entry440; MM32R6-NEXT: xori $2, $4, 4441; MM32R6-NEXT: jrc $ra442entry:443 %r = xor i8 4, %b444 ret i8 %r445}446 447define signext i16 @xor_i16_4(i16 signext %b) {448; MIPS-LABEL: xor_i16_4:449; MIPS: # %bb.0: # %entry450; MIPS-NEXT: jr $ra451; MIPS-NEXT: xori $2, $4, 4452;453; MIPS32R2-LABEL: xor_i16_4:454; MIPS32R2: # %bb.0: # %entry455; MIPS32R2-NEXT: jr $ra456; MIPS32R2-NEXT: xori $2, $4, 4457;458; MIPS32R6-LABEL: xor_i16_4:459; MIPS32R6: # %bb.0: # %entry460; MIPS32R6-NEXT: jr $ra461; MIPS32R6-NEXT: xori $2, $4, 4462;463; MIPS64-LABEL: xor_i16_4:464; MIPS64: # %bb.0: # %entry465; MIPS64-NEXT: jr $ra466; MIPS64-NEXT: xori $2, $4, 4467;468; MIPS64R2-LABEL: xor_i16_4:469; MIPS64R2: # %bb.0: # %entry470; MIPS64R2-NEXT: jr $ra471; MIPS64R2-NEXT: xori $2, $4, 4472;473; MIPS64R6-LABEL: xor_i16_4:474; MIPS64R6: # %bb.0: # %entry475; MIPS64R6-NEXT: jr $ra476; MIPS64R6-NEXT: xori $2, $4, 4477;478; MM32R3-LABEL: xor_i16_4:479; MM32R3: # %bb.0: # %entry480; MM32R3-NEXT: jr $ra481; MM32R3-NEXT: xori $2, $4, 4482;483; MM32R6-LABEL: xor_i16_4:484; MM32R6: # %bb.0: # %entry485; MM32R6-NEXT: xori $2, $4, 4486; MM32R6-NEXT: jrc $ra487entry:488 %r = xor i16 4, %b489 ret i16 %r490}491 492define signext i32 @xor_i32_4(i32 signext %b) {493; MIPS-LABEL: xor_i32_4:494; MIPS: # %bb.0: # %entry495; MIPS-NEXT: jr $ra496; MIPS-NEXT: xori $2, $4, 4497;498; MIPS32R2-LABEL: xor_i32_4:499; MIPS32R2: # %bb.0: # %entry500; MIPS32R2-NEXT: jr $ra501; MIPS32R2-NEXT: xori $2, $4, 4502;503; MIPS32R6-LABEL: xor_i32_4:504; MIPS32R6: # %bb.0: # %entry505; MIPS32R6-NEXT: jr $ra506; MIPS32R6-NEXT: xori $2, $4, 4507;508; MIPS64-LABEL: xor_i32_4:509; MIPS64: # %bb.0: # %entry510; MIPS64-NEXT: jr $ra511; MIPS64-NEXT: xori $2, $4, 4512;513; MIPS64R2-LABEL: xor_i32_4:514; MIPS64R2: # %bb.0: # %entry515; MIPS64R2-NEXT: jr $ra516; MIPS64R2-NEXT: xori $2, $4, 4517;518; MIPS64R6-LABEL: xor_i32_4:519; MIPS64R6: # %bb.0: # %entry520; MIPS64R6-NEXT: jr $ra521; MIPS64R6-NEXT: xori $2, $4, 4522;523; MM32R3-LABEL: xor_i32_4:524; MM32R3: # %bb.0: # %entry525; MM32R3-NEXT: jr $ra526; MM32R3-NEXT: xori $2, $4, 4527;528; MM32R6-LABEL: xor_i32_4:529; MM32R6: # %bb.0: # %entry530; MM32R6-NEXT: xori $2, $4, 4531; MM32R6-NEXT: jrc $ra532entry:533 %r = xor i32 4, %b534 ret i32 %r535}536 537define signext i64 @xor_i64_4(i64 signext %b) {538; MIPS-LABEL: xor_i64_4:539; MIPS: # %bb.0: # %entry540; MIPS-NEXT: xori $3, $5, 4541; MIPS-NEXT: jr $ra542; MIPS-NEXT: move $2, $4543;544; MIPS32R2-LABEL: xor_i64_4:545; MIPS32R2: # %bb.0: # %entry546; MIPS32R2-NEXT: xori $3, $5, 4547; MIPS32R2-NEXT: jr $ra548; MIPS32R2-NEXT: move $2, $4549;550; MIPS32R6-LABEL: xor_i64_4:551; MIPS32R6: # %bb.0: # %entry552; MIPS32R6-NEXT: xori $3, $5, 4553; MIPS32R6-NEXT: jr $ra554; MIPS32R6-NEXT: move $2, $4555;556; MIPS64-LABEL: xor_i64_4:557; MIPS64: # %bb.0: # %entry558; MIPS64-NEXT: jr $ra559; MIPS64-NEXT: xori $2, $4, 4560;561; MIPS64R2-LABEL: xor_i64_4:562; MIPS64R2: # %bb.0: # %entry563; MIPS64R2-NEXT: jr $ra564; MIPS64R2-NEXT: xori $2, $4, 4565;566; MIPS64R6-LABEL: xor_i64_4:567; MIPS64R6: # %bb.0: # %entry568; MIPS64R6-NEXT: jr $ra569; MIPS64R6-NEXT: xori $2, $4, 4570;571; MM32R3-LABEL: xor_i64_4:572; MM32R3: # %bb.0: # %entry573; MM32R3-NEXT: xori $3, $5, 4574; MM32R3-NEXT: move $2, $4575; MM32R3-NEXT: jrc $ra576;577; MM32R6-LABEL: xor_i64_4:578; MM32R6: # %bb.0: # %entry579; MM32R6-NEXT: xori $3, $5, 4580; MM32R6-NEXT: move $2, $4581; MM32R6-NEXT: jrc $ra582entry:583 %r = xor i64 4, %b584 ret i64 %r585}586 587define signext i128 @xor_i128_4(i128 signext %b) {588; MIPS-LABEL: xor_i128_4:589; MIPS: # %bb.0: # %entry590; MIPS-NEXT: xori $1, $7, 4591; MIPS-NEXT: move $2, $4592; MIPS-NEXT: move $3, $5593; MIPS-NEXT: move $4, $6594; MIPS-NEXT: jr $ra595; MIPS-NEXT: move $5, $1596;597; MIPS32R2-LABEL: xor_i128_4:598; MIPS32R2: # %bb.0: # %entry599; MIPS32R2-NEXT: xori $1, $7, 4600; MIPS32R2-NEXT: move $2, $4601; MIPS32R2-NEXT: move $3, $5602; MIPS32R2-NEXT: move $4, $6603; MIPS32R2-NEXT: jr $ra604; MIPS32R2-NEXT: move $5, $1605;606; MIPS32R6-LABEL: xor_i128_4:607; MIPS32R6: # %bb.0: # %entry608; MIPS32R6-NEXT: xori $1, $7, 4609; MIPS32R6-NEXT: move $2, $4610; MIPS32R6-NEXT: move $3, $5611; MIPS32R6-NEXT: move $4, $6612; MIPS32R6-NEXT: jr $ra613; MIPS32R6-NEXT: move $5, $1614;615; MIPS64-LABEL: xor_i128_4:616; MIPS64: # %bb.0: # %entry617; MIPS64-NEXT: xori $3, $5, 4618; MIPS64-NEXT: jr $ra619; MIPS64-NEXT: move $2, $4620;621; MIPS64R2-LABEL: xor_i128_4:622; MIPS64R2: # %bb.0: # %entry623; MIPS64R2-NEXT: xori $3, $5, 4624; MIPS64R2-NEXT: jr $ra625; MIPS64R2-NEXT: move $2, $4626;627; MIPS64R6-LABEL: xor_i128_4:628; MIPS64R6: # %bb.0: # %entry629; MIPS64R6-NEXT: xori $3, $5, 4630; MIPS64R6-NEXT: jr $ra631; MIPS64R6-NEXT: move $2, $4632;633; MM32R3-LABEL: xor_i128_4:634; MM32R3: # %bb.0: # %entry635; MM32R3-NEXT: xori $1, $7, 4636; MM32R3-NEXT: move $2, $4637; MM32R3-NEXT: move $3, $5638; MM32R3-NEXT: move $4, $6639; MM32R3-NEXT: move $5, $1640; MM32R3-NEXT: jrc $ra641;642; MM32R6-LABEL: xor_i128_4:643; MM32R6: # %bb.0: # %entry644; MM32R6-NEXT: xori $1, $7, 4645; MM32R6-NEXT: move $2, $4646; MM32R6-NEXT: move $3, $5647; MM32R6-NEXT: move $4, $6648; MM32R6-NEXT: move $5, $1649; MM32R6-NEXT: jrc $ra650entry:651 %r = xor i128 4, %b652 ret i128 %r653}654