6555 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 -disable-mips-delay-filler | FileCheck %s --check-prefixes=MIPS32,MIPS32EB3; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -relocation-model=pic -mcpu=mips64 -disable-mips-delay-filler -mips-jalr-reloc=false | FileCheck %s --check-prefixes=MIPS64,MIPS64EB4; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 -mattr=+fp64,+msa -disable-mips-delay-filler | FileCheck %s --check-prefixes=MIPS32R5,MIPS32R5EB5; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -relocation-model=pic -mcpu=mips64r5 -mattr=+fp64,+msa -disable-mips-delay-filler -mips-jalr-reloc=false | FileCheck %s --check-prefixes=MIPS64R5,MIPS64R5EB6; RUN: llc < %s -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32 -disable-mips-delay-filler | FileCheck %s --check-prefixes=MIPS32,MIPS32EL7; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -relocation-model=pic -mcpu=mips64 -disable-mips-delay-filler -mips-jalr-reloc=false | FileCheck %s --check-prefixes=MIPS64,MIPS64EL8; RUN: llc < %s -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r5 -mattr=+fp64,+msa -disable-mips-delay-filler | FileCheck %s --check-prefixes=MIPS32R5,MIPS32R5EL9; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -relocation-model=pic -mcpu=mips64r5 -mattr=+fp64,+msa -disable-mips-delay-filler -mips-jalr-reloc=false | FileCheck %s --check-prefixes=MIPS64R5,MIPS64R5EL10 11; Test that vector types are passed through the integer register set whether or12; not MSA is enabled. This is a ABI requirement for MIPS. For GCC compatibility13; we need to handle any power of 2 number of elements. We will test this14; exhaustively for combinations up to MSA register (128 bits) size.15 16; First set of tests are for argument passing.17 18define <2 x i8> @i8_2(<2 x i8> %a, <2 x i8> %b) {19; MIPS32-LABEL: i8_2:20; MIPS32: # %bb.0:21; MIPS32-NEXT: addu $1, $4, $522; MIPS32-NEXT: andi $1, $1, 25523; MIPS32-NEXT: andi $2, $5, 6528024; MIPS32-NEXT: srl $2, $2, 825; MIPS32-NEXT: andi $3, $4, 6528026; MIPS32-NEXT: srl $3, $3, 827; MIPS32-NEXT: addu $2, $3, $228; MIPS32-NEXT: sll $2, $2, 829; MIPS32-NEXT: or $2, $1, $230; MIPS32-NEXT: jr $ra31; MIPS32-NEXT: nop32;33; MIPS64-LABEL: i8_2:34; MIPS64: # %bb.0:35; MIPS64-NEXT: sll $1, $5, 036; MIPS64-NEXT: sll $2, $4, 037; MIPS64-NEXT: addu $3, $2, $138; MIPS64-NEXT: andi $3, $3, 25539; MIPS64-NEXT: andi $1, $1, 6528040; MIPS64-NEXT: srl $1, $1, 841; MIPS64-NEXT: andi $2, $2, 6528042; MIPS64-NEXT: srl $2, $2, 843; MIPS64-NEXT: addu $1, $2, $144; MIPS64-NEXT: sll $1, $1, 845; MIPS64-NEXT: or $2, $3, $146; MIPS64-NEXT: jr $ra47; MIPS64-NEXT: nop48;49; MIPS32R5EB-LABEL: i8_2:50; MIPS32R5EB: # %bb.0:51; MIPS32R5EB-NEXT: addiu $sp, $sp, -4852; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 4853; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill54; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill55; MIPS32R5EB-NEXT: .cfi_offset 31, -456; MIPS32R5EB-NEXT: .cfi_offset 30, -857; MIPS32R5EB-NEXT: move $fp, $sp58; MIPS32R5EB-NEXT: .cfi_def_cfa_register 3059; MIPS32R5EB-NEXT: addiu $1, $zero, -1660; MIPS32R5EB-NEXT: and $sp, $sp, $161; MIPS32R5EB-NEXT: sh $5, 16($sp)62; MIPS32R5EB-NEXT: sh $4, 0($sp)63; MIPS32R5EB-NEXT: ld.b $w0, 16($sp)64; MIPS32R5EB-NEXT: ld.b $w1, 0($sp)65; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w066; MIPS32R5EB-NEXT: shf.b $w0, $w0, 17767; MIPS32R5EB-NEXT: copy_u.h $2, $w0[0]68; MIPS32R5EB-NEXT: move $sp, $fp69; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload70; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload71; MIPS32R5EB-NEXT: addiu $sp, $sp, 4872; MIPS32R5EB-NEXT: jr $ra73; MIPS32R5EB-NEXT: nop74;75; MIPS64R5EB-LABEL: i8_2:76; MIPS64R5EB: # %bb.0:77; MIPS64R5EB-NEXT: daddiu $sp, $sp, -4878; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 4879; MIPS64R5EB-NEXT: sh $5, 16($sp)80; MIPS64R5EB-NEXT: sh $4, 0($sp)81; MIPS64R5EB-NEXT: ld.b $w0, 16($sp)82; MIPS64R5EB-NEXT: ld.b $w1, 0($sp)83; MIPS64R5EB-NEXT: addv.b $w0, $w1, $w084; MIPS64R5EB-NEXT: shf.b $w0, $w0, 17785; MIPS64R5EB-NEXT: copy_s.h $1, $w0[0]86; MIPS64R5EB-NEXT: sh $1, 44($sp)87; MIPS64R5EB-NEXT: lh $2, 44($sp)88; MIPS64R5EB-NEXT: daddiu $sp, $sp, 4889; MIPS64R5EB-NEXT: jr $ra90; MIPS64R5EB-NEXT: nop91;92; MIPS32R5EL-LABEL: i8_2:93; MIPS32R5EL: # %bb.0:94; MIPS32R5EL-NEXT: addiu $sp, $sp, -4895; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 4896; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill97; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill98; MIPS32R5EL-NEXT: .cfi_offset 31, -499; MIPS32R5EL-NEXT: .cfi_offset 30, -8100; MIPS32R5EL-NEXT: move $fp, $sp101; MIPS32R5EL-NEXT: .cfi_def_cfa_register 30102; MIPS32R5EL-NEXT: addiu $1, $zero, -16103; MIPS32R5EL-NEXT: and $sp, $sp, $1104; MIPS32R5EL-NEXT: sh $5, 16($sp)105; MIPS32R5EL-NEXT: sh $4, 0($sp)106; MIPS32R5EL-NEXT: ld.b $w0, 16($sp)107; MIPS32R5EL-NEXT: ld.b $w1, 0($sp)108; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0109; MIPS32R5EL-NEXT: copy_u.h $2, $w0[0]110; MIPS32R5EL-NEXT: move $sp, $fp111; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload112; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload113; MIPS32R5EL-NEXT: addiu $sp, $sp, 48114; MIPS32R5EL-NEXT: jr $ra115; MIPS32R5EL-NEXT: nop116;117; MIPS64R5EL-LABEL: i8_2:118; MIPS64R5EL: # %bb.0:119; MIPS64R5EL-NEXT: daddiu $sp, $sp, -48120; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 48121; MIPS64R5EL-NEXT: sh $5, 16($sp)122; MIPS64R5EL-NEXT: sh $4, 0($sp)123; MIPS64R5EL-NEXT: ld.b $w0, 16($sp)124; MIPS64R5EL-NEXT: ld.b $w1, 0($sp)125; MIPS64R5EL-NEXT: addv.b $w0, $w1, $w0126; MIPS64R5EL-NEXT: copy_s.h $1, $w0[0]127; MIPS64R5EL-NEXT: sh $1, 44($sp)128; MIPS64R5EL-NEXT: lh $2, 44($sp)129; MIPS64R5EL-NEXT: daddiu $sp, $sp, 48130; MIPS64R5EL-NEXT: jr $ra131; MIPS64R5EL-NEXT: nop132 %1 = add <2 x i8> %a, %b133 ret <2 x i8> %1134}135 136; Test that vector spilled to the outgoing argument area have the expected137; offset from $sp.138 139define <2 x i8> @i8x2_7(<2 x i8> %a, <2 x i8> %b, <2 x i8> %c, <2 x i8> %d, <2 x i8> %e, <2 x i8> %f, <2 x i8> %g) {140; MIPS32EB-LABEL: i8x2_7:141; MIPS32EB: # %bb.0: # %entry142; MIPS32EB-NEXT: addu $1, $4, $5143; MIPS32EB-NEXT: addu $1, $1, $6144; MIPS32EB-NEXT: addu $1, $1, $7145; MIPS32EB-NEXT: andi $2, $5, 65280146; MIPS32EB-NEXT: lbu $3, 19($sp)147; MIPS32EB-NEXT: addu $1, $1, $3148; MIPS32EB-NEXT: srl $2, $2, 8149; MIPS32EB-NEXT: andi $3, $4, 65280150; MIPS32EB-NEXT: srl $3, $3, 8151; MIPS32EB-NEXT: addu $2, $3, $2152; MIPS32EB-NEXT: andi $3, $6, 65280153; MIPS32EB-NEXT: srl $3, $3, 8154; MIPS32EB-NEXT: lbu $4, 23($sp)155; MIPS32EB-NEXT: addu $2, $2, $3156; MIPS32EB-NEXT: addu $1, $1, $4157; MIPS32EB-NEXT: lbu $3, 27($sp)158; MIPS32EB-NEXT: addu $1, $1, $3159; MIPS32EB-NEXT: andi $3, $7, 65280160; MIPS32EB-NEXT: srl $3, $3, 8161; MIPS32EB-NEXT: lbu $4, 26($sp)162; MIPS32EB-NEXT: andi $1, $1, 255163; MIPS32EB-NEXT: addu $2, $2, $3164; MIPS32EB-NEXT: lbu $3, 18($sp)165; MIPS32EB-NEXT: addu $2, $2, $3166; MIPS32EB-NEXT: lbu $3, 22($sp)167; MIPS32EB-NEXT: addu $2, $2, $3168; MIPS32EB-NEXT: addu $2, $2, $4169; MIPS32EB-NEXT: sll $2, $2, 8170; MIPS32EB-NEXT: or $2, $1, $2171; MIPS32EB-NEXT: jr $ra172; MIPS32EB-NEXT: nop173;174; MIPS64-LABEL: i8x2_7:175; MIPS64: # %bb.0: # %entry176; MIPS64-NEXT: sll $1, $5, 0177; MIPS64-NEXT: sll $2, $4, 0178; MIPS64-NEXT: addu $3, $2, $1179; MIPS64-NEXT: sll $4, $6, 0180; MIPS64-NEXT: andi $1, $1, 65280181; MIPS64-NEXT: srl $1, $1, 8182; MIPS64-NEXT: andi $2, $2, 65280183; MIPS64-NEXT: srl $2, $2, 8184; MIPS64-NEXT: addu $1, $2, $1185; MIPS64-NEXT: addu $2, $3, $4186; MIPS64-NEXT: sll $3, $7, 0187; MIPS64-NEXT: andi $5, $3, 65280188; MIPS64-NEXT: andi $4, $4, 65280189; MIPS64-NEXT: srl $4, $4, 8190; MIPS64-NEXT: addu $2, $2, $3191; MIPS64-NEXT: addu $1, $1, $4192; MIPS64-NEXT: srl $3, $5, 8193; MIPS64-NEXT: sll $4, $8, 0194; MIPS64-NEXT: andi $5, $4, 65280195; MIPS64-NEXT: srl $5, $5, 8196; MIPS64-NEXT: addu $1, $1, $3197; MIPS64-NEXT: addu $2, $2, $4198; MIPS64-NEXT: sll $3, $9, 0199; MIPS64-NEXT: addu $2, $2, $3200; MIPS64-NEXT: sll $4, $10, 0201; MIPS64-NEXT: addu $2, $2, $4202; MIPS64-NEXT: andi $2, $2, 255203; MIPS64-NEXT: addu $1, $1, $5204; MIPS64-NEXT: andi $3, $3, 65280205; MIPS64-NEXT: srl $3, $3, 8206; MIPS64-NEXT: addu $1, $1, $3207; MIPS64-NEXT: andi $3, $4, 65280208; MIPS64-NEXT: srl $3, $3, 8209; MIPS64-NEXT: addu $1, $1, $3210; MIPS64-NEXT: sll $1, $1, 8211; MIPS64-NEXT: or $2, $2, $1212; MIPS64-NEXT: jr $ra213; MIPS64-NEXT: nop214;215; MIPS32R5EB-LABEL: i8x2_7:216; MIPS32R5EB: # %bb.0: # %entry217; MIPS32R5EB-NEXT: addiu $sp, $sp, -128218; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 128219; MIPS32R5EB-NEXT: sw $ra, 124($sp) # 4-byte Folded Spill220; MIPS32R5EB-NEXT: sw $fp, 120($sp) # 4-byte Folded Spill221; MIPS32R5EB-NEXT: .cfi_offset 31, -4222; MIPS32R5EB-NEXT: .cfi_offset 30, -8223; MIPS32R5EB-NEXT: move $fp, $sp224; MIPS32R5EB-NEXT: .cfi_def_cfa_register 30225; MIPS32R5EB-NEXT: addiu $1, $zero, -16226; MIPS32R5EB-NEXT: and $sp, $sp, $1227; MIPS32R5EB-NEXT: sh $5, 16($sp)228; MIPS32R5EB-NEXT: sh $4, 0($sp)229; MIPS32R5EB-NEXT: ld.b $w0, 16($sp)230; MIPS32R5EB-NEXT: ld.b $w1, 0($sp)231; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w0232; MIPS32R5EB-NEXT: sh $6, 32($sp)233; MIPS32R5EB-NEXT: ld.b $w1, 32($sp)234; MIPS32R5EB-NEXT: addv.b $w0, $w0, $w1235; MIPS32R5EB-NEXT: sh $7, 48($sp)236; MIPS32R5EB-NEXT: ld.b $w1, 48($sp)237; MIPS32R5EB-NEXT: addv.b $w0, $w0, $w1238; MIPS32R5EB-NEXT: lhu $1, 146($fp)239; MIPS32R5EB-NEXT: sh $1, 64($sp)240; MIPS32R5EB-NEXT: ld.b $w1, 64($sp)241; MIPS32R5EB-NEXT: addv.b $w0, $w0, $w1242; MIPS32R5EB-NEXT: lhu $1, 150($fp)243; MIPS32R5EB-NEXT: sh $1, 80($sp)244; MIPS32R5EB-NEXT: ld.b $w1, 80($sp)245; MIPS32R5EB-NEXT: addv.b $w0, $w0, $w1246; MIPS32R5EB-NEXT: lhu $1, 154($fp)247; MIPS32R5EB-NEXT: sh $1, 96($sp)248; MIPS32R5EB-NEXT: ld.b $w1, 96($sp)249; MIPS32R5EB-NEXT: addv.b $w0, $w0, $w1250; MIPS32R5EB-NEXT: shf.b $w0, $w0, 177251; MIPS32R5EB-NEXT: copy_u.h $2, $w0[0]252; MIPS32R5EB-NEXT: move $sp, $fp253; MIPS32R5EB-NEXT: lw $fp, 120($sp) # 4-byte Folded Reload254; MIPS32R5EB-NEXT: lw $ra, 124($sp) # 4-byte Folded Reload255; MIPS32R5EB-NEXT: addiu $sp, $sp, 128256; MIPS32R5EB-NEXT: jr $ra257; MIPS32R5EB-NEXT: nop258;259; MIPS64R5EB-LABEL: i8x2_7:260; MIPS64R5EB: # %bb.0: # %entry261; MIPS64R5EB-NEXT: daddiu $sp, $sp, -128262; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 128263; MIPS64R5EB-NEXT: sh $5, 16($sp)264; MIPS64R5EB-NEXT: sh $4, 0($sp)265; MIPS64R5EB-NEXT: ld.b $w0, 16($sp)266; MIPS64R5EB-NEXT: ld.b $w1, 0($sp)267; MIPS64R5EB-NEXT: addv.b $w0, $w1, $w0268; MIPS64R5EB-NEXT: sh $6, 32($sp)269; MIPS64R5EB-NEXT: ld.b $w1, 32($sp)270; MIPS64R5EB-NEXT: addv.b $w0, $w0, $w1271; MIPS64R5EB-NEXT: sh $7, 48($sp)272; MIPS64R5EB-NEXT: ld.b $w1, 48($sp)273; MIPS64R5EB-NEXT: addv.b $w0, $w0, $w1274; MIPS64R5EB-NEXT: sh $8, 64($sp)275; MIPS64R5EB-NEXT: ld.b $w1, 64($sp)276; MIPS64R5EB-NEXT: addv.b $w0, $w0, $w1277; MIPS64R5EB-NEXT: sh $9, 80($sp)278; MIPS64R5EB-NEXT: ld.b $w1, 80($sp)279; MIPS64R5EB-NEXT: addv.b $w0, $w0, $w1280; MIPS64R5EB-NEXT: sh $10, 96($sp)281; MIPS64R5EB-NEXT: ld.b $w1, 96($sp)282; MIPS64R5EB-NEXT: addv.b $w0, $w0, $w1283; MIPS64R5EB-NEXT: shf.b $w0, $w0, 177284; MIPS64R5EB-NEXT: copy_s.h $1, $w0[0]285; MIPS64R5EB-NEXT: sh $1, 124($sp)286; MIPS64R5EB-NEXT: lh $2, 124($sp)287; MIPS64R5EB-NEXT: daddiu $sp, $sp, 128288; MIPS64R5EB-NEXT: jr $ra289; MIPS64R5EB-NEXT: nop290;291; MIPS32EL-LABEL: i8x2_7:292; MIPS32EL: # %bb.0: # %entry293; MIPS32EL-NEXT: addu $1, $4, $5294; MIPS32EL-NEXT: addu $1, $1, $6295; MIPS32EL-NEXT: addu $1, $1, $7296; MIPS32EL-NEXT: andi $2, $5, 65280297; MIPS32EL-NEXT: lbu $3, 16($sp)298; MIPS32EL-NEXT: addu $1, $1, $3299; MIPS32EL-NEXT: srl $2, $2, 8300; MIPS32EL-NEXT: andi $3, $4, 65280301; MIPS32EL-NEXT: srl $3, $3, 8302; MIPS32EL-NEXT: addu $2, $3, $2303; MIPS32EL-NEXT: andi $3, $6, 65280304; MIPS32EL-NEXT: srl $3, $3, 8305; MIPS32EL-NEXT: lbu $4, 20($sp)306; MIPS32EL-NEXT: addu $2, $2, $3307; MIPS32EL-NEXT: addu $1, $1, $4308; MIPS32EL-NEXT: lbu $3, 24($sp)309; MIPS32EL-NEXT: addu $1, $1, $3310; MIPS32EL-NEXT: andi $3, $7, 65280311; MIPS32EL-NEXT: srl $3, $3, 8312; MIPS32EL-NEXT: lbu $4, 25($sp)313; MIPS32EL-NEXT: andi $1, $1, 255314; MIPS32EL-NEXT: addu $2, $2, $3315; MIPS32EL-NEXT: lbu $3, 17($sp)316; MIPS32EL-NEXT: addu $2, $2, $3317; MIPS32EL-NEXT: lbu $3, 21($sp)318; MIPS32EL-NEXT: addu $2, $2, $3319; MIPS32EL-NEXT: addu $2, $2, $4320; MIPS32EL-NEXT: sll $2, $2, 8321; MIPS32EL-NEXT: or $2, $1, $2322; MIPS32EL-NEXT: jr $ra323; MIPS32EL-NEXT: nop324;325; MIPS32R5EL-LABEL: i8x2_7:326; MIPS32R5EL: # %bb.0: # %entry327; MIPS32R5EL-NEXT: addiu $sp, $sp, -128328; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 128329; MIPS32R5EL-NEXT: sw $ra, 124($sp) # 4-byte Folded Spill330; MIPS32R5EL-NEXT: sw $fp, 120($sp) # 4-byte Folded Spill331; MIPS32R5EL-NEXT: .cfi_offset 31, -4332; MIPS32R5EL-NEXT: .cfi_offset 30, -8333; MIPS32R5EL-NEXT: move $fp, $sp334; MIPS32R5EL-NEXT: .cfi_def_cfa_register 30335; MIPS32R5EL-NEXT: addiu $1, $zero, -16336; MIPS32R5EL-NEXT: and $sp, $sp, $1337; MIPS32R5EL-NEXT: sh $5, 16($sp)338; MIPS32R5EL-NEXT: sh $4, 0($sp)339; MIPS32R5EL-NEXT: ld.b $w0, 16($sp)340; MIPS32R5EL-NEXT: ld.b $w1, 0($sp)341; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0342; MIPS32R5EL-NEXT: sh $6, 32($sp)343; MIPS32R5EL-NEXT: ld.b $w1, 32($sp)344; MIPS32R5EL-NEXT: addv.b $w0, $w0, $w1345; MIPS32R5EL-NEXT: sh $7, 48($sp)346; MIPS32R5EL-NEXT: ld.b $w1, 48($sp)347; MIPS32R5EL-NEXT: addv.b $w0, $w0, $w1348; MIPS32R5EL-NEXT: lw $1, 144($fp)349; MIPS32R5EL-NEXT: sw $1, 64($sp)350; MIPS32R5EL-NEXT: ld.b $w1, 64($sp)351; MIPS32R5EL-NEXT: addv.b $w0, $w0, $w1352; MIPS32R5EL-NEXT: lw $1, 148($fp)353; MIPS32R5EL-NEXT: sw $1, 80($sp)354; MIPS32R5EL-NEXT: ld.b $w1, 80($sp)355; MIPS32R5EL-NEXT: addv.b $w0, $w0, $w1356; MIPS32R5EL-NEXT: lw $1, 152($fp)357; MIPS32R5EL-NEXT: sw $1, 96($sp)358; MIPS32R5EL-NEXT: ld.b $w1, 96($sp)359; MIPS32R5EL-NEXT: addv.b $w0, $w0, $w1360; MIPS32R5EL-NEXT: copy_u.h $2, $w0[0]361; MIPS32R5EL-NEXT: move $sp, $fp362; MIPS32R5EL-NEXT: lw $fp, 120($sp) # 4-byte Folded Reload363; MIPS32R5EL-NEXT: lw $ra, 124($sp) # 4-byte Folded Reload364; MIPS32R5EL-NEXT: addiu $sp, $sp, 128365; MIPS32R5EL-NEXT: jr $ra366; MIPS32R5EL-NEXT: nop367;368; MIPS64R5EL-LABEL: i8x2_7:369; MIPS64R5EL: # %bb.0: # %entry370; MIPS64R5EL-NEXT: daddiu $sp, $sp, -128371; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 128372; MIPS64R5EL-NEXT: sh $5, 16($sp)373; MIPS64R5EL-NEXT: sh $4, 0($sp)374; MIPS64R5EL-NEXT: ld.b $w0, 16($sp)375; MIPS64R5EL-NEXT: ld.b $w1, 0($sp)376; MIPS64R5EL-NEXT: addv.b $w0, $w1, $w0377; MIPS64R5EL-NEXT: sh $6, 32($sp)378; MIPS64R5EL-NEXT: ld.b $w1, 32($sp)379; MIPS64R5EL-NEXT: addv.b $w0, $w0, $w1380; MIPS64R5EL-NEXT: sh $7, 48($sp)381; MIPS64R5EL-NEXT: ld.b $w1, 48($sp)382; MIPS64R5EL-NEXT: addv.b $w0, $w0, $w1383; MIPS64R5EL-NEXT: sh $8, 64($sp)384; MIPS64R5EL-NEXT: ld.b $w1, 64($sp)385; MIPS64R5EL-NEXT: addv.b $w0, $w0, $w1386; MIPS64R5EL-NEXT: sh $9, 80($sp)387; MIPS64R5EL-NEXT: ld.b $w1, 80($sp)388; MIPS64R5EL-NEXT: addv.b $w0, $w0, $w1389; MIPS64R5EL-NEXT: sh $10, 96($sp)390; MIPS64R5EL-NEXT: ld.b $w1, 96($sp)391; MIPS64R5EL-NEXT: addv.b $w0, $w0, $w1392; MIPS64R5EL-NEXT: copy_s.h $1, $w0[0]393; MIPS64R5EL-NEXT: sh $1, 124($sp)394; MIPS64R5EL-NEXT: lh $2, 124($sp)395; MIPS64R5EL-NEXT: daddiu $sp, $sp, 128396; MIPS64R5EL-NEXT: jr $ra397; MIPS64R5EL-NEXT: nop398entry:399 %0 = add <2 x i8> %a, %b400 %1 = add <2 x i8> %0, %c401 %2 = add <2 x i8> %1, %d402 %3 = add <2 x i8> %2, %e403 %4 = add <2 x i8> %3, %f404 %5 = add <2 x i8> %4, %g405 ret <2 x i8> %5406}407 408define <4 x i8> @i8_4(<4 x i8> %a, <4 x i8> %b) {409; MIPS32-LABEL: i8_4:410; MIPS32: # %bb.0:411; MIPS32-NEXT: srl $1, $5, 24412; MIPS32-NEXT: srl $2, $4, 24413; MIPS32-NEXT: addu $1, $2, $1414; MIPS32-NEXT: addu $2, $4, $5415; MIPS32-NEXT: sll $1, $1, 24416; MIPS32-NEXT: srl $3, $5, 16417; MIPS32-NEXT: srl $6, $4, 16418; MIPS32-NEXT: addu $3, $6, $3419; MIPS32-NEXT: andi $3, $3, 255420; MIPS32-NEXT: sll $3, $3, 16421; MIPS32-NEXT: or $1, $1, $3422; MIPS32-NEXT: andi $2, $2, 255423; MIPS32-NEXT: srl $3, $5, 8424; MIPS32-NEXT: srl $4, $4, 8425; MIPS32-NEXT: addu $3, $4, $3426; MIPS32-NEXT: sll $3, $3, 8427; MIPS32-NEXT: or $2, $2, $3428; MIPS32-NEXT: andi $2, $2, 65535429; MIPS32-NEXT: or $2, $2, $1430; MIPS32-NEXT: jr $ra431; MIPS32-NEXT: nop432;433; MIPS64-LABEL: i8_4:434; MIPS64: # %bb.0:435; MIPS64-NEXT: sll $1, $5, 0436; MIPS64-NEXT: srl $2, $1, 24437; MIPS64-NEXT: sll $3, $4, 0438; MIPS64-NEXT: srl $4, $3, 24439; MIPS64-NEXT: addu $2, $4, $2440; MIPS64-NEXT: addu $4, $3, $1441; MIPS64-NEXT: sll $2, $2, 24442; MIPS64-NEXT: srl $5, $1, 16443; MIPS64-NEXT: srl $6, $3, 16444; MIPS64-NEXT: addu $5, $6, $5445; MIPS64-NEXT: andi $5, $5, 255446; MIPS64-NEXT: sll $5, $5, 16447; MIPS64-NEXT: or $2, $2, $5448; MIPS64-NEXT: andi $4, $4, 255449; MIPS64-NEXT: srl $1, $1, 8450; MIPS64-NEXT: srl $3, $3, 8451; MIPS64-NEXT: addu $1, $3, $1452; MIPS64-NEXT: sll $1, $1, 8453; MIPS64-NEXT: or $1, $4, $1454; MIPS64-NEXT: andi $1, $1, 65535455; MIPS64-NEXT: or $2, $1, $2456; MIPS64-NEXT: jr $ra457; MIPS64-NEXT: nop458;459; MIPS32R5EB-LABEL: i8_4:460; MIPS32R5EB: # %bb.0:461; MIPS32R5EB-NEXT: addiu $sp, $sp, -48462; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 48463; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill464; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill465; MIPS32R5EB-NEXT: .cfi_offset 31, -4466; MIPS32R5EB-NEXT: .cfi_offset 30, -8467; MIPS32R5EB-NEXT: move $fp, $sp468; MIPS32R5EB-NEXT: .cfi_def_cfa_register 30469; MIPS32R5EB-NEXT: addiu $1, $zero, -16470; MIPS32R5EB-NEXT: and $sp, $sp, $1471; MIPS32R5EB-NEXT: sw $5, 16($sp)472; MIPS32R5EB-NEXT: sw $4, 0($sp)473; MIPS32R5EB-NEXT: ld.b $w0, 16($sp)474; MIPS32R5EB-NEXT: ld.b $w1, 0($sp)475; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w0476; MIPS32R5EB-NEXT: shf.b $w0, $w0, 27477; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]478; MIPS32R5EB-NEXT: move $sp, $fp479; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload480; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload481; MIPS32R5EB-NEXT: addiu $sp, $sp, 48482; MIPS32R5EB-NEXT: jr $ra483; MIPS32R5EB-NEXT: nop484;485; MIPS64R5EB-LABEL: i8_4:486; MIPS64R5EB: # %bb.0:487; MIPS64R5EB-NEXT: daddiu $sp, $sp, -32488; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 32489; MIPS64R5EB-NEXT: sll $1, $5, 0490; MIPS64R5EB-NEXT: sw $1, 16($sp)491; MIPS64R5EB-NEXT: sll $1, $4, 0492; MIPS64R5EB-NEXT: sw $1, 0($sp)493; MIPS64R5EB-NEXT: ld.b $w0, 16($sp)494; MIPS64R5EB-NEXT: ld.b $w1, 0($sp)495; MIPS64R5EB-NEXT: addv.b $w0, $w1, $w0496; MIPS64R5EB-NEXT: shf.b $w0, $w0, 27497; MIPS64R5EB-NEXT: copy_s.w $2, $w0[0]498; MIPS64R5EB-NEXT: daddiu $sp, $sp, 32499; MIPS64R5EB-NEXT: jr $ra500; MIPS64R5EB-NEXT: nop501;502; MIPS32R5EL-LABEL: i8_4:503; MIPS32R5EL: # %bb.0:504; MIPS32R5EL-NEXT: addiu $sp, $sp, -48505; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 48506; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill507; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill508; MIPS32R5EL-NEXT: .cfi_offset 31, -4509; MIPS32R5EL-NEXT: .cfi_offset 30, -8510; MIPS32R5EL-NEXT: move $fp, $sp511; MIPS32R5EL-NEXT: .cfi_def_cfa_register 30512; MIPS32R5EL-NEXT: addiu $1, $zero, -16513; MIPS32R5EL-NEXT: and $sp, $sp, $1514; MIPS32R5EL-NEXT: sw $5, 16($sp)515; MIPS32R5EL-NEXT: sw $4, 0($sp)516; MIPS32R5EL-NEXT: ld.b $w0, 16($sp)517; MIPS32R5EL-NEXT: ld.b $w1, 0($sp)518; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0519; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]520; MIPS32R5EL-NEXT: move $sp, $fp521; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload522; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload523; MIPS32R5EL-NEXT: addiu $sp, $sp, 48524; MIPS32R5EL-NEXT: jr $ra525; MIPS32R5EL-NEXT: nop526;527; MIPS64R5EL-LABEL: i8_4:528; MIPS64R5EL: # %bb.0:529; MIPS64R5EL-NEXT: daddiu $sp, $sp, -32530; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 32531; MIPS64R5EL-NEXT: sll $1, $5, 0532; MIPS64R5EL-NEXT: sw $1, 16($sp)533; MIPS64R5EL-NEXT: sll $1, $4, 0534; MIPS64R5EL-NEXT: sw $1, 0($sp)535; MIPS64R5EL-NEXT: ld.b $w0, 16($sp)536; MIPS64R5EL-NEXT: ld.b $w1, 0($sp)537; MIPS64R5EL-NEXT: addv.b $w0, $w1, $w0538; MIPS64R5EL-NEXT: copy_s.w $2, $w0[0]539; MIPS64R5EL-NEXT: daddiu $sp, $sp, 32540; MIPS64R5EL-NEXT: jr $ra541; MIPS64R5EL-NEXT: nop542 %1 = add <4 x i8> %a, %b543 ret <4 x i8> %1544}545 546define <8 x i8> @i8_8(<8 x i8> %a, <8 x i8> %b) {547; MIPS32-LABEL: i8_8:548; MIPS32: # %bb.0:549; MIPS32-NEXT: addu $1, $4, $6550; MIPS32-NEXT: srl $2, $6, 24551; MIPS32-NEXT: srl $3, $4, 24552; MIPS32-NEXT: addu $2, $3, $2553; MIPS32-NEXT: andi $1, $1, 255554; MIPS32-NEXT: srl $3, $6, 8555; MIPS32-NEXT: srl $8, $4, 8556; MIPS32-NEXT: addu $3, $8, $3557; MIPS32-NEXT: sll $3, $3, 8558; MIPS32-NEXT: srl $6, $6, 16559; MIPS32-NEXT: srl $4, $4, 16560; MIPS32-NEXT: or $1, $1, $3561; MIPS32-NEXT: sll $2, $2, 24562; MIPS32-NEXT: addu $3, $4, $6563; MIPS32-NEXT: andi $3, $3, 255564; MIPS32-NEXT: sll $3, $3, 16565; MIPS32-NEXT: srl $4, $7, 24566; MIPS32-NEXT: srl $6, $5, 24567; MIPS32-NEXT: or $2, $2, $3568; MIPS32-NEXT: andi $1, $1, 65535569; MIPS32-NEXT: addu $3, $6, $4570; MIPS32-NEXT: addu $4, $5, $7571; MIPS32-NEXT: sll $3, $3, 24572; MIPS32-NEXT: srl $6, $7, 16573; MIPS32-NEXT: srl $8, $5, 16574; MIPS32-NEXT: addu $6, $8, $6575; MIPS32-NEXT: andi $6, $6, 255576; MIPS32-NEXT: sll $6, $6, 16577; MIPS32-NEXT: or $2, $1, $2578; MIPS32-NEXT: or $1, $3, $6579; MIPS32-NEXT: andi $3, $4, 255580; MIPS32-NEXT: srl $4, $7, 8581; MIPS32-NEXT: srl $5, $5, 8582; MIPS32-NEXT: addu $4, $5, $4583; MIPS32-NEXT: sll $4, $4, 8584; MIPS32-NEXT: or $3, $3, $4585; MIPS32-NEXT: andi $3, $3, 65535586; MIPS32-NEXT: or $3, $3, $1587; MIPS32-NEXT: jr $ra588; MIPS32-NEXT: nop589;590; MIPS64-LABEL: i8_8:591; MIPS64: # %bb.0:592; MIPS64-NEXT: dsrl $1, $5, 48593; MIPS64-NEXT: sll $1, $1, 0594; MIPS64-NEXT: dsrl $2, $4, 48595; MIPS64-NEXT: sll $2, $2, 0596; MIPS64-NEXT: addu $1, $2, $1597; MIPS64-NEXT: dsrl $2, $5, 56598; MIPS64-NEXT: andi $1, $1, 255599; MIPS64-NEXT: sll $2, $2, 0600; MIPS64-NEXT: dsrl $3, $4, 56601; MIPS64-NEXT: sll $3, $3, 0602; MIPS64-NEXT: addu $2, $3, $2603; MIPS64-NEXT: dsrl $3, $5, 40604; MIPS64-NEXT: sll $2, $2, 24605; MIPS64-NEXT: sll $1, $1, 16606; MIPS64-NEXT: sll $3, $3, 0607; MIPS64-NEXT: dsrl $6, $4, 40608; MIPS64-NEXT: sll $6, $6, 0609; MIPS64-NEXT: addu $3, $6, $3610; MIPS64-NEXT: dsrl $6, $5, 32611; MIPS64-NEXT: sll $7, $4, 0612; MIPS64-NEXT: sll $5, $5, 0613; MIPS64-NEXT: srl $8, $5, 24614; MIPS64-NEXT: srl $9, $7, 24615; MIPS64-NEXT: or $1, $2, $1616; MIPS64-NEXT: sll $2, $3, 8617; MIPS64-NEXT: sll $3, $6, 0618; MIPS64-NEXT: dsrl $4, $4, 32619; MIPS64-NEXT: sll $4, $4, 0620; MIPS64-NEXT: addu $3, $4, $3621; MIPS64-NEXT: andi $3, $3, 255622; MIPS64-NEXT: or $2, $3, $2623; MIPS64-NEXT: andi $2, $2, 65535624; MIPS64-NEXT: or $1, $2, $1625; MIPS64-NEXT: addu $2, $9, $8626; MIPS64-NEXT: addu $3, $7, $5627; MIPS64-NEXT: sll $2, $2, 24628; MIPS64-NEXT: srl $4, $5, 16629; MIPS64-NEXT: srl $6, $7, 16630; MIPS64-NEXT: addu $4, $6, $4631; MIPS64-NEXT: andi $4, $4, 255632; MIPS64-NEXT: sll $4, $4, 16633; MIPS64-NEXT: dsll $1, $1, 32634; MIPS64-NEXT: or $2, $2, $4635; MIPS64-NEXT: andi $3, $3, 255636; MIPS64-NEXT: srl $4, $5, 8637; MIPS64-NEXT: srl $5, $7, 8638; MIPS64-NEXT: addu $4, $5, $4639; MIPS64-NEXT: sll $4, $4, 8640; MIPS64-NEXT: or $3, $3, $4641; MIPS64-NEXT: andi $3, $3, 65535642; MIPS64-NEXT: or $2, $3, $2643; MIPS64-NEXT: dsll $2, $2, 32644; MIPS64-NEXT: dsrl $2, $2, 32645; MIPS64-NEXT: or $2, $2, $1646; MIPS64-NEXT: jr $ra647; MIPS64-NEXT: nop648;649; MIPS32R5EB-LABEL: i8_8:650; MIPS32R5EB: # %bb.0:651; MIPS32R5EB-NEXT: addiu $sp, $sp, -48652; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 48653; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill654; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill655; MIPS32R5EB-NEXT: .cfi_offset 31, -4656; MIPS32R5EB-NEXT: .cfi_offset 30, -8657; MIPS32R5EB-NEXT: move $fp, $sp658; MIPS32R5EB-NEXT: .cfi_def_cfa_register 30659; MIPS32R5EB-NEXT: addiu $1, $zero, -16660; MIPS32R5EB-NEXT: and $sp, $sp, $1661; MIPS32R5EB-NEXT: sw $7, 20($sp)662; MIPS32R5EB-NEXT: sw $6, 16($sp)663; MIPS32R5EB-NEXT: sw $5, 4($sp)664; MIPS32R5EB-NEXT: sw $4, 0($sp)665; MIPS32R5EB-NEXT: ld.b $w0, 16($sp)666; MIPS32R5EB-NEXT: ld.b $w1, 0($sp)667; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w0668; MIPS32R5EB-NEXT: shf.b $w0, $w0, 27669; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]670; MIPS32R5EB-NEXT: copy_s.w $3, $w0[1]671; MIPS32R5EB-NEXT: move $sp, $fp672; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload673; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload674; MIPS32R5EB-NEXT: addiu $sp, $sp, 48675; MIPS32R5EB-NEXT: jr $ra676; MIPS32R5EB-NEXT: nop677;678; MIPS64R5EB-LABEL: i8_8:679; MIPS64R5EB: # %bb.0:680; MIPS64R5EB-NEXT: daddiu $sp, $sp, -32681; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 32682; MIPS64R5EB-NEXT: sd $5, 16($sp)683; MIPS64R5EB-NEXT: sd $4, 0($sp)684; MIPS64R5EB-NEXT: ld.b $w0, 16($sp)685; MIPS64R5EB-NEXT: ld.b $w1, 0($sp)686; MIPS64R5EB-NEXT: addv.b $w0, $w1, $w0687; MIPS64R5EB-NEXT: shf.b $w0, $w0, 27688; MIPS64R5EB-NEXT: shf.w $w0, $w0, 177689; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]690; MIPS64R5EB-NEXT: daddiu $sp, $sp, 32691; MIPS64R5EB-NEXT: jr $ra692; MIPS64R5EB-NEXT: nop693;694; MIPS32R5EL-LABEL: i8_8:695; MIPS32R5EL: # %bb.0:696; MIPS32R5EL-NEXT: addiu $sp, $sp, -48697; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 48698; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill699; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill700; MIPS32R5EL-NEXT: .cfi_offset 31, -4701; MIPS32R5EL-NEXT: .cfi_offset 30, -8702; MIPS32R5EL-NEXT: move $fp, $sp703; MIPS32R5EL-NEXT: .cfi_def_cfa_register 30704; MIPS32R5EL-NEXT: addiu $1, $zero, -16705; MIPS32R5EL-NEXT: and $sp, $sp, $1706; MIPS32R5EL-NEXT: sw $7, 20($sp)707; MIPS32R5EL-NEXT: sw $6, 16($sp)708; MIPS32R5EL-NEXT: sw $5, 4($sp)709; MIPS32R5EL-NEXT: sw $4, 0($sp)710; MIPS32R5EL-NEXT: ld.b $w0, 16($sp)711; MIPS32R5EL-NEXT: ld.b $w1, 0($sp)712; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0713; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]714; MIPS32R5EL-NEXT: copy_s.w $3, $w0[1]715; MIPS32R5EL-NEXT: move $sp, $fp716; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload717; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload718; MIPS32R5EL-NEXT: addiu $sp, $sp, 48719; MIPS32R5EL-NEXT: jr $ra720; MIPS32R5EL-NEXT: nop721;722; MIPS64R5EL-LABEL: i8_8:723; MIPS64R5EL: # %bb.0:724; MIPS64R5EL-NEXT: daddiu $sp, $sp, -32725; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 32726; MIPS64R5EL-NEXT: sd $5, 16($sp)727; MIPS64R5EL-NEXT: sd $4, 0($sp)728; MIPS64R5EL-NEXT: ld.b $w0, 16($sp)729; MIPS64R5EL-NEXT: ld.b $w1, 0($sp)730; MIPS64R5EL-NEXT: addv.b $w0, $w1, $w0731; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]732; MIPS64R5EL-NEXT: daddiu $sp, $sp, 32733; MIPS64R5EL-NEXT: jr $ra734; MIPS64R5EL-NEXT: nop735 %1 = add <8 x i8> %a, %b736 ret <8 x i8> %1737}738 739define <16 x i8> @i8_16(<16 x i8> %a, <16 x i8> %b) {740; MIPS32-LABEL: i8_16:741; MIPS32: # %bb.0:742; MIPS32-NEXT: lw $1, 16($sp)743; MIPS32-NEXT: lw $2, 20($sp)744; MIPS32-NEXT: lw $3, 24($sp)745; MIPS32-NEXT: srl $8, $3, 8746; MIPS32-NEXT: srl $9, $6, 8747; MIPS32-NEXT: srl $10, $2, 16748; MIPS32-NEXT: srl $11, $5, 16749; MIPS32-NEXT: srl $12, $1, 16750; MIPS32-NEXT: srl $13, $4, 16751; MIPS32-NEXT: srl $14, $1, 8752; MIPS32-NEXT: srl $15, $4, 8753; MIPS32-NEXT: addu $24, $6, $3754; MIPS32-NEXT: addu $14, $15, $14755; MIPS32-NEXT: addu $15, $4, $1756; MIPS32-NEXT: addu $12, $13, $12757; MIPS32-NEXT: addu $10, $11, $10758; MIPS32-NEXT: srl $11, $2, 24759; MIPS32-NEXT: addu $13, $5, $2760; MIPS32-NEXT: addu $8, $9, $8761; MIPS32-NEXT: srl $1, $1, 24762; MIPS32-NEXT: srl $4, $4, 24763; MIPS32-NEXT: srl $9, $5, 24764; MIPS32-NEXT: srl $25, $3, 24765; MIPS32-NEXT: srl $gp, $6, 24766; MIPS32-NEXT: addu $25, $gp, $25767; MIPS32-NEXT: andi $10, $10, 255768; MIPS32-NEXT: addu $9, $9, $11769; MIPS32-NEXT: andi $11, $12, 255770; MIPS32-NEXT: addu $1, $4, $1771; MIPS32-NEXT: andi $4, $15, 255772; MIPS32-NEXT: sll $12, $14, 8773; MIPS32-NEXT: andi $14, $24, 255774; MIPS32-NEXT: sll $8, $8, 8775; MIPS32-NEXT: andi $13, $13, 255776; MIPS32-NEXT: srl $2, $2, 8777; MIPS32-NEXT: srl $5, $5, 8778; MIPS32-NEXT: addu $2, $5, $2779; MIPS32-NEXT: sll $2, $2, 8780; MIPS32-NEXT: srl $3, $3, 16781; MIPS32-NEXT: srl $5, $6, 16782; MIPS32-NEXT: or $2, $13, $2783; MIPS32-NEXT: or $6, $14, $8784; MIPS32-NEXT: or $4, $4, $12785; MIPS32-NEXT: sll $1, $1, 24786; MIPS32-NEXT: sll $8, $11, 16787; MIPS32-NEXT: sll $9, $9, 24788; MIPS32-NEXT: sll $10, $10, 16789; MIPS32-NEXT: sll $11, $25, 24790; MIPS32-NEXT: addu $3, $5, $3791; MIPS32-NEXT: andi $3, $3, 255792; MIPS32-NEXT: sll $3, $3, 16793; MIPS32-NEXT: lw $5, 28($sp)794; MIPS32-NEXT: srl $12, $5, 24795; MIPS32-NEXT: srl $13, $7, 24796; MIPS32-NEXT: or $11, $11, $3797; MIPS32-NEXT: or $3, $9, $10798; MIPS32-NEXT: or $1, $1, $8799; MIPS32-NEXT: andi $4, $4, 65535800; MIPS32-NEXT: addu $8, $13, $12801; MIPS32-NEXT: andi $6, $6, 65535802; MIPS32-NEXT: andi $9, $2, 65535803; MIPS32-NEXT: addu $10, $7, $5804; MIPS32-NEXT: sll $8, $8, 24805; MIPS32-NEXT: srl $2, $5, 16806; MIPS32-NEXT: srl $12, $7, 16807; MIPS32-NEXT: addu $2, $12, $2808; MIPS32-NEXT: andi $2, $2, 255809; MIPS32-NEXT: sll $12, $2, 16810; MIPS32-NEXT: or $2, $4, $1811; MIPS32-NEXT: or $3, $9, $3812; MIPS32-NEXT: or $4, $6, $11813; MIPS32-NEXT: or $1, $8, $12814; MIPS32-NEXT: andi $6, $10, 255815; MIPS32-NEXT: srl $5, $5, 8816; MIPS32-NEXT: srl $7, $7, 8817; MIPS32-NEXT: addu $5, $7, $5818; MIPS32-NEXT: sll $5, $5, 8819; MIPS32-NEXT: or $5, $6, $5820; MIPS32-NEXT: andi $5, $5, 65535821; MIPS32-NEXT: or $5, $5, $1822; MIPS32-NEXT: jr $ra823; MIPS32-NEXT: nop824;825; MIPS64-LABEL: i8_16:826; MIPS64: # %bb.0:827; MIPS64-NEXT: sll $1, $6, 0828; MIPS64-NEXT: dsrl $2, $6, 56829; MIPS64-NEXT: dsrl $3, $6, 48830; MIPS64-NEXT: dsrl $8, $4, 48831; MIPS64-NEXT: srl $9, $1, 16832; MIPS64-NEXT: sll $10, $4, 0833; MIPS64-NEXT: srl $11, $10, 16834; MIPS64-NEXT: dsrl $12, $7, 56835; MIPS64-NEXT: addu $13, $10, $1836; MIPS64-NEXT: addu $9, $11, $9837; MIPS64-NEXT: sll $2, $2, 0838; MIPS64-NEXT: dsrl $11, $7, 48839; MIPS64-NEXT: srl $14, $1, 8840; MIPS64-NEXT: srl $15, $10, 8841; MIPS64-NEXT: addu $14, $15, $14842; MIPS64-NEXT: dsrl $15, $4, 56843; MIPS64-NEXT: dsrl $24, $7, 40844; MIPS64-NEXT: sll $3, $3, 0845; MIPS64-NEXT: sll $8, $8, 0846; MIPS64-NEXT: sll $15, $15, 0847; MIPS64-NEXT: andi $9, $9, 255848; MIPS64-NEXT: addu $2, $15, $2849; MIPS64-NEXT: andi $13, $13, 255850; MIPS64-NEXT: sll $14, $14, 8851; MIPS64-NEXT: addu $3, $8, $3852; MIPS64-NEXT: sll $8, $11, 0853; MIPS64-NEXT: srl $1, $1, 24854; MIPS64-NEXT: sll $11, $12, 0855; MIPS64-NEXT: dsrl $12, $5, 56856; MIPS64-NEXT: dsrl $15, $5, 48857; MIPS64-NEXT: andi $3, $3, 255858; MIPS64-NEXT: dsrl $25, $6, 40859; MIPS64-NEXT: sll $15, $15, 0860; MIPS64-NEXT: srl $10, $10, 24861; MIPS64-NEXT: sll $12, $12, 0862; MIPS64-NEXT: or $13, $13, $14863; MIPS64-NEXT: sll $14, $24, 0864; MIPS64-NEXT: sll $2, $2, 24865; MIPS64-NEXT: addu $11, $12, $11866; MIPS64-NEXT: sll $9, $9, 16867; MIPS64-NEXT: addu $1, $10, $1868; MIPS64-NEXT: addu $8, $15, $8869; MIPS64-NEXT: sll $10, $25, 0870; MIPS64-NEXT: dsrl $12, $4, 40871; MIPS64-NEXT: sll $12, $12, 0872; MIPS64-NEXT: addu $10, $12, $10873; MIPS64-NEXT: sll $3, $3, 16874; MIPS64-NEXT: andi $8, $8, 255875; MIPS64-NEXT: sll $1, $1, 24876; MIPS64-NEXT: dsrl $12, $5, 40877; MIPS64-NEXT: sll $12, $12, 0878; MIPS64-NEXT: dsrl $6, $6, 32879; MIPS64-NEXT: or $1, $1, $9880; MIPS64-NEXT: addu $9, $12, $14881; MIPS64-NEXT: sll $11, $11, 24882; MIPS64-NEXT: sll $8, $8, 16883; MIPS64-NEXT: dsrl $12, $7, 32884; MIPS64-NEXT: andi $13, $13, 65535885; MIPS64-NEXT: or $2, $2, $3886; MIPS64-NEXT: sll $3, $10, 8887; MIPS64-NEXT: sll $6, $6, 0888; MIPS64-NEXT: dsrl $4, $4, 32889; MIPS64-NEXT: sll $4, $4, 0890; MIPS64-NEXT: addu $4, $4, $6891; MIPS64-NEXT: andi $4, $4, 255892; MIPS64-NEXT: or $3, $4, $3893; MIPS64-NEXT: andi $3, $3, 65535894; MIPS64-NEXT: or $2, $3, $2895; MIPS64-NEXT: or $1, $13, $1896; MIPS64-NEXT: or $3, $11, $8897; MIPS64-NEXT: sll $4, $9, 8898; MIPS64-NEXT: sll $6, $12, 0899; MIPS64-NEXT: dsrl $8, $5, 32900; MIPS64-NEXT: sll $8, $8, 0901; MIPS64-NEXT: addu $6, $8, $6902; MIPS64-NEXT: andi $6, $6, 255903; MIPS64-NEXT: or $4, $6, $4904; MIPS64-NEXT: andi $4, $4, 65535905; MIPS64-NEXT: dsll $1, $1, 32906; MIPS64-NEXT: or $3, $4, $3907; MIPS64-NEXT: sll $4, $7, 0908; MIPS64-NEXT: srl $6, $4, 24909; MIPS64-NEXT: sll $5, $5, 0910; MIPS64-NEXT: srl $7, $5, 24911; MIPS64-NEXT: addu $8, $5, $4912; MIPS64-NEXT: dsll $2, $2, 32913; MIPS64-NEXT: dsrl $1, $1, 32914; MIPS64-NEXT: addu $6, $7, $6915; MIPS64-NEXT: sll $6, $6, 24916; MIPS64-NEXT: srl $7, $4, 16917; MIPS64-NEXT: srl $9, $5, 16918; MIPS64-NEXT: addu $7, $9, $7919; MIPS64-NEXT: andi $7, $7, 255920; MIPS64-NEXT: sll $7, $7, 16921; MIPS64-NEXT: or $2, $1, $2922; MIPS64-NEXT: dsll $1, $3, 32923; MIPS64-NEXT: or $3, $6, $7924; MIPS64-NEXT: andi $6, $8, 255925; MIPS64-NEXT: srl $4, $4, 8926; MIPS64-NEXT: srl $5, $5, 8927; MIPS64-NEXT: addu $4, $5, $4928; MIPS64-NEXT: sll $4, $4, 8929; MIPS64-NEXT: or $4, $6, $4930; MIPS64-NEXT: andi $4, $4, 65535931; MIPS64-NEXT: or $3, $4, $3932; MIPS64-NEXT: dsll $3, $3, 32933; MIPS64-NEXT: dsrl $3, $3, 32934; MIPS64-NEXT: or $3, $3, $1935; MIPS64-NEXT: jr $ra936; MIPS64-NEXT: nop937;938; MIPS32R5EB-LABEL: i8_16:939; MIPS32R5EB: # %bb.0:940; MIPS32R5EB-NEXT: lw $1, 20($sp)941; MIPS32R5EB-NEXT: lw $2, 16($sp)942; MIPS32R5EB-NEXT: insert.w $w0[0], $2943; MIPS32R5EB-NEXT: insert.w $w0[1], $1944; MIPS32R5EB-NEXT: lw $1, 24($sp)945; MIPS32R5EB-NEXT: insert.w $w0[2], $1946; MIPS32R5EB-NEXT: lw $1, 28($sp)947; MIPS32R5EB-NEXT: insert.w $w0[3], $1948; MIPS32R5EB-NEXT: shf.b $w0, $w0, 27949; MIPS32R5EB-NEXT: insert.w $w1[0], $4950; MIPS32R5EB-NEXT: insert.w $w1[1], $5951; MIPS32R5EB-NEXT: insert.w $w1[2], $6952; MIPS32R5EB-NEXT: insert.w $w1[3], $7953; MIPS32R5EB-NEXT: shf.b $w1, $w1, 27954; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w0955; MIPS32R5EB-NEXT: shf.b $w0, $w0, 27956; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]957; MIPS32R5EB-NEXT: copy_s.w $3, $w0[1]958; MIPS32R5EB-NEXT: copy_s.w $4, $w0[2]959; MIPS32R5EB-NEXT: copy_s.w $5, $w0[3]960; MIPS32R5EB-NEXT: jr $ra961; MIPS32R5EB-NEXT: nop962;963; MIPS64R5EB-LABEL: i8_16:964; MIPS64R5EB: # %bb.0:965; MIPS64R5EB-NEXT: insert.d $w0[0], $6966; MIPS64R5EB-NEXT: insert.d $w0[1], $7967; MIPS64R5EB-NEXT: shf.b $w0, $w0, 27968; MIPS64R5EB-NEXT: shf.w $w0, $w0, 177969; MIPS64R5EB-NEXT: insert.d $w1[0], $4970; MIPS64R5EB-NEXT: insert.d $w1[1], $5971; MIPS64R5EB-NEXT: shf.b $w1, $w1, 27972; MIPS64R5EB-NEXT: shf.w $w1, $w1, 177973; MIPS64R5EB-NEXT: addv.b $w0, $w1, $w0974; MIPS64R5EB-NEXT: shf.b $w0, $w0, 27975; MIPS64R5EB-NEXT: shf.w $w0, $w0, 177976; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]977; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]978; MIPS64R5EB-NEXT: jr $ra979; MIPS64R5EB-NEXT: nop980;981; MIPS32R5EL-LABEL: i8_16:982; MIPS32R5EL: # %bb.0:983; MIPS32R5EL-NEXT: lw $1, 20($sp)984; MIPS32R5EL-NEXT: lw $2, 16($sp)985; MIPS32R5EL-NEXT: insert.w $w0[0], $2986; MIPS32R5EL-NEXT: insert.w $w0[1], $1987; MIPS32R5EL-NEXT: lw $1, 24($sp)988; MIPS32R5EL-NEXT: insert.w $w0[2], $1989; MIPS32R5EL-NEXT: lw $1, 28($sp)990; MIPS32R5EL-NEXT: insert.w $w0[3], $1991; MIPS32R5EL-NEXT: insert.w $w1[0], $4992; MIPS32R5EL-NEXT: insert.w $w1[1], $5993; MIPS32R5EL-NEXT: insert.w $w1[2], $6994; MIPS32R5EL-NEXT: insert.w $w1[3], $7995; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0996; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]997; MIPS32R5EL-NEXT: copy_s.w $3, $w0[1]998; MIPS32R5EL-NEXT: copy_s.w $4, $w0[2]999; MIPS32R5EL-NEXT: copy_s.w $5, $w0[3]1000; MIPS32R5EL-NEXT: jr $ra1001; MIPS32R5EL-NEXT: nop1002;1003; MIPS64R5EL-LABEL: i8_16:1004; MIPS64R5EL: # %bb.0:1005; MIPS64R5EL-NEXT: insert.d $w0[0], $61006; MIPS64R5EL-NEXT: insert.d $w0[1], $71007; MIPS64R5EL-NEXT: insert.d $w1[0], $41008; MIPS64R5EL-NEXT: insert.d $w1[1], $51009; MIPS64R5EL-NEXT: addv.b $w0, $w1, $w01010; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1011; MIPS64R5EL-NEXT: copy_s.d $3, $w0[1]1012; MIPS64R5EL-NEXT: jr $ra1013; MIPS64R5EL-NEXT: nop1014 %1 = add <16 x i8> %a, %b1015 ret <16 x i8> %11016}1017 1018define <2 x i16> @i16_2(<2 x i16> %a, <2 x i16> %b) {1019; MIPS32-LABEL: i16_2:1020; MIPS32: # %bb.0:1021; MIPS32-NEXT: addu $1, $4, $51022; MIPS32-NEXT: andi $1, $1, 655351023; MIPS32-NEXT: srl $2, $5, 161024; MIPS32-NEXT: srl $3, $4, 161025; MIPS32-NEXT: addu $2, $3, $21026; MIPS32-NEXT: sll $2, $2, 161027; MIPS32-NEXT: or $2, $1, $21028; MIPS32-NEXT: jr $ra1029; MIPS32-NEXT: nop1030;1031; MIPS64-LABEL: i16_2:1032; MIPS64: # %bb.0:1033; MIPS64-NEXT: sll $1, $5, 01034; MIPS64-NEXT: sll $2, $4, 01035; MIPS64-NEXT: addu $3, $2, $11036; MIPS64-NEXT: andi $3, $3, 655351037; MIPS64-NEXT: srl $1, $1, 161038; MIPS64-NEXT: srl $2, $2, 161039; MIPS64-NEXT: addu $1, $2, $11040; MIPS64-NEXT: sll $1, $1, 161041; MIPS64-NEXT: or $2, $3, $11042; MIPS64-NEXT: jr $ra1043; MIPS64-NEXT: nop1044;1045; MIPS32R5EB-LABEL: i16_2:1046; MIPS32R5EB: # %bb.0:1047; MIPS32R5EB-NEXT: addiu $sp, $sp, -481048; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 481049; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1050; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1051; MIPS32R5EB-NEXT: .cfi_offset 31, -41052; MIPS32R5EB-NEXT: .cfi_offset 30, -81053; MIPS32R5EB-NEXT: move $fp, $sp1054; MIPS32R5EB-NEXT: .cfi_def_cfa_register 301055; MIPS32R5EB-NEXT: addiu $1, $zero, -161056; MIPS32R5EB-NEXT: and $sp, $sp, $11057; MIPS32R5EB-NEXT: sw $5, 16($sp)1058; MIPS32R5EB-NEXT: sw $4, 0($sp)1059; MIPS32R5EB-NEXT: ld.h $w0, 16($sp)1060; MIPS32R5EB-NEXT: ld.h $w1, 0($sp)1061; MIPS32R5EB-NEXT: addv.h $w0, $w1, $w01062; MIPS32R5EB-NEXT: shf.h $w0, $w0, 1771063; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]1064; MIPS32R5EB-NEXT: move $sp, $fp1065; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1066; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1067; MIPS32R5EB-NEXT: addiu $sp, $sp, 481068; MIPS32R5EB-NEXT: jr $ra1069; MIPS32R5EB-NEXT: nop1070;1071; MIPS64R5EB-LABEL: i16_2:1072; MIPS64R5EB: # %bb.0:1073; MIPS64R5EB-NEXT: daddiu $sp, $sp, -321074; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 321075; MIPS64R5EB-NEXT: sll $1, $5, 01076; MIPS64R5EB-NEXT: sw $1, 16($sp)1077; MIPS64R5EB-NEXT: sll $1, $4, 01078; MIPS64R5EB-NEXT: sw $1, 0($sp)1079; MIPS64R5EB-NEXT: ld.h $w0, 16($sp)1080; MIPS64R5EB-NEXT: ld.h $w1, 0($sp)1081; MIPS64R5EB-NEXT: addv.h $w0, $w1, $w01082; MIPS64R5EB-NEXT: shf.h $w0, $w0, 1771083; MIPS64R5EB-NEXT: copy_s.w $2, $w0[0]1084; MIPS64R5EB-NEXT: daddiu $sp, $sp, 321085; MIPS64R5EB-NEXT: jr $ra1086; MIPS64R5EB-NEXT: nop1087;1088; MIPS32R5EL-LABEL: i16_2:1089; MIPS32R5EL: # %bb.0:1090; MIPS32R5EL-NEXT: addiu $sp, $sp, -481091; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 481092; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1093; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1094; MIPS32R5EL-NEXT: .cfi_offset 31, -41095; MIPS32R5EL-NEXT: .cfi_offset 30, -81096; MIPS32R5EL-NEXT: move $fp, $sp1097; MIPS32R5EL-NEXT: .cfi_def_cfa_register 301098; MIPS32R5EL-NEXT: addiu $1, $zero, -161099; MIPS32R5EL-NEXT: and $sp, $sp, $11100; MIPS32R5EL-NEXT: sw $5, 16($sp)1101; MIPS32R5EL-NEXT: sw $4, 0($sp)1102; MIPS32R5EL-NEXT: ld.h $w0, 16($sp)1103; MIPS32R5EL-NEXT: ld.h $w1, 0($sp)1104; MIPS32R5EL-NEXT: addv.h $w0, $w1, $w01105; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]1106; MIPS32R5EL-NEXT: move $sp, $fp1107; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1108; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1109; MIPS32R5EL-NEXT: addiu $sp, $sp, 481110; MIPS32R5EL-NEXT: jr $ra1111; MIPS32R5EL-NEXT: nop1112;1113; MIPS64R5EL-LABEL: i16_2:1114; MIPS64R5EL: # %bb.0:1115; MIPS64R5EL-NEXT: daddiu $sp, $sp, -321116; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 321117; MIPS64R5EL-NEXT: sll $1, $5, 01118; MIPS64R5EL-NEXT: sw $1, 16($sp)1119; MIPS64R5EL-NEXT: sll $1, $4, 01120; MIPS64R5EL-NEXT: sw $1, 0($sp)1121; MIPS64R5EL-NEXT: ld.h $w0, 16($sp)1122; MIPS64R5EL-NEXT: ld.h $w1, 0($sp)1123; MIPS64R5EL-NEXT: addv.h $w0, $w1, $w01124; MIPS64R5EL-NEXT: copy_s.w $2, $w0[0]1125; MIPS64R5EL-NEXT: daddiu $sp, $sp, 321126; MIPS64R5EL-NEXT: jr $ra1127; MIPS64R5EL-NEXT: nop1128 %1 = add <2 x i16> %a, %b1129 ret <2 x i16> %11130}1131 1132define <4 x i16> @i16_4(<4 x i16> %a, <4 x i16> %b) {1133; MIPS32-LABEL: i16_4:1134; MIPS32: # %bb.0:1135; MIPS32-NEXT: addu $1, $4, $61136; MIPS32-NEXT: andi $1, $1, 655351137; MIPS32-NEXT: srl $2, $6, 161138; MIPS32-NEXT: srl $3, $4, 161139; MIPS32-NEXT: addu $2, $3, $21140; MIPS32-NEXT: sll $2, $2, 161141; MIPS32-NEXT: or $2, $1, $21142; MIPS32-NEXT: addu $1, $5, $71143; MIPS32-NEXT: andi $1, $1, 655351144; MIPS32-NEXT: srl $3, $7, 161145; MIPS32-NEXT: srl $4, $5, 161146; MIPS32-NEXT: addu $3, $4, $31147; MIPS32-NEXT: sll $3, $3, 161148; MIPS32-NEXT: or $3, $1, $31149; MIPS32-NEXT: jr $ra1150; MIPS32-NEXT: nop1151;1152; MIPS64-LABEL: i16_4:1153; MIPS64: # %bb.0:1154; MIPS64-NEXT: dsrl $1, $5, 481155; MIPS64-NEXT: sll $1, $1, 01156; MIPS64-NEXT: dsrl $2, $4, 481157; MIPS64-NEXT: sll $2, $2, 01158; MIPS64-NEXT: addu $1, $2, $11159; MIPS64-NEXT: dsrl $2, $5, 321160; MIPS64-NEXT: sll $1, $1, 161161; MIPS64-NEXT: sll $2, $2, 01162; MIPS64-NEXT: dsrl $3, $4, 321163; MIPS64-NEXT: sll $3, $3, 01164; MIPS64-NEXT: addu $2, $3, $21165; MIPS64-NEXT: andi $2, $2, 655351166; MIPS64-NEXT: or $1, $2, $11167; MIPS64-NEXT: sll $2, $5, 01168; MIPS64-NEXT: sll $3, $4, 01169; MIPS64-NEXT: addu $4, $3, $21170; MIPS64-NEXT: dsll $1, $1, 321171; MIPS64-NEXT: andi $4, $4, 655351172; MIPS64-NEXT: srl $2, $2, 161173; MIPS64-NEXT: srl $3, $3, 161174; MIPS64-NEXT: addu $2, $3, $21175; MIPS64-NEXT: sll $2, $2, 161176; MIPS64-NEXT: or $2, $4, $21177; MIPS64-NEXT: dsll $2, $2, 321178; MIPS64-NEXT: dsrl $2, $2, 321179; MIPS64-NEXT: or $2, $2, $11180; MIPS64-NEXT: jr $ra1181; MIPS64-NEXT: nop1182;1183; MIPS32R5EB-LABEL: i16_4:1184; MIPS32R5EB: # %bb.0:1185; MIPS32R5EB-NEXT: addiu $sp, $sp, -481186; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 481187; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1188; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1189; MIPS32R5EB-NEXT: .cfi_offset 31, -41190; MIPS32R5EB-NEXT: .cfi_offset 30, -81191; MIPS32R5EB-NEXT: move $fp, $sp1192; MIPS32R5EB-NEXT: .cfi_def_cfa_register 301193; MIPS32R5EB-NEXT: addiu $1, $zero, -161194; MIPS32R5EB-NEXT: and $sp, $sp, $11195; MIPS32R5EB-NEXT: sw $7, 20($sp)1196; MIPS32R5EB-NEXT: sw $6, 16($sp)1197; MIPS32R5EB-NEXT: sw $5, 4($sp)1198; MIPS32R5EB-NEXT: sw $4, 0($sp)1199; MIPS32R5EB-NEXT: ld.h $w0, 16($sp)1200; MIPS32R5EB-NEXT: ld.h $w1, 0($sp)1201; MIPS32R5EB-NEXT: addv.h $w0, $w1, $w01202; MIPS32R5EB-NEXT: shf.h $w0, $w0, 1771203; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]1204; MIPS32R5EB-NEXT: copy_s.w $3, $w0[1]1205; MIPS32R5EB-NEXT: move $sp, $fp1206; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1207; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1208; MIPS32R5EB-NEXT: addiu $sp, $sp, 481209; MIPS32R5EB-NEXT: jr $ra1210; MIPS32R5EB-NEXT: nop1211;1212; MIPS64R5EB-LABEL: i16_4:1213; MIPS64R5EB: # %bb.0:1214; MIPS64R5EB-NEXT: daddiu $sp, $sp, -321215; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 321216; MIPS64R5EB-NEXT: sd $5, 16($sp)1217; MIPS64R5EB-NEXT: sd $4, 0($sp)1218; MIPS64R5EB-NEXT: ld.h $w0, 16($sp)1219; MIPS64R5EB-NEXT: ld.h $w1, 0($sp)1220; MIPS64R5EB-NEXT: addv.h $w0, $w1, $w01221; MIPS64R5EB-NEXT: shf.h $w0, $w0, 271222; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]1223; MIPS64R5EB-NEXT: daddiu $sp, $sp, 321224; MIPS64R5EB-NEXT: jr $ra1225; MIPS64R5EB-NEXT: nop1226;1227; MIPS32R5EL-LABEL: i16_4:1228; MIPS32R5EL: # %bb.0:1229; MIPS32R5EL-NEXT: addiu $sp, $sp, -481230; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 481231; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1232; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1233; MIPS32R5EL-NEXT: .cfi_offset 31, -41234; MIPS32R5EL-NEXT: .cfi_offset 30, -81235; MIPS32R5EL-NEXT: move $fp, $sp1236; MIPS32R5EL-NEXT: .cfi_def_cfa_register 301237; MIPS32R5EL-NEXT: addiu $1, $zero, -161238; MIPS32R5EL-NEXT: and $sp, $sp, $11239; MIPS32R5EL-NEXT: sw $7, 20($sp)1240; MIPS32R5EL-NEXT: sw $6, 16($sp)1241; MIPS32R5EL-NEXT: sw $5, 4($sp)1242; MIPS32R5EL-NEXT: sw $4, 0($sp)1243; MIPS32R5EL-NEXT: ld.h $w0, 16($sp)1244; MIPS32R5EL-NEXT: ld.h $w1, 0($sp)1245; MIPS32R5EL-NEXT: addv.h $w0, $w1, $w01246; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]1247; MIPS32R5EL-NEXT: copy_s.w $3, $w0[1]1248; MIPS32R5EL-NEXT: move $sp, $fp1249; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1250; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1251; MIPS32R5EL-NEXT: addiu $sp, $sp, 481252; MIPS32R5EL-NEXT: jr $ra1253; MIPS32R5EL-NEXT: nop1254;1255; MIPS64R5EL-LABEL: i16_4:1256; MIPS64R5EL: # %bb.0:1257; MIPS64R5EL-NEXT: daddiu $sp, $sp, -321258; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 321259; MIPS64R5EL-NEXT: sd $5, 16($sp)1260; MIPS64R5EL-NEXT: sd $4, 0($sp)1261; MIPS64R5EL-NEXT: ld.h $w0, 16($sp)1262; MIPS64R5EL-NEXT: ld.h $w1, 0($sp)1263; MIPS64R5EL-NEXT: addv.h $w0, $w1, $w01264; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1265; MIPS64R5EL-NEXT: daddiu $sp, $sp, 321266; MIPS64R5EL-NEXT: jr $ra1267; MIPS64R5EL-NEXT: nop1268 %1 = add <4 x i16> %a, %b1269 ret <4 x i16> %11270}1271 1272define <8 x i16> @i16_8(<8 x i16> %a, <8 x i16> %b) {1273; MIPS32-LABEL: i16_8:1274; MIPS32: # %bb.0:1275; MIPS32-NEXT: lw $1, 24($sp)1276; MIPS32-NEXT: srl $2, $1, 161277; MIPS32-NEXT: srl $3, $6, 161278; MIPS32-NEXT: lw $8, 20($sp)1279; MIPS32-NEXT: srl $9, $8, 161280; MIPS32-NEXT: srl $10, $5, 161281; MIPS32-NEXT: addu $9, $10, $91282; MIPS32-NEXT: addu $5, $5, $81283; MIPS32-NEXT: addu $2, $3, $21284; MIPS32-NEXT: addu $1, $6, $11285; MIPS32-NEXT: lw $3, 16($sp)1286; MIPS32-NEXT: lw $6, 28($sp)1287; MIPS32-NEXT: addu $8, $7, $61288; MIPS32-NEXT: andi $1, $1, 655351289; MIPS32-NEXT: sll $10, $2, 161290; MIPS32-NEXT: andi $5, $5, 655351291; MIPS32-NEXT: sll $9, $9, 161292; MIPS32-NEXT: addu $2, $4, $31293; MIPS32-NEXT: andi $2, $2, 655351294; MIPS32-NEXT: srl $3, $3, 161295; MIPS32-NEXT: srl $4, $4, 161296; MIPS32-NEXT: addu $3, $4, $31297; MIPS32-NEXT: sll $3, $3, 161298; MIPS32-NEXT: or $2, $2, $31299; MIPS32-NEXT: or $3, $5, $91300; MIPS32-NEXT: or $4, $1, $101301; MIPS32-NEXT: andi $1, $8, 655351302; MIPS32-NEXT: srl $5, $6, 161303; MIPS32-NEXT: srl $6, $7, 161304; MIPS32-NEXT: addu $5, $6, $51305; MIPS32-NEXT: sll $5, $5, 161306; MIPS32-NEXT: or $5, $1, $51307; MIPS32-NEXT: jr $ra1308; MIPS32-NEXT: nop1309;1310; MIPS64-LABEL: i16_8:1311; MIPS64: # %bb.0:1312; MIPS64-NEXT: dsrl $1, $6, 481313; MIPS64-NEXT: dsrl $2, $7, 481314; MIPS64-NEXT: sll $1, $1, 01315; MIPS64-NEXT: dsrl $3, $4, 481316; MIPS64-NEXT: sll $3, $3, 01317; MIPS64-NEXT: addu $1, $3, $11318; MIPS64-NEXT: dsrl $3, $6, 321319; MIPS64-NEXT: sll $2, $2, 01320; MIPS64-NEXT: dsrl $8, $5, 481321; MIPS64-NEXT: sll $8, $8, 01322; MIPS64-NEXT: addu $2, $8, $21323; MIPS64-NEXT: sll $1, $1, 161324; MIPS64-NEXT: sll $3, $3, 01325; MIPS64-NEXT: dsrl $8, $4, 321326; MIPS64-NEXT: sll $8, $8, 01327; MIPS64-NEXT: addu $3, $8, $31328; MIPS64-NEXT: andi $3, $3, 655351329; MIPS64-NEXT: dsrl $8, $7, 321330; MIPS64-NEXT: or $1, $3, $11331; MIPS64-NEXT: sll $2, $2, 161332; MIPS64-NEXT: sll $3, $8, 01333; MIPS64-NEXT: dsrl $8, $5, 321334; MIPS64-NEXT: sll $8, $8, 01335; MIPS64-NEXT: addu $3, $8, $31336; MIPS64-NEXT: andi $3, $3, 655351337; MIPS64-NEXT: or $3, $3, $21338; MIPS64-NEXT: sll $2, $6, 01339; MIPS64-NEXT: sll $4, $4, 01340; MIPS64-NEXT: addu $6, $4, $21341; MIPS64-NEXT: andi $6, $6, 655351342; MIPS64-NEXT: srl $2, $2, 161343; MIPS64-NEXT: srl $4, $4, 161344; MIPS64-NEXT: addu $2, $4, $21345; MIPS64-NEXT: sll $2, $2, 161346; MIPS64-NEXT: dsll $1, $1, 321347; MIPS64-NEXT: or $2, $6, $21348; MIPS64-NEXT: dsll $2, $2, 321349; MIPS64-NEXT: dsrl $2, $2, 321350; MIPS64-NEXT: sll $4, $7, 01351; MIPS64-NEXT: sll $5, $5, 01352; MIPS64-NEXT: addu $6, $5, $41353; MIPS64-NEXT: or $2, $2, $11354; MIPS64-NEXT: dsll $1, $3, 321355; MIPS64-NEXT: andi $3, $6, 655351356; MIPS64-NEXT: srl $4, $4, 161357; MIPS64-NEXT: srl $5, $5, 161358; MIPS64-NEXT: addu $4, $5, $41359; MIPS64-NEXT: sll $4, $4, 161360; MIPS64-NEXT: or $3, $3, $41361; MIPS64-NEXT: dsll $3, $3, 321362; MIPS64-NEXT: dsrl $3, $3, 321363; MIPS64-NEXT: or $3, $3, $11364; MIPS64-NEXT: jr $ra1365; MIPS64-NEXT: nop1366;1367; MIPS32R5EB-LABEL: i16_8:1368; MIPS32R5EB: # %bb.0:1369; MIPS32R5EB-NEXT: lw $1, 20($sp)1370; MIPS32R5EB-NEXT: lw $2, 16($sp)1371; MIPS32R5EB-NEXT: insert.w $w0[0], $21372; MIPS32R5EB-NEXT: insert.w $w0[1], $11373; MIPS32R5EB-NEXT: lw $1, 24($sp)1374; MIPS32R5EB-NEXT: insert.w $w0[2], $11375; MIPS32R5EB-NEXT: lw $1, 28($sp)1376; MIPS32R5EB-NEXT: insert.w $w0[3], $11377; MIPS32R5EB-NEXT: shf.h $w0, $w0, 1771378; MIPS32R5EB-NEXT: insert.w $w1[0], $41379; MIPS32R5EB-NEXT: insert.w $w1[1], $51380; MIPS32R5EB-NEXT: insert.w $w1[2], $61381; MIPS32R5EB-NEXT: insert.w $w1[3], $71382; MIPS32R5EB-NEXT: shf.h $w1, $w1, 1771383; MIPS32R5EB-NEXT: addv.h $w0, $w1, $w01384; MIPS32R5EB-NEXT: shf.h $w0, $w0, 1771385; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]1386; MIPS32R5EB-NEXT: copy_s.w $3, $w0[1]1387; MIPS32R5EB-NEXT: copy_s.w $4, $w0[2]1388; MIPS32R5EB-NEXT: copy_s.w $5, $w0[3]1389; MIPS32R5EB-NEXT: jr $ra1390; MIPS32R5EB-NEXT: nop1391;1392; MIPS64R5EB-LABEL: i16_8:1393; MIPS64R5EB: # %bb.0:1394; MIPS64R5EB-NEXT: insert.d $w0[0], $61395; MIPS64R5EB-NEXT: insert.d $w0[1], $71396; MIPS64R5EB-NEXT: shf.h $w0, $w0, 271397; MIPS64R5EB-NEXT: insert.d $w1[0], $41398; MIPS64R5EB-NEXT: insert.d $w1[1], $51399; MIPS64R5EB-NEXT: shf.h $w1, $w1, 271400; MIPS64R5EB-NEXT: addv.h $w0, $w1, $w01401; MIPS64R5EB-NEXT: shf.h $w0, $w0, 271402; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]1403; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]1404; MIPS64R5EB-NEXT: jr $ra1405; MIPS64R5EB-NEXT: nop1406;1407; MIPS32R5EL-LABEL: i16_8:1408; MIPS32R5EL: # %bb.0:1409; MIPS32R5EL-NEXT: lw $1, 20($sp)1410; MIPS32R5EL-NEXT: lw $2, 16($sp)1411; MIPS32R5EL-NEXT: insert.w $w0[0], $21412; MIPS32R5EL-NEXT: insert.w $w0[1], $11413; MIPS32R5EL-NEXT: lw $1, 24($sp)1414; MIPS32R5EL-NEXT: insert.w $w0[2], $11415; MIPS32R5EL-NEXT: lw $1, 28($sp)1416; MIPS32R5EL-NEXT: insert.w $w0[3], $11417; MIPS32R5EL-NEXT: insert.w $w1[0], $41418; MIPS32R5EL-NEXT: insert.w $w1[1], $51419; MIPS32R5EL-NEXT: insert.w $w1[2], $61420; MIPS32R5EL-NEXT: insert.w $w1[3], $71421; MIPS32R5EL-NEXT: addv.h $w0, $w1, $w01422; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]1423; MIPS32R5EL-NEXT: copy_s.w $3, $w0[1]1424; MIPS32R5EL-NEXT: copy_s.w $4, $w0[2]1425; MIPS32R5EL-NEXT: copy_s.w $5, $w0[3]1426; MIPS32R5EL-NEXT: jr $ra1427; MIPS32R5EL-NEXT: nop1428;1429; MIPS64R5EL-LABEL: i16_8:1430; MIPS64R5EL: # %bb.0:1431; MIPS64R5EL-NEXT: insert.d $w0[0], $61432; MIPS64R5EL-NEXT: insert.d $w0[1], $71433; MIPS64R5EL-NEXT: insert.d $w1[0], $41434; MIPS64R5EL-NEXT: insert.d $w1[1], $51435; MIPS64R5EL-NEXT: addv.h $w0, $w1, $w01436; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1437; MIPS64R5EL-NEXT: copy_s.d $3, $w0[1]1438; MIPS64R5EL-NEXT: jr $ra1439; MIPS64R5EL-NEXT: nop1440 %1 = add <8 x i16> %a, %b1441 ret <8 x i16> %11442}1443 1444define <2 x i32> @i32_2(<2 x i32> %a, <2 x i32> %b) {1445; MIPS32-LABEL: i32_2:1446; MIPS32: # %bb.0:1447; MIPS32-NEXT: addu $2, $4, $61448; MIPS32-NEXT: addu $3, $5, $71449; MIPS32-NEXT: jr $ra1450; MIPS32-NEXT: nop1451;1452; MIPS64-LABEL: i32_2:1453; MIPS64: # %bb.0:1454; MIPS64-NEXT: sll $1, $5, 01455; MIPS64-NEXT: sll $2, $4, 01456; MIPS64-NEXT: addu $1, $2, $11457; MIPS64-NEXT: dsll $1, $1, 321458; MIPS64-NEXT: dsrl $2, $5, 321459; MIPS64-NEXT: dsrl $1, $1, 321460; MIPS64-NEXT: sll $2, $2, 01461; MIPS64-NEXT: dsrl $3, $4, 321462; MIPS64-NEXT: sll $3, $3, 01463; MIPS64-NEXT: addu $2, $3, $21464; MIPS64-NEXT: dsll $2, $2, 321465; MIPS64-NEXT: or $2, $1, $21466; MIPS64-NEXT: jr $ra1467; MIPS64-NEXT: nop1468;1469; MIPS32R5-LABEL: i32_2:1470; MIPS32R5: # %bb.0:1471; MIPS32R5-NEXT: addiu $sp, $sp, -481472; MIPS32R5-NEXT: .cfi_def_cfa_offset 481473; MIPS32R5-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1474; MIPS32R5-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1475; MIPS32R5-NEXT: .cfi_offset 31, -41476; MIPS32R5-NEXT: .cfi_offset 30, -81477; MIPS32R5-NEXT: move $fp, $sp1478; MIPS32R5-NEXT: .cfi_def_cfa_register 301479; MIPS32R5-NEXT: addiu $1, $zero, -161480; MIPS32R5-NEXT: and $sp, $sp, $11481; MIPS32R5-NEXT: sw $7, 20($sp)1482; MIPS32R5-NEXT: sw $6, 16($sp)1483; MIPS32R5-NEXT: sw $5, 4($sp)1484; MIPS32R5-NEXT: sw $4, 0($sp)1485; MIPS32R5-NEXT: ld.w $w0, 16($sp)1486; MIPS32R5-NEXT: ld.w $w1, 0($sp)1487; MIPS32R5-NEXT: addv.w $w0, $w1, $w01488; MIPS32R5-NEXT: copy_s.w $2, $w0[0]1489; MIPS32R5-NEXT: copy_s.w $3, $w0[1]1490; MIPS32R5-NEXT: move $sp, $fp1491; MIPS32R5-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1492; MIPS32R5-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1493; MIPS32R5-NEXT: addiu $sp, $sp, 481494; MIPS32R5-NEXT: jr $ra1495; MIPS32R5-NEXT: nop1496;1497; MIPS64R5EB-LABEL: i32_2:1498; MIPS64R5EB: # %bb.0:1499; MIPS64R5EB-NEXT: daddiu $sp, $sp, -321500; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 321501; MIPS64R5EB-NEXT: sd $5, 16($sp)1502; MIPS64R5EB-NEXT: sd $4, 0($sp)1503; MIPS64R5EB-NEXT: ld.w $w0, 16($sp)1504; MIPS64R5EB-NEXT: ld.w $w1, 0($sp)1505; MIPS64R5EB-NEXT: addv.w $w0, $w1, $w01506; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1771507; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]1508; MIPS64R5EB-NEXT: daddiu $sp, $sp, 321509; MIPS64R5EB-NEXT: jr $ra1510; MIPS64R5EB-NEXT: nop1511;1512; MIPS64R5EL-LABEL: i32_2:1513; MIPS64R5EL: # %bb.0:1514; MIPS64R5EL-NEXT: daddiu $sp, $sp, -321515; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 321516; MIPS64R5EL-NEXT: sd $5, 16($sp)1517; MIPS64R5EL-NEXT: sd $4, 0($sp)1518; MIPS64R5EL-NEXT: ld.w $w0, 16($sp)1519; MIPS64R5EL-NEXT: ld.w $w1, 0($sp)1520; MIPS64R5EL-NEXT: addv.w $w0, $w1, $w01521; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1522; MIPS64R5EL-NEXT: daddiu $sp, $sp, 321523; MIPS64R5EL-NEXT: jr $ra1524; MIPS64R5EL-NEXT: nop1525 %1 = add <2 x i32> %a, %b1526 ret <2 x i32> %11527}1528 1529define <4 x i32> @i32_4(<4 x i32> %a, <4 x i32> %b) {1530; MIPS32-LABEL: i32_4:1531; MIPS32: # %bb.0:1532; MIPS32-NEXT: lw $1, 20($sp)1533; MIPS32-NEXT: lw $2, 16($sp)1534; MIPS32-NEXT: addu $2, $4, $21535; MIPS32-NEXT: addu $3, $5, $11536; MIPS32-NEXT: lw $1, 24($sp)1537; MIPS32-NEXT: addu $4, $6, $11538; MIPS32-NEXT: lw $1, 28($sp)1539; MIPS32-NEXT: addu $5, $7, $11540; MIPS32-NEXT: jr $ra1541; MIPS32-NEXT: nop1542;1543; MIPS64-LABEL: i32_4:1544; MIPS64: # %bb.0:1545; MIPS64-NEXT: sll $1, $6, 01546; MIPS64-NEXT: sll $2, $4, 01547; MIPS64-NEXT: addu $1, $2, $11548; MIPS64-NEXT: dsll $1, $1, 321549; MIPS64-NEXT: sll $2, $7, 01550; MIPS64-NEXT: sll $3, $5, 01551; MIPS64-NEXT: addu $2, $3, $21552; MIPS64-NEXT: dsrl $3, $6, 321553; MIPS64-NEXT: dsll $6, $2, 321554; MIPS64-NEXT: dsrl $1, $1, 321555; MIPS64-NEXT: sll $2, $3, 01556; MIPS64-NEXT: dsrl $3, $4, 321557; MIPS64-NEXT: sll $3, $3, 01558; MIPS64-NEXT: addu $2, $3, $21559; MIPS64-NEXT: dsll $2, $2, 321560; MIPS64-NEXT: dsrl $3, $7, 321561; MIPS64-NEXT: or $2, $1, $21562; MIPS64-NEXT: dsrl $1, $6, 321563; MIPS64-NEXT: sll $3, $3, 01564; MIPS64-NEXT: dsrl $4, $5, 321565; MIPS64-NEXT: sll $4, $4, 01566; MIPS64-NEXT: addu $3, $4, $31567; MIPS64-NEXT: dsll $3, $3, 321568; MIPS64-NEXT: or $3, $1, $31569; MIPS64-NEXT: jr $ra1570; MIPS64-NEXT: nop1571;1572; MIPS32R5-LABEL: i32_4:1573; MIPS32R5: # %bb.0:1574; MIPS32R5-NEXT: lw $1, 20($sp)1575; MIPS32R5-NEXT: lw $2, 16($sp)1576; MIPS32R5-NEXT: insert.w $w0[0], $21577; MIPS32R5-NEXT: insert.w $w0[1], $11578; MIPS32R5-NEXT: lw $1, 24($sp)1579; MIPS32R5-NEXT: insert.w $w0[2], $11580; MIPS32R5-NEXT: lw $1, 28($sp)1581; MIPS32R5-NEXT: insert.w $w0[3], $11582; MIPS32R5-NEXT: insert.w $w1[0], $41583; MIPS32R5-NEXT: insert.w $w1[1], $51584; MIPS32R5-NEXT: insert.w $w1[2], $61585; MIPS32R5-NEXT: insert.w $w1[3], $71586; MIPS32R5-NEXT: addv.w $w0, $w1, $w01587; MIPS32R5-NEXT: copy_s.w $2, $w0[0]1588; MIPS32R5-NEXT: copy_s.w $3, $w0[1]1589; MIPS32R5-NEXT: copy_s.w $4, $w0[2]1590; MIPS32R5-NEXT: copy_s.w $5, $w0[3]1591; MIPS32R5-NEXT: jr $ra1592; MIPS32R5-NEXT: nop1593;1594; MIPS64R5EB-LABEL: i32_4:1595; MIPS64R5EB: # %bb.0:1596; MIPS64R5EB-NEXT: insert.d $w0[0], $61597; MIPS64R5EB-NEXT: insert.d $w0[1], $71598; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1771599; MIPS64R5EB-NEXT: insert.d $w1[0], $41600; MIPS64R5EB-NEXT: insert.d $w1[1], $51601; MIPS64R5EB-NEXT: shf.w $w1, $w1, 1771602; MIPS64R5EB-NEXT: addv.w $w0, $w1, $w01603; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1771604; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]1605; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]1606; MIPS64R5EB-NEXT: jr $ra1607; MIPS64R5EB-NEXT: nop1608;1609; MIPS64R5EL-LABEL: i32_4:1610; MIPS64R5EL: # %bb.0:1611; MIPS64R5EL-NEXT: insert.d $w0[0], $61612; MIPS64R5EL-NEXT: insert.d $w0[1], $71613; MIPS64R5EL-NEXT: insert.d $w1[0], $41614; MIPS64R5EL-NEXT: insert.d $w1[1], $51615; MIPS64R5EL-NEXT: addv.w $w0, $w1, $w01616; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1617; MIPS64R5EL-NEXT: copy_s.d $3, $w0[1]1618; MIPS64R5EL-NEXT: jr $ra1619; MIPS64R5EL-NEXT: nop1620 %1 = add <4 x i32> %a, %b1621 ret <4 x i32> %11622}1623 1624define <2 x i64> @i64_2(<2 x i64> %a, <2 x i64> %b) {1625; MIPS32EB-LABEL: i64_2:1626; MIPS32EB: # %bb.0:1627; MIPS32EB-NEXT: lw $1, 16($sp)1628; MIPS32EB-NEXT: addu $1, $4, $11629; MIPS32EB-NEXT: lw $2, 20($sp)1630; MIPS32EB-NEXT: addu $3, $5, $21631; MIPS32EB-NEXT: sltu $2, $3, $51632; MIPS32EB-NEXT: lw $4, 24($sp)1633; MIPS32EB-NEXT: addu $2, $1, $21634; MIPS32EB-NEXT: addu $1, $6, $41635; MIPS32EB-NEXT: lw $4, 28($sp)1636; MIPS32EB-NEXT: addu $5, $7, $41637; MIPS32EB-NEXT: sltu $4, $5, $71638; MIPS32EB-NEXT: addu $4, $1, $41639; MIPS32EB-NEXT: jr $ra1640; MIPS32EB-NEXT: nop1641;1642; MIPS64-LABEL: i64_2:1643; MIPS64: # %bb.0:1644; MIPS64-NEXT: daddu $2, $4, $61645; MIPS64-NEXT: daddu $3, $5, $71646; MIPS64-NEXT: jr $ra1647; MIPS64-NEXT: nop1648;1649; MIPS32R5EB-LABEL: i64_2:1650; MIPS32R5EB: # %bb.0:1651; MIPS32R5EB-NEXT: lw $1, 20($sp)1652; MIPS32R5EB-NEXT: lw $2, 16($sp)1653; MIPS32R5EB-NEXT: insert.w $w0[0], $21654; MIPS32R5EB-NEXT: insert.w $w0[1], $11655; MIPS32R5EB-NEXT: lw $1, 24($sp)1656; MIPS32R5EB-NEXT: insert.w $w0[2], $11657; MIPS32R5EB-NEXT: lw $1, 28($sp)1658; MIPS32R5EB-NEXT: insert.w $w0[3], $11659; MIPS32R5EB-NEXT: shf.w $w0, $w0, 1771660; MIPS32R5EB-NEXT: insert.w $w1[0], $41661; MIPS32R5EB-NEXT: insert.w $w1[1], $51662; MIPS32R5EB-NEXT: insert.w $w1[2], $61663; MIPS32R5EB-NEXT: insert.w $w1[3], $71664; MIPS32R5EB-NEXT: shf.w $w1, $w1, 1771665; MIPS32R5EB-NEXT: addv.d $w0, $w1, $w01666; MIPS32R5EB-NEXT: shf.w $w0, $w0, 1771667; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]1668; MIPS32R5EB-NEXT: copy_s.w $3, $w0[1]1669; MIPS32R5EB-NEXT: copy_s.w $4, $w0[2]1670; MIPS32R5EB-NEXT: copy_s.w $5, $w0[3]1671; MIPS32R5EB-NEXT: jr $ra1672; MIPS32R5EB-NEXT: nop1673;1674; MIPS64R5-LABEL: i64_2:1675; MIPS64R5: # %bb.0:1676; MIPS64R5-NEXT: insert.d $w0[0], $61677; MIPS64R5-NEXT: insert.d $w0[1], $71678; MIPS64R5-NEXT: insert.d $w1[0], $41679; MIPS64R5-NEXT: insert.d $w1[1], $51680; MIPS64R5-NEXT: addv.d $w0, $w1, $w01681; MIPS64R5-NEXT: copy_s.d $2, $w0[0]1682; MIPS64R5-NEXT: copy_s.d $3, $w0[1]1683; MIPS64R5-NEXT: jr $ra1684; MIPS64R5-NEXT: nop1685;1686; MIPS32EL-LABEL: i64_2:1687; MIPS32EL: # %bb.0:1688; MIPS32EL-NEXT: lw $1, 20($sp)1689; MIPS32EL-NEXT: addu $1, $5, $11690; MIPS32EL-NEXT: lw $2, 16($sp)1691; MIPS32EL-NEXT: addu $2, $4, $21692; MIPS32EL-NEXT: sltu $3, $2, $41693; MIPS32EL-NEXT: lw $4, 28($sp)1694; MIPS32EL-NEXT: addu $3, $1, $31695; MIPS32EL-NEXT: addu $1, $7, $41696; MIPS32EL-NEXT: lw $4, 24($sp)1697; MIPS32EL-NEXT: addu $4, $6, $41698; MIPS32EL-NEXT: sltu $5, $4, $61699; MIPS32EL-NEXT: addu $5, $1, $51700; MIPS32EL-NEXT: jr $ra1701; MIPS32EL-NEXT: nop1702;1703; MIPS32R5EL-LABEL: i64_2:1704; MIPS32R5EL: # %bb.0:1705; MIPS32R5EL-NEXT: lw $1, 20($sp)1706; MIPS32R5EL-NEXT: lw $2, 16($sp)1707; MIPS32R5EL-NEXT: insert.w $w0[0], $21708; MIPS32R5EL-NEXT: insert.w $w0[1], $11709; MIPS32R5EL-NEXT: lw $1, 24($sp)1710; MIPS32R5EL-NEXT: insert.w $w0[2], $11711; MIPS32R5EL-NEXT: lw $1, 28($sp)1712; MIPS32R5EL-NEXT: insert.w $w0[3], $11713; MIPS32R5EL-NEXT: insert.w $w1[0], $41714; MIPS32R5EL-NEXT: insert.w $w1[1], $51715; MIPS32R5EL-NEXT: insert.w $w1[2], $61716; MIPS32R5EL-NEXT: insert.w $w1[3], $71717; MIPS32R5EL-NEXT: addv.d $w0, $w1, $w01718; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]1719; MIPS32R5EL-NEXT: copy_s.w $3, $w0[1]1720; MIPS32R5EL-NEXT: copy_s.w $4, $w0[2]1721; MIPS32R5EL-NEXT: copy_s.w $5, $w0[3]1722; MIPS32R5EL-NEXT: jr $ra1723; MIPS32R5EL-NEXT: nop1724 %1 = add <2 x i64> %a, %b1725 ret <2 x i64> %11726}1727 1728; The MIPS vector ABI treats vectors of floats differently to vectors of1729; integers.1730 1731; For arguments floating pointer vectors are bitcasted to integer vectors whose1732; elements are of GPR width and where the element count is deduced from1733; the length of the floating point vector divided by the size of the GPRs.1734 1735; For returns, integer vectors are passed via the GPR register set, but1736; floating point vectors are returned via a hidden sret pointer.1737 1738; For testing purposes we skip returning values here and test them below1739; instead.1740@float_res_v2f32 = external global <2 x float>1741 1742define void @float_2(<2 x float> %a, <2 x float> %b) {1743; MIPS32-LABEL: float_2:1744; MIPS32: # %bb.0:1745; MIPS32-NEXT: mtc1 $7, $f01746; MIPS32-NEXT: mtc1 $5, $f11747; MIPS32-NEXT: add.s $f0, $f1, $f01748; MIPS32-NEXT: lui $1, %hi(float_res_v2f32)1749; MIPS32-NEXT: addiu $2, $1, %lo(float_res_v2f32)1750; MIPS32-NEXT: swc1 $f0, 4($2)1751; MIPS32-NEXT: mtc1 $6, $f01752; MIPS32-NEXT: mtc1 $4, $f11753; MIPS32-NEXT: add.s $f0, $f1, $f01754; MIPS32-NEXT: swc1 $f0, %lo(float_res_v2f32)($1)1755; MIPS32-NEXT: jr $ra1756; MIPS32-NEXT: nop1757;1758; MIPS64EB-LABEL: float_2:1759; MIPS64EB: # %bb.0:1760; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(float_2)))1761; MIPS64EB-NEXT: daddu $1, $1, $251762; MIPS64EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_2)))1763; MIPS64EB-NEXT: sll $2, $5, 01764; MIPS64EB-NEXT: mtc1 $2, $f01765; MIPS64EB-NEXT: sll $2, $4, 01766; MIPS64EB-NEXT: mtc1 $2, $f11767; MIPS64EB-NEXT: add.s $f0, $f1, $f01768; MIPS64EB-NEXT: dsrl $2, $5, 321769; MIPS64EB-NEXT: sll $2, $2, 01770; MIPS64EB-NEXT: ld $1, %got_disp(float_res_v2f32)($1)1771; MIPS64EB-NEXT: swc1 $f0, 4($1)1772; MIPS64EB-NEXT: mtc1 $2, $f01773; MIPS64EB-NEXT: dsrl $2, $4, 321774; MIPS64EB-NEXT: sll $2, $2, 01775; MIPS64EB-NEXT: mtc1 $2, $f11776; MIPS64EB-NEXT: add.s $f0, $f1, $f01777; MIPS64EB-NEXT: swc1 $f0, 0($1)1778; MIPS64EB-NEXT: jr $ra1779; MIPS64EB-NEXT: nop1780;1781; MIPS32R5-LABEL: float_2:1782; MIPS32R5: # %bb.0:1783; MIPS32R5-NEXT: addiu $sp, $sp, -481784; MIPS32R5-NEXT: .cfi_def_cfa_offset 481785; MIPS32R5-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill1786; MIPS32R5-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill1787; MIPS32R5-NEXT: .cfi_offset 31, -41788; MIPS32R5-NEXT: .cfi_offset 30, -81789; MIPS32R5-NEXT: move $fp, $sp1790; MIPS32R5-NEXT: .cfi_def_cfa_register 301791; MIPS32R5-NEXT: addiu $1, $zero, -161792; MIPS32R5-NEXT: and $sp, $sp, $11793; MIPS32R5-NEXT: sw $7, 20($sp)1794; MIPS32R5-NEXT: sw $6, 16($sp)1795; MIPS32R5-NEXT: sw $5, 4($sp)1796; MIPS32R5-NEXT: sw $4, 0($sp)1797; MIPS32R5-NEXT: ld.w $w0, 16($sp)1798; MIPS32R5-NEXT: ld.w $w1, 0($sp)1799; MIPS32R5-NEXT: fadd.w $w0, $w1, $w01800; MIPS32R5-NEXT: lui $1, %hi(float_res_v2f32)1801; MIPS32R5-NEXT: addiu $2, $1, %lo(float_res_v2f32)1802; MIPS32R5-NEXT: splati.w $w1, $w0[1]1803; MIPS32R5-NEXT: swc1 $f1, 4($2)1804; MIPS32R5-NEXT: swc1 $f0, %lo(float_res_v2f32)($1)1805; MIPS32R5-NEXT: move $sp, $fp1806; MIPS32R5-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload1807; MIPS32R5-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload1808; MIPS32R5-NEXT: addiu $sp, $sp, 481809; MIPS32R5-NEXT: jr $ra1810; MIPS32R5-NEXT: nop1811;1812; MIPS64R5EB-LABEL: float_2:1813; MIPS64R5EB: # %bb.0:1814; MIPS64R5EB-NEXT: daddiu $sp, $sp, -321815; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 321816; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(float_2)))1817; MIPS64R5EB-NEXT: daddu $1, $1, $251818; MIPS64R5EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_2)))1819; MIPS64R5EB-NEXT: sd $5, 16($sp)1820; MIPS64R5EB-NEXT: sd $4, 0($sp)1821; MIPS64R5EB-NEXT: ld.w $w0, 16($sp)1822; MIPS64R5EB-NEXT: ld.w $w1, 0($sp)1823; MIPS64R5EB-NEXT: fadd.w $w0, $w1, $w01824; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1771825; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]1826; MIPS64R5EB-NEXT: ld $1, %got_disp(float_res_v2f32)($1)1827; MIPS64R5EB-NEXT: sd $2, 0($1)1828; MIPS64R5EB-NEXT: daddiu $sp, $sp, 321829; MIPS64R5EB-NEXT: jr $ra1830; MIPS64R5EB-NEXT: nop1831;1832; MIPS64EL-LABEL: float_2:1833; MIPS64EL: # %bb.0:1834; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(float_2)))1835; MIPS64EL-NEXT: daddu $1, $1, $251836; MIPS64EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_2)))1837; MIPS64EL-NEXT: sll $2, $5, 01838; MIPS64EL-NEXT: mtc1 $2, $f01839; MIPS64EL-NEXT: sll $2, $4, 01840; MIPS64EL-NEXT: mtc1 $2, $f11841; MIPS64EL-NEXT: add.s $f0, $f1, $f01842; MIPS64EL-NEXT: dsrl $2, $5, 321843; MIPS64EL-NEXT: sll $2, $2, 01844; MIPS64EL-NEXT: ld $1, %got_disp(float_res_v2f32)($1)1845; MIPS64EL-NEXT: swc1 $f0, 0($1)1846; MIPS64EL-NEXT: mtc1 $2, $f01847; MIPS64EL-NEXT: dsrl $2, $4, 321848; MIPS64EL-NEXT: sll $2, $2, 01849; MIPS64EL-NEXT: mtc1 $2, $f11850; MIPS64EL-NEXT: add.s $f0, $f1, $f01851; MIPS64EL-NEXT: swc1 $f0, 4($1)1852; MIPS64EL-NEXT: jr $ra1853; MIPS64EL-NEXT: nop1854;1855; MIPS64R5EL-LABEL: float_2:1856; MIPS64R5EL: # %bb.0:1857; MIPS64R5EL-NEXT: daddiu $sp, $sp, -321858; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 321859; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(float_2)))1860; MIPS64R5EL-NEXT: daddu $1, $1, $251861; MIPS64R5EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_2)))1862; MIPS64R5EL-NEXT: sd $5, 16($sp)1863; MIPS64R5EL-NEXT: sd $4, 0($sp)1864; MIPS64R5EL-NEXT: ld.w $w0, 16($sp)1865; MIPS64R5EL-NEXT: ld.w $w1, 0($sp)1866; MIPS64R5EL-NEXT: fadd.w $w0, $w1, $w01867; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]1868; MIPS64R5EL-NEXT: ld $1, %got_disp(float_res_v2f32)($1)1869; MIPS64R5EL-NEXT: sd $2, 0($1)1870; MIPS64R5EL-NEXT: daddiu $sp, $sp, 321871; MIPS64R5EL-NEXT: jr $ra1872; MIPS64R5EL-NEXT: nop1873 %1 = fadd <2 x float> %a, %b1874 store <2 x float> %1, ptr @float_res_v2f321875 ret void1876}1877 1878@float_res_v4f32 = external global <4 x float>1879 1880; For MSA this case is suboptimal, the 4 loads can be combined into a single1881; ld.w.1882 1883define void @float_4(<4 x float> %a, <4 x float> %b) {1884; MIPS32-LABEL: float_4:1885; MIPS32: # %bb.0:1886; MIPS32-NEXT: mtc1 $7, $f01887; MIPS32-NEXT: mtc1 $6, $f11888; MIPS32-NEXT: lwc1 $f2, 28($sp)1889; MIPS32-NEXT: lwc1 $f3, 24($sp)1890; MIPS32-NEXT: add.s $f1, $f1, $f31891; MIPS32-NEXT: add.s $f0, $f0, $f21892; MIPS32-NEXT: mtc1 $5, $f21893; MIPS32-NEXT: lui $1, %hi(float_res_v4f32)1894; MIPS32-NEXT: addiu $2, $1, %lo(float_res_v4f32)1895; MIPS32-NEXT: lwc1 $f3, 20($sp)1896; MIPS32-NEXT: swc1 $f0, 12($2)1897; MIPS32-NEXT: swc1 $f1, 8($2)1898; MIPS32-NEXT: add.s $f0, $f2, $f31899; MIPS32-NEXT: swc1 $f0, 4($2)1900; MIPS32-NEXT: mtc1 $4, $f01901; MIPS32-NEXT: lwc1 $f1, 16($sp)1902; MIPS32-NEXT: add.s $f0, $f0, $f11903; MIPS32-NEXT: swc1 $f0, %lo(float_res_v4f32)($1)1904; MIPS32-NEXT: jr $ra1905; MIPS32-NEXT: nop1906;1907; MIPS64EB-LABEL: float_4:1908; MIPS64EB: # %bb.0:1909; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(float_4)))1910; MIPS64EB-NEXT: daddu $1, $1, $251911; MIPS64EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_4)))1912; MIPS64EB-NEXT: dsrl $2, $7, 321913; MIPS64EB-NEXT: sll $2, $2, 01914; MIPS64EB-NEXT: sll $3, $4, 01915; MIPS64EB-NEXT: sll $8, $6, 01916; MIPS64EB-NEXT: sll $7, $7, 01917; MIPS64EB-NEXT: mtc1 $8, $f01918; MIPS64EB-NEXT: mtc1 $3, $f11919; MIPS64EB-NEXT: mtc1 $2, $f21920; MIPS64EB-NEXT: dsrl $2, $5, 321921; MIPS64EB-NEXT: sll $2, $2, 01922; MIPS64EB-NEXT: mtc1 $2, $f31923; MIPS64EB-NEXT: add.s $f2, $f3, $f21924; MIPS64EB-NEXT: add.s $f0, $f1, $f01925; MIPS64EB-NEXT: mtc1 $7, $f11926; MIPS64EB-NEXT: sll $2, $5, 01927; MIPS64EB-NEXT: mtc1 $2, $f31928; MIPS64EB-NEXT: add.s $f1, $f3, $f11929; MIPS64EB-NEXT: dsrl $2, $6, 321930; MIPS64EB-NEXT: sll $2, $2, 01931; MIPS64EB-NEXT: ld $1, %got_disp(float_res_v4f32)($1)1932; MIPS64EB-NEXT: swc1 $f1, 12($1)1933; MIPS64EB-NEXT: swc1 $f0, 4($1)1934; MIPS64EB-NEXT: swc1 $f2, 8($1)1935; MIPS64EB-NEXT: mtc1 $2, $f01936; MIPS64EB-NEXT: dsrl $2, $4, 321937; MIPS64EB-NEXT: sll $2, $2, 01938; MIPS64EB-NEXT: mtc1 $2, $f11939; MIPS64EB-NEXT: add.s $f0, $f1, $f01940; MIPS64EB-NEXT: swc1 $f0, 0($1)1941; MIPS64EB-NEXT: jr $ra1942; MIPS64EB-NEXT: nop1943;1944; MIPS32R5-LABEL: float_4:1945; MIPS32R5: # %bb.0:1946; MIPS32R5-NEXT: lw $1, 20($sp)1947; MIPS32R5-NEXT: lw $2, 16($sp)1948; MIPS32R5-NEXT: insert.w $w0[0], $21949; MIPS32R5-NEXT: insert.w $w0[1], $11950; MIPS32R5-NEXT: lw $1, 24($sp)1951; MIPS32R5-NEXT: insert.w $w0[2], $11952; MIPS32R5-NEXT: lw $1, 28($sp)1953; MIPS32R5-NEXT: insert.w $w0[3], $11954; MIPS32R5-NEXT: insert.w $w1[0], $41955; MIPS32R5-NEXT: insert.w $w1[1], $51956; MIPS32R5-NEXT: insert.w $w1[2], $61957; MIPS32R5-NEXT: insert.w $w1[3], $71958; MIPS32R5-NEXT: fadd.w $w0, $w1, $w01959; MIPS32R5-NEXT: lui $1, %hi(float_res_v4f32)1960; MIPS32R5-NEXT: addiu $1, $1, %lo(float_res_v4f32)1961; MIPS32R5-NEXT: st.w $w0, 0($1)1962; MIPS32R5-NEXT: jr $ra1963; MIPS32R5-NEXT: nop1964;1965; MIPS64R5EB-LABEL: float_4:1966; MIPS64R5EB: # %bb.0:1967; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(float_4)))1968; MIPS64R5EB-NEXT: daddu $1, $1, $251969; MIPS64R5EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_4)))1970; MIPS64R5EB-NEXT: insert.d $w0[0], $61971; MIPS64R5EB-NEXT: insert.d $w0[1], $71972; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1771973; MIPS64R5EB-NEXT: insert.d $w1[0], $41974; MIPS64R5EB-NEXT: insert.d $w1[1], $51975; MIPS64R5EB-NEXT: shf.w $w1, $w1, 1771976; MIPS64R5EB-NEXT: fadd.w $w0, $w1, $w01977; MIPS64R5EB-NEXT: ld $1, %got_disp(float_res_v4f32)($1)1978; MIPS64R5EB-NEXT: st.w $w0, 0($1)1979; MIPS64R5EB-NEXT: jr $ra1980; MIPS64R5EB-NEXT: nop1981;1982; MIPS64EL-LABEL: float_4:1983; MIPS64EL: # %bb.0:1984; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(float_4)))1985; MIPS64EL-NEXT: daddu $1, $1, $251986; MIPS64EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_4)))1987; MIPS64EL-NEXT: dsrl $2, $7, 321988; MIPS64EL-NEXT: sll $2, $2, 01989; MIPS64EL-NEXT: sll $3, $4, 01990; MIPS64EL-NEXT: sll $8, $6, 01991; MIPS64EL-NEXT: sll $7, $7, 01992; MIPS64EL-NEXT: mtc1 $8, $f01993; MIPS64EL-NEXT: mtc1 $3, $f11994; MIPS64EL-NEXT: mtc1 $2, $f21995; MIPS64EL-NEXT: dsrl $2, $5, 321996; MIPS64EL-NEXT: sll $2, $2, 01997; MIPS64EL-NEXT: mtc1 $2, $f31998; MIPS64EL-NEXT: add.s $f2, $f3, $f21999; MIPS64EL-NEXT: add.s $f0, $f1, $f02000; MIPS64EL-NEXT: mtc1 $7, $f12001; MIPS64EL-NEXT: sll $2, $5, 02002; MIPS64EL-NEXT: mtc1 $2, $f32003; MIPS64EL-NEXT: add.s $f1, $f3, $f12004; MIPS64EL-NEXT: dsrl $2, $6, 322005; MIPS64EL-NEXT: sll $2, $2, 02006; MIPS64EL-NEXT: ld $1, %got_disp(float_res_v4f32)($1)2007; MIPS64EL-NEXT: swc1 $f1, 8($1)2008; MIPS64EL-NEXT: swc1 $f0, 0($1)2009; MIPS64EL-NEXT: swc1 $f2, 12($1)2010; MIPS64EL-NEXT: mtc1 $2, $f02011; MIPS64EL-NEXT: dsrl $2, $4, 322012; MIPS64EL-NEXT: sll $2, $2, 02013; MIPS64EL-NEXT: mtc1 $2, $f12014; MIPS64EL-NEXT: add.s $f0, $f1, $f02015; MIPS64EL-NEXT: swc1 $f0, 4($1)2016; MIPS64EL-NEXT: jr $ra2017; MIPS64EL-NEXT: nop2018;2019; MIPS64R5EL-LABEL: float_4:2020; MIPS64R5EL: # %bb.0:2021; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(float_4)))2022; MIPS64R5EL-NEXT: daddu $1, $1, $252023; MIPS64R5EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(float_4)))2024; MIPS64R5EL-NEXT: insert.d $w0[0], $62025; MIPS64R5EL-NEXT: insert.d $w0[1], $72026; MIPS64R5EL-NEXT: insert.d $w1[0], $42027; MIPS64R5EL-NEXT: insert.d $w1[1], $52028; MIPS64R5EL-NEXT: fadd.w $w0, $w1, $w02029; MIPS64R5EL-NEXT: ld $1, %got_disp(float_res_v4f32)($1)2030; MIPS64R5EL-NEXT: st.w $w0, 0($1)2031; MIPS64R5EL-NEXT: jr $ra2032; MIPS64R5EL-NEXT: nop2033 %1 = fadd <4 x float> %a, %b2034 store <4 x float> %1, ptr @float_res_v4f322035 ret void2036}2037 2038@double_v2f64 = external global <2 x double>2039 2040define void @double_2(<2 x double> %a, <2 x double> %b) {2041; MIPS32-LABEL: double_2:2042; MIPS32: # %bb.0:2043; MIPS32-NEXT: addiu $sp, $sp, -322044; MIPS32-NEXT: .cfi_def_cfa_offset 322045; MIPS32-NEXT: lw $1, 60($sp)2046; MIPS32-NEXT: sw $1, 12($sp)2047; MIPS32-NEXT: lw $1, 56($sp)2048; MIPS32-NEXT: sw $1, 8($sp)2049; MIPS32-NEXT: sw $7, 28($sp)2050; MIPS32-NEXT: sw $6, 24($sp)2051; MIPS32-NEXT: ldc1 $f0, 8($sp)2052; MIPS32-NEXT: ldc1 $f2, 24($sp)2053; MIPS32-NEXT: add.d $f0, $f2, $f02054; MIPS32-NEXT: lui $1, %hi(double_v2f64)2055; MIPS32-NEXT: addiu $2, $1, %lo(double_v2f64)2056; MIPS32-NEXT: lw $3, 52($sp)2057; MIPS32-NEXT: sdc1 $f0, 8($2)2058; MIPS32-NEXT: sw $3, 4($sp)2059; MIPS32-NEXT: lw $2, 48($sp)2060; MIPS32-NEXT: sw $2, 0($sp)2061; MIPS32-NEXT: sw $5, 20($sp)2062; MIPS32-NEXT: sw $4, 16($sp)2063; MIPS32-NEXT: ldc1 $f0, 0($sp)2064; MIPS32-NEXT: ldc1 $f2, 16($sp)2065; MIPS32-NEXT: add.d $f0, $f2, $f02066; MIPS32-NEXT: sdc1 $f0, %lo(double_v2f64)($1)2067; MIPS32-NEXT: addiu $sp, $sp, 322068; MIPS32-NEXT: jr $ra2069; MIPS32-NEXT: nop2070;2071; MIPS64-LABEL: double_2:2072; MIPS64: # %bb.0:2073; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(double_2)))2074; MIPS64-NEXT: daddu $1, $1, $252075; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(double_2)))2076; MIPS64-NEXT: dmtc1 $7, $f02077; MIPS64-NEXT: dmtc1 $5, $f12078; MIPS64-NEXT: add.d $f0, $f1, $f02079; MIPS64-NEXT: ld $1, %got_disp(double_v2f64)($1)2080; MIPS64-NEXT: sdc1 $f0, 8($1)2081; MIPS64-NEXT: dmtc1 $6, $f02082; MIPS64-NEXT: dmtc1 $4, $f12083; MIPS64-NEXT: add.d $f0, $f1, $f02084; MIPS64-NEXT: sdc1 $f0, 0($1)2085; MIPS64-NEXT: jr $ra2086; MIPS64-NEXT: nop2087;2088; MIPS32R5EB-LABEL: double_2:2089; MIPS32R5EB: # %bb.0:2090; MIPS32R5EB-NEXT: lw $1, 20($sp)2091; MIPS32R5EB-NEXT: lw $2, 16($sp)2092; MIPS32R5EB-NEXT: insert.w $w0[0], $22093; MIPS32R5EB-NEXT: insert.w $w0[1], $12094; MIPS32R5EB-NEXT: lw $1, 24($sp)2095; MIPS32R5EB-NEXT: insert.w $w0[2], $12096; MIPS32R5EB-NEXT: lw $1, 28($sp)2097; MIPS32R5EB-NEXT: insert.w $w0[3], $12098; MIPS32R5EB-NEXT: shf.w $w0, $w0, 1772099; MIPS32R5EB-NEXT: insert.w $w1[0], $42100; MIPS32R5EB-NEXT: insert.w $w1[1], $52101; MIPS32R5EB-NEXT: insert.w $w1[2], $62102; MIPS32R5EB-NEXT: insert.w $w1[3], $72103; MIPS32R5EB-NEXT: shf.w $w1, $w1, 1772104; MIPS32R5EB-NEXT: fadd.d $w0, $w1, $w02105; MIPS32R5EB-NEXT: lui $1, %hi(double_v2f64)2106; MIPS32R5EB-NEXT: addiu $1, $1, %lo(double_v2f64)2107; MIPS32R5EB-NEXT: st.d $w0, 0($1)2108; MIPS32R5EB-NEXT: jr $ra2109; MIPS32R5EB-NEXT: nop2110;2111; MIPS64R5-LABEL: double_2:2112; MIPS64R5: # %bb.0:2113; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(double_2)))2114; MIPS64R5-NEXT: daddu $1, $1, $252115; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(double_2)))2116; MIPS64R5-NEXT: insert.d $w0[0], $62117; MIPS64R5-NEXT: insert.d $w0[1], $72118; MIPS64R5-NEXT: insert.d $w1[0], $42119; MIPS64R5-NEXT: insert.d $w1[1], $52120; MIPS64R5-NEXT: fadd.d $w0, $w1, $w02121; MIPS64R5-NEXT: ld $1, %got_disp(double_v2f64)($1)2122; MIPS64R5-NEXT: st.d $w0, 0($1)2123; MIPS64R5-NEXT: jr $ra2124; MIPS64R5-NEXT: nop2125;2126; MIPS32R5EL-LABEL: double_2:2127; MIPS32R5EL: # %bb.0:2128; MIPS32R5EL-NEXT: lw $1, 20($sp)2129; MIPS32R5EL-NEXT: lw $2, 16($sp)2130; MIPS32R5EL-NEXT: insert.w $w0[0], $22131; MIPS32R5EL-NEXT: insert.w $w0[1], $12132; MIPS32R5EL-NEXT: lw $1, 24($sp)2133; MIPS32R5EL-NEXT: insert.w $w0[2], $12134; MIPS32R5EL-NEXT: lw $1, 28($sp)2135; MIPS32R5EL-NEXT: insert.w $w0[3], $12136; MIPS32R5EL-NEXT: insert.w $w1[0], $42137; MIPS32R5EL-NEXT: insert.w $w1[1], $52138; MIPS32R5EL-NEXT: insert.w $w1[2], $62139; MIPS32R5EL-NEXT: insert.w $w1[3], $72140; MIPS32R5EL-NEXT: fadd.d $w0, $w1, $w02141; MIPS32R5EL-NEXT: lui $1, %hi(double_v2f64)2142; MIPS32R5EL-NEXT: addiu $1, $1, %lo(double_v2f64)2143; MIPS32R5EL-NEXT: st.d $w0, 0($1)2144; MIPS32R5EL-NEXT: jr $ra2145; MIPS32R5EL-NEXT: nop2146 %1 = fadd <2 x double> %a, %b2147 store <2 x double> %1, ptr @double_v2f642148 ret void2149}2150 2151; Return value testing.2152; Integer vectors are returned in $2, $3, $4, $5 for O32, $2, $3 for N32/N642153; Floating point vectors are returned through a hidden sret pointer.2154 2155@gv2i8 = global <2 x i8> <i8 1, i8 2>2156@gv4i8 = global <4 x i8> <i8 0, i8 1, i8 2, i8 3>2157@gv8i8 = global <8 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7>2158@gv16i8 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>2159 2160@gv2i16 = global <2 x i16> <i16 1, i16 2>2161@gv4i16 = global <4 x i16> <i16 0, i16 1, i16 2, i16 3>2162@gv8i16 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>2163 2164@gv2i24 = global <2 x i24> <i24 1, i24 2>2165 2166@gv2i32 = global <2 x i32> <i32 0, i32 1>2167@gv4i32 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>2168 2169@gv2i64 = global <2 x i64> <i64 0, i64 1>2170 2171; FIXME: why is this lh instead of lhu on mips64?2172define <2 x i8> @ret_2_i8() {2173; MIPS32-LABEL: ret_2_i8:2174; MIPS32: # %bb.0:2175; MIPS32-NEXT: lui $1, %hi(gv2i8)2176; MIPS32-NEXT: lhu $2, %lo(gv2i8)($1)2177; MIPS32-NEXT: jr $ra2178; MIPS32-NEXT: nop2179;2180; MIPS64-LABEL: ret_2_i8:2181; MIPS64: # %bb.0:2182; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i8)))2183; MIPS64-NEXT: daddu $1, $1, $252184; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i8)))2185; MIPS64-NEXT: ld $1, %got_disp(gv2i8)($1)2186; MIPS64-NEXT: lh $2, 0($1)2187; MIPS64-NEXT: jr $ra2188; MIPS64-NEXT: nop2189;2190; MIPS32R5-LABEL: ret_2_i8:2191; MIPS32R5: # %bb.0:2192; MIPS32R5-NEXT: lui $1, %hi(gv2i8)2193; MIPS32R5-NEXT: lhu $2, %lo(gv2i8)($1)2194; MIPS32R5-NEXT: jr $ra2195; MIPS32R5-NEXT: nop2196;2197; MIPS64R5-LABEL: ret_2_i8:2198; MIPS64R5: # %bb.0:2199; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i8)))2200; MIPS64R5-NEXT: daddu $1, $1, $252201; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i8)))2202; MIPS64R5-NEXT: ld $1, %got_disp(gv2i8)($1)2203; MIPS64R5-NEXT: lh $2, 0($1)2204; MIPS64R5-NEXT: jr $ra2205; MIPS64R5-NEXT: nop2206 %1 = load <2 x i8>, ptr @gv2i82207 ret <2 x i8> %12208}2209 2210define <4 x i8> @ret_4_i8() {2211; MIPS32-LABEL: ret_4_i8:2212; MIPS32: # %bb.0:2213; MIPS32-NEXT: lui $1, %hi(gv4i8)2214; MIPS32-NEXT: lw $2, %lo(gv4i8)($1)2215; MIPS32-NEXT: jr $ra2216; MIPS32-NEXT: nop2217;2218; MIPS64-LABEL: ret_4_i8:2219; MIPS64: # %bb.0:2220; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i8)))2221; MIPS64-NEXT: daddu $1, $1, $252222; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i8)))2223; MIPS64-NEXT: ld $1, %got_disp(gv4i8)($1)2224; MIPS64-NEXT: lw $2, 0($1)2225; MIPS64-NEXT: jr $ra2226; MIPS64-NEXT: nop2227;2228; MIPS32R5-LABEL: ret_4_i8:2229; MIPS32R5: # %bb.0:2230; MIPS32R5-NEXT: lui $1, %hi(gv4i8)2231; MIPS32R5-NEXT: lw $2, %lo(gv4i8)($1)2232; MIPS32R5-NEXT: jr $ra2233; MIPS32R5-NEXT: nop2234;2235; MIPS64R5-LABEL: ret_4_i8:2236; MIPS64R5: # %bb.0:2237; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i8)))2238; MIPS64R5-NEXT: daddu $1, $1, $252239; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i8)))2240; MIPS64R5-NEXT: ld $1, %got_disp(gv4i8)($1)2241; MIPS64R5-NEXT: lw $2, 0($1)2242; MIPS64R5-NEXT: jr $ra2243; MIPS64R5-NEXT: nop2244 %1 = load <4 x i8>, ptr @gv4i82245 ret <4 x i8> %12246}2247 2248define <8 x i8> @ret_8_i8() {2249; MIPS32-LABEL: ret_8_i8:2250; MIPS32: # %bb.0:2251; MIPS32-NEXT: lui $1, %hi(gv8i8)2252; MIPS32-NEXT: lw $2, %lo(gv8i8)($1)2253; MIPS32-NEXT: addiu $1, $1, %lo(gv8i8)2254; MIPS32-NEXT: lw $3, 4($1)2255; MIPS32-NEXT: jr $ra2256; MIPS32-NEXT: nop2257;2258; MIPS64-LABEL: ret_8_i8:2259; MIPS64: # %bb.0:2260; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_8_i8)))2261; MIPS64-NEXT: daddu $1, $1, $252262; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_8_i8)))2263; MIPS64-NEXT: ld $1, %got_disp(gv8i8)($1)2264; MIPS64-NEXT: ld $2, 0($1)2265; MIPS64-NEXT: jr $ra2266; MIPS64-NEXT: nop2267;2268; MIPS32R5-LABEL: ret_8_i8:2269; MIPS32R5: # %bb.0:2270; MIPS32R5-NEXT: lui $1, %hi(gv8i8)2271; MIPS32R5-NEXT: lw $2, %lo(gv8i8)($1)2272; MIPS32R5-NEXT: addiu $1, $1, %lo(gv8i8)2273; MIPS32R5-NEXT: lw $3, 4($1)2274; MIPS32R5-NEXT: jr $ra2275; MIPS32R5-NEXT: nop2276;2277; MIPS64R5-LABEL: ret_8_i8:2278; MIPS64R5: # %bb.0:2279; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_8_i8)))2280; MIPS64R5-NEXT: daddu $1, $1, $252281; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_8_i8)))2282; MIPS64R5-NEXT: ld $1, %got_disp(gv8i8)($1)2283; MIPS64R5-NEXT: ld $2, 0($1)2284; MIPS64R5-NEXT: jr $ra2285; MIPS64R5-NEXT: nop2286 %1 = load <8 x i8>, ptr @gv8i82287 ret <8 x i8> %12288}2289 2290define <16 x i8> @ret_16_i8() {2291; MIPS32-LABEL: ret_16_i8:2292; MIPS32: # %bb.0:2293; MIPS32-NEXT: lui $1, %hi(gv16i8)2294; MIPS32-NEXT: lw $2, %lo(gv16i8)($1)2295; MIPS32-NEXT: addiu $1, $1, %lo(gv16i8)2296; MIPS32-NEXT: lw $3, 4($1)2297; MIPS32-NEXT: lw $4, 8($1)2298; MIPS32-NEXT: lw $5, 12($1)2299; MIPS32-NEXT: jr $ra2300; MIPS32-NEXT: nop2301;2302; MIPS64-LABEL: ret_16_i8:2303; MIPS64: # %bb.0:2304; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_16_i8)))2305; MIPS64-NEXT: daddu $1, $1, $252306; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_16_i8)))2307; MIPS64-NEXT: ld $1, %got_disp(gv16i8)($1)2308; MIPS64-NEXT: ld $2, 0($1)2309; MIPS64-NEXT: ld $3, 8($1)2310; MIPS64-NEXT: jr $ra2311; MIPS64-NEXT: nop2312;2313; MIPS32R5-LABEL: ret_16_i8:2314; MIPS32R5: # %bb.0:2315; MIPS32R5-NEXT: lui $1, %hi(gv16i8)2316; MIPS32R5-NEXT: addiu $1, $1, %lo(gv16i8)2317; MIPS32R5-NEXT: ld.w $w0, 0($1)2318; MIPS32R5-NEXT: copy_s.w $2, $w0[0]2319; MIPS32R5-NEXT: copy_s.w $3, $w0[1]2320; MIPS32R5-NEXT: copy_s.w $4, $w0[2]2321; MIPS32R5-NEXT: copy_s.w $5, $w0[3]2322; MIPS32R5-NEXT: jr $ra2323; MIPS32R5-NEXT: nop2324;2325; MIPS64R5-LABEL: ret_16_i8:2326; MIPS64R5: # %bb.0:2327; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_16_i8)))2328; MIPS64R5-NEXT: daddu $1, $1, $252329; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_16_i8)))2330; MIPS64R5-NEXT: ld $1, %got_disp(gv16i8)($1)2331; MIPS64R5-NEXT: ld.d $w0, 0($1)2332; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2333; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2334; MIPS64R5-NEXT: jr $ra2335; MIPS64R5-NEXT: nop2336 %1 = load <16 x i8>, ptr @gv16i82337 ret <16 x i8> %12338}2339 2340define <2 x i16> @ret_2_i16() {2341; MIPS32-LABEL: ret_2_i16:2342; MIPS32: # %bb.0:2343; MIPS32-NEXT: lui $1, %hi(gv2i16)2344; MIPS32-NEXT: lw $2, %lo(gv2i16)($1)2345; MIPS32-NEXT: jr $ra2346; MIPS32-NEXT: nop2347;2348; MIPS64-LABEL: ret_2_i16:2349; MIPS64: # %bb.0:2350; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i16)))2351; MIPS64-NEXT: daddu $1, $1, $252352; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i16)))2353; MIPS64-NEXT: ld $1, %got_disp(gv2i16)($1)2354; MIPS64-NEXT: lw $2, 0($1)2355; MIPS64-NEXT: jr $ra2356; MIPS64-NEXT: nop2357;2358; MIPS32R5-LABEL: ret_2_i16:2359; MIPS32R5: # %bb.0:2360; MIPS32R5-NEXT: lui $1, %hi(gv2i16)2361; MIPS32R5-NEXT: lw $2, %lo(gv2i16)($1)2362; MIPS32R5-NEXT: jr $ra2363; MIPS32R5-NEXT: nop2364;2365; MIPS64R5-LABEL: ret_2_i16:2366; MIPS64R5: # %bb.0:2367; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i16)))2368; MIPS64R5-NEXT: daddu $1, $1, $252369; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i16)))2370; MIPS64R5-NEXT: ld $1, %got_disp(gv2i16)($1)2371; MIPS64R5-NEXT: lw $2, 0($1)2372; MIPS64R5-NEXT: jr $ra2373; MIPS64R5-NEXT: nop2374 %1 = load <2 x i16>, ptr @gv2i162375 ret <2 x i16> %12376}2377 2378define <4 x i16> @ret_4_i16() {2379; MIPS32-LABEL: ret_4_i16:2380; MIPS32: # %bb.0:2381; MIPS32-NEXT: lui $1, %hi(gv4i16)2382; MIPS32-NEXT: lw $2, %lo(gv4i16)($1)2383; MIPS32-NEXT: addiu $1, $1, %lo(gv4i16)2384; MIPS32-NEXT: lw $3, 4($1)2385; MIPS32-NEXT: jr $ra2386; MIPS32-NEXT: nop2387;2388; MIPS64-LABEL: ret_4_i16:2389; MIPS64: # %bb.0:2390; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i16)))2391; MIPS64-NEXT: daddu $1, $1, $252392; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i16)))2393; MIPS64-NEXT: ld $1, %got_disp(gv4i16)($1)2394; MIPS64-NEXT: ld $2, 0($1)2395; MIPS64-NEXT: jr $ra2396; MIPS64-NEXT: nop2397;2398; MIPS32R5-LABEL: ret_4_i16:2399; MIPS32R5: # %bb.0:2400; MIPS32R5-NEXT: lui $1, %hi(gv4i16)2401; MIPS32R5-NEXT: lw $2, %lo(gv4i16)($1)2402; MIPS32R5-NEXT: addiu $1, $1, %lo(gv4i16)2403; MIPS32R5-NEXT: lw $3, 4($1)2404; MIPS32R5-NEXT: jr $ra2405; MIPS32R5-NEXT: nop2406;2407; MIPS64R5-LABEL: ret_4_i16:2408; MIPS64R5: # %bb.0:2409; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i16)))2410; MIPS64R5-NEXT: daddu $1, $1, $252411; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i16)))2412; MIPS64R5-NEXT: ld $1, %got_disp(gv4i16)($1)2413; MIPS64R5-NEXT: ld $2, 0($1)2414; MIPS64R5-NEXT: jr $ra2415; MIPS64R5-NEXT: nop2416 %1 = load <4 x i16>, ptr @gv4i162417 ret <4 x i16> %12418}2419 2420define <8 x i16> @ret_8_i16() {2421; MIPS32-LABEL: ret_8_i16:2422; MIPS32: # %bb.0:2423; MIPS32-NEXT: lui $1, %hi(gv8i16)2424; MIPS32-NEXT: lw $2, %lo(gv8i16)($1)2425; MIPS32-NEXT: addiu $1, $1, %lo(gv8i16)2426; MIPS32-NEXT: lw $3, 4($1)2427; MIPS32-NEXT: lw $4, 8($1)2428; MIPS32-NEXT: lw $5, 12($1)2429; MIPS32-NEXT: jr $ra2430; MIPS32-NEXT: nop2431;2432; MIPS64-LABEL: ret_8_i16:2433; MIPS64: # %bb.0:2434; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_8_i16)))2435; MIPS64-NEXT: daddu $1, $1, $252436; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_8_i16)))2437; MIPS64-NEXT: ld $1, %got_disp(gv8i16)($1)2438; MIPS64-NEXT: ld $2, 0($1)2439; MIPS64-NEXT: ld $3, 8($1)2440; MIPS64-NEXT: jr $ra2441; MIPS64-NEXT: nop2442;2443; MIPS32R5-LABEL: ret_8_i16:2444; MIPS32R5: # %bb.0:2445; MIPS32R5-NEXT: lui $1, %hi(gv8i16)2446; MIPS32R5-NEXT: addiu $1, $1, %lo(gv8i16)2447; MIPS32R5-NEXT: ld.w $w0, 0($1)2448; MIPS32R5-NEXT: copy_s.w $2, $w0[0]2449; MIPS32R5-NEXT: copy_s.w $3, $w0[1]2450; MIPS32R5-NEXT: copy_s.w $4, $w0[2]2451; MIPS32R5-NEXT: copy_s.w $5, $w0[3]2452; MIPS32R5-NEXT: jr $ra2453; MIPS32R5-NEXT: nop2454;2455; MIPS64R5-LABEL: ret_8_i16:2456; MIPS64R5: # %bb.0:2457; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_8_i16)))2458; MIPS64R5-NEXT: daddu $1, $1, $252459; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_8_i16)))2460; MIPS64R5-NEXT: ld $1, %got_disp(gv8i16)($1)2461; MIPS64R5-NEXT: ld.d $w0, 0($1)2462; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2463; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2464; MIPS64R5-NEXT: jr $ra2465; MIPS64R5-NEXT: nop2466 %1 = load <8 x i16>, ptr @gv8i162467 ret <8 x i16> %12468}2469 2470define <2 x i32> @ret_2_i32() {2471; MIPS32-LABEL: ret_2_i32:2472; MIPS32: # %bb.0:2473; MIPS32-NEXT: lui $1, %hi(gv2i32)2474; MIPS32-NEXT: lw $2, %lo(gv2i32)($1)2475; MIPS32-NEXT: addiu $1, $1, %lo(gv2i32)2476; MIPS32-NEXT: lw $3, 4($1)2477; MIPS32-NEXT: jr $ra2478; MIPS32-NEXT: nop2479;2480; MIPS64-LABEL: ret_2_i32:2481; MIPS64: # %bb.0:2482; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i32)))2483; MIPS64-NEXT: daddu $1, $1, $252484; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i32)))2485; MIPS64-NEXT: ld $1, %got_disp(gv2i32)($1)2486; MIPS64-NEXT: ld $2, 0($1)2487; MIPS64-NEXT: jr $ra2488; MIPS64-NEXT: nop2489;2490; MIPS32R5-LABEL: ret_2_i32:2491; MIPS32R5: # %bb.0:2492; MIPS32R5-NEXT: lui $1, %hi(gv2i32)2493; MIPS32R5-NEXT: lw $2, %lo(gv2i32)($1)2494; MIPS32R5-NEXT: addiu $1, $1, %lo(gv2i32)2495; MIPS32R5-NEXT: lw $3, 4($1)2496; MIPS32R5-NEXT: jr $ra2497; MIPS32R5-NEXT: nop2498;2499; MIPS64R5-LABEL: ret_2_i32:2500; MIPS64R5: # %bb.0:2501; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i32)))2502; MIPS64R5-NEXT: daddu $1, $1, $252503; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i32)))2504; MIPS64R5-NEXT: ld $1, %got_disp(gv2i32)($1)2505; MIPS64R5-NEXT: ld $2, 0($1)2506; MIPS64R5-NEXT: jr $ra2507; MIPS64R5-NEXT: nop2508 %1 = load <2 x i32>, ptr @gv2i322509 ret <2 x i32> %12510}2511 2512define <4 x i32> @ret_4_i32() {2513; MIPS32-LABEL: ret_4_i32:2514; MIPS32: # %bb.0:2515; MIPS32-NEXT: lui $1, %hi(gv4i32)2516; MIPS32-NEXT: lw $2, %lo(gv4i32)($1)2517; MIPS32-NEXT: addiu $1, $1, %lo(gv4i32)2518; MIPS32-NEXT: lw $3, 4($1)2519; MIPS32-NEXT: lw $4, 8($1)2520; MIPS32-NEXT: lw $5, 12($1)2521; MIPS32-NEXT: jr $ra2522; MIPS32-NEXT: nop2523;2524; MIPS64-LABEL: ret_4_i32:2525; MIPS64: # %bb.0:2526; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i32)))2527; MIPS64-NEXT: daddu $1, $1, $252528; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i32)))2529; MIPS64-NEXT: ld $1, %got_disp(gv4i32)($1)2530; MIPS64-NEXT: ld $2, 0($1)2531; MIPS64-NEXT: ld $3, 8($1)2532; MIPS64-NEXT: jr $ra2533; MIPS64-NEXT: nop2534;2535; MIPS32R5-LABEL: ret_4_i32:2536; MIPS32R5: # %bb.0:2537; MIPS32R5-NEXT: lui $1, %hi(gv4i32)2538; MIPS32R5-NEXT: addiu $1, $1, %lo(gv4i32)2539; MIPS32R5-NEXT: ld.w $w0, 0($1)2540; MIPS32R5-NEXT: copy_s.w $2, $w0[0]2541; MIPS32R5-NEXT: copy_s.w $3, $w0[1]2542; MIPS32R5-NEXT: copy_s.w $4, $w0[2]2543; MIPS32R5-NEXT: copy_s.w $5, $w0[3]2544; MIPS32R5-NEXT: jr $ra2545; MIPS32R5-NEXT: nop2546;2547; MIPS64R5-LABEL: ret_4_i32:2548; MIPS64R5: # %bb.0:2549; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_4_i32)))2550; MIPS64R5-NEXT: daddu $1, $1, $252551; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_4_i32)))2552; MIPS64R5-NEXT: ld $1, %got_disp(gv4i32)($1)2553; MIPS64R5-NEXT: ld.d $w0, 0($1)2554; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2555; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2556; MIPS64R5-NEXT: jr $ra2557; MIPS64R5-NEXT: nop2558 %1 = load <4 x i32>, ptr @gv4i322559 ret <4 x i32> %12560}2561 2562define <2 x i64> @ret_2_i64() {2563; MIPS32-LABEL: ret_2_i64:2564; MIPS32: # %bb.0:2565; MIPS32-NEXT: lui $1, %hi(gv2i64)2566; MIPS32-NEXT: lw $2, %lo(gv2i64)($1)2567; MIPS32-NEXT: addiu $1, $1, %lo(gv2i64)2568; MIPS32-NEXT: lw $3, 4($1)2569; MIPS32-NEXT: lw $4, 8($1)2570; MIPS32-NEXT: lw $5, 12($1)2571; MIPS32-NEXT: jr $ra2572; MIPS32-NEXT: nop2573;2574; MIPS64-LABEL: ret_2_i64:2575; MIPS64: # %bb.0:2576; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i64)))2577; MIPS64-NEXT: daddu $1, $1, $252578; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i64)))2579; MIPS64-NEXT: ld $1, %got_disp(gv2i64)($1)2580; MIPS64-NEXT: ld $2, 0($1)2581; MIPS64-NEXT: ld $3, 8($1)2582; MIPS64-NEXT: jr $ra2583; MIPS64-NEXT: nop2584;2585; MIPS32R5-LABEL: ret_2_i64:2586; MIPS32R5: # %bb.0:2587; MIPS32R5-NEXT: lui $1, %hi(gv2i64)2588; MIPS32R5-NEXT: addiu $1, $1, %lo(gv2i64)2589; MIPS32R5-NEXT: ld.w $w0, 0($1)2590; MIPS32R5-NEXT: copy_s.w $2, $w0[0]2591; MIPS32R5-NEXT: copy_s.w $3, $w0[1]2592; MIPS32R5-NEXT: copy_s.w $4, $w0[2]2593; MIPS32R5-NEXT: copy_s.w $5, $w0[3]2594; MIPS32R5-NEXT: jr $ra2595; MIPS32R5-NEXT: nop2596;2597; MIPS64R5-LABEL: ret_2_i64:2598; MIPS64R5: # %bb.0:2599; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_2_i64)))2600; MIPS64R5-NEXT: daddu $1, $1, $252601; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_2_i64)))2602; MIPS64R5-NEXT: ld $1, %got_disp(gv2i64)($1)2603; MIPS64R5-NEXT: ld.d $w0, 0($1)2604; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2605; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2606; MIPS64R5-NEXT: jr $ra2607; MIPS64R5-NEXT: nop2608 %1 = load <2 x i64>, ptr @gv2i642609 ret <2 x i64> %12610}2611 2612@gv2f32 = global <2 x float> <float 0.0, float 0.0>2613@gv4f32 = global <4 x float> <float 0.0, float 0.0, float 0.0, float 0.0>2614 2615define <2 x float> @ret_float_2() {2616; MIPS32-LABEL: ret_float_2:2617; MIPS32: # %bb.0: # %entry2618; MIPS32-NEXT: lui $1, %hi(gv2f32)2619; MIPS32-NEXT: addiu $2, $1, %lo(gv2f32)2620; MIPS32-NEXT: lwc1 $f0, 4($2)2621; MIPS32-NEXT: swc1 $f0, 4($4)2622; MIPS32-NEXT: lwc1 $f0, %lo(gv2f32)($1)2623; MIPS32-NEXT: swc1 $f0, 0($4)2624; MIPS32-NEXT: jr $ra2625; MIPS32-NEXT: nop2626;2627; MIPS64-LABEL: ret_float_2:2628; MIPS64: # %bb.0: # %entry2629; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_float_2)))2630; MIPS64-NEXT: daddu $1, $1, $252631; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_float_2)))2632; MIPS64-NEXT: ld $1, %got_disp(gv2f32)($1)2633; MIPS64-NEXT: ld $2, 0($1)2634; MIPS64-NEXT: jr $ra2635; MIPS64-NEXT: nop2636;2637; MIPS32R5-LABEL: ret_float_2:2638; MIPS32R5: # %bb.0: # %entry2639; MIPS32R5-NEXT: lui $1, %hi(gv2f32)2640; MIPS32R5-NEXT: addiu $2, $1, %lo(gv2f32)2641; MIPS32R5-NEXT: lwc1 $f0, 4($2)2642; MIPS32R5-NEXT: swc1 $f0, 4($4)2643; MIPS32R5-NEXT: lwc1 $f0, %lo(gv2f32)($1)2644; MIPS32R5-NEXT: swc1 $f0, 0($4)2645; MIPS32R5-NEXT: jr $ra2646; MIPS32R5-NEXT: nop2647;2648; MIPS64R5-LABEL: ret_float_2:2649; MIPS64R5: # %bb.0: # %entry2650; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_float_2)))2651; MIPS64R5-NEXT: daddu $1, $1, $252652; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_float_2)))2653; MIPS64R5-NEXT: ld $1, %got_disp(gv2f32)($1)2654; MIPS64R5-NEXT: ld $2, 0($1)2655; MIPS64R5-NEXT: jr $ra2656; MIPS64R5-NEXT: nop2657entry:2658 %0 = load <2 x float>, ptr @gv2f322659 ret <2 x float> %02660}2661 2662define <4 x float> @ret_float_4() {2663; MIPS32-LABEL: ret_float_4:2664; MIPS32: # %bb.0: # %entry2665; MIPS32-NEXT: lui $1, %hi(gv4f32)2666; MIPS32-NEXT: addiu $2, $1, %lo(gv4f32)2667; MIPS32-NEXT: lwc1 $f0, 12($2)2668; MIPS32-NEXT: swc1 $f0, 12($4)2669; MIPS32-NEXT: lwc1 $f0, 8($2)2670; MIPS32-NEXT: swc1 $f0, 8($4)2671; MIPS32-NEXT: lwc1 $f0, 4($2)2672; MIPS32-NEXT: swc1 $f0, 4($4)2673; MIPS32-NEXT: lwc1 $f0, %lo(gv4f32)($1)2674; MIPS32-NEXT: swc1 $f0, 0($4)2675; MIPS32-NEXT: jr $ra2676; MIPS32-NEXT: nop2677;2678; MIPS64-LABEL: ret_float_4:2679; MIPS64: # %bb.0: # %entry2680; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_float_4)))2681; MIPS64-NEXT: daddu $1, $1, $252682; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_float_4)))2683; MIPS64-NEXT: ld $1, %got_disp(gv4f32)($1)2684; MIPS64-NEXT: ld $2, 0($1)2685; MIPS64-NEXT: ld $3, 8($1)2686; MIPS64-NEXT: jr $ra2687; MIPS64-NEXT: nop2688;2689; MIPS32R5-LABEL: ret_float_4:2690; MIPS32R5: # %bb.0: # %entry2691; MIPS32R5-NEXT: lui $1, %hi(gv4f32)2692; MIPS32R5-NEXT: addiu $1, $1, %lo(gv4f32)2693; MIPS32R5-NEXT: ld.w $w0, 0($1)2694; MIPS32R5-NEXT: st.w $w0, 0($4)2695; MIPS32R5-NEXT: jr $ra2696; MIPS32R5-NEXT: nop2697;2698; MIPS64R5-LABEL: ret_float_4:2699; MIPS64R5: # %bb.0: # %entry2700; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_float_4)))2701; MIPS64R5-NEXT: daddu $1, $1, $252702; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_float_4)))2703; MIPS64R5-NEXT: ld $1, %got_disp(gv4f32)($1)2704; MIPS64R5-NEXT: ld.d $w0, 0($1)2705; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2706; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2707; MIPS64R5-NEXT: jr $ra2708; MIPS64R5-NEXT: nop2709entry:2710 %0 = load <4 x float>, ptr @gv4f322711 ret <4 x float> %02712}2713 2714@gv2f64 = global <2 x double> <double 0.0, double 0.0>2715 2716define <2 x double> @ret_double_2() {2717; MIPS32-LABEL: ret_double_2:2718; MIPS32: # %bb.0: # %entry2719; MIPS32-NEXT: lui $1, %hi(gv2f64)2720; MIPS32-NEXT: addiu $2, $1, %lo(gv2f64)2721; MIPS32-NEXT: ldc1 $f0, 8($2)2722; MIPS32-NEXT: sdc1 $f0, 8($4)2723; MIPS32-NEXT: ldc1 $f0, %lo(gv2f64)($1)2724; MIPS32-NEXT: sdc1 $f0, 0($4)2725; MIPS32-NEXT: jr $ra2726; MIPS32-NEXT: nop2727;2728; MIPS64-LABEL: ret_double_2:2729; MIPS64: # %bb.0: # %entry2730; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(ret_double_2)))2731; MIPS64-NEXT: daddu $1, $1, $252732; MIPS64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_double_2)))2733; MIPS64-NEXT: ld $1, %got_disp(gv2f64)($1)2734; MIPS64-NEXT: ld $2, 0($1)2735; MIPS64-NEXT: ld $3, 8($1)2736; MIPS64-NEXT: jr $ra2737; MIPS64-NEXT: nop2738;2739; MIPS32R5-LABEL: ret_double_2:2740; MIPS32R5: # %bb.0: # %entry2741; MIPS32R5-NEXT: lui $1, %hi(gv2f64)2742; MIPS32R5-NEXT: addiu $1, $1, %lo(gv2f64)2743; MIPS32R5-NEXT: ld.d $w0, 0($1)2744; MIPS32R5-NEXT: st.d $w0, 0($4)2745; MIPS32R5-NEXT: jr $ra2746; MIPS32R5-NEXT: nop2747;2748; MIPS64R5-LABEL: ret_double_2:2749; MIPS64R5: # %bb.0: # %entry2750; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(ret_double_2)))2751; MIPS64R5-NEXT: daddu $1, $1, $252752; MIPS64R5-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(ret_double_2)))2753; MIPS64R5-NEXT: ld $1, %got_disp(gv2f64)($1)2754; MIPS64R5-NEXT: ld.d $w0, 0($1)2755; MIPS64R5-NEXT: copy_s.d $2, $w0[0]2756; MIPS64R5-NEXT: copy_s.d $3, $w0[1]2757; MIPS64R5-NEXT: jr $ra2758; MIPS64R5-NEXT: nop2759entry:2760 %0 = load <2 x double>, ptr @gv2f642761 ret <2 x double> %02762}2763 2764; Test argument lowering and call result lowering.2765 2766define void @call_i8_2() {2767; MIPS32EB-LABEL: call_i8_2:2768; MIPS32EB: # %bb.0: # %entry2769; MIPS32EB-NEXT: addiu $sp, $sp, -242770; MIPS32EB-NEXT: .cfi_def_cfa_offset 242771; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill2772; MIPS32EB-NEXT: .cfi_offset 31, -42773; MIPS32EB-NEXT: addiu $4, $zero, 15432774; MIPS32EB-NEXT: addiu $5, $zero, 30802775; MIPS32EB-NEXT: jal i8_22776; MIPS32EB-NEXT: nop2777; MIPS32EB-NEXT: lui $1, %hi(gv2i8)2778; MIPS32EB-NEXT: sh $2, %lo(gv2i8)($1)2779; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload2780; MIPS32EB-NEXT: addiu $sp, $sp, 242781; MIPS32EB-NEXT: jr $ra2782; MIPS32EB-NEXT: nop2783;2784; MIPS64EB-LABEL: call_i8_2:2785; MIPS64EB: # %bb.0: # %entry2786; MIPS64EB-NEXT: daddiu $sp, $sp, -162787; MIPS64EB-NEXT: .cfi_def_cfa_offset 162788; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill2789; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill2790; MIPS64EB-NEXT: .cfi_offset 31, -82791; MIPS64EB-NEXT: .cfi_offset 28, -162792; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_2)))2793; MIPS64EB-NEXT: daddu $1, $1, $252794; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_2)))2795; MIPS64EB-NEXT: ld $25, %call16(i8_2)($gp)2796; MIPS64EB-NEXT: daddiu $4, $zero, 15432797; MIPS64EB-NEXT: daddiu $5, $zero, 30802798; MIPS64EB-NEXT: jalr $252799; MIPS64EB-NEXT: nop2800; MIPS64EB-NEXT: ld $1, %got_disp(gv2i8)($gp)2801; MIPS64EB-NEXT: sh $2, 0($1)2802; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload2803; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload2804; MIPS64EB-NEXT: daddiu $sp, $sp, 162805; MIPS64EB-NEXT: jr $ra2806; MIPS64EB-NEXT: nop2807;2808; MIPS32R5EB-LABEL: call_i8_2:2809; MIPS32R5EB: # %bb.0: # %entry2810; MIPS32R5EB-NEXT: addiu $sp, $sp, -322811; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 322812; MIPS32R5EB-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill2813; MIPS32R5EB-NEXT: .cfi_offset 31, -42814; MIPS32R5EB-NEXT: addiu $4, $zero, 15432815; MIPS32R5EB-NEXT: addiu $5, $zero, 30802816; MIPS32R5EB-NEXT: jal i8_22817; MIPS32R5EB-NEXT: nop2818; MIPS32R5EB-NEXT: lui $1, %hi(gv2i8)2819; MIPS32R5EB-NEXT: sh $2, %lo(gv2i8)($1)2820; MIPS32R5EB-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload2821; MIPS32R5EB-NEXT: addiu $sp, $sp, 322822; MIPS32R5EB-NEXT: jr $ra2823; MIPS32R5EB-NEXT: nop2824;2825; MIPS64R5EB-LABEL: call_i8_2:2826; MIPS64R5EB: # %bb.0: # %entry2827; MIPS64R5EB-NEXT: daddiu $sp, $sp, -322828; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 322829; MIPS64R5EB-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill2830; MIPS64R5EB-NEXT: sd $gp, 16($sp) # 8-byte Folded Spill2831; MIPS64R5EB-NEXT: .cfi_offset 31, -82832; MIPS64R5EB-NEXT: .cfi_offset 28, -162833; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_2)))2834; MIPS64R5EB-NEXT: daddu $1, $1, $252835; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_2)))2836; MIPS64R5EB-NEXT: addiu $1, $zero, 15432837; MIPS64R5EB-NEXT: sh $1, 8($sp)2838; MIPS64R5EB-NEXT: addiu $1, $zero, 30802839; MIPS64R5EB-NEXT: sh $1, 12($sp)2840; MIPS64R5EB-NEXT: ld $25, %call16(i8_2)($gp)2841; MIPS64R5EB-NEXT: lh $4, 8($sp)2842; MIPS64R5EB-NEXT: lh $5, 12($sp)2843; MIPS64R5EB-NEXT: jalr $252844; MIPS64R5EB-NEXT: nop2845; MIPS64R5EB-NEXT: ld $1, %got_disp(gv2i8)($gp)2846; MIPS64R5EB-NEXT: sh $2, 0($1)2847; MIPS64R5EB-NEXT: ld $gp, 16($sp) # 8-byte Folded Reload2848; MIPS64R5EB-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload2849; MIPS64R5EB-NEXT: daddiu $sp, $sp, 322850; MIPS64R5EB-NEXT: jr $ra2851; MIPS64R5EB-NEXT: nop2852;2853; MIPS32EL-LABEL: call_i8_2:2854; MIPS32EL: # %bb.0: # %entry2855; MIPS32EL-NEXT: addiu $sp, $sp, -242856; MIPS32EL-NEXT: .cfi_def_cfa_offset 242857; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill2858; MIPS32EL-NEXT: .cfi_offset 31, -42859; MIPS32EL-NEXT: addiu $4, $zero, 17982860; MIPS32EL-NEXT: addiu $5, $zero, 20602861; MIPS32EL-NEXT: jal i8_22862; MIPS32EL-NEXT: nop2863; MIPS32EL-NEXT: lui $1, %hi(gv2i8)2864; MIPS32EL-NEXT: sh $2, %lo(gv2i8)($1)2865; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload2866; MIPS32EL-NEXT: addiu $sp, $sp, 242867; MIPS32EL-NEXT: jr $ra2868; MIPS32EL-NEXT: nop2869;2870; MIPS64EL-LABEL: call_i8_2:2871; MIPS64EL: # %bb.0: # %entry2872; MIPS64EL-NEXT: daddiu $sp, $sp, -162873; MIPS64EL-NEXT: .cfi_def_cfa_offset 162874; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill2875; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill2876; MIPS64EL-NEXT: .cfi_offset 31, -82877; MIPS64EL-NEXT: .cfi_offset 28, -162878; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_2)))2879; MIPS64EL-NEXT: daddu $1, $1, $252880; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_2)))2881; MIPS64EL-NEXT: ld $25, %call16(i8_2)($gp)2882; MIPS64EL-NEXT: daddiu $4, $zero, 17982883; MIPS64EL-NEXT: daddiu $5, $zero, 20602884; MIPS64EL-NEXT: jalr $252885; MIPS64EL-NEXT: nop2886; MIPS64EL-NEXT: ld $1, %got_disp(gv2i8)($gp)2887; MIPS64EL-NEXT: sh $2, 0($1)2888; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload2889; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload2890; MIPS64EL-NEXT: daddiu $sp, $sp, 162891; MIPS64EL-NEXT: jr $ra2892; MIPS64EL-NEXT: nop2893;2894; MIPS32R5EL-LABEL: call_i8_2:2895; MIPS32R5EL: # %bb.0: # %entry2896; MIPS32R5EL-NEXT: addiu $sp, $sp, -322897; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 322898; MIPS32R5EL-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill2899; MIPS32R5EL-NEXT: .cfi_offset 31, -42900; MIPS32R5EL-NEXT: addiu $4, $zero, 17982901; MIPS32R5EL-NEXT: addiu $5, $zero, 20602902; MIPS32R5EL-NEXT: jal i8_22903; MIPS32R5EL-NEXT: nop2904; MIPS32R5EL-NEXT: lui $1, %hi(gv2i8)2905; MIPS32R5EL-NEXT: sh $2, %lo(gv2i8)($1)2906; MIPS32R5EL-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload2907; MIPS32R5EL-NEXT: addiu $sp, $sp, 322908; MIPS32R5EL-NEXT: jr $ra2909; MIPS32R5EL-NEXT: nop2910;2911; MIPS64R5EL-LABEL: call_i8_2:2912; MIPS64R5EL: # %bb.0: # %entry2913; MIPS64R5EL-NEXT: daddiu $sp, $sp, -322914; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 322915; MIPS64R5EL-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill2916; MIPS64R5EL-NEXT: sd $gp, 16($sp) # 8-byte Folded Spill2917; MIPS64R5EL-NEXT: .cfi_offset 31, -82918; MIPS64R5EL-NEXT: .cfi_offset 28, -162919; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_2)))2920; MIPS64R5EL-NEXT: daddu $1, $1, $252921; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_2)))2922; MIPS64R5EL-NEXT: addiu $1, $zero, 17982923; MIPS64R5EL-NEXT: sh $1, 8($sp)2924; MIPS64R5EL-NEXT: addiu $1, $zero, 20602925; MIPS64R5EL-NEXT: sh $1, 12($sp)2926; MIPS64R5EL-NEXT: ld $25, %call16(i8_2)($gp)2927; MIPS64R5EL-NEXT: lh $4, 8($sp)2928; MIPS64R5EL-NEXT: lh $5, 12($sp)2929; MIPS64R5EL-NEXT: jalr $252930; MIPS64R5EL-NEXT: nop2931; MIPS64R5EL-NEXT: ld $1, %got_disp(gv2i8)($gp)2932; MIPS64R5EL-NEXT: sh $2, 0($1)2933; MIPS64R5EL-NEXT: ld $gp, 16($sp) # 8-byte Folded Reload2934; MIPS64R5EL-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload2935; MIPS64R5EL-NEXT: daddiu $sp, $sp, 322936; MIPS64R5EL-NEXT: jr $ra2937; MIPS64R5EL-NEXT: nop2938entry:2939 %0 = call <2 x i8> @i8_2(<2 x i8> <i8 6, i8 7>, <2 x i8> <i8 12, i8 8>)2940 store <2 x i8> %0, ptr @gv2i82941 ret void2942}2943 2944define void @call_i8_4() {2945; MIPS32EB-LABEL: call_i8_4:2946; MIPS32EB: # %bb.0: # %entry2947; MIPS32EB-NEXT: addiu $sp, $sp, -242948; MIPS32EB-NEXT: .cfi_def_cfa_offset 242949; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill2950; MIPS32EB-NEXT: .cfi_offset 31, -42951; MIPS32EB-NEXT: lui $1, 15432952; MIPS32EB-NEXT: ori $4, $1, 23142953; MIPS32EB-NEXT: lui $1, 30802954; MIPS32EB-NEXT: ori $5, $1, 23142955; MIPS32EB-NEXT: jal i8_42956; MIPS32EB-NEXT: nop2957; MIPS32EB-NEXT: lui $1, %hi(gv4i8)2958; MIPS32EB-NEXT: sw $2, %lo(gv4i8)($1)2959; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload2960; MIPS32EB-NEXT: addiu $sp, $sp, 242961; MIPS32EB-NEXT: jr $ra2962; MIPS32EB-NEXT: nop2963;2964; MIPS64EB-LABEL: call_i8_4:2965; MIPS64EB: # %bb.0: # %entry2966; MIPS64EB-NEXT: daddiu $sp, $sp, -162967; MIPS64EB-NEXT: .cfi_def_cfa_offset 162968; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill2969; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill2970; MIPS64EB-NEXT: .cfi_offset 31, -82971; MIPS64EB-NEXT: .cfi_offset 28, -162972; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_4)))2973; MIPS64EB-NEXT: daddu $1, $1, $252974; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_4)))2975; MIPS64EB-NEXT: lui $1, 15432976; MIPS64EB-NEXT: ori $4, $1, 23142977; MIPS64EB-NEXT: lui $1, 30802978; MIPS64EB-NEXT: ori $5, $1, 23142979; MIPS64EB-NEXT: ld $25, %call16(i8_4)($gp)2980; MIPS64EB-NEXT: jalr $252981; MIPS64EB-NEXT: nop2982; MIPS64EB-NEXT: ld $1, %got_disp(gv4i8)($gp)2983; MIPS64EB-NEXT: sw $2, 0($1)2984; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload2985; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload2986; MIPS64EB-NEXT: daddiu $sp, $sp, 162987; MIPS64EB-NEXT: jr $ra2988; MIPS64EB-NEXT: nop2989;2990; MIPS32R5EB-LABEL: call_i8_4:2991; MIPS32R5EB: # %bb.0: # %entry2992; MIPS32R5EB-NEXT: addiu $sp, $sp, -242993; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 242994; MIPS32R5EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill2995; MIPS32R5EB-NEXT: .cfi_offset 31, -42996; MIPS32R5EB-NEXT: lui $1, 15432997; MIPS32R5EB-NEXT: ori $4, $1, 23142998; MIPS32R5EB-NEXT: lui $1, 30802999; MIPS32R5EB-NEXT: ori $5, $1, 23143000; MIPS32R5EB-NEXT: jal i8_43001; MIPS32R5EB-NEXT: nop3002; MIPS32R5EB-NEXT: lui $1, %hi(gv4i8)3003; MIPS32R5EB-NEXT: sw $2, %lo(gv4i8)($1)3004; MIPS32R5EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3005; MIPS32R5EB-NEXT: addiu $sp, $sp, 243006; MIPS32R5EB-NEXT: jr $ra3007; MIPS32R5EB-NEXT: nop3008;3009; MIPS64R5EB-LABEL: call_i8_4:3010; MIPS64R5EB: # %bb.0: # %entry3011; MIPS64R5EB-NEXT: daddiu $sp, $sp, -163012; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 163013; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3014; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3015; MIPS64R5EB-NEXT: .cfi_offset 31, -83016; MIPS64R5EB-NEXT: .cfi_offset 28, -163017; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_4)))3018; MIPS64R5EB-NEXT: daddu $1, $1, $253019; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_4)))3020; MIPS64R5EB-NEXT: lui $1, 15433021; MIPS64R5EB-NEXT: ori $4, $1, 23143022; MIPS64R5EB-NEXT: lui $1, 30803023; MIPS64R5EB-NEXT: ori $5, $1, 23143024; MIPS64R5EB-NEXT: ld $25, %call16(i8_4)($gp)3025; MIPS64R5EB-NEXT: jalr $253026; MIPS64R5EB-NEXT: nop3027; MIPS64R5EB-NEXT: ld $1, %got_disp(gv4i8)($gp)3028; MIPS64R5EB-NEXT: sw $2, 0($1)3029; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3030; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3031; MIPS64R5EB-NEXT: daddiu $sp, $sp, 163032; MIPS64R5EB-NEXT: jr $ra3033; MIPS64R5EB-NEXT: nop3034;3035; MIPS32EL-LABEL: call_i8_4:3036; MIPS32EL: # %bb.0: # %entry3037; MIPS32EL-NEXT: addiu $sp, $sp, -243038; MIPS32EL-NEXT: .cfi_def_cfa_offset 243039; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3040; MIPS32EL-NEXT: .cfi_offset 31, -43041; MIPS32EL-NEXT: lui $1, 25693042; MIPS32EL-NEXT: ori $4, $1, 17983043; MIPS32EL-NEXT: ori $5, $1, 20603044; MIPS32EL-NEXT: jal i8_43045; MIPS32EL-NEXT: nop3046; MIPS32EL-NEXT: lui $1, %hi(gv4i8)3047; MIPS32EL-NEXT: sw $2, %lo(gv4i8)($1)3048; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3049; MIPS32EL-NEXT: addiu $sp, $sp, 243050; MIPS32EL-NEXT: jr $ra3051; MIPS32EL-NEXT: nop3052;3053; MIPS64EL-LABEL: call_i8_4:3054; MIPS64EL: # %bb.0: # %entry3055; MIPS64EL-NEXT: daddiu $sp, $sp, -163056; MIPS64EL-NEXT: .cfi_def_cfa_offset 163057; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3058; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3059; MIPS64EL-NEXT: .cfi_offset 31, -83060; MIPS64EL-NEXT: .cfi_offset 28, -163061; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_4)))3062; MIPS64EL-NEXT: daddu $1, $1, $253063; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_4)))3064; MIPS64EL-NEXT: lui $1, 25693065; MIPS64EL-NEXT: ori $4, $1, 17983066; MIPS64EL-NEXT: ori $5, $1, 20603067; MIPS64EL-NEXT: ld $25, %call16(i8_4)($gp)3068; MIPS64EL-NEXT: jalr $253069; MIPS64EL-NEXT: nop3070; MIPS64EL-NEXT: ld $1, %got_disp(gv4i8)($gp)3071; MIPS64EL-NEXT: sw $2, 0($1)3072; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3073; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3074; MIPS64EL-NEXT: daddiu $sp, $sp, 163075; MIPS64EL-NEXT: jr $ra3076; MIPS64EL-NEXT: nop3077;3078; MIPS32R5EL-LABEL: call_i8_4:3079; MIPS32R5EL: # %bb.0: # %entry3080; MIPS32R5EL-NEXT: addiu $sp, $sp, -243081; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 243082; MIPS32R5EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3083; MIPS32R5EL-NEXT: .cfi_offset 31, -43084; MIPS32R5EL-NEXT: lui $1, 25693085; MIPS32R5EL-NEXT: ori $4, $1, 17983086; MIPS32R5EL-NEXT: ori $5, $1, 20603087; MIPS32R5EL-NEXT: jal i8_43088; MIPS32R5EL-NEXT: nop3089; MIPS32R5EL-NEXT: lui $1, %hi(gv4i8)3090; MIPS32R5EL-NEXT: sw $2, %lo(gv4i8)($1)3091; MIPS32R5EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3092; MIPS32R5EL-NEXT: addiu $sp, $sp, 243093; MIPS32R5EL-NEXT: jr $ra3094; MIPS32R5EL-NEXT: nop3095;3096; MIPS64R5EL-LABEL: call_i8_4:3097; MIPS64R5EL: # %bb.0: # %entry3098; MIPS64R5EL-NEXT: daddiu $sp, $sp, -163099; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 163100; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3101; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3102; MIPS64R5EL-NEXT: .cfi_offset 31, -83103; MIPS64R5EL-NEXT: .cfi_offset 28, -163104; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_4)))3105; MIPS64R5EL-NEXT: daddu $1, $1, $253106; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_4)))3107; MIPS64R5EL-NEXT: lui $1, 25693108; MIPS64R5EL-NEXT: ori $4, $1, 17983109; MIPS64R5EL-NEXT: ori $5, $1, 20603110; MIPS64R5EL-NEXT: ld $25, %call16(i8_4)($gp)3111; MIPS64R5EL-NEXT: jalr $253112; MIPS64R5EL-NEXT: nop3113; MIPS64R5EL-NEXT: ld $1, %got_disp(gv4i8)($gp)3114; MIPS64R5EL-NEXT: sw $2, 0($1)3115; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3116; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3117; MIPS64R5EL-NEXT: daddiu $sp, $sp, 163118; MIPS64R5EL-NEXT: jr $ra3119; MIPS64R5EL-NEXT: nop3120entry:3121 %0 = call <4 x i8> @i8_4(<4 x i8> <i8 6, i8 7, i8 9, i8 10>, <4 x i8> <i8 12, i8 8, i8 9, i8 10>)3122 store <4 x i8> %0, ptr @gv4i83123 ret void3124}3125 3126define void @call_i8_8() {3127; MIPS32EB-LABEL: call_i8_8:3128; MIPS32EB: # %bb.0: # %entry3129; MIPS32EB-NEXT: addiu $sp, $sp, -243130; MIPS32EB-NEXT: .cfi_def_cfa_offset 243131; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3132; MIPS32EB-NEXT: .cfi_offset 31, -43133; MIPS32EB-NEXT: lui $1, 30803134; MIPS32EB-NEXT: ori $6, $1, 23143135; MIPS32EB-NEXT: lui $1, 15433136; MIPS32EB-NEXT: ori $4, $1, 23143137; MIPS32EB-NEXT: move $5, $43138; MIPS32EB-NEXT: move $7, $43139; MIPS32EB-NEXT: jal i8_83140; MIPS32EB-NEXT: nop3141; MIPS32EB-NEXT: lui $1, %hi(gv8i8)3142; MIPS32EB-NEXT: addiu $4, $1, %lo(gv8i8)3143; MIPS32EB-NEXT: sw $3, 4($4)3144; MIPS32EB-NEXT: sw $2, %lo(gv8i8)($1)3145; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3146; MIPS32EB-NEXT: addiu $sp, $sp, 243147; MIPS32EB-NEXT: jr $ra3148; MIPS32EB-NEXT: nop3149;3150; MIPS64EB-LABEL: call_i8_8:3151; MIPS64EB: # %bb.0: # %entry3152; MIPS64EB-NEXT: daddiu $sp, $sp, -163153; MIPS64EB-NEXT: .cfi_def_cfa_offset 163154; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3155; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3156; MIPS64EB-NEXT: .cfi_offset 31, -83157; MIPS64EB-NEXT: .cfi_offset 28, -163158; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_8)))3159; MIPS64EB-NEXT: daddu $1, $1, $253160; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_8)))3161; MIPS64EB-NEXT: lui $1, 7723162; MIPS64EB-NEXT: daddiu $1, $1, -316113163; MIPS64EB-NEXT: dsll $1, $1, 173164; MIPS64EB-NEXT: daddiu $1, $1, 15433165; MIPS64EB-NEXT: dsll $1, $1, 163166; MIPS64EB-NEXT: daddiu $4, $1, 23143167; MIPS64EB-NEXT: lui $1, 15403168; MIPS64EB-NEXT: daddiu $1, $1, 11573169; MIPS64EB-NEXT: dsll $1, $1, 173170; MIPS64EB-NEXT: daddiu $1, $1, 15433171; MIPS64EB-NEXT: dsll $1, $1, 163172; MIPS64EB-NEXT: daddiu $5, $1, 23143173; MIPS64EB-NEXT: ld $25, %call16(i8_8)($gp)3174; MIPS64EB-NEXT: jalr $253175; MIPS64EB-NEXT: nop3176; MIPS64EB-NEXT: ld $1, %got_disp(gv8i8)($gp)3177; MIPS64EB-NEXT: sd $2, 0($1)3178; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3179; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3180; MIPS64EB-NEXT: daddiu $sp, $sp, 163181; MIPS64EB-NEXT: jr $ra3182; MIPS64EB-NEXT: nop3183;3184; MIPS32R5EB-LABEL: call_i8_8:3185; MIPS32R5EB: # %bb.0: # %entry3186; MIPS32R5EB-NEXT: addiu $sp, $sp, -243187; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 243188; MIPS32R5EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3189; MIPS32R5EB-NEXT: .cfi_offset 31, -43190; MIPS32R5EB-NEXT: lui $1, 30803191; MIPS32R5EB-NEXT: ori $6, $1, 23143192; MIPS32R5EB-NEXT: lui $1, 15433193; MIPS32R5EB-NEXT: ori $4, $1, 23143194; MIPS32R5EB-NEXT: move $5, $43195; MIPS32R5EB-NEXT: move $7, $43196; MIPS32R5EB-NEXT: jal i8_83197; MIPS32R5EB-NEXT: nop3198; MIPS32R5EB-NEXT: lui $1, %hi(gv8i8)3199; MIPS32R5EB-NEXT: addiu $4, $1, %lo(gv8i8)3200; MIPS32R5EB-NEXT: sw $3, 4($4)3201; MIPS32R5EB-NEXT: sw $2, %lo(gv8i8)($1)3202; MIPS32R5EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3203; MIPS32R5EB-NEXT: addiu $sp, $sp, 243204; MIPS32R5EB-NEXT: jr $ra3205; MIPS32R5EB-NEXT: nop3206;3207; MIPS64R5EB-LABEL: call_i8_8:3208; MIPS64R5EB: # %bb.0: # %entry3209; MIPS64R5EB-NEXT: daddiu $sp, $sp, -163210; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 163211; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3212; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3213; MIPS64R5EB-NEXT: .cfi_offset 31, -83214; MIPS64R5EB-NEXT: .cfi_offset 28, -163215; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_8)))3216; MIPS64R5EB-NEXT: daddu $1, $1, $253217; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_8)))3218; MIPS64R5EB-NEXT: lui $1, 7723219; MIPS64R5EB-NEXT: daddiu $1, $1, -316113220; MIPS64R5EB-NEXT: dsll $1, $1, 173221; MIPS64R5EB-NEXT: daddiu $1, $1, 15433222; MIPS64R5EB-NEXT: dsll $1, $1, 163223; MIPS64R5EB-NEXT: daddiu $4, $1, 23143224; MIPS64R5EB-NEXT: lui $1, 15403225; MIPS64R5EB-NEXT: daddiu $1, $1, 11573226; MIPS64R5EB-NEXT: dsll $1, $1, 173227; MIPS64R5EB-NEXT: daddiu $1, $1, 15433228; MIPS64R5EB-NEXT: dsll $1, $1, 163229; MIPS64R5EB-NEXT: daddiu $5, $1, 23143230; MIPS64R5EB-NEXT: ld $25, %call16(i8_8)($gp)3231; MIPS64R5EB-NEXT: jalr $253232; MIPS64R5EB-NEXT: nop3233; MIPS64R5EB-NEXT: ld $1, %got_disp(gv8i8)($gp)3234; MIPS64R5EB-NEXT: sd $2, 0($1)3235; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3236; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3237; MIPS64R5EB-NEXT: daddiu $sp, $sp, 163238; MIPS64R5EB-NEXT: jr $ra3239; MIPS64R5EB-NEXT: nop3240;3241; MIPS32EL-LABEL: call_i8_8:3242; MIPS32EL: # %bb.0: # %entry3243; MIPS32EL-NEXT: addiu $sp, $sp, -243244; MIPS32EL-NEXT: .cfi_def_cfa_offset 243245; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3246; MIPS32EL-NEXT: .cfi_offset 31, -43247; MIPS32EL-NEXT: lui $1, 25693248; MIPS32EL-NEXT: ori $6, $1, 20603249; MIPS32EL-NEXT: ori $4, $1, 17983250; MIPS32EL-NEXT: move $5, $43251; MIPS32EL-NEXT: move $7, $43252; MIPS32EL-NEXT: jal i8_83253; MIPS32EL-NEXT: nop3254; MIPS32EL-NEXT: lui $1, %hi(gv8i8)3255; MIPS32EL-NEXT: addiu $4, $1, %lo(gv8i8)3256; MIPS32EL-NEXT: sw $3, 4($4)3257; MIPS32EL-NEXT: sw $2, %lo(gv8i8)($1)3258; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3259; MIPS32EL-NEXT: addiu $sp, $sp, 243260; MIPS32EL-NEXT: jr $ra3261; MIPS32EL-NEXT: nop3262;3263; MIPS64EL-LABEL: call_i8_8:3264; MIPS64EL: # %bb.0: # %entry3265; MIPS64EL-NEXT: daddiu $sp, $sp, -163266; MIPS64EL-NEXT: .cfi_def_cfa_offset 163267; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3268; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3269; MIPS64EL-NEXT: .cfi_offset 31, -83270; MIPS64EL-NEXT: .cfi_offset 28, -163271; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_8)))3272; MIPS64EL-NEXT: daddu $1, $1, $253273; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_8)))3274; MIPS64EL-NEXT: lui $1, 12853275; MIPS64EL-NEXT: daddiu $1, $1, -318693276; MIPS64EL-NEXT: dsll $1, $1, 173277; MIPS64EL-NEXT: daddiu $1, $1, 25693278; MIPS64EL-NEXT: dsll $1, $1, 163279; MIPS64EL-NEXT: daddiu $4, $1, 17983280; MIPS64EL-NEXT: daddiu $5, $1, 20603281; MIPS64EL-NEXT: ld $25, %call16(i8_8)($gp)3282; MIPS64EL-NEXT: jalr $253283; MIPS64EL-NEXT: nop3284; MIPS64EL-NEXT: ld $1, %got_disp(gv8i8)($gp)3285; MIPS64EL-NEXT: sd $2, 0($1)3286; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3287; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3288; MIPS64EL-NEXT: daddiu $sp, $sp, 163289; MIPS64EL-NEXT: jr $ra3290; MIPS64EL-NEXT: nop3291;3292; MIPS32R5EL-LABEL: call_i8_8:3293; MIPS32R5EL: # %bb.0: # %entry3294; MIPS32R5EL-NEXT: addiu $sp, $sp, -243295; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 243296; MIPS32R5EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3297; MIPS32R5EL-NEXT: .cfi_offset 31, -43298; MIPS32R5EL-NEXT: lui $1, 25693299; MIPS32R5EL-NEXT: ori $6, $1, 20603300; MIPS32R5EL-NEXT: ori $4, $1, 17983301; MIPS32R5EL-NEXT: move $5, $43302; MIPS32R5EL-NEXT: move $7, $43303; MIPS32R5EL-NEXT: jal i8_83304; MIPS32R5EL-NEXT: nop3305; MIPS32R5EL-NEXT: lui $1, %hi(gv8i8)3306; MIPS32R5EL-NEXT: addiu $4, $1, %lo(gv8i8)3307; MIPS32R5EL-NEXT: sw $3, 4($4)3308; MIPS32R5EL-NEXT: sw $2, %lo(gv8i8)($1)3309; MIPS32R5EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3310; MIPS32R5EL-NEXT: addiu $sp, $sp, 243311; MIPS32R5EL-NEXT: jr $ra3312; MIPS32R5EL-NEXT: nop3313;3314; MIPS64R5EL-LABEL: call_i8_8:3315; MIPS64R5EL: # %bb.0: # %entry3316; MIPS64R5EL-NEXT: daddiu $sp, $sp, -163317; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 163318; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3319; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3320; MIPS64R5EL-NEXT: .cfi_offset 31, -83321; MIPS64R5EL-NEXT: .cfi_offset 28, -163322; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i8_8)))3323; MIPS64R5EL-NEXT: daddu $1, $1, $253324; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i8_8)))3325; MIPS64R5EL-NEXT: lui $1, 12853326; MIPS64R5EL-NEXT: daddiu $1, $1, -318693327; MIPS64R5EL-NEXT: dsll $1, $1, 173328; MIPS64R5EL-NEXT: daddiu $1, $1, 25693329; MIPS64R5EL-NEXT: dsll $1, $1, 163330; MIPS64R5EL-NEXT: daddiu $4, $1, 17983331; MIPS64R5EL-NEXT: daddiu $5, $1, 20603332; MIPS64R5EL-NEXT: ld $25, %call16(i8_8)($gp)3333; MIPS64R5EL-NEXT: jalr $253334; MIPS64R5EL-NEXT: nop3335; MIPS64R5EL-NEXT: ld $1, %got_disp(gv8i8)($gp)3336; MIPS64R5EL-NEXT: sd $2, 0($1)3337; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3338; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3339; MIPS64R5EL-NEXT: daddiu $sp, $sp, 163340; MIPS64R5EL-NEXT: jr $ra3341; MIPS64R5EL-NEXT: nop3342entry:3343 %0 = call <8 x i8> @i8_8(<8 x i8> <i8 6, i8 7, i8 9, i8 10, i8 6, i8 7, i8 9, i8 10>, <8 x i8> <i8 12, i8 8, i8 9, i8 10, i8 6, i8 7, i8 9, i8 10>)3344 store <8 x i8> %0, ptr @gv8i83345 ret void3346}3347 3348define void @calli8_16() {3349; MIPS32EB-LABEL: calli8_16:3350; MIPS32EB: # %bb.0: # %entry3351; MIPS32EB-NEXT: addiu $sp, $sp, -403352; MIPS32EB-NEXT: .cfi_def_cfa_offset 403353; MIPS32EB-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill3354; MIPS32EB-NEXT: .cfi_offset 31, -43355; MIPS32EB-NEXT: lui $1, 30803356; MIPS32EB-NEXT: ori $1, $1, 23143357; MIPS32EB-NEXT: lui $2, 18013358; MIPS32EB-NEXT: sw $1, 28($sp)3359; MIPS32EB-NEXT: ori $1, $2, 18013360; MIPS32EB-NEXT: sw $1, 24($sp)3361; MIPS32EB-NEXT: sw $1, 20($sp)3362; MIPS32EB-NEXT: sw $1, 16($sp)3363; MIPS32EB-NEXT: lui $1, 15433364; MIPS32EB-NEXT: ori $4, $1, 15433365; MIPS32EB-NEXT: ori $7, $1, 23143366; MIPS32EB-NEXT: move $5, $43367; MIPS32EB-NEXT: move $6, $43368; MIPS32EB-NEXT: jal i8_163369; MIPS32EB-NEXT: nop3370; MIPS32EB-NEXT: lui $1, %hi(gv16i8)3371; MIPS32EB-NEXT: addiu $6, $1, %lo(gv16i8)3372; MIPS32EB-NEXT: sw $5, 12($6)3373; MIPS32EB-NEXT: sw $4, 8($6)3374; MIPS32EB-NEXT: sw $3, 4($6)3375; MIPS32EB-NEXT: sw $2, %lo(gv16i8)($1)3376; MIPS32EB-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload3377; MIPS32EB-NEXT: addiu $sp, $sp, 403378; MIPS32EB-NEXT: jr $ra3379; MIPS32EB-NEXT: nop3380;3381; MIPS64EB-LABEL: calli8_16:3382; MIPS64EB: # %bb.0: # %entry3383; MIPS64EB-NEXT: daddiu $sp, $sp, -163384; MIPS64EB-NEXT: .cfi_def_cfa_offset 163385; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3386; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3387; MIPS64EB-NEXT: .cfi_offset 31, -83388; MIPS64EB-NEXT: .cfi_offset 28, -163389; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli8_16)))3390; MIPS64EB-NEXT: daddu $1, $1, $253391; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli8_16)))3392; MIPS64EB-NEXT: lui $1, 18013393; MIPS64EB-NEXT: daddiu $1, $1, 18013394; MIPS64EB-NEXT: dsll $1, $1, 163395; MIPS64EB-NEXT: daddiu $1, $1, 18013396; MIPS64EB-NEXT: lui $2, 15433397; MIPS64EB-NEXT: dsll $1, $1, 163398; MIPS64EB-NEXT: daddiu $2, $2, 15433399; MIPS64EB-NEXT: dsll $2, $2, 163400; MIPS64EB-NEXT: daddiu $2, $2, 15433401; MIPS64EB-NEXT: dsll $2, $2, 163402; MIPS64EB-NEXT: daddiu $4, $2, 15433403; MIPS64EB-NEXT: daddiu $5, $2, 23143404; MIPS64EB-NEXT: daddiu $6, $1, 18013405; MIPS64EB-NEXT: lui $1, 2253406; MIPS64EB-NEXT: daddiu $1, $1, 84173407; MIPS64EB-NEXT: dsll $1, $1, 163408; MIPS64EB-NEXT: daddiu $1, $1, 85773409; MIPS64EB-NEXT: dsll $1, $1, 193410; MIPS64EB-NEXT: daddiu $7, $1, 23143411; MIPS64EB-NEXT: ld $25, %call16(i8_16)($gp)3412; MIPS64EB-NEXT: jalr $253413; MIPS64EB-NEXT: nop3414; MIPS64EB-NEXT: ld $1, %got_disp(gv16i8)($gp)3415; MIPS64EB-NEXT: sd $3, 8($1)3416; MIPS64EB-NEXT: sd $2, 0($1)3417; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3418; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3419; MIPS64EB-NEXT: daddiu $sp, $sp, 163420; MIPS64EB-NEXT: jr $ra3421; MIPS64EB-NEXT: nop3422;3423; MIPS32R5-LABEL: calli8_16:3424; MIPS32R5: # %bb.0: # %entry3425; MIPS32R5-NEXT: addiu $sp, $sp, -403426; MIPS32R5-NEXT: .cfi_def_cfa_offset 403427; MIPS32R5-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill3428; MIPS32R5-NEXT: .cfi_offset 31, -43429; MIPS32R5-NEXT: lui $1, %hi($CPI30_0)3430; MIPS32R5-NEXT: addiu $1, $1, %lo($CPI30_0)3431; MIPS32R5-NEXT: ld.w $w0, 0($1)3432; MIPS32R5-NEXT: copy_s.w $4, $w0[0]3433; MIPS32R5-NEXT: copy_s.w $5, $w0[1]3434; MIPS32R5-NEXT: copy_s.w $6, $w0[2]3435; MIPS32R5-NEXT: copy_s.w $7, $w0[3]3436; MIPS32R5-NEXT: lui $1, %hi($CPI30_1)3437; MIPS32R5-NEXT: addiu $1, $1, %lo($CPI30_1)3438; MIPS32R5-NEXT: ld.w $w0, 0($1)3439; MIPS32R5-NEXT: copy_s.w $1, $w0[0]3440; MIPS32R5-NEXT: copy_s.w $2, $w0[1]3441; MIPS32R5-NEXT: copy_s.w $3, $w0[2]3442; MIPS32R5-NEXT: copy_s.w $8, $w0[3]3443; MIPS32R5-NEXT: sw $8, 28($sp)3444; MIPS32R5-NEXT: sw $3, 24($sp)3445; MIPS32R5-NEXT: sw $2, 20($sp)3446; MIPS32R5-NEXT: sw $1, 16($sp)3447; MIPS32R5-NEXT: jal i8_163448; MIPS32R5-NEXT: nop3449; MIPS32R5-NEXT: lui $1, %hi(gv16i8)3450; MIPS32R5-NEXT: insert.w $w0[0], $23451; MIPS32R5-NEXT: insert.w $w0[1], $33452; MIPS32R5-NEXT: addiu $1, $1, %lo(gv16i8)3453; MIPS32R5-NEXT: insert.w $w0[2], $43454; MIPS32R5-NEXT: insert.w $w0[3], $53455; MIPS32R5-NEXT: st.w $w0, 0($1)3456; MIPS32R5-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload3457; MIPS32R5-NEXT: addiu $sp, $sp, 403458; MIPS32R5-NEXT: jr $ra3459; MIPS32R5-NEXT: nop3460;3461; MIPS64R5-LABEL: calli8_16:3462; MIPS64R5: # %bb.0: # %entry3463; MIPS64R5-NEXT: daddiu $sp, $sp, -163464; MIPS64R5-NEXT: .cfi_def_cfa_offset 163465; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3466; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3467; MIPS64R5-NEXT: .cfi_offset 31, -83468; MIPS64R5-NEXT: .cfi_offset 28, -163469; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(calli8_16)))3470; MIPS64R5-NEXT: daddu $1, $1, $253471; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli8_16)))3472; MIPS64R5-NEXT: ld $1, %got_page(.LCPI30_0)($gp)3473; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI30_0)3474; MIPS64R5-NEXT: ld.d $w0, 0($1)3475; MIPS64R5-NEXT: copy_s.d $4, $w0[0]3476; MIPS64R5-NEXT: copy_s.d $5, $w0[1]3477; MIPS64R5-NEXT: ld $1, %got_page(.LCPI30_1)($gp)3478; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI30_1)3479; MIPS64R5-NEXT: ld.d $w0, 0($1)3480; MIPS64R5-NEXT: copy_s.d $6, $w0[0]3481; MIPS64R5-NEXT: copy_s.d $7, $w0[1]3482; MIPS64R5-NEXT: ld $25, %call16(i8_16)($gp)3483; MIPS64R5-NEXT: jalr $253484; MIPS64R5-NEXT: nop3485; MIPS64R5-NEXT: insert.d $w0[0], $23486; MIPS64R5-NEXT: insert.d $w0[1], $33487; MIPS64R5-NEXT: ld $1, %got_disp(gv16i8)($gp)3488; MIPS64R5-NEXT: st.d $w0, 0($1)3489; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3490; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3491; MIPS64R5-NEXT: daddiu $sp, $sp, 163492; MIPS64R5-NEXT: jr $ra3493; MIPS64R5-NEXT: nop3494;3495; MIPS32EL-LABEL: calli8_16:3496; MIPS32EL: # %bb.0: # %entry3497; MIPS32EL-NEXT: addiu $sp, $sp, -403498; MIPS32EL-NEXT: .cfi_def_cfa_offset 403499; MIPS32EL-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill3500; MIPS32EL-NEXT: .cfi_offset 31, -43501; MIPS32EL-NEXT: lui $1, 25693502; MIPS32EL-NEXT: ori $2, $1, 20603503; MIPS32EL-NEXT: lui $3, 23113504; MIPS32EL-NEXT: sw $2, 28($sp)3505; MIPS32EL-NEXT: ori $2, $3, 23113506; MIPS32EL-NEXT: sw $2, 24($sp)3507; MIPS32EL-NEXT: sw $2, 20($sp)3508; MIPS32EL-NEXT: sw $2, 16($sp)3509; MIPS32EL-NEXT: lui $2, 17983510; MIPS32EL-NEXT: ori $4, $2, 17983511; MIPS32EL-NEXT: ori $7, $1, 17983512; MIPS32EL-NEXT: move $5, $43513; MIPS32EL-NEXT: move $6, $43514; MIPS32EL-NEXT: jal i8_163515; MIPS32EL-NEXT: nop3516; MIPS32EL-NEXT: lui $1, %hi(gv16i8)3517; MIPS32EL-NEXT: addiu $6, $1, %lo(gv16i8)3518; MIPS32EL-NEXT: sw $5, 12($6)3519; MIPS32EL-NEXT: sw $4, 8($6)3520; MIPS32EL-NEXT: sw $3, 4($6)3521; MIPS32EL-NEXT: sw $2, %lo(gv16i8)($1)3522; MIPS32EL-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload3523; MIPS32EL-NEXT: addiu $sp, $sp, 403524; MIPS32EL-NEXT: jr $ra3525; MIPS32EL-NEXT: nop3526;3527; MIPS64EL-LABEL: calli8_16:3528; MIPS64EL: # %bb.0: # %entry3529; MIPS64EL-NEXT: daddiu $sp, $sp, -163530; MIPS64EL-NEXT: .cfi_def_cfa_offset 163531; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3532; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3533; MIPS64EL-NEXT: .cfi_offset 31, -83534; MIPS64EL-NEXT: .cfi_offset 28, -163535; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli8_16)))3536; MIPS64EL-NEXT: daddu $1, $1, $253537; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli8_16)))3538; MIPS64EL-NEXT: lui $1, 12853539; MIPS64EL-NEXT: daddiu $1, $1, -318693540; MIPS64EL-NEXT: dsll $1, $1, 163541; MIPS64EL-NEXT: daddiu $1, $1, 8993542; MIPS64EL-NEXT: lui $2, 23113543; MIPS64EL-NEXT: daddiu $2, $2, 23113544; MIPS64EL-NEXT: dsll $2, $2, 163545; MIPS64EL-NEXT: daddiu $2, $2, 23113546; MIPS64EL-NEXT: dsll $2, $2, 163547; MIPS64EL-NEXT: dsll $1, $1, 173548; MIPS64EL-NEXT: lui $3, 8993549; MIPS64EL-NEXT: daddiu $3, $3, 8993550; MIPS64EL-NEXT: dsll $3, $3, 163551; MIPS64EL-NEXT: daddiu $3, $3, 8993552; MIPS64EL-NEXT: dsll $3, $3, 173553; MIPS64EL-NEXT: daddiu $4, $3, 17983554; MIPS64EL-NEXT: daddiu $5, $1, 17983555; MIPS64EL-NEXT: daddiu $6, $2, 23113556; MIPS64EL-NEXT: lui $1, 6423557; MIPS64EL-NEXT: daddiu $1, $1, 168993558; MIPS64EL-NEXT: dsll $1, $1, 183559; MIPS64EL-NEXT: daddiu $1, $1, 23113560; MIPS64EL-NEXT: dsll $1, $1, 163561; MIPS64EL-NEXT: daddiu $7, $1, 23113562; MIPS64EL-NEXT: ld $25, %call16(i8_16)($gp)3563; MIPS64EL-NEXT: jalr $253564; MIPS64EL-NEXT: nop3565; MIPS64EL-NEXT: ld $1, %got_disp(gv16i8)($gp)3566; MIPS64EL-NEXT: sd $3, 8($1)3567; MIPS64EL-NEXT: sd $2, 0($1)3568; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3569; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3570; MIPS64EL-NEXT: daddiu $sp, $sp, 163571; MIPS64EL-NEXT: jr $ra3572; MIPS64EL-NEXT: nop3573entry:3574 %0 = call <16 x i8> @i8_16(<16 x i8> <i8 6, i8 7,i8 6, i8 7,i8 6, i8 7,i8 6, i8 7,i8 6, i8 7,i8 6, i8 7, i8 6, i8 7, i8 9, i8 10>, <16 x i8> <i8 7, i8 9,i8 7, i8 9,i8 7, i8 9,i8 7, i8 9,i8 7, i8 9,i8 7, i8 9,i8 12, i8 8, i8 9, i8 10>)3575 store <16 x i8> %0, ptr @gv16i83576 ret void3577}3578 3579define void @calli16_2() {3580; MIPS32EB-LABEL: calli16_2:3581; MIPS32EB: # %bb.0: # %entry3582; MIPS32EB-NEXT: addiu $sp, $sp, -243583; MIPS32EB-NEXT: .cfi_def_cfa_offset 243584; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3585; MIPS32EB-NEXT: .cfi_offset 31, -43586; MIPS32EB-NEXT: lui $1, 63587; MIPS32EB-NEXT: ori $4, $1, 73588; MIPS32EB-NEXT: lui $1, 123589; MIPS32EB-NEXT: ori $5, $1, 83590; MIPS32EB-NEXT: jal i16_23591; MIPS32EB-NEXT: nop3592; MIPS32EB-NEXT: lui $1, %hi(gv2i16)3593; MIPS32EB-NEXT: sw $2, %lo(gv2i16)($1)3594; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3595; MIPS32EB-NEXT: addiu $sp, $sp, 243596; MIPS32EB-NEXT: jr $ra3597; MIPS32EB-NEXT: nop3598;3599; MIPS64EB-LABEL: calli16_2:3600; MIPS64EB: # %bb.0: # %entry3601; MIPS64EB-NEXT: daddiu $sp, $sp, -163602; MIPS64EB-NEXT: .cfi_def_cfa_offset 163603; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3604; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3605; MIPS64EB-NEXT: .cfi_offset 31, -83606; MIPS64EB-NEXT: .cfi_offset 28, -163607; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_2)))3608; MIPS64EB-NEXT: daddu $1, $1, $253609; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_2)))3610; MIPS64EB-NEXT: lui $1, 63611; MIPS64EB-NEXT: ori $4, $1, 73612; MIPS64EB-NEXT: lui $1, 123613; MIPS64EB-NEXT: ori $5, $1, 83614; MIPS64EB-NEXT: ld $25, %call16(i16_2)($gp)3615; MIPS64EB-NEXT: jalr $253616; MIPS64EB-NEXT: nop3617; MIPS64EB-NEXT: ld $1, %got_disp(gv2i16)($gp)3618; MIPS64EB-NEXT: sw $2, 0($1)3619; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3620; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3621; MIPS64EB-NEXT: daddiu $sp, $sp, 163622; MIPS64EB-NEXT: jr $ra3623; MIPS64EB-NEXT: nop3624;3625; MIPS32R5EB-LABEL: calli16_2:3626; MIPS32R5EB: # %bb.0: # %entry3627; MIPS32R5EB-NEXT: addiu $sp, $sp, -243628; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 243629; MIPS32R5EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3630; MIPS32R5EB-NEXT: .cfi_offset 31, -43631; MIPS32R5EB-NEXT: lui $1, 63632; MIPS32R5EB-NEXT: ori $4, $1, 73633; MIPS32R5EB-NEXT: lui $1, 123634; MIPS32R5EB-NEXT: ori $5, $1, 83635; MIPS32R5EB-NEXT: jal i16_23636; MIPS32R5EB-NEXT: nop3637; MIPS32R5EB-NEXT: lui $1, %hi(gv2i16)3638; MIPS32R5EB-NEXT: sw $2, %lo(gv2i16)($1)3639; MIPS32R5EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3640; MIPS32R5EB-NEXT: addiu $sp, $sp, 243641; MIPS32R5EB-NEXT: jr $ra3642; MIPS32R5EB-NEXT: nop3643;3644; MIPS64R5EB-LABEL: calli16_2:3645; MIPS64R5EB: # %bb.0: # %entry3646; MIPS64R5EB-NEXT: daddiu $sp, $sp, -163647; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 163648; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3649; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3650; MIPS64R5EB-NEXT: .cfi_offset 31, -83651; MIPS64R5EB-NEXT: .cfi_offset 28, -163652; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_2)))3653; MIPS64R5EB-NEXT: daddu $1, $1, $253654; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_2)))3655; MIPS64R5EB-NEXT: lui $1, 63656; MIPS64R5EB-NEXT: ori $4, $1, 73657; MIPS64R5EB-NEXT: lui $1, 123658; MIPS64R5EB-NEXT: ori $5, $1, 83659; MIPS64R5EB-NEXT: ld $25, %call16(i16_2)($gp)3660; MIPS64R5EB-NEXT: jalr $253661; MIPS64R5EB-NEXT: nop3662; MIPS64R5EB-NEXT: ld $1, %got_disp(gv2i16)($gp)3663; MIPS64R5EB-NEXT: sw $2, 0($1)3664; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3665; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3666; MIPS64R5EB-NEXT: daddiu $sp, $sp, 163667; MIPS64R5EB-NEXT: jr $ra3668; MIPS64R5EB-NEXT: nop3669;3670; MIPS32EL-LABEL: calli16_2:3671; MIPS32EL: # %bb.0: # %entry3672; MIPS32EL-NEXT: addiu $sp, $sp, -243673; MIPS32EL-NEXT: .cfi_def_cfa_offset 243674; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3675; MIPS32EL-NEXT: .cfi_offset 31, -43676; MIPS32EL-NEXT: lui $1, 73677; MIPS32EL-NEXT: ori $4, $1, 63678; MIPS32EL-NEXT: lui $1, 83679; MIPS32EL-NEXT: ori $5, $1, 123680; MIPS32EL-NEXT: jal i16_23681; MIPS32EL-NEXT: nop3682; MIPS32EL-NEXT: lui $1, %hi(gv2i16)3683; MIPS32EL-NEXT: sw $2, %lo(gv2i16)($1)3684; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3685; MIPS32EL-NEXT: addiu $sp, $sp, 243686; MIPS32EL-NEXT: jr $ra3687; MIPS32EL-NEXT: nop3688;3689; MIPS64EL-LABEL: calli16_2:3690; MIPS64EL: # %bb.0: # %entry3691; MIPS64EL-NEXT: daddiu $sp, $sp, -163692; MIPS64EL-NEXT: .cfi_def_cfa_offset 163693; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3694; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3695; MIPS64EL-NEXT: .cfi_offset 31, -83696; MIPS64EL-NEXT: .cfi_offset 28, -163697; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_2)))3698; MIPS64EL-NEXT: daddu $1, $1, $253699; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_2)))3700; MIPS64EL-NEXT: lui $1, 73701; MIPS64EL-NEXT: ori $4, $1, 63702; MIPS64EL-NEXT: lui $1, 83703; MIPS64EL-NEXT: ori $5, $1, 123704; MIPS64EL-NEXT: ld $25, %call16(i16_2)($gp)3705; MIPS64EL-NEXT: jalr $253706; MIPS64EL-NEXT: nop3707; MIPS64EL-NEXT: ld $1, %got_disp(gv2i16)($gp)3708; MIPS64EL-NEXT: sw $2, 0($1)3709; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3710; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3711; MIPS64EL-NEXT: daddiu $sp, $sp, 163712; MIPS64EL-NEXT: jr $ra3713; MIPS64EL-NEXT: nop3714;3715; MIPS32R5EL-LABEL: calli16_2:3716; MIPS32R5EL: # %bb.0: # %entry3717; MIPS32R5EL-NEXT: addiu $sp, $sp, -243718; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 243719; MIPS32R5EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3720; MIPS32R5EL-NEXT: .cfi_offset 31, -43721; MIPS32R5EL-NEXT: lui $1, 73722; MIPS32R5EL-NEXT: ori $4, $1, 63723; MIPS32R5EL-NEXT: lui $1, 83724; MIPS32R5EL-NEXT: ori $5, $1, 123725; MIPS32R5EL-NEXT: jal i16_23726; MIPS32R5EL-NEXT: nop3727; MIPS32R5EL-NEXT: lui $1, %hi(gv2i16)3728; MIPS32R5EL-NEXT: sw $2, %lo(gv2i16)($1)3729; MIPS32R5EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3730; MIPS32R5EL-NEXT: addiu $sp, $sp, 243731; MIPS32R5EL-NEXT: jr $ra3732; MIPS32R5EL-NEXT: nop3733;3734; MIPS64R5EL-LABEL: calli16_2:3735; MIPS64R5EL: # %bb.0: # %entry3736; MIPS64R5EL-NEXT: daddiu $sp, $sp, -163737; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 163738; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3739; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3740; MIPS64R5EL-NEXT: .cfi_offset 31, -83741; MIPS64R5EL-NEXT: .cfi_offset 28, -163742; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_2)))3743; MIPS64R5EL-NEXT: daddu $1, $1, $253744; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_2)))3745; MIPS64R5EL-NEXT: lui $1, 73746; MIPS64R5EL-NEXT: ori $4, $1, 63747; MIPS64R5EL-NEXT: lui $1, 83748; MIPS64R5EL-NEXT: ori $5, $1, 123749; MIPS64R5EL-NEXT: ld $25, %call16(i16_2)($gp)3750; MIPS64R5EL-NEXT: jalr $253751; MIPS64R5EL-NEXT: nop3752; MIPS64R5EL-NEXT: ld $1, %got_disp(gv2i16)($gp)3753; MIPS64R5EL-NEXT: sw $2, 0($1)3754; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3755; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3756; MIPS64R5EL-NEXT: daddiu $sp, $sp, 163757; MIPS64R5EL-NEXT: jr $ra3758; MIPS64R5EL-NEXT: nop3759entry:3760 %0 = call <2 x i16> @i16_2(<2 x i16> <i16 6, i16 7>, <2 x i16> <i16 12, i16 8>)3761 store <2 x i16> %0, ptr @gv2i163762 ret void3763}3764 3765define void @calli16_4() {3766; MIPS32EB-LABEL: calli16_4:3767; MIPS32EB: # %bb.0: # %entry3768; MIPS32EB-NEXT: addiu $sp, $sp, -243769; MIPS32EB-NEXT: .cfi_def_cfa_offset 243770; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3771; MIPS32EB-NEXT: .cfi_offset 31, -43772; MIPS32EB-NEXT: lui $1, 63773; MIPS32EB-NEXT: ori $4, $1, 73774; MIPS32EB-NEXT: lui $1, 123775; MIPS32EB-NEXT: ori $6, $1, 83776; MIPS32EB-NEXT: lui $1, 93777; MIPS32EB-NEXT: ori $5, $1, 103778; MIPS32EB-NEXT: move $7, $53779; MIPS32EB-NEXT: jal i16_43780; MIPS32EB-NEXT: nop3781; MIPS32EB-NEXT: lui $1, %hi(gv4i16)3782; MIPS32EB-NEXT: addiu $4, $1, %lo(gv4i16)3783; MIPS32EB-NEXT: sw $3, 4($4)3784; MIPS32EB-NEXT: sw $2, %lo(gv4i16)($1)3785; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3786; MIPS32EB-NEXT: addiu $sp, $sp, 243787; MIPS32EB-NEXT: jr $ra3788; MIPS32EB-NEXT: nop3789;3790; MIPS64EB-LABEL: calli16_4:3791; MIPS64EB: # %bb.0: # %entry3792; MIPS64EB-NEXT: daddiu $sp, $sp, -163793; MIPS64EB-NEXT: .cfi_def_cfa_offset 163794; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3795; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3796; MIPS64EB-NEXT: .cfi_offset 31, -83797; MIPS64EB-NEXT: .cfi_offset 28, -163798; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_4)))3799; MIPS64EB-NEXT: daddu $1, $1, $253800; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_4)))3801; MIPS64EB-NEXT: lui $1, 63802; MIPS64EB-NEXT: daddiu $1, $1, 73803; MIPS64EB-NEXT: dsll $1, $1, 163804; MIPS64EB-NEXT: daddiu $1, $1, 93805; MIPS64EB-NEXT: dsll $1, $1, 163806; MIPS64EB-NEXT: daddiu $4, $1, 103807; MIPS64EB-NEXT: lui $1, 23808; MIPS64EB-NEXT: daddiu $1, $1, -327673809; MIPS64EB-NEXT: dsll $1, $1, 193810; MIPS64EB-NEXT: daddiu $1, $1, 93811; MIPS64EB-NEXT: dsll $1, $1, 163812; MIPS64EB-NEXT: daddiu $5, $1, 103813; MIPS64EB-NEXT: ld $25, %call16(i16_4)($gp)3814; MIPS64EB-NEXT: jalr $253815; MIPS64EB-NEXT: nop3816; MIPS64EB-NEXT: ld $1, %got_disp(gv4i16)($gp)3817; MIPS64EB-NEXT: sd $2, 0($1)3818; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3819; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3820; MIPS64EB-NEXT: daddiu $sp, $sp, 163821; MIPS64EB-NEXT: jr $ra3822; MIPS64EB-NEXT: nop3823;3824; MIPS32R5EB-LABEL: calli16_4:3825; MIPS32R5EB: # %bb.0: # %entry3826; MIPS32R5EB-NEXT: addiu $sp, $sp, -243827; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 243828; MIPS32R5EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3829; MIPS32R5EB-NEXT: .cfi_offset 31, -43830; MIPS32R5EB-NEXT: lui $1, 63831; MIPS32R5EB-NEXT: ori $4, $1, 73832; MIPS32R5EB-NEXT: lui $1, 123833; MIPS32R5EB-NEXT: ori $6, $1, 83834; MIPS32R5EB-NEXT: lui $1, 93835; MIPS32R5EB-NEXT: ori $5, $1, 103836; MIPS32R5EB-NEXT: move $7, $53837; MIPS32R5EB-NEXT: jal i16_43838; MIPS32R5EB-NEXT: nop3839; MIPS32R5EB-NEXT: lui $1, %hi(gv4i16)3840; MIPS32R5EB-NEXT: addiu $4, $1, %lo(gv4i16)3841; MIPS32R5EB-NEXT: sw $3, 4($4)3842; MIPS32R5EB-NEXT: sw $2, %lo(gv4i16)($1)3843; MIPS32R5EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3844; MIPS32R5EB-NEXT: addiu $sp, $sp, 243845; MIPS32R5EB-NEXT: jr $ra3846; MIPS32R5EB-NEXT: nop3847;3848; MIPS64R5EB-LABEL: calli16_4:3849; MIPS64R5EB: # %bb.0: # %entry3850; MIPS64R5EB-NEXT: daddiu $sp, $sp, -163851; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 163852; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3853; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3854; MIPS64R5EB-NEXT: .cfi_offset 31, -83855; MIPS64R5EB-NEXT: .cfi_offset 28, -163856; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_4)))3857; MIPS64R5EB-NEXT: daddu $1, $1, $253858; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_4)))3859; MIPS64R5EB-NEXT: lui $1, 63860; MIPS64R5EB-NEXT: daddiu $1, $1, 73861; MIPS64R5EB-NEXT: dsll $1, $1, 163862; MIPS64R5EB-NEXT: daddiu $1, $1, 93863; MIPS64R5EB-NEXT: dsll $1, $1, 163864; MIPS64R5EB-NEXT: daddiu $4, $1, 103865; MIPS64R5EB-NEXT: lui $1, 23866; MIPS64R5EB-NEXT: daddiu $1, $1, -327673867; MIPS64R5EB-NEXT: dsll $1, $1, 193868; MIPS64R5EB-NEXT: daddiu $1, $1, 93869; MIPS64R5EB-NEXT: dsll $1, $1, 163870; MIPS64R5EB-NEXT: daddiu $5, $1, 103871; MIPS64R5EB-NEXT: ld $25, %call16(i16_4)($gp)3872; MIPS64R5EB-NEXT: jalr $253873; MIPS64R5EB-NEXT: nop3874; MIPS64R5EB-NEXT: ld $1, %got_disp(gv4i16)($gp)3875; MIPS64R5EB-NEXT: sd $2, 0($1)3876; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3877; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3878; MIPS64R5EB-NEXT: daddiu $sp, $sp, 163879; MIPS64R5EB-NEXT: jr $ra3880; MIPS64R5EB-NEXT: nop3881;3882; MIPS32EL-LABEL: calli16_4:3883; MIPS32EL: # %bb.0: # %entry3884; MIPS32EL-NEXT: addiu $sp, $sp, -243885; MIPS32EL-NEXT: .cfi_def_cfa_offset 243886; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3887; MIPS32EL-NEXT: .cfi_offset 31, -43888; MIPS32EL-NEXT: lui $1, 73889; MIPS32EL-NEXT: ori $4, $1, 63890; MIPS32EL-NEXT: lui $1, 83891; MIPS32EL-NEXT: ori $6, $1, 123892; MIPS32EL-NEXT: lui $1, 103893; MIPS32EL-NEXT: ori $5, $1, 93894; MIPS32EL-NEXT: move $7, $53895; MIPS32EL-NEXT: jal i16_43896; MIPS32EL-NEXT: nop3897; MIPS32EL-NEXT: lui $1, %hi(gv4i16)3898; MIPS32EL-NEXT: addiu $4, $1, %lo(gv4i16)3899; MIPS32EL-NEXT: sw $3, 4($4)3900; MIPS32EL-NEXT: sw $2, %lo(gv4i16)($1)3901; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3902; MIPS32EL-NEXT: addiu $sp, $sp, 243903; MIPS32EL-NEXT: jr $ra3904; MIPS32EL-NEXT: nop3905;3906; MIPS64EL-LABEL: calli16_4:3907; MIPS64EL: # %bb.0: # %entry3908; MIPS64EL-NEXT: daddiu $sp, $sp, -163909; MIPS64EL-NEXT: .cfi_def_cfa_offset 163910; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3911; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3912; MIPS64EL-NEXT: .cfi_offset 31, -83913; MIPS64EL-NEXT: .cfi_offset 28, -163914; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_4)))3915; MIPS64EL-NEXT: daddu $1, $1, $253916; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_4)))3917; MIPS64EL-NEXT: lui $1, 103918; MIPS64EL-NEXT: daddiu $1, $1, 93919; MIPS64EL-NEXT: dsll $1, $1, 163920; MIPS64EL-NEXT: daddiu $1, $1, 73921; MIPS64EL-NEXT: dsll $1, $1, 163922; MIPS64EL-NEXT: daddiu $4, $1, 63923; MIPS64EL-NEXT: lui $1, 13924; MIPS64EL-NEXT: daddiu $1, $1, 163853925; MIPS64EL-NEXT: dsll $1, $1, 163926; MIPS64EL-NEXT: daddiu $1, $1, 81933927; MIPS64EL-NEXT: dsll $1, $1, 193928; MIPS64EL-NEXT: daddiu $5, $1, 123929; MIPS64EL-NEXT: ld $25, %call16(i16_4)($gp)3930; MIPS64EL-NEXT: jalr $253931; MIPS64EL-NEXT: nop3932; MIPS64EL-NEXT: ld $1, %got_disp(gv4i16)($gp)3933; MIPS64EL-NEXT: sd $2, 0($1)3934; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3935; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3936; MIPS64EL-NEXT: daddiu $sp, $sp, 163937; MIPS64EL-NEXT: jr $ra3938; MIPS64EL-NEXT: nop3939;3940; MIPS32R5EL-LABEL: calli16_4:3941; MIPS32R5EL: # %bb.0: # %entry3942; MIPS32R5EL-NEXT: addiu $sp, $sp, -243943; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 243944; MIPS32R5EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill3945; MIPS32R5EL-NEXT: .cfi_offset 31, -43946; MIPS32R5EL-NEXT: lui $1, 73947; MIPS32R5EL-NEXT: ori $4, $1, 63948; MIPS32R5EL-NEXT: lui $1, 83949; MIPS32R5EL-NEXT: ori $6, $1, 123950; MIPS32R5EL-NEXT: lui $1, 103951; MIPS32R5EL-NEXT: ori $5, $1, 93952; MIPS32R5EL-NEXT: move $7, $53953; MIPS32R5EL-NEXT: jal i16_43954; MIPS32R5EL-NEXT: nop3955; MIPS32R5EL-NEXT: lui $1, %hi(gv4i16)3956; MIPS32R5EL-NEXT: addiu $4, $1, %lo(gv4i16)3957; MIPS32R5EL-NEXT: sw $3, 4($4)3958; MIPS32R5EL-NEXT: sw $2, %lo(gv4i16)($1)3959; MIPS32R5EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload3960; MIPS32R5EL-NEXT: addiu $sp, $sp, 243961; MIPS32R5EL-NEXT: jr $ra3962; MIPS32R5EL-NEXT: nop3963;3964; MIPS64R5EL-LABEL: calli16_4:3965; MIPS64R5EL: # %bb.0: # %entry3966; MIPS64R5EL-NEXT: daddiu $sp, $sp, -163967; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 163968; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill3969; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill3970; MIPS64R5EL-NEXT: .cfi_offset 31, -83971; MIPS64R5EL-NEXT: .cfi_offset 28, -163972; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_4)))3973; MIPS64R5EL-NEXT: daddu $1, $1, $253974; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_4)))3975; MIPS64R5EL-NEXT: lui $1, 103976; MIPS64R5EL-NEXT: daddiu $1, $1, 93977; MIPS64R5EL-NEXT: dsll $1, $1, 163978; MIPS64R5EL-NEXT: daddiu $1, $1, 73979; MIPS64R5EL-NEXT: dsll $1, $1, 163980; MIPS64R5EL-NEXT: daddiu $4, $1, 63981; MIPS64R5EL-NEXT: lui $1, 13982; MIPS64R5EL-NEXT: daddiu $1, $1, 163853983; MIPS64R5EL-NEXT: dsll $1, $1, 163984; MIPS64R5EL-NEXT: daddiu $1, $1, 81933985; MIPS64R5EL-NEXT: dsll $1, $1, 193986; MIPS64R5EL-NEXT: daddiu $5, $1, 123987; MIPS64R5EL-NEXT: ld $25, %call16(i16_4)($gp)3988; MIPS64R5EL-NEXT: jalr $253989; MIPS64R5EL-NEXT: nop3990; MIPS64R5EL-NEXT: ld $1, %got_disp(gv4i16)($gp)3991; MIPS64R5EL-NEXT: sd $2, 0($1)3992; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload3993; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload3994; MIPS64R5EL-NEXT: daddiu $sp, $sp, 163995; MIPS64R5EL-NEXT: jr $ra3996; MIPS64R5EL-NEXT: nop3997entry:3998 %0 = call <4 x i16> @i16_4(<4 x i16> <i16 6, i16 7, i16 9, i16 10>, <4 x i16> <i16 12, i16 8, i16 9, i16 10>)3999 store <4 x i16> %0, ptr @gv4i164000 ret void4001}4002 4003define void @calli16_8() {4004; MIPS32EB-LABEL: calli16_8:4005; MIPS32EB: # %bb.0: # %entry4006; MIPS32EB-NEXT: addiu $sp, $sp, -404007; MIPS32EB-NEXT: .cfi_def_cfa_offset 404008; MIPS32EB-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4009; MIPS32EB-NEXT: .cfi_offset 31, -44010; MIPS32EB-NEXT: lui $1, 94011; MIPS32EB-NEXT: ori $5, $1, 104012; MIPS32EB-NEXT: sw $5, 28($sp)4013; MIPS32EB-NEXT: lui $1, 124014; MIPS32EB-NEXT: ori $1, $1, 84015; MIPS32EB-NEXT: sw $1, 24($sp)4016; MIPS32EB-NEXT: sw $5, 20($sp)4017; MIPS32EB-NEXT: lui $1, 64018; MIPS32EB-NEXT: ori $4, $1, 74019; MIPS32EB-NEXT: sw $4, 16($sp)4020; MIPS32EB-NEXT: move $6, $44021; MIPS32EB-NEXT: move $7, $54022; MIPS32EB-NEXT: jal i16_84023; MIPS32EB-NEXT: nop4024; MIPS32EB-NEXT: lui $1, %hi(gv8i16)4025; MIPS32EB-NEXT: addiu $6, $1, %lo(gv8i16)4026; MIPS32EB-NEXT: sw $5, 12($6)4027; MIPS32EB-NEXT: sw $4, 8($6)4028; MIPS32EB-NEXT: sw $3, 4($6)4029; MIPS32EB-NEXT: sw $2, %lo(gv8i16)($1)4030; MIPS32EB-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4031; MIPS32EB-NEXT: addiu $sp, $sp, 404032; MIPS32EB-NEXT: jr $ra4033; MIPS32EB-NEXT: nop4034;4035; MIPS64EB-LABEL: calli16_8:4036; MIPS64EB: # %bb.0: # %entry4037; MIPS64EB-NEXT: daddiu $sp, $sp, -164038; MIPS64EB-NEXT: .cfi_def_cfa_offset 164039; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4040; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4041; MIPS64EB-NEXT: .cfi_offset 31, -84042; MIPS64EB-NEXT: .cfi_offset 28, -164043; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_8)))4044; MIPS64EB-NEXT: daddu $1, $1, $254045; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_8)))4046; MIPS64EB-NEXT: lui $1, 64047; MIPS64EB-NEXT: daddiu $1, $1, 74048; MIPS64EB-NEXT: dsll $1, $1, 164049; MIPS64EB-NEXT: daddiu $1, $1, 94050; MIPS64EB-NEXT: dsll $1, $1, 164051; MIPS64EB-NEXT: daddiu $4, $1, 104052; MIPS64EB-NEXT: lui $1, 24053; MIPS64EB-NEXT: daddiu $1, $1, -327674054; MIPS64EB-NEXT: dsll $1, $1, 194055; MIPS64EB-NEXT: daddiu $1, $1, 94056; MIPS64EB-NEXT: dsll $1, $1, 164057; MIPS64EB-NEXT: daddiu $7, $1, 104058; MIPS64EB-NEXT: ld $25, %call16(i16_8)($gp)4059; MIPS64EB-NEXT: move $5, $44060; MIPS64EB-NEXT: move $6, $44061; MIPS64EB-NEXT: jalr $254062; MIPS64EB-NEXT: nop4063; MIPS64EB-NEXT: ld $1, %got_disp(gv8i16)($gp)4064; MIPS64EB-NEXT: sd $3, 8($1)4065; MIPS64EB-NEXT: sd $2, 0($1)4066; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4067; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4068; MIPS64EB-NEXT: daddiu $sp, $sp, 164069; MIPS64EB-NEXT: jr $ra4070; MIPS64EB-NEXT: nop4071;4072; MIPS32R5EB-LABEL: calli16_8:4073; MIPS32R5EB: # %bb.0: # %entry4074; MIPS32R5EB-NEXT: addiu $sp, $sp, -404075; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 404076; MIPS32R5EB-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4077; MIPS32R5EB-NEXT: .cfi_offset 31, -44078; MIPS32R5EB-NEXT: lui $1, 64079; MIPS32R5EB-NEXT: ori $1, $1, 74080; MIPS32R5EB-NEXT: lui $2, 94081; MIPS32R5EB-NEXT: ori $2, $2, 104082; MIPS32R5EB-NEXT: fill.w $w0, $24083; MIPS32R5EB-NEXT: insert.w $w0[1], $14084; MIPS32R5EB-NEXT: splati.d $w0, $w0[0]4085; MIPS32R5EB-NEXT: copy_s.w $4, $w0[0]4086; MIPS32R5EB-NEXT: copy_s.w $5, $w0[1]4087; MIPS32R5EB-NEXT: copy_s.w $6, $w0[2]4088; MIPS32R5EB-NEXT: copy_s.w $7, $w0[3]4089; MIPS32R5EB-NEXT: lui $1, %hi($CPI33_0)4090; MIPS32R5EB-NEXT: addiu $1, $1, %lo($CPI33_0)4091; MIPS32R5EB-NEXT: ld.w $w0, 0($1)4092; MIPS32R5EB-NEXT: copy_s.w $1, $w0[0]4093; MIPS32R5EB-NEXT: copy_s.w $2, $w0[1]4094; MIPS32R5EB-NEXT: copy_s.w $3, $w0[2]4095; MIPS32R5EB-NEXT: copy_s.w $8, $w0[3]4096; MIPS32R5EB-NEXT: sw $8, 28($sp)4097; MIPS32R5EB-NEXT: sw $3, 24($sp)4098; MIPS32R5EB-NEXT: sw $2, 20($sp)4099; MIPS32R5EB-NEXT: sw $1, 16($sp)4100; MIPS32R5EB-NEXT: jal i16_84101; MIPS32R5EB-NEXT: nop4102; MIPS32R5EB-NEXT: lui $1, %hi(gv8i16)4103; MIPS32R5EB-NEXT: addiu $1, $1, %lo(gv8i16)4104; MIPS32R5EB-NEXT: insert.w $w0[0], $24105; MIPS32R5EB-NEXT: insert.w $w0[1], $34106; MIPS32R5EB-NEXT: insert.w $w0[2], $44107; MIPS32R5EB-NEXT: insert.w $w0[3], $54108; MIPS32R5EB-NEXT: st.w $w0, 0($1)4109; MIPS32R5EB-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4110; MIPS32R5EB-NEXT: addiu $sp, $sp, 404111; MIPS32R5EB-NEXT: jr $ra4112; MIPS32R5EB-NEXT: nop4113;4114; MIPS64R5EB-LABEL: calli16_8:4115; MIPS64R5EB: # %bb.0: # %entry4116; MIPS64R5EB-NEXT: daddiu $sp, $sp, -164117; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 164118; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4119; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4120; MIPS64R5EB-NEXT: .cfi_offset 31, -84121; MIPS64R5EB-NEXT: .cfi_offset 28, -164122; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_8)))4123; MIPS64R5EB-NEXT: daddu $1, $1, $254124; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_8)))4125; MIPS64R5EB-NEXT: lui $1, 94126; MIPS64R5EB-NEXT: ori $1, $1, 104127; MIPS64R5EB-NEXT: lui $2, 64128; MIPS64R5EB-NEXT: ori $2, $2, 74129; MIPS64R5EB-NEXT: dinsu $1, $2, 32, 324130; MIPS64R5EB-NEXT: fill.d $w0, $14131; MIPS64R5EB-NEXT: copy_s.d $4, $w0[0]4132; MIPS64R5EB-NEXT: copy_s.d $5, $w0[1]4133; MIPS64R5EB-NEXT: ld $1, %got_page(.LCPI33_0)($gp)4134; MIPS64R5EB-NEXT: daddiu $1, $1, %got_ofst(.LCPI33_0)4135; MIPS64R5EB-NEXT: ld.d $w0, 0($1)4136; MIPS64R5EB-NEXT: copy_s.d $6, $w0[0]4137; MIPS64R5EB-NEXT: copy_s.d $7, $w0[1]4138; MIPS64R5EB-NEXT: ld $25, %call16(i16_8)($gp)4139; MIPS64R5EB-NEXT: jalr $254140; MIPS64R5EB-NEXT: nop4141; MIPS64R5EB-NEXT: ld $1, %got_disp(gv8i16)($gp)4142; MIPS64R5EB-NEXT: insert.d $w0[0], $24143; MIPS64R5EB-NEXT: insert.d $w0[1], $34144; MIPS64R5EB-NEXT: st.d $w0, 0($1)4145; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4146; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4147; MIPS64R5EB-NEXT: daddiu $sp, $sp, 164148; MIPS64R5EB-NEXT: jr $ra4149; MIPS64R5EB-NEXT: nop4150;4151; MIPS32EL-LABEL: calli16_8:4152; MIPS32EL: # %bb.0: # %entry4153; MIPS32EL-NEXT: addiu $sp, $sp, -404154; MIPS32EL-NEXT: .cfi_def_cfa_offset 404155; MIPS32EL-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4156; MIPS32EL-NEXT: .cfi_offset 31, -44157; MIPS32EL-NEXT: lui $1, 104158; MIPS32EL-NEXT: ori $5, $1, 94159; MIPS32EL-NEXT: sw $5, 28($sp)4160; MIPS32EL-NEXT: lui $1, 84161; MIPS32EL-NEXT: ori $1, $1, 124162; MIPS32EL-NEXT: sw $1, 24($sp)4163; MIPS32EL-NEXT: sw $5, 20($sp)4164; MIPS32EL-NEXT: lui $1, 74165; MIPS32EL-NEXT: ori $4, $1, 64166; MIPS32EL-NEXT: sw $4, 16($sp)4167; MIPS32EL-NEXT: move $6, $44168; MIPS32EL-NEXT: move $7, $54169; MIPS32EL-NEXT: jal i16_84170; MIPS32EL-NEXT: nop4171; MIPS32EL-NEXT: lui $1, %hi(gv8i16)4172; MIPS32EL-NEXT: addiu $6, $1, %lo(gv8i16)4173; MIPS32EL-NEXT: sw $5, 12($6)4174; MIPS32EL-NEXT: sw $4, 8($6)4175; MIPS32EL-NEXT: sw $3, 4($6)4176; MIPS32EL-NEXT: sw $2, %lo(gv8i16)($1)4177; MIPS32EL-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4178; MIPS32EL-NEXT: addiu $sp, $sp, 404179; MIPS32EL-NEXT: jr $ra4180; MIPS32EL-NEXT: nop4181;4182; MIPS64EL-LABEL: calli16_8:4183; MIPS64EL: # %bb.0: # %entry4184; MIPS64EL-NEXT: daddiu $sp, $sp, -164185; MIPS64EL-NEXT: .cfi_def_cfa_offset 164186; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4187; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4188; MIPS64EL-NEXT: .cfi_offset 31, -84189; MIPS64EL-NEXT: .cfi_offset 28, -164190; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_8)))4191; MIPS64EL-NEXT: daddu $1, $1, $254192; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_8)))4193; MIPS64EL-NEXT: lui $1, 104194; MIPS64EL-NEXT: daddiu $1, $1, 94195; MIPS64EL-NEXT: dsll $1, $1, 164196; MIPS64EL-NEXT: daddiu $1, $1, 74197; MIPS64EL-NEXT: dsll $1, $1, 164198; MIPS64EL-NEXT: daddiu $4, $1, 64199; MIPS64EL-NEXT: lui $1, 14200; MIPS64EL-NEXT: daddiu $1, $1, 163854201; MIPS64EL-NEXT: dsll $1, $1, 164202; MIPS64EL-NEXT: daddiu $1, $1, 81934203; MIPS64EL-NEXT: dsll $1, $1, 194204; MIPS64EL-NEXT: daddiu $7, $1, 124205; MIPS64EL-NEXT: ld $25, %call16(i16_8)($gp)4206; MIPS64EL-NEXT: move $5, $44207; MIPS64EL-NEXT: move $6, $44208; MIPS64EL-NEXT: jalr $254209; MIPS64EL-NEXT: nop4210; MIPS64EL-NEXT: ld $1, %got_disp(gv8i16)($gp)4211; MIPS64EL-NEXT: sd $3, 8($1)4212; MIPS64EL-NEXT: sd $2, 0($1)4213; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4214; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4215; MIPS64EL-NEXT: daddiu $sp, $sp, 164216; MIPS64EL-NEXT: jr $ra4217; MIPS64EL-NEXT: nop4218;4219; MIPS32R5EL-LABEL: calli16_8:4220; MIPS32R5EL: # %bb.0: # %entry4221; MIPS32R5EL-NEXT: addiu $sp, $sp, -404222; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 404223; MIPS32R5EL-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4224; MIPS32R5EL-NEXT: .cfi_offset 31, -44225; MIPS32R5EL-NEXT: lui $1, 104226; MIPS32R5EL-NEXT: ori $1, $1, 94227; MIPS32R5EL-NEXT: lui $2, 74228; MIPS32R5EL-NEXT: ori $2, $2, 64229; MIPS32R5EL-NEXT: fill.w $w0, $24230; MIPS32R5EL-NEXT: insert.w $w0[1], $14231; MIPS32R5EL-NEXT: splati.d $w0, $w0[0]4232; MIPS32R5EL-NEXT: copy_s.w $4, $w0[0]4233; MIPS32R5EL-NEXT: copy_s.w $5, $w0[1]4234; MIPS32R5EL-NEXT: copy_s.w $6, $w0[2]4235; MIPS32R5EL-NEXT: copy_s.w $7, $w0[3]4236; MIPS32R5EL-NEXT: lui $1, %hi($CPI33_0)4237; MIPS32R5EL-NEXT: addiu $1, $1, %lo($CPI33_0)4238; MIPS32R5EL-NEXT: ld.w $w0, 0($1)4239; MIPS32R5EL-NEXT: copy_s.w $1, $w0[0]4240; MIPS32R5EL-NEXT: copy_s.w $2, $w0[1]4241; MIPS32R5EL-NEXT: copy_s.w $3, $w0[2]4242; MIPS32R5EL-NEXT: copy_s.w $8, $w0[3]4243; MIPS32R5EL-NEXT: sw $8, 28($sp)4244; MIPS32R5EL-NEXT: sw $3, 24($sp)4245; MIPS32R5EL-NEXT: sw $2, 20($sp)4246; MIPS32R5EL-NEXT: sw $1, 16($sp)4247; MIPS32R5EL-NEXT: jal i16_84248; MIPS32R5EL-NEXT: nop4249; MIPS32R5EL-NEXT: lui $1, %hi(gv8i16)4250; MIPS32R5EL-NEXT: addiu $1, $1, %lo(gv8i16)4251; MIPS32R5EL-NEXT: insert.w $w0[0], $24252; MIPS32R5EL-NEXT: insert.w $w0[1], $34253; MIPS32R5EL-NEXT: insert.w $w0[2], $44254; MIPS32R5EL-NEXT: insert.w $w0[3], $54255; MIPS32R5EL-NEXT: st.w $w0, 0($1)4256; MIPS32R5EL-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4257; MIPS32R5EL-NEXT: addiu $sp, $sp, 404258; MIPS32R5EL-NEXT: jr $ra4259; MIPS32R5EL-NEXT: nop4260;4261; MIPS64R5EL-LABEL: calli16_8:4262; MIPS64R5EL: # %bb.0: # %entry4263; MIPS64R5EL-NEXT: daddiu $sp, $sp, -164264; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 164265; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4266; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4267; MIPS64R5EL-NEXT: .cfi_offset 31, -84268; MIPS64R5EL-NEXT: .cfi_offset 28, -164269; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli16_8)))4270; MIPS64R5EL-NEXT: daddu $1, $1, $254271; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli16_8)))4272; MIPS64R5EL-NEXT: lui $1, 74273; MIPS64R5EL-NEXT: ori $1, $1, 64274; MIPS64R5EL-NEXT: lui $2, 104275; MIPS64R5EL-NEXT: ori $2, $2, 94276; MIPS64R5EL-NEXT: dinsu $1, $2, 32, 324277; MIPS64R5EL-NEXT: fill.d $w0, $14278; MIPS64R5EL-NEXT: copy_s.d $4, $w0[0]4279; MIPS64R5EL-NEXT: copy_s.d $5, $w0[1]4280; MIPS64R5EL-NEXT: ld $1, %got_page(.LCPI33_0)($gp)4281; MIPS64R5EL-NEXT: daddiu $1, $1, %got_ofst(.LCPI33_0)4282; MIPS64R5EL-NEXT: ld.d $w0, 0($1)4283; MIPS64R5EL-NEXT: copy_s.d $6, $w0[0]4284; MIPS64R5EL-NEXT: copy_s.d $7, $w0[1]4285; MIPS64R5EL-NEXT: ld $25, %call16(i16_8)($gp)4286; MIPS64R5EL-NEXT: jalr $254287; MIPS64R5EL-NEXT: nop4288; MIPS64R5EL-NEXT: ld $1, %got_disp(gv8i16)($gp)4289; MIPS64R5EL-NEXT: insert.d $w0[0], $24290; MIPS64R5EL-NEXT: insert.d $w0[1], $34291; MIPS64R5EL-NEXT: st.d $w0, 0($1)4292; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4293; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4294; MIPS64R5EL-NEXT: daddiu $sp, $sp, 164295; MIPS64R5EL-NEXT: jr $ra4296; MIPS64R5EL-NEXT: nop4297entry:4298 %0 = call <8 x i16> @i16_8(<8 x i16> <i16 6, i16 7, i16 9, i16 10, i16 6, i16 7, i16 9, i16 10>, <8 x i16> <i16 6, i16 7, i16 9, i16 10, i16 12, i16 8, i16 9, i16 10>)4299 store <8 x i16> %0, ptr @gv8i164300 ret void4301}4302 4303define void @calli32_2() {4304; MIPS32-LABEL: calli32_2:4305; MIPS32: # %bb.0: # %entry4306; MIPS32-NEXT: addiu $sp, $sp, -244307; MIPS32-NEXT: .cfi_def_cfa_offset 244308; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill4309; MIPS32-NEXT: .cfi_offset 31, -44310; MIPS32-NEXT: addiu $4, $zero, 64311; MIPS32-NEXT: addiu $5, $zero, 74312; MIPS32-NEXT: addiu $6, $zero, 124313; MIPS32-NEXT: addiu $7, $zero, 84314; MIPS32-NEXT: jal i32_24315; MIPS32-NEXT: nop4316; MIPS32-NEXT: lui $1, %hi(gv2i32)4317; MIPS32-NEXT: addiu $4, $1, %lo(gv2i32)4318; MIPS32-NEXT: sw $3, 4($4)4319; MIPS32-NEXT: sw $2, %lo(gv2i32)($1)4320; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload4321; MIPS32-NEXT: addiu $sp, $sp, 244322; MIPS32-NEXT: jr $ra4323; MIPS32-NEXT: nop4324;4325; MIPS64EB-LABEL: calli32_2:4326; MIPS64EB: # %bb.0: # %entry4327; MIPS64EB-NEXT: daddiu $sp, $sp, -164328; MIPS64EB-NEXT: .cfi_def_cfa_offset 164329; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4330; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4331; MIPS64EB-NEXT: .cfi_offset 31, -84332; MIPS64EB-NEXT: .cfi_offset 28, -164333; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_2)))4334; MIPS64EB-NEXT: daddu $1, $1, $254335; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_2)))4336; MIPS64EB-NEXT: daddiu $1, $zero, 34337; MIPS64EB-NEXT: dsll $2, $1, 334338; MIPS64EB-NEXT: daddiu $4, $2, 74339; MIPS64EB-NEXT: dsll $1, $1, 344340; MIPS64EB-NEXT: daddiu $5, $1, 84341; MIPS64EB-NEXT: ld $25, %call16(i32_2)($gp)4342; MIPS64EB-NEXT: jalr $254343; MIPS64EB-NEXT: nop4344; MIPS64EB-NEXT: ld $1, %got_disp(gv2i32)($gp)4345; MIPS64EB-NEXT: sd $2, 0($1)4346; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4347; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4348; MIPS64EB-NEXT: daddiu $sp, $sp, 164349; MIPS64EB-NEXT: jr $ra4350; MIPS64EB-NEXT: nop4351;4352; MIPS32R5-LABEL: calli32_2:4353; MIPS32R5: # %bb.0: # %entry4354; MIPS32R5-NEXT: addiu $sp, $sp, -244355; MIPS32R5-NEXT: .cfi_def_cfa_offset 244356; MIPS32R5-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill4357; MIPS32R5-NEXT: .cfi_offset 31, -44358; MIPS32R5-NEXT: addiu $4, $zero, 64359; MIPS32R5-NEXT: addiu $5, $zero, 74360; MIPS32R5-NEXT: addiu $6, $zero, 124361; MIPS32R5-NEXT: addiu $7, $zero, 84362; MIPS32R5-NEXT: jal i32_24363; MIPS32R5-NEXT: nop4364; MIPS32R5-NEXT: lui $1, %hi(gv2i32)4365; MIPS32R5-NEXT: addiu $4, $1, %lo(gv2i32)4366; MIPS32R5-NEXT: sw $3, 4($4)4367; MIPS32R5-NEXT: sw $2, %lo(gv2i32)($1)4368; MIPS32R5-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload4369; MIPS32R5-NEXT: addiu $sp, $sp, 244370; MIPS32R5-NEXT: jr $ra4371; MIPS32R5-NEXT: nop4372;4373; MIPS64R5EB-LABEL: calli32_2:4374; MIPS64R5EB: # %bb.0: # %entry4375; MIPS64R5EB-NEXT: daddiu $sp, $sp, -164376; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 164377; MIPS64R5EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4378; MIPS64R5EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4379; MIPS64R5EB-NEXT: .cfi_offset 31, -84380; MIPS64R5EB-NEXT: .cfi_offset 28, -164381; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_2)))4382; MIPS64R5EB-NEXT: daddu $1, $1, $254383; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_2)))4384; MIPS64R5EB-NEXT: daddiu $1, $zero, 34385; MIPS64R5EB-NEXT: dsll $2, $1, 334386; MIPS64R5EB-NEXT: daddiu $4, $2, 74387; MIPS64R5EB-NEXT: dsll $1, $1, 344388; MIPS64R5EB-NEXT: daddiu $5, $1, 84389; MIPS64R5EB-NEXT: ld $25, %call16(i32_2)($gp)4390; MIPS64R5EB-NEXT: jalr $254391; MIPS64R5EB-NEXT: nop4392; MIPS64R5EB-NEXT: ld $1, %got_disp(gv2i32)($gp)4393; MIPS64R5EB-NEXT: sd $2, 0($1)4394; MIPS64R5EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4395; MIPS64R5EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4396; MIPS64R5EB-NEXT: daddiu $sp, $sp, 164397; MIPS64R5EB-NEXT: jr $ra4398; MIPS64R5EB-NEXT: nop4399;4400; MIPS64EL-LABEL: calli32_2:4401; MIPS64EL: # %bb.0: # %entry4402; MIPS64EL-NEXT: daddiu $sp, $sp, -164403; MIPS64EL-NEXT: .cfi_def_cfa_offset 164404; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4405; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4406; MIPS64EL-NEXT: .cfi_offset 31, -84407; MIPS64EL-NEXT: .cfi_offset 28, -164408; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_2)))4409; MIPS64EL-NEXT: daddu $1, $1, $254410; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_2)))4411; MIPS64EL-NEXT: daddiu $1, $zero, 74412; MIPS64EL-NEXT: dsll $1, $1, 324413; MIPS64EL-NEXT: daddiu $4, $1, 64414; MIPS64EL-NEXT: daddiu $1, $zero, 14415; MIPS64EL-NEXT: dsll $1, $1, 354416; MIPS64EL-NEXT: daddiu $5, $1, 124417; MIPS64EL-NEXT: ld $25, %call16(i32_2)($gp)4418; MIPS64EL-NEXT: jalr $254419; MIPS64EL-NEXT: nop4420; MIPS64EL-NEXT: ld $1, %got_disp(gv2i32)($gp)4421; MIPS64EL-NEXT: sd $2, 0($1)4422; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4423; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4424; MIPS64EL-NEXT: daddiu $sp, $sp, 164425; MIPS64EL-NEXT: jr $ra4426; MIPS64EL-NEXT: nop4427;4428; MIPS64R5EL-LABEL: calli32_2:4429; MIPS64R5EL: # %bb.0: # %entry4430; MIPS64R5EL-NEXT: daddiu $sp, $sp, -164431; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 164432; MIPS64R5EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4433; MIPS64R5EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4434; MIPS64R5EL-NEXT: .cfi_offset 31, -84435; MIPS64R5EL-NEXT: .cfi_offset 28, -164436; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_2)))4437; MIPS64R5EL-NEXT: daddu $1, $1, $254438; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_2)))4439; MIPS64R5EL-NEXT: daddiu $1, $zero, 74440; MIPS64R5EL-NEXT: dsll $1, $1, 324441; MIPS64R5EL-NEXT: daddiu $4, $1, 64442; MIPS64R5EL-NEXT: daddiu $1, $zero, 14443; MIPS64R5EL-NEXT: dsll $1, $1, 354444; MIPS64R5EL-NEXT: daddiu $5, $1, 124445; MIPS64R5EL-NEXT: ld $25, %call16(i32_2)($gp)4446; MIPS64R5EL-NEXT: jalr $254447; MIPS64R5EL-NEXT: nop4448; MIPS64R5EL-NEXT: ld $1, %got_disp(gv2i32)($gp)4449; MIPS64R5EL-NEXT: sd $2, 0($1)4450; MIPS64R5EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4451; MIPS64R5EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4452; MIPS64R5EL-NEXT: daddiu $sp, $sp, 164453; MIPS64R5EL-NEXT: jr $ra4454; MIPS64R5EL-NEXT: nop4455entry:4456 %0 = call <2 x i32> @i32_2(<2 x i32> <i32 6, i32 7>, <2 x i32> <i32 12, i32 8>)4457 store <2 x i32> %0, ptr @gv2i324458 ret void4459}4460 4461define void @calli32_4() {4462; MIPS32-LABEL: calli32_4:4463; MIPS32: # %bb.0: # %entry4464; MIPS32-NEXT: addiu $sp, $sp, -404465; MIPS32-NEXT: .cfi_def_cfa_offset 404466; MIPS32-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4467; MIPS32-NEXT: .cfi_offset 31, -44468; MIPS32-NEXT: addiu $1, $zero, 94469; MIPS32-NEXT: addiu $2, $zero, 104470; MIPS32-NEXT: sw $2, 28($sp)4471; MIPS32-NEXT: sw $1, 24($sp)4472; MIPS32-NEXT: addiu $1, $zero, 84473; MIPS32-NEXT: sw $1, 20($sp)4474; MIPS32-NEXT: addiu $1, $zero, 124475; MIPS32-NEXT: sw $1, 16($sp)4476; MIPS32-NEXT: addiu $4, $zero, 64477; MIPS32-NEXT: addiu $5, $zero, 74478; MIPS32-NEXT: addiu $6, $zero, 94479; MIPS32-NEXT: addiu $7, $zero, 104480; MIPS32-NEXT: jal i32_44481; MIPS32-NEXT: nop4482; MIPS32-NEXT: lui $1, %hi(gv4i32)4483; MIPS32-NEXT: addiu $6, $1, %lo(gv4i32)4484; MIPS32-NEXT: sw $5, 12($6)4485; MIPS32-NEXT: sw $4, 8($6)4486; MIPS32-NEXT: sw $3, 4($6)4487; MIPS32-NEXT: sw $2, %lo(gv4i32)($1)4488; MIPS32-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4489; MIPS32-NEXT: addiu $sp, $sp, 404490; MIPS32-NEXT: jr $ra4491; MIPS32-NEXT: nop4492;4493; MIPS64EB-LABEL: calli32_4:4494; MIPS64EB: # %bb.0: # %entry4495; MIPS64EB-NEXT: daddiu $sp, $sp, -164496; MIPS64EB-NEXT: .cfi_def_cfa_offset 164497; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4498; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4499; MIPS64EB-NEXT: .cfi_offset 31, -84500; MIPS64EB-NEXT: .cfi_offset 28, -164501; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_4)))4502; MIPS64EB-NEXT: daddu $1, $1, $254503; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_4)))4504; MIPS64EB-NEXT: daddiu $1, $zero, 34505; MIPS64EB-NEXT: dsll $2, $1, 334506; MIPS64EB-NEXT: daddiu $4, $2, 74507; MIPS64EB-NEXT: dsll $1, $1, 344508; MIPS64EB-NEXT: daddiu $6, $1, 84509; MIPS64EB-NEXT: daddiu $1, $zero, 94510; MIPS64EB-NEXT: dsll $1, $1, 324511; MIPS64EB-NEXT: daddiu $5, $1, 104512; MIPS64EB-NEXT: ld $25, %call16(i32_4)($gp)4513; MIPS64EB-NEXT: move $7, $54514; MIPS64EB-NEXT: jalr $254515; MIPS64EB-NEXT: nop4516; MIPS64EB-NEXT: ld $1, %got_disp(gv4i32)($gp)4517; MIPS64EB-NEXT: sd $3, 8($1)4518; MIPS64EB-NEXT: sd $2, 0($1)4519; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4520; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4521; MIPS64EB-NEXT: daddiu $sp, $sp, 164522; MIPS64EB-NEXT: jr $ra4523; MIPS64EB-NEXT: nop4524;4525; MIPS32R5-LABEL: calli32_4:4526; MIPS32R5: # %bb.0: # %entry4527; MIPS32R5-NEXT: addiu $sp, $sp, -404528; MIPS32R5-NEXT: .cfi_def_cfa_offset 404529; MIPS32R5-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4530; MIPS32R5-NEXT: .cfi_offset 31, -44531; MIPS32R5-NEXT: addiu $1, $zero, 94532; MIPS32R5-NEXT: addiu $2, $zero, 104533; MIPS32R5-NEXT: sw $2, 28($sp)4534; MIPS32R5-NEXT: sw $1, 24($sp)4535; MIPS32R5-NEXT: addiu $1, $zero, 84536; MIPS32R5-NEXT: sw $1, 20($sp)4537; MIPS32R5-NEXT: addiu $1, $zero, 124538; MIPS32R5-NEXT: sw $1, 16($sp)4539; MIPS32R5-NEXT: addiu $4, $zero, 64540; MIPS32R5-NEXT: addiu $5, $zero, 74541; MIPS32R5-NEXT: addiu $6, $zero, 94542; MIPS32R5-NEXT: addiu $7, $zero, 104543; MIPS32R5-NEXT: jal i32_44544; MIPS32R5-NEXT: nop4545; MIPS32R5-NEXT: insert.w $w0[0], $24546; MIPS32R5-NEXT: insert.w $w0[1], $34547; MIPS32R5-NEXT: insert.w $w0[2], $44548; MIPS32R5-NEXT: lui $1, %hi(gv4i32)4549; MIPS32R5-NEXT: insert.w $w0[3], $54550; MIPS32R5-NEXT: addiu $1, $1, %lo(gv4i32)4551; MIPS32R5-NEXT: st.w $w0, 0($1)4552; MIPS32R5-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4553; MIPS32R5-NEXT: addiu $sp, $sp, 404554; MIPS32R5-NEXT: jr $ra4555; MIPS32R5-NEXT: nop4556;4557; MIPS64R5-LABEL: calli32_4:4558; MIPS64R5: # %bb.0: # %entry4559; MIPS64R5-NEXT: daddiu $sp, $sp, -164560; MIPS64R5-NEXT: .cfi_def_cfa_offset 164561; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4562; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4563; MIPS64R5-NEXT: .cfi_offset 31, -84564; MIPS64R5-NEXT: .cfi_offset 28, -164565; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_4)))4566; MIPS64R5-NEXT: daddu $1, $1, $254567; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_4)))4568; MIPS64R5-NEXT: ld $1, %got_page(.LCPI35_0)($gp)4569; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI35_0)4570; MIPS64R5-NEXT: ld.d $w0, 0($1)4571; MIPS64R5-NEXT: copy_s.d $4, $w0[0]4572; MIPS64R5-NEXT: copy_s.d $5, $w0[1]4573; MIPS64R5-NEXT: ld $1, %got_page(.LCPI35_1)($gp)4574; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI35_1)4575; MIPS64R5-NEXT: ld.d $w0, 0($1)4576; MIPS64R5-NEXT: copy_s.d $6, $w0[0]4577; MIPS64R5-NEXT: copy_s.d $7, $w0[1]4578; MIPS64R5-NEXT: ld $25, %call16(i32_4)($gp)4579; MIPS64R5-NEXT: jalr $254580; MIPS64R5-NEXT: nop4581; MIPS64R5-NEXT: insert.d $w0[0], $24582; MIPS64R5-NEXT: insert.d $w0[1], $34583; MIPS64R5-NEXT: ld $1, %got_disp(gv4i32)($gp)4584; MIPS64R5-NEXT: st.d $w0, 0($1)4585; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4586; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4587; MIPS64R5-NEXT: daddiu $sp, $sp, 164588; MIPS64R5-NEXT: jr $ra4589; MIPS64R5-NEXT: nop4590;4591; MIPS64EL-LABEL: calli32_4:4592; MIPS64EL: # %bb.0: # %entry4593; MIPS64EL-NEXT: daddiu $sp, $sp, -164594; MIPS64EL-NEXT: .cfi_def_cfa_offset 164595; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4596; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4597; MIPS64EL-NEXT: .cfi_offset 31, -84598; MIPS64EL-NEXT: .cfi_offset 28, -164599; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(calli32_4)))4600; MIPS64EL-NEXT: daddu $1, $1, $254601; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli32_4)))4602; MIPS64EL-NEXT: daddiu $1, $zero, 74603; MIPS64EL-NEXT: dsll $1, $1, 324604; MIPS64EL-NEXT: daddiu $4, $1, 64605; MIPS64EL-NEXT: daddiu $1, $zero, 14606; MIPS64EL-NEXT: dsll $1, $1, 354607; MIPS64EL-NEXT: daddiu $6, $1, 124608; MIPS64EL-NEXT: daddiu $1, $zero, 54609; MIPS64EL-NEXT: dsll $1, $1, 334610; MIPS64EL-NEXT: daddiu $5, $1, 94611; MIPS64EL-NEXT: ld $25, %call16(i32_4)($gp)4612; MIPS64EL-NEXT: move $7, $54613; MIPS64EL-NEXT: jalr $254614; MIPS64EL-NEXT: nop4615; MIPS64EL-NEXT: ld $1, %got_disp(gv4i32)($gp)4616; MIPS64EL-NEXT: sd $3, 8($1)4617; MIPS64EL-NEXT: sd $2, 0($1)4618; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4619; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4620; MIPS64EL-NEXT: daddiu $sp, $sp, 164621; MIPS64EL-NEXT: jr $ra4622; MIPS64EL-NEXT: nop4623entry:4624 %0 = call <4 x i32> @i32_4(<4 x i32> <i32 6, i32 7, i32 9, i32 10>, <4 x i32> <i32 12, i32 8, i32 9, i32 10>)4625 store <4 x i32> %0, ptr @gv4i324626 ret void4627}4628 4629define void @calli64_2() {4630; MIPS32EB-LABEL: calli64_2:4631; MIPS32EB: # %bb.0: # %entry4632; MIPS32EB-NEXT: addiu $sp, $sp, -404633; MIPS32EB-NEXT: .cfi_def_cfa_offset 404634; MIPS32EB-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4635; MIPS32EB-NEXT: .cfi_offset 31, -44636; MIPS32EB-NEXT: addiu $1, $zero, 84637; MIPS32EB-NEXT: sw $1, 28($sp)4638; MIPS32EB-NEXT: addiu $1, $zero, 124639; MIPS32EB-NEXT: sw $1, 20($sp)4640; MIPS32EB-NEXT: sw $zero, 24($sp)4641; MIPS32EB-NEXT: sw $zero, 16($sp)4642; MIPS32EB-NEXT: addiu $4, $zero, 04643; MIPS32EB-NEXT: addiu $5, $zero, 64644; MIPS32EB-NEXT: addiu $6, $zero, 04645; MIPS32EB-NEXT: addiu $7, $zero, 74646; MIPS32EB-NEXT: jal i64_24647; MIPS32EB-NEXT: nop4648; MIPS32EB-NEXT: lui $1, %hi(gv2i64)4649; MIPS32EB-NEXT: addiu $6, $1, %lo(gv2i64)4650; MIPS32EB-NEXT: sw $5, 12($6)4651; MIPS32EB-NEXT: sw $4, 8($6)4652; MIPS32EB-NEXT: sw $3, 4($6)4653; MIPS32EB-NEXT: sw $2, %lo(gv2i64)($1)4654; MIPS32EB-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4655; MIPS32EB-NEXT: addiu $sp, $sp, 404656; MIPS32EB-NEXT: jr $ra4657; MIPS32EB-NEXT: nop4658;4659; MIPS64-LABEL: calli64_2:4660; MIPS64: # %bb.0: # %entry4661; MIPS64-NEXT: daddiu $sp, $sp, -164662; MIPS64-NEXT: .cfi_def_cfa_offset 164663; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4664; MIPS64-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4665; MIPS64-NEXT: .cfi_offset 31, -84666; MIPS64-NEXT: .cfi_offset 28, -164667; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(calli64_2)))4668; MIPS64-NEXT: daddu $1, $1, $254669; MIPS64-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli64_2)))4670; MIPS64-NEXT: ld $25, %call16(i64_2)($gp)4671; MIPS64-NEXT: daddiu $4, $zero, 64672; MIPS64-NEXT: daddiu $5, $zero, 74673; MIPS64-NEXT: daddiu $6, $zero, 124674; MIPS64-NEXT: daddiu $7, $zero, 84675; MIPS64-NEXT: jalr $254676; MIPS64-NEXT: nop4677; MIPS64-NEXT: ld $1, %got_disp(gv2i64)($gp)4678; MIPS64-NEXT: sd $3, 8($1)4679; MIPS64-NEXT: sd $2, 0($1)4680; MIPS64-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4681; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4682; MIPS64-NEXT: daddiu $sp, $sp, 164683; MIPS64-NEXT: jr $ra4684; MIPS64-NEXT: nop4685;4686; MIPS32R5EB-LABEL: calli64_2:4687; MIPS32R5EB: # %bb.0: # %entry4688; MIPS32R5EB-NEXT: addiu $sp, $sp, -404689; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 404690; MIPS32R5EB-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4691; MIPS32R5EB-NEXT: .cfi_offset 31, -44692; MIPS32R5EB-NEXT: lui $1, %hi($CPI36_0)4693; MIPS32R5EB-NEXT: addiu $1, $1, %lo($CPI36_0)4694; MIPS32R5EB-NEXT: ld.w $w0, 0($1)4695; MIPS32R5EB-NEXT: copy_s.w $5, $w0[1]4696; MIPS32R5EB-NEXT: copy_s.w $7, $w0[3]4697; MIPS32R5EB-NEXT: lui $1, %hi($CPI36_1)4698; MIPS32R5EB-NEXT: addiu $1, $1, %lo($CPI36_1)4699; MIPS32R5EB-NEXT: ld.w $w0, 0($1)4700; MIPS32R5EB-NEXT: copy_s.w $1, $w0[1]4701; MIPS32R5EB-NEXT: copy_s.w $2, $w0[3]4702; MIPS32R5EB-NEXT: sw $2, 28($sp)4703; MIPS32R5EB-NEXT: sw $1, 20($sp)4704; MIPS32R5EB-NEXT: sw $zero, 24($sp)4705; MIPS32R5EB-NEXT: sw $zero, 16($sp)4706; MIPS32R5EB-NEXT: addiu $4, $zero, 04707; MIPS32R5EB-NEXT: addiu $6, $zero, 04708; MIPS32R5EB-NEXT: jal i64_24709; MIPS32R5EB-NEXT: nop4710; MIPS32R5EB-NEXT: lui $1, %hi(gv2i64)4711; MIPS32R5EB-NEXT: insert.w $w0[0], $24712; MIPS32R5EB-NEXT: insert.w $w0[1], $34713; MIPS32R5EB-NEXT: addiu $1, $1, %lo(gv2i64)4714; MIPS32R5EB-NEXT: insert.w $w0[2], $44715; MIPS32R5EB-NEXT: insert.w $w0[3], $54716; MIPS32R5EB-NEXT: st.w $w0, 0($1)4717; MIPS32R5EB-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4718; MIPS32R5EB-NEXT: addiu $sp, $sp, 404719; MIPS32R5EB-NEXT: jr $ra4720; MIPS32R5EB-NEXT: nop4721;4722; MIPS64R5-LABEL: calli64_2:4723; MIPS64R5: # %bb.0: # %entry4724; MIPS64R5-NEXT: daddiu $sp, $sp, -164725; MIPS64R5-NEXT: .cfi_def_cfa_offset 164726; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4727; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4728; MIPS64R5-NEXT: .cfi_offset 31, -84729; MIPS64R5-NEXT: .cfi_offset 28, -164730; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(calli64_2)))4731; MIPS64R5-NEXT: daddu $1, $1, $254732; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calli64_2)))4733; MIPS64R5-NEXT: ld $25, %call16(i64_2)($gp)4734; MIPS64R5-NEXT: daddiu $4, $zero, 64735; MIPS64R5-NEXT: daddiu $5, $zero, 74736; MIPS64R5-NEXT: daddiu $6, $zero, 124737; MIPS64R5-NEXT: daddiu $7, $zero, 84738; MIPS64R5-NEXT: jalr $254739; MIPS64R5-NEXT: nop4740; MIPS64R5-NEXT: insert.d $w0[0], $24741; MIPS64R5-NEXT: insert.d $w0[1], $34742; MIPS64R5-NEXT: ld $1, %got_disp(gv2i64)($gp)4743; MIPS64R5-NEXT: st.d $w0, 0($1)4744; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4745; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4746; MIPS64R5-NEXT: daddiu $sp, $sp, 164747; MIPS64R5-NEXT: jr $ra4748; MIPS64R5-NEXT: nop4749;4750; MIPS32EL-LABEL: calli64_2:4751; MIPS32EL: # %bb.0: # %entry4752; MIPS32EL-NEXT: addiu $sp, $sp, -404753; MIPS32EL-NEXT: .cfi_def_cfa_offset 404754; MIPS32EL-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4755; MIPS32EL-NEXT: .cfi_offset 31, -44756; MIPS32EL-NEXT: addiu $1, $zero, 84757; MIPS32EL-NEXT: sw $1, 24($sp)4758; MIPS32EL-NEXT: addiu $1, $zero, 124759; MIPS32EL-NEXT: sw $1, 16($sp)4760; MIPS32EL-NEXT: sw $zero, 28($sp)4761; MIPS32EL-NEXT: sw $zero, 20($sp)4762; MIPS32EL-NEXT: addiu $4, $zero, 64763; MIPS32EL-NEXT: addiu $5, $zero, 04764; MIPS32EL-NEXT: addiu $6, $zero, 74765; MIPS32EL-NEXT: addiu $7, $zero, 04766; MIPS32EL-NEXT: jal i64_24767; MIPS32EL-NEXT: nop4768; MIPS32EL-NEXT: lui $1, %hi(gv2i64)4769; MIPS32EL-NEXT: addiu $6, $1, %lo(gv2i64)4770; MIPS32EL-NEXT: sw $5, 12($6)4771; MIPS32EL-NEXT: sw $4, 8($6)4772; MIPS32EL-NEXT: sw $3, 4($6)4773; MIPS32EL-NEXT: sw $2, %lo(gv2i64)($1)4774; MIPS32EL-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4775; MIPS32EL-NEXT: addiu $sp, $sp, 404776; MIPS32EL-NEXT: jr $ra4777; MIPS32EL-NEXT: nop4778;4779; MIPS32R5EL-LABEL: calli64_2:4780; MIPS32R5EL: # %bb.0: # %entry4781; MIPS32R5EL-NEXT: addiu $sp, $sp, -404782; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 404783; MIPS32R5EL-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4784; MIPS32R5EL-NEXT: .cfi_offset 31, -44785; MIPS32R5EL-NEXT: lui $1, %hi($CPI36_0)4786; MIPS32R5EL-NEXT: addiu $1, $1, %lo($CPI36_0)4787; MIPS32R5EL-NEXT: ld.w $w0, 0($1)4788; MIPS32R5EL-NEXT: copy_s.w $4, $w0[0]4789; MIPS32R5EL-NEXT: copy_s.w $6, $w0[2]4790; MIPS32R5EL-NEXT: lui $1, %hi($CPI36_1)4791; MIPS32R5EL-NEXT: addiu $1, $1, %lo($CPI36_1)4792; MIPS32R5EL-NEXT: ld.w $w0, 0($1)4793; MIPS32R5EL-NEXT: copy_s.w $1, $w0[0]4794; MIPS32R5EL-NEXT: copy_s.w $2, $w0[2]4795; MIPS32R5EL-NEXT: sw $2, 24($sp)4796; MIPS32R5EL-NEXT: sw $1, 16($sp)4797; MIPS32R5EL-NEXT: sw $zero, 28($sp)4798; MIPS32R5EL-NEXT: sw $zero, 20($sp)4799; MIPS32R5EL-NEXT: addiu $5, $zero, 04800; MIPS32R5EL-NEXT: addiu $7, $zero, 04801; MIPS32R5EL-NEXT: jal i64_24802; MIPS32R5EL-NEXT: nop4803; MIPS32R5EL-NEXT: lui $1, %hi(gv2i64)4804; MIPS32R5EL-NEXT: insert.w $w0[0], $24805; MIPS32R5EL-NEXT: insert.w $w0[1], $34806; MIPS32R5EL-NEXT: addiu $1, $1, %lo(gv2i64)4807; MIPS32R5EL-NEXT: insert.w $w0[2], $44808; MIPS32R5EL-NEXT: insert.w $w0[3], $54809; MIPS32R5EL-NEXT: st.w $w0, 0($1)4810; MIPS32R5EL-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4811; MIPS32R5EL-NEXT: addiu $sp, $sp, 404812; MIPS32R5EL-NEXT: jr $ra4813; MIPS32R5EL-NEXT: nop4814entry:4815 %0 = call <2 x i64> @i64_2(<2 x i64> <i64 6, i64 7>, <2 x i64> <i64 12, i64 8>)4816 store <2 x i64> %0, ptr @gv2i644817 ret void4818}4819 4820declare <2 x float> @float2_extern(<2 x float>, <2 x float>)4821declare <4 x float> @float4_extern(<4 x float>, <4 x float>)4822declare <2 x double> @double2_extern(<2 x double>, <2 x double>)4823 4824define void @callfloat_2() {4825; MIPS32-LABEL: callfloat_2:4826; MIPS32: # %bb.0: # %entry4827; MIPS32-NEXT: addiu $sp, $sp, -404828; MIPS32-NEXT: .cfi_def_cfa_offset 404829; MIPS32-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4830; MIPS32-NEXT: .cfi_offset 31, -44831; MIPS32-NEXT: lui $1, 167364832; MIPS32-NEXT: sw $1, 20($sp)4833; MIPS32-NEXT: lui $1, 167044834; MIPS32-NEXT: sw $1, 16($sp)4835; MIPS32-NEXT: addiu $4, $sp, 244836; MIPS32-NEXT: addiu $6, $zero, 04837; MIPS32-NEXT: lui $7, 490244838; MIPS32-NEXT: jal float2_extern4839; MIPS32-NEXT: nop4840; MIPS32-NEXT: lui $1, %hi(gv2f32)4841; MIPS32-NEXT: addiu $2, $1, %lo(gv2f32)4842; MIPS32-NEXT: lwc1 $f0, 28($sp)4843; MIPS32-NEXT: swc1 $f0, 4($2)4844; MIPS32-NEXT: lwc1 $f0, 24($sp)4845; MIPS32-NEXT: swc1 $f0, %lo(gv2f32)($1)4846; MIPS32-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4847; MIPS32-NEXT: addiu $sp, $sp, 404848; MIPS32-NEXT: jr $ra4849; MIPS32-NEXT: nop4850;4851; MIPS64EB-LABEL: callfloat_2:4852; MIPS64EB: # %bb.0: # %entry4853; MIPS64EB-NEXT: daddiu $sp, $sp, -164854; MIPS64EB-NEXT: .cfi_def_cfa_offset 164855; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4856; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4857; MIPS64EB-NEXT: .cfi_offset 31, -84858; MIPS64EB-NEXT: .cfi_offset 28, -164859; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_2)))4860; MIPS64EB-NEXT: daddu $1, $1, $254861; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_2)))4862; MIPS64EB-NEXT: daddiu $1, $zero, 3834863; MIPS64EB-NEXT: dsll $4, $1, 234864; MIPS64EB-NEXT: daddiu $1, $zero, 2614865; MIPS64EB-NEXT: dsll $1, $1, 334866; MIPS64EB-NEXT: daddiu $1, $1, 5234867; MIPS64EB-NEXT: dsll $5, $1, 214868; MIPS64EB-NEXT: ld $25, %call16(float2_extern)($gp)4869; MIPS64EB-NEXT: jalr $254870; MIPS64EB-NEXT: nop4871; MIPS64EB-NEXT: ld $1, %got_disp(gv2f32)($gp)4872; MIPS64EB-NEXT: sd $2, 0($1)4873; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4874; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4875; MIPS64EB-NEXT: daddiu $sp, $sp, 164876; MIPS64EB-NEXT: jr $ra4877; MIPS64EB-NEXT: nop4878;4879; MIPS32R5-LABEL: callfloat_2:4880; MIPS32R5: # %bb.0: # %entry4881; MIPS32R5-NEXT: addiu $sp, $sp, -404882; MIPS32R5-NEXT: .cfi_def_cfa_offset 404883; MIPS32R5-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill4884; MIPS32R5-NEXT: .cfi_offset 31, -44885; MIPS32R5-NEXT: lui $1, 167364886; MIPS32R5-NEXT: sw $1, 20($sp)4887; MIPS32R5-NEXT: lui $1, 167044888; MIPS32R5-NEXT: sw $1, 16($sp)4889; MIPS32R5-NEXT: addiu $4, $sp, 244890; MIPS32R5-NEXT: addiu $6, $zero, 04891; MIPS32R5-NEXT: lui $7, 490244892; MIPS32R5-NEXT: jal float2_extern4893; MIPS32R5-NEXT: nop4894; MIPS32R5-NEXT: lui $1, %hi(gv2f32)4895; MIPS32R5-NEXT: addiu $2, $1, %lo(gv2f32)4896; MIPS32R5-NEXT: lwc1 $f0, 28($sp)4897; MIPS32R5-NEXT: swc1 $f0, 4($2)4898; MIPS32R5-NEXT: lwc1 $f0, 24($sp)4899; MIPS32R5-NEXT: swc1 $f0, %lo(gv2f32)($1)4900; MIPS32R5-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload4901; MIPS32R5-NEXT: addiu $sp, $sp, 404902; MIPS32R5-NEXT: jr $ra4903; MIPS32R5-NEXT: nop4904;4905; MIPS64R5-LABEL: callfloat_2:4906; MIPS64R5: # %bb.0: # %entry4907; MIPS64R5-NEXT: daddiu $sp, $sp, -164908; MIPS64R5-NEXT: .cfi_def_cfa_offset 164909; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4910; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4911; MIPS64R5-NEXT: .cfi_offset 31, -84912; MIPS64R5-NEXT: .cfi_offset 28, -164913; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_2)))4914; MIPS64R5-NEXT: daddu $1, $1, $254915; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_2)))4916; MIPS64R5-NEXT: ld $1, %got_page(.LCPI37_0)($gp)4917; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI37_0)4918; MIPS64R5-NEXT: ld.d $w0, 0($1)4919; MIPS64R5-NEXT: copy_s.d $4, $w0[0]4920; MIPS64R5-NEXT: ld $1, %got_page(.LCPI37_1)($gp)4921; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI37_1)4922; MIPS64R5-NEXT: ld.d $w0, 0($1)4923; MIPS64R5-NEXT: copy_s.d $5, $w0[0]4924; MIPS64R5-NEXT: ld $25, %call16(float2_extern)($gp)4925; MIPS64R5-NEXT: jalr $254926; MIPS64R5-NEXT: nop4927; MIPS64R5-NEXT: ld $1, %got_disp(gv2f32)($gp)4928; MIPS64R5-NEXT: sd $2, 0($1)4929; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4930; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4931; MIPS64R5-NEXT: daddiu $sp, $sp, 164932; MIPS64R5-NEXT: jr $ra4933; MIPS64R5-NEXT: nop4934;4935; MIPS64EL-LABEL: callfloat_2:4936; MIPS64EL: # %bb.0: # %entry4937; MIPS64EL-NEXT: daddiu $sp, $sp, -164938; MIPS64EL-NEXT: .cfi_def_cfa_offset 164939; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill4940; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill4941; MIPS64EL-NEXT: .cfi_offset 31, -84942; MIPS64EL-NEXT: .cfi_offset 28, -164943; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_2)))4944; MIPS64EL-NEXT: daddu $1, $1, $254945; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_2)))4946; MIPS64EL-NEXT: daddiu $1, $zero, 3834947; MIPS64EL-NEXT: dsll $4, $1, 554948; MIPS64EL-NEXT: daddiu $1, $zero, 5234949; MIPS64EL-NEXT: dsll $1, $1, 314950; MIPS64EL-NEXT: daddiu $1, $1, 2614951; MIPS64EL-NEXT: dsll $5, $1, 224952; MIPS64EL-NEXT: ld $25, %call16(float2_extern)($gp)4953; MIPS64EL-NEXT: jalr $254954; MIPS64EL-NEXT: nop4955; MIPS64EL-NEXT: ld $1, %got_disp(gv2f32)($gp)4956; MIPS64EL-NEXT: sd $2, 0($1)4957; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload4958; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload4959; MIPS64EL-NEXT: daddiu $sp, $sp, 164960; MIPS64EL-NEXT: jr $ra4961; MIPS64EL-NEXT: nop4962entry:4963 %0 = call <2 x float> @float2_extern(<2 x float> <float 0.0, float -1.0>, <2 x float> <float 12.0, float 14.0>)4964 store <2 x float> %0, ptr @gv2f324965 ret void4966}4967 4968define void @callfloat_4() {4969; MIPS32-LABEL: callfloat_4:4970; MIPS32: # %bb.0: # %entry4971; MIPS32-NEXT: addiu $sp, $sp, -804972; MIPS32-NEXT: .cfi_def_cfa_offset 804973; MIPS32-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill4974; MIPS32-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill4975; MIPS32-NEXT: .cfi_offset 31, -44976; MIPS32-NEXT: .cfi_offset 30, -84977; MIPS32-NEXT: move $fp, $sp4978; MIPS32-NEXT: .cfi_def_cfa_register 304979; MIPS32-NEXT: addiu $1, $zero, -164980; MIPS32-NEXT: and $sp, $sp, $14981; MIPS32-NEXT: lui $1, 167044982; MIPS32-NEXT: lui $2, 167364983; MIPS32-NEXT: lui $3, 167524984; MIPS32-NEXT: lui $4, 167684985; MIPS32-NEXT: sw $4, 36($sp)4986; MIPS32-NEXT: sw $3, 32($sp)4987; MIPS32-NEXT: sw $2, 28($sp)4988; MIPS32-NEXT: sw $1, 24($sp)4989; MIPS32-NEXT: lui $1, 165124990; MIPS32-NEXT: sw $1, 20($sp)4991; MIPS32-NEXT: lui $1, 163844992; MIPS32-NEXT: sw $1, 16($sp)4993; MIPS32-NEXT: addiu $4, $sp, 484994; MIPS32-NEXT: addiu $6, $zero, 04995; MIPS32-NEXT: lui $7, 490244996; MIPS32-NEXT: jal float4_extern4997; MIPS32-NEXT: nop4998; MIPS32-NEXT: lui $1, %hi(gv4f32)4999; MIPS32-NEXT: addiu $2, $1, %lo(gv4f32)5000; MIPS32-NEXT: lwc1 $f0, 60($sp)5001; MIPS32-NEXT: swc1 $f0, 12($2)5002; MIPS32-NEXT: lwc1 $f0, 56($sp)5003; MIPS32-NEXT: swc1 $f0, 8($2)5004; MIPS32-NEXT: lwc1 $f0, 52($sp)5005; MIPS32-NEXT: swc1 $f0, 4($2)5006; MIPS32-NEXT: lwc1 $f0, 48($sp)5007; MIPS32-NEXT: swc1 $f0, %lo(gv4f32)($1)5008; MIPS32-NEXT: move $sp, $fp5009; MIPS32-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5010; MIPS32-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5011; MIPS32-NEXT: addiu $sp, $sp, 805012; MIPS32-NEXT: jr $ra5013; MIPS32-NEXT: nop5014;5015; MIPS64EB-LABEL: callfloat_4:5016; MIPS64EB: # %bb.0: # %entry5017; MIPS64EB-NEXT: daddiu $sp, $sp, -165018; MIPS64EB-NEXT: .cfi_def_cfa_offset 165019; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill5020; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill5021; MIPS64EB-NEXT: .cfi_offset 31, -85022; MIPS64EB-NEXT: .cfi_offset 28, -165023; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_4)))5024; MIPS64EB-NEXT: daddu $1, $1, $255025; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_4)))5026; MIPS64EB-NEXT: daddiu $1, $zero, 15027; MIPS64EB-NEXT: dsll $1, $1, 395028; MIPS64EB-NEXT: daddiu $1, $1, 1295029; MIPS64EB-NEXT: daddiu $2, $zero, 2615030; MIPS64EB-NEXT: dsll $2, $2, 335031; MIPS64EB-NEXT: daddiu $3, $zero, 3835032; MIPS64EB-NEXT: dsll $4, $3, 235033; MIPS64EB-NEXT: dsll $5, $1, 235034; MIPS64EB-NEXT: daddiu $1, $2, 5235035; MIPS64EB-NEXT: dsll $6, $1, 215036; MIPS64EB-NEXT: daddiu $1, $zero, 10475037; MIPS64EB-NEXT: dsll $1, $1, 295038; MIPS64EB-NEXT: daddiu $1, $1, 1315039; MIPS64EB-NEXT: dsll $7, $1, 235040; MIPS64EB-NEXT: ld $25, %call16(float4_extern)($gp)5041; MIPS64EB-NEXT: jalr $255042; MIPS64EB-NEXT: nop5043; MIPS64EB-NEXT: ld $1, %got_disp(gv4f32)($gp)5044; MIPS64EB-NEXT: sd $3, 8($1)5045; MIPS64EB-NEXT: sd $2, 0($1)5046; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload5047; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload5048; MIPS64EB-NEXT: daddiu $sp, $sp, 165049; MIPS64EB-NEXT: jr $ra5050; MIPS64EB-NEXT: nop5051;5052; MIPS32R5-LABEL: callfloat_4:5053; MIPS32R5: # %bb.0: # %entry5054; MIPS32R5-NEXT: addiu $sp, $sp, -805055; MIPS32R5-NEXT: .cfi_def_cfa_offset 805056; MIPS32R5-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill5057; MIPS32R5-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill5058; MIPS32R5-NEXT: .cfi_offset 31, -45059; MIPS32R5-NEXT: .cfi_offset 30, -85060; MIPS32R5-NEXT: move $fp, $sp5061; MIPS32R5-NEXT: .cfi_def_cfa_register 305062; MIPS32R5-NEXT: addiu $1, $zero, -165063; MIPS32R5-NEXT: and $sp, $sp, $15064; MIPS32R5-NEXT: lui $1, %hi($CPI38_0)5065; MIPS32R5-NEXT: addiu $1, $1, %lo($CPI38_0)5066; MIPS32R5-NEXT: ld.w $w0, 0($1)5067; MIPS32R5-NEXT: copy_s.w $7, $w0[1]5068; MIPS32R5-NEXT: copy_s.w $1, $w0[2]5069; MIPS32R5-NEXT: copy_s.w $2, $w0[3]5070; MIPS32R5-NEXT: lui $3, %hi($CPI38_1)5071; MIPS32R5-NEXT: addiu $3, $3, %lo($CPI38_1)5072; MIPS32R5-NEXT: ld.w $w0, 0($3)5073; MIPS32R5-NEXT: copy_s.w $3, $w0[0]5074; MIPS32R5-NEXT: copy_s.w $4, $w0[1]5075; MIPS32R5-NEXT: copy_s.w $5, $w0[2]5076; MIPS32R5-NEXT: copy_s.w $6, $w0[3]5077; MIPS32R5-NEXT: sw $6, 36($sp)5078; MIPS32R5-NEXT: sw $5, 32($sp)5079; MIPS32R5-NEXT: sw $4, 28($sp)5080; MIPS32R5-NEXT: sw $3, 24($sp)5081; MIPS32R5-NEXT: sw $2, 20($sp)5082; MIPS32R5-NEXT: sw $1, 16($sp)5083; MIPS32R5-NEXT: addiu $4, $sp, 485084; MIPS32R5-NEXT: addiu $6, $zero, 05085; MIPS32R5-NEXT: jal float4_extern5086; MIPS32R5-NEXT: nop5087; MIPS32R5-NEXT: lui $1, %hi(gv4f32)5088; MIPS32R5-NEXT: addiu $1, $1, %lo(gv4f32)5089; MIPS32R5-NEXT: ld.w $w0, 48($sp)5090; MIPS32R5-NEXT: st.w $w0, 0($1)5091; MIPS32R5-NEXT: move $sp, $fp5092; MIPS32R5-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5093; MIPS32R5-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5094; MIPS32R5-NEXT: addiu $sp, $sp, 805095; MIPS32R5-NEXT: jr $ra5096; MIPS32R5-NEXT: nop5097;5098; MIPS64R5-LABEL: callfloat_4:5099; MIPS64R5: # %bb.0: # %entry5100; MIPS64R5-NEXT: daddiu $sp, $sp, -165101; MIPS64R5-NEXT: .cfi_def_cfa_offset 165102; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill5103; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill5104; MIPS64R5-NEXT: .cfi_offset 31, -85105; MIPS64R5-NEXT: .cfi_offset 28, -165106; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_4)))5107; MIPS64R5-NEXT: daddu $1, $1, $255108; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_4)))5109; MIPS64R5-NEXT: ld $1, %got_page(.LCPI38_0)($gp)5110; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI38_0)5111; MIPS64R5-NEXT: ld.d $w0, 0($1)5112; MIPS64R5-NEXT: copy_s.d $4, $w0[0]5113; MIPS64R5-NEXT: copy_s.d $5, $w0[1]5114; MIPS64R5-NEXT: ld $1, %got_page(.LCPI38_1)($gp)5115; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI38_1)5116; MIPS64R5-NEXT: ld.d $w0, 0($1)5117; MIPS64R5-NEXT: copy_s.d $6, $w0[0]5118; MIPS64R5-NEXT: copy_s.d $7, $w0[1]5119; MIPS64R5-NEXT: ld $25, %call16(float4_extern)($gp)5120; MIPS64R5-NEXT: jalr $255121; MIPS64R5-NEXT: nop5122; MIPS64R5-NEXT: insert.d $w0[0], $25123; MIPS64R5-NEXT: insert.d $w0[1], $35124; MIPS64R5-NEXT: ld $1, %got_disp(gv4f32)($gp)5125; MIPS64R5-NEXT: st.d $w0, 0($1)5126; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload5127; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload5128; MIPS64R5-NEXT: daddiu $sp, $sp, 165129; MIPS64R5-NEXT: jr $ra5130; MIPS64R5-NEXT: nop5131;5132; MIPS64EL-LABEL: callfloat_4:5133; MIPS64EL: # %bb.0: # %entry5134; MIPS64EL-NEXT: daddiu $sp, $sp, -165135; MIPS64EL-NEXT: .cfi_def_cfa_offset 165136; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill5137; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill5138; MIPS64EL-NEXT: .cfi_offset 31, -85139; MIPS64EL-NEXT: .cfi_offset 28, -165140; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(callfloat_4)))5141; MIPS64EL-NEXT: daddu $1, $1, $255142; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(callfloat_4)))5143; MIPS64EL-NEXT: daddiu $1, $zero, 1295144; MIPS64EL-NEXT: dsll $1, $1, 255145; MIPS64EL-NEXT: daddiu $1, $1, 15146; MIPS64EL-NEXT: daddiu $2, $zero, 5235147; MIPS64EL-NEXT: dsll $2, $2, 315148; MIPS64EL-NEXT: daddiu $3, $zero, 3835149; MIPS64EL-NEXT: dsll $4, $3, 555150; MIPS64EL-NEXT: dsll $5, $1, 305151; MIPS64EL-NEXT: daddiu $1, $2, 2615152; MIPS64EL-NEXT: dsll $6, $1, 225153; MIPS64EL-NEXT: daddiu $1, $zero, 1315154; MIPS64EL-NEXT: dsll $1, $1, 355155; MIPS64EL-NEXT: daddiu $1, $1, 10475156; MIPS64EL-NEXT: dsll $7, $1, 205157; MIPS64EL-NEXT: ld $25, %call16(float4_extern)($gp)5158; MIPS64EL-NEXT: jalr $255159; MIPS64EL-NEXT: nop5160; MIPS64EL-NEXT: ld $1, %got_disp(gv4f32)($gp)5161; MIPS64EL-NEXT: sd $3, 8($1)5162; MIPS64EL-NEXT: sd $2, 0($1)5163; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload5164; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload5165; MIPS64EL-NEXT: daddiu $sp, $sp, 165166; MIPS64EL-NEXT: jr $ra5167; MIPS64EL-NEXT: nop5168entry:5169 %0 = call <4 x float> @float4_extern(<4 x float> <float 0.0, float -1.0, float 2.0, float 4.0>, <4 x float> <float 12.0, float 14.0, float 15.0, float 16.0>)5170 store <4 x float> %0, ptr @gv4f325171 ret void5172}5173 5174define void @calldouble_2() {5175; MIPS32EB-LABEL: calldouble_2:5176; MIPS32EB: # %bb.0: # %entry5177; MIPS32EB-NEXT: addiu $sp, $sp, -805178; MIPS32EB-NEXT: .cfi_def_cfa_offset 805179; MIPS32EB-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill5180; MIPS32EB-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill5181; MIPS32EB-NEXT: .cfi_offset 31, -45182; MIPS32EB-NEXT: .cfi_offset 30, -85183; MIPS32EB-NEXT: move $fp, $sp5184; MIPS32EB-NEXT: .cfi_def_cfa_register 305185; MIPS32EB-NEXT: addiu $1, $zero, -165186; MIPS32EB-NEXT: and $sp, $sp, $15187; MIPS32EB-NEXT: lui $1, 164245188; MIPS32EB-NEXT: lui $2, 164285189; MIPS32EB-NEXT: sw $2, 32($sp)5190; MIPS32EB-NEXT: sw $1, 24($sp)5191; MIPS32EB-NEXT: lui $1, 491365192; MIPS32EB-NEXT: sw $1, 16($sp)5193; MIPS32EB-NEXT: sw $zero, 36($sp)5194; MIPS32EB-NEXT: sw $zero, 28($sp)5195; MIPS32EB-NEXT: sw $zero, 20($sp)5196; MIPS32EB-NEXT: addiu $4, $sp, 485197; MIPS32EB-NEXT: addiu $6, $zero, 05198; MIPS32EB-NEXT: addiu $7, $zero, 05199; MIPS32EB-NEXT: jal double2_extern5200; MIPS32EB-NEXT: nop5201; MIPS32EB-NEXT: lui $1, %hi(gv2f64)5202; MIPS32EB-NEXT: addiu $2, $1, %lo(gv2f64)5203; MIPS32EB-NEXT: ldc1 $f0, 56($sp)5204; MIPS32EB-NEXT: sdc1 $f0, 8($2)5205; MIPS32EB-NEXT: ldc1 $f0, 48($sp)5206; MIPS32EB-NEXT: sdc1 $f0, %lo(gv2f64)($1)5207; MIPS32EB-NEXT: move $sp, $fp5208; MIPS32EB-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5209; MIPS32EB-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5210; MIPS32EB-NEXT: addiu $sp, $sp, 805211; MIPS32EB-NEXT: jr $ra5212; MIPS32EB-NEXT: nop5213;5214; MIPS64-LABEL: calldouble_2:5215; MIPS64: # %bb.0: # %entry5216; MIPS64-NEXT: daddiu $sp, $sp, -165217; MIPS64-NEXT: .cfi_def_cfa_offset 165218; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill5219; MIPS64-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill5220; MIPS64-NEXT: .cfi_offset 31, -85221; MIPS64-NEXT: .cfi_offset 28, -165222; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(calldouble_2)))5223; MIPS64-NEXT: daddu $1, $1, $255224; MIPS64-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calldouble_2)))5225; MIPS64-NEXT: daddiu $1, $zero, 30715226; MIPS64-NEXT: dsll $5, $1, 525227; MIPS64-NEXT: daddiu $1, $zero, 20535228; MIPS64-NEXT: dsll $6, $1, 515229; MIPS64-NEXT: daddiu $1, $zero, 41075230; MIPS64-NEXT: dsll $7, $1, 505231; MIPS64-NEXT: ld $25, %call16(double2_extern)($gp)5232; MIPS64-NEXT: daddiu $4, $zero, 05233; MIPS64-NEXT: jalr $255234; MIPS64-NEXT: nop5235; MIPS64-NEXT: ld $1, %got_disp(gv2f64)($gp)5236; MIPS64-NEXT: sd $3, 8($1)5237; MIPS64-NEXT: sd $2, 0($1)5238; MIPS64-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload5239; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload5240; MIPS64-NEXT: daddiu $sp, $sp, 165241; MIPS64-NEXT: jr $ra5242; MIPS64-NEXT: nop5243;5244; MIPS32R5EB-LABEL: calldouble_2:5245; MIPS32R5EB: # %bb.0: # %entry5246; MIPS32R5EB-NEXT: addiu $sp, $sp, -805247; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 805248; MIPS32R5EB-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill5249; MIPS32R5EB-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill5250; MIPS32R5EB-NEXT: .cfi_offset 31, -45251; MIPS32R5EB-NEXT: .cfi_offset 30, -85252; MIPS32R5EB-NEXT: move $fp, $sp5253; MIPS32R5EB-NEXT: .cfi_def_cfa_register 305254; MIPS32R5EB-NEXT: addiu $1, $zero, -165255; MIPS32R5EB-NEXT: and $sp, $sp, $15256; MIPS32R5EB-NEXT: lui $1, %hi($CPI39_0)5257; MIPS32R5EB-NEXT: addiu $1, $1, %lo($CPI39_0)5258; MIPS32R5EB-NEXT: ld.w $w0, 0($1)5259; MIPS32R5EB-NEXT: copy_s.w $1, $w0[2]5260; MIPS32R5EB-NEXT: lui $2, %hi($CPI39_1)5261; MIPS32R5EB-NEXT: addiu $2, $2, %lo($CPI39_1)5262; MIPS32R5EB-NEXT: ld.w $w0, 0($2)5263; MIPS32R5EB-NEXT: copy_s.w $2, $w0[0]5264; MIPS32R5EB-NEXT: copy_s.w $3, $w0[2]5265; MIPS32R5EB-NEXT: sw $3, 32($sp)5266; MIPS32R5EB-NEXT: sw $2, 24($sp)5267; MIPS32R5EB-NEXT: sw $1, 16($sp)5268; MIPS32R5EB-NEXT: sw $zero, 36($sp)5269; MIPS32R5EB-NEXT: sw $zero, 28($sp)5270; MIPS32R5EB-NEXT: sw $zero, 20($sp)5271; MIPS32R5EB-NEXT: addiu $4, $sp, 485272; MIPS32R5EB-NEXT: addiu $6, $zero, 05273; MIPS32R5EB-NEXT: addiu $7, $zero, 05274; MIPS32R5EB-NEXT: jal double2_extern5275; MIPS32R5EB-NEXT: nop5276; MIPS32R5EB-NEXT: lui $1, %hi(gv2f64)5277; MIPS32R5EB-NEXT: addiu $1, $1, %lo(gv2f64)5278; MIPS32R5EB-NEXT: ld.d $w0, 48($sp)5279; MIPS32R5EB-NEXT: st.d $w0, 0($1)5280; MIPS32R5EB-NEXT: move $sp, $fp5281; MIPS32R5EB-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5282; MIPS32R5EB-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5283; MIPS32R5EB-NEXT: addiu $sp, $sp, 805284; MIPS32R5EB-NEXT: jr $ra5285; MIPS32R5EB-NEXT: nop5286;5287; MIPS64R5-LABEL: calldouble_2:5288; MIPS64R5: # %bb.0: # %entry5289; MIPS64R5-NEXT: daddiu $sp, $sp, -165290; MIPS64R5-NEXT: .cfi_def_cfa_offset 165291; MIPS64R5-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill5292; MIPS64R5-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill5293; MIPS64R5-NEXT: .cfi_offset 31, -85294; MIPS64R5-NEXT: .cfi_offset 28, -165295; MIPS64R5-NEXT: lui $1, %hi(%neg(%gp_rel(calldouble_2)))5296; MIPS64R5-NEXT: daddu $1, $1, $255297; MIPS64R5-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(calldouble_2)))5298; MIPS64R5-NEXT: ld $1, %got_page(.LCPI39_0)($gp)5299; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI39_0)5300; MIPS64R5-NEXT: ld.d $w0, 0($1)5301; MIPS64R5-NEXT: copy_s.d $5, $w0[1]5302; MIPS64R5-NEXT: ld $1, %got_page(.LCPI39_1)($gp)5303; MIPS64R5-NEXT: daddiu $1, $1, %got_ofst(.LCPI39_1)5304; MIPS64R5-NEXT: ld.d $w0, 0($1)5305; MIPS64R5-NEXT: copy_s.d $6, $w0[0]5306; MIPS64R5-NEXT: copy_s.d $7, $w0[1]5307; MIPS64R5-NEXT: ld $25, %call16(double2_extern)($gp)5308; MIPS64R5-NEXT: daddiu $4, $zero, 05309; MIPS64R5-NEXT: jalr $255310; MIPS64R5-NEXT: nop5311; MIPS64R5-NEXT: insert.d $w0[0], $25312; MIPS64R5-NEXT: insert.d $w0[1], $35313; MIPS64R5-NEXT: ld $1, %got_disp(gv2f64)($gp)5314; MIPS64R5-NEXT: st.d $w0, 0($1)5315; MIPS64R5-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload5316; MIPS64R5-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload5317; MIPS64R5-NEXT: daddiu $sp, $sp, 165318; MIPS64R5-NEXT: jr $ra5319; MIPS64R5-NEXT: nop5320;5321; MIPS32EL-LABEL: calldouble_2:5322; MIPS32EL: # %bb.0: # %entry5323; MIPS32EL-NEXT: addiu $sp, $sp, -805324; MIPS32EL-NEXT: .cfi_def_cfa_offset 805325; MIPS32EL-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill5326; MIPS32EL-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill5327; MIPS32EL-NEXT: .cfi_offset 31, -45328; MIPS32EL-NEXT: .cfi_offset 30, -85329; MIPS32EL-NEXT: move $fp, $sp5330; MIPS32EL-NEXT: .cfi_def_cfa_register 305331; MIPS32EL-NEXT: addiu $1, $zero, -165332; MIPS32EL-NEXT: and $sp, $sp, $15333; MIPS32EL-NEXT: lui $1, 164245334; MIPS32EL-NEXT: lui $2, 164285335; MIPS32EL-NEXT: sw $2, 36($sp)5336; MIPS32EL-NEXT: sw $1, 28($sp)5337; MIPS32EL-NEXT: lui $1, 491365338; MIPS32EL-NEXT: sw $1, 20($sp)5339; MIPS32EL-NEXT: sw $zero, 32($sp)5340; MIPS32EL-NEXT: sw $zero, 24($sp)5341; MIPS32EL-NEXT: sw $zero, 16($sp)5342; MIPS32EL-NEXT: addiu $4, $sp, 485343; MIPS32EL-NEXT: addiu $6, $zero, 05344; MIPS32EL-NEXT: addiu $7, $zero, 05345; MIPS32EL-NEXT: jal double2_extern5346; MIPS32EL-NEXT: nop5347; MIPS32EL-NEXT: lui $1, %hi(gv2f64)5348; MIPS32EL-NEXT: addiu $2, $1, %lo(gv2f64)5349; MIPS32EL-NEXT: ldc1 $f0, 56($sp)5350; MIPS32EL-NEXT: sdc1 $f0, 8($2)5351; MIPS32EL-NEXT: ldc1 $f0, 48($sp)5352; MIPS32EL-NEXT: sdc1 $f0, %lo(gv2f64)($1)5353; MIPS32EL-NEXT: move $sp, $fp5354; MIPS32EL-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5355; MIPS32EL-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5356; MIPS32EL-NEXT: addiu $sp, $sp, 805357; MIPS32EL-NEXT: jr $ra5358; MIPS32EL-NEXT: nop5359;5360; MIPS32R5EL-LABEL: calldouble_2:5361; MIPS32R5EL: # %bb.0: # %entry5362; MIPS32R5EL-NEXT: addiu $sp, $sp, -805363; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 805364; MIPS32R5EL-NEXT: sw $ra, 76($sp) # 4-byte Folded Spill5365; MIPS32R5EL-NEXT: sw $fp, 72($sp) # 4-byte Folded Spill5366; MIPS32R5EL-NEXT: .cfi_offset 31, -45367; MIPS32R5EL-NEXT: .cfi_offset 30, -85368; MIPS32R5EL-NEXT: move $fp, $sp5369; MIPS32R5EL-NEXT: .cfi_def_cfa_register 305370; MIPS32R5EL-NEXT: addiu $1, $zero, -165371; MIPS32R5EL-NEXT: and $sp, $sp, $15372; MIPS32R5EL-NEXT: lui $1, %hi($CPI39_0)5373; MIPS32R5EL-NEXT: addiu $1, $1, %lo($CPI39_0)5374; MIPS32R5EL-NEXT: ld.w $w0, 0($1)5375; MIPS32R5EL-NEXT: copy_s.w $1, $w0[3]5376; MIPS32R5EL-NEXT: lui $2, %hi($CPI39_1)5377; MIPS32R5EL-NEXT: addiu $2, $2, %lo($CPI39_1)5378; MIPS32R5EL-NEXT: ld.w $w0, 0($2)5379; MIPS32R5EL-NEXT: copy_s.w $2, $w0[1]5380; MIPS32R5EL-NEXT: copy_s.w $3, $w0[3]5381; MIPS32R5EL-NEXT: sw $3, 36($sp)5382; MIPS32R5EL-NEXT: sw $2, 28($sp)5383; MIPS32R5EL-NEXT: sw $1, 20($sp)5384; MIPS32R5EL-NEXT: sw $zero, 32($sp)5385; MIPS32R5EL-NEXT: sw $zero, 24($sp)5386; MIPS32R5EL-NEXT: sw $zero, 16($sp)5387; MIPS32R5EL-NEXT: addiu $4, $sp, 485388; MIPS32R5EL-NEXT: addiu $6, $zero, 05389; MIPS32R5EL-NEXT: addiu $7, $zero, 05390; MIPS32R5EL-NEXT: jal double2_extern5391; MIPS32R5EL-NEXT: nop5392; MIPS32R5EL-NEXT: lui $1, %hi(gv2f64)5393; MIPS32R5EL-NEXT: addiu $1, $1, %lo(gv2f64)5394; MIPS32R5EL-NEXT: ld.d $w0, 48($sp)5395; MIPS32R5EL-NEXT: st.d $w0, 0($1)5396; MIPS32R5EL-NEXT: move $sp, $fp5397; MIPS32R5EL-NEXT: lw $fp, 72($sp) # 4-byte Folded Reload5398; MIPS32R5EL-NEXT: lw $ra, 76($sp) # 4-byte Folded Reload5399; MIPS32R5EL-NEXT: addiu $sp, $sp, 805400; MIPS32R5EL-NEXT: jr $ra5401; MIPS32R5EL-NEXT: nop5402entry:5403 %0 = call <2 x double> @double2_extern(<2 x double> <double 0.0, double -1.0>, <2 x double> <double 12.0, double 14.0>)5404 store <2 x double> %0, ptr @gv2f645405 ret void5406}5407 5408; The mixed tests show that due to alignment requirements, $5 is not used5409; in argument passing.5410 5411define float @mixed_i8(<2 x float> %a, i8 %b, <2 x float> %c) {5412; MIPS32-LABEL: mixed_i8:5413; MIPS32: # %bb.0: # %entry5414; MIPS32-NEXT: mtc1 $5, $f05415; MIPS32-NEXT: andi $1, $6, 2555416; MIPS32-NEXT: mtc1 $1, $f15417; MIPS32-NEXT: cvt.s.w $f1, $f15418; MIPS32-NEXT: add.s $f0, $f1, $f05419; MIPS32-NEXT: lwc1 $f2, 20($sp)5420; MIPS32-NEXT: add.s $f0, $f0, $f25421; MIPS32-NEXT: mtc1 $4, $f25422; MIPS32-NEXT: add.s $f1, $f1, $f25423; MIPS32-NEXT: lwc1 $f2, 16($sp)5424; MIPS32-NEXT: add.s $f1, $f1, $f25425; MIPS32-NEXT: add.s $f0, $f1, $f05426; MIPS32-NEXT: jr $ra5427; MIPS32-NEXT: nop5428;5429; MIPS64EB-LABEL: mixed_i8:5430; MIPS64EB: # %bb.0: # %entry5431; MIPS64EB-NEXT: sll $1, $4, 05432; MIPS64EB-NEXT: mtc1 $1, $f05433; MIPS64EB-NEXT: sll $1, $5, 05434; MIPS64EB-NEXT: andi $1, $1, 2555435; MIPS64EB-NEXT: mtc1 $1, $f15436; MIPS64EB-NEXT: cvt.s.w $f1, $f15437; MIPS64EB-NEXT: add.s $f0, $f1, $f05438; MIPS64EB-NEXT: dsrl $1, $4, 325439; MIPS64EB-NEXT: sll $1, $1, 05440; MIPS64EB-NEXT: sll $2, $6, 05441; MIPS64EB-NEXT: mtc1 $2, $f25442; MIPS64EB-NEXT: add.s $f0, $f0, $f25443; MIPS64EB-NEXT: mtc1 $1, $f25444; MIPS64EB-NEXT: add.s $f1, $f1, $f25445; MIPS64EB-NEXT: dsrl $1, $6, 325446; MIPS64EB-NEXT: sll $1, $1, 05447; MIPS64EB-NEXT: mtc1 $1, $f25448; MIPS64EB-NEXT: add.s $f1, $f1, $f25449; MIPS64EB-NEXT: add.s $f0, $f1, $f05450; MIPS64EB-NEXT: jr $ra5451; MIPS64EB-NEXT: nop5452;5453; MIPS32R5-LABEL: mixed_i8:5454; MIPS32R5: # %bb.0: # %entry5455; MIPS32R5-NEXT: addiu $sp, $sp, -645456; MIPS32R5-NEXT: .cfi_def_cfa_offset 645457; MIPS32R5-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill5458; MIPS32R5-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill5459; MIPS32R5-NEXT: .cfi_offset 31, -45460; MIPS32R5-NEXT: .cfi_offset 30, -85461; MIPS32R5-NEXT: move $fp, $sp5462; MIPS32R5-NEXT: .cfi_def_cfa_register 305463; MIPS32R5-NEXT: addiu $1, $zero, -165464; MIPS32R5-NEXT: and $sp, $sp, $15465; MIPS32R5-NEXT: andi $1, $6, 2555466; MIPS32R5-NEXT: mtc1 $1, $f05467; MIPS32R5-NEXT: cvt.s.w $f0, $f05468; MIPS32R5-NEXT: swc1 $f0, 36($sp)5469; MIPS32R5-NEXT: swc1 $f0, 32($sp)5470; MIPS32R5-NEXT: sw $5, 4($sp)5471; MIPS32R5-NEXT: sw $4, 0($sp)5472; MIPS32R5-NEXT: ld.w $w0, 0($sp)5473; MIPS32R5-NEXT: ld.w $w1, 32($sp)5474; MIPS32R5-NEXT: fadd.w $w0, $w1, $w05475; MIPS32R5-NEXT: lw $1, 84($fp)5476; MIPS32R5-NEXT: sw $1, 20($sp)5477; MIPS32R5-NEXT: lw $1, 80($fp)5478; MIPS32R5-NEXT: sw $1, 16($sp)5479; MIPS32R5-NEXT: ld.w $w1, 16($sp)5480; MIPS32R5-NEXT: fadd.w $w0, $w0, $w15481; MIPS32R5-NEXT: splati.w $w1, $w0[1]5482; MIPS32R5-NEXT: add.s $f0, $f0, $f15483; MIPS32R5-NEXT: move $sp, $fp5484; MIPS32R5-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload5485; MIPS32R5-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload5486; MIPS32R5-NEXT: addiu $sp, $sp, 645487; MIPS32R5-NEXT: jr $ra5488; MIPS32R5-NEXT: nop5489;5490; MIPS64R5-LABEL: mixed_i8:5491; MIPS64R5: # %bb.0: # %entry5492; MIPS64R5-NEXT: daddiu $sp, $sp, -485493; MIPS64R5-NEXT: .cfi_def_cfa_offset 485494; MIPS64R5-NEXT: sll $1, $5, 05495; MIPS64R5-NEXT: andi $1, $1, 2555496; MIPS64R5-NEXT: mtc1 $1, $f05497; MIPS64R5-NEXT: cvt.s.w $f0, $f05498; MIPS64R5-NEXT: swc1 $f0, 36($sp)5499; MIPS64R5-NEXT: swc1 $f0, 32($sp)5500; MIPS64R5-NEXT: sd $4, 0($sp)5501; MIPS64R5-NEXT: ld.w $w0, 0($sp)5502; MIPS64R5-NEXT: ld.w $w1, 32($sp)5503; MIPS64R5-NEXT: fadd.w $w0, $w1, $w05504; MIPS64R5-NEXT: sd $6, 16($sp)5505; MIPS64R5-NEXT: ld.w $w1, 16($sp)5506; MIPS64R5-NEXT: fadd.w $w0, $w0, $w15507; MIPS64R5-NEXT: splati.w $w1, $w0[1]5508; MIPS64R5-NEXT: add.s $f0, $f0, $f15509; MIPS64R5-NEXT: daddiu $sp, $sp, 485510; MIPS64R5-NEXT: jr $ra5511; MIPS64R5-NEXT: nop5512;5513; MIPS64EL-LABEL: mixed_i8:5514; MIPS64EL: # %bb.0: # %entry5515; MIPS64EL-NEXT: dsrl $1, $4, 325516; MIPS64EL-NEXT: sll $1, $1, 05517; MIPS64EL-NEXT: mtc1 $1, $f05518; MIPS64EL-NEXT: sll $1, $5, 05519; MIPS64EL-NEXT: andi $1, $1, 2555520; MIPS64EL-NEXT: mtc1 $1, $f15521; MIPS64EL-NEXT: cvt.s.w $f1, $f15522; MIPS64EL-NEXT: add.s $f0, $f1, $f05523; MIPS64EL-NEXT: dsrl $1, $6, 325524; MIPS64EL-NEXT: sll $1, $1, 05525; MIPS64EL-NEXT: mtc1 $1, $f25526; MIPS64EL-NEXT: add.s $f0, $f0, $f25527; MIPS64EL-NEXT: sll $1, $4, 05528; MIPS64EL-NEXT: mtc1 $1, $f25529; MIPS64EL-NEXT: add.s $f1, $f1, $f25530; MIPS64EL-NEXT: sll $1, $6, 05531; MIPS64EL-NEXT: mtc1 $1, $f25532; MIPS64EL-NEXT: add.s $f1, $f1, $f25533; MIPS64EL-NEXT: add.s $f0, $f1, $f05534; MIPS64EL-NEXT: jr $ra5535; MIPS64EL-NEXT: nop5536entry:5537 %0 = zext i8 %b to i325538 %1 = uitofp i32 %0 to float5539 %2 = insertelement <2 x float> undef, float %1, i32 05540 %3 = insertelement <2 x float> %2, float %1, i32 15541 %4 = fadd <2 x float> %3, %a5542 %5 = fadd <2 x float> %4, %c5543 %6 = extractelement <2 x float> %5, i32 05544 %7 = extractelement <2 x float> %5, i32 15545 %8 = fadd float %6, %75546 ret float %85547}5548 5549define <4 x float> @mixed_32(<4 x float> %a, i32 %b) {5550; MIPS32EB-LABEL: mixed_32:5551; MIPS32EB: # %bb.0: # %entry5552; MIPS32EB-NEXT: addiu $sp, $sp, -85553; MIPS32EB-NEXT: .cfi_def_cfa_offset 85554; MIPS32EB-NEXT: lw $1, 32($sp)5555; MIPS32EB-NEXT: sw $1, 4($sp)5556; MIPS32EB-NEXT: lui $1, 172005557; MIPS32EB-NEXT: sw $1, 0($sp)5558; MIPS32EB-NEXT: lui $1, %hi($CPI41_0)5559; MIPS32EB-NEXT: ldc1 $f0, %lo($CPI41_0)($1)5560; MIPS32EB-NEXT: ldc1 $f2, 0($sp)5561; MIPS32EB-NEXT: sub.d $f0, $f2, $f05562; MIPS32EB-NEXT: cvt.s.d $f0, $f05563; MIPS32EB-NEXT: lwc1 $f1, 28($sp)5564; MIPS32EB-NEXT: lwc1 $f2, 24($sp)5565; MIPS32EB-NEXT: add.s $f2, $f0, $f25566; MIPS32EB-NEXT: add.s $f1, $f0, $f15567; MIPS32EB-NEXT: swc1 $f1, 12($4)5568; MIPS32EB-NEXT: swc1 $f2, 8($4)5569; MIPS32EB-NEXT: mtc1 $7, $f15570; MIPS32EB-NEXT: add.s $f1, $f0, $f15571; MIPS32EB-NEXT: swc1 $f1, 4($4)5572; MIPS32EB-NEXT: mtc1 $6, $f15573; MIPS32EB-NEXT: add.s $f0, $f0, $f15574; MIPS32EB-NEXT: swc1 $f0, 0($4)5575; MIPS32EB-NEXT: addiu $sp, $sp, 85576; MIPS32EB-NEXT: jr $ra5577; MIPS32EB-NEXT: nop5578;5579; MIPS64EB-LABEL: mixed_32:5580; MIPS64EB: # %bb.0: # %entry5581; MIPS64EB-NEXT: daddiu $sp, $sp, -165582; MIPS64EB-NEXT: .cfi_def_cfa_offset 165583; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(mixed_32)))5584; MIPS64EB-NEXT: daddu $1, $1, $255585; MIPS64EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(mixed_32)))5586; MIPS64EB-NEXT: lui $2, 172005587; MIPS64EB-NEXT: sw $2, 8($sp)5588; MIPS64EB-NEXT: sll $2, $6, 05589; MIPS64EB-NEXT: sw $2, 12($sp)5590; MIPS64EB-NEXT: ld $1, %got_page(.LCPI41_0)($1)5591; MIPS64EB-NEXT: ldc1 $f0, %got_ofst(.LCPI41_0)($1)5592; MIPS64EB-NEXT: ldc1 $f1, 8($sp)5593; MIPS64EB-NEXT: sub.d $f0, $f1, $f05594; MIPS64EB-NEXT: cvt.s.d $f0, $f05595; MIPS64EB-NEXT: dsrl $1, $4, 325596; MIPS64EB-NEXT: sll $1, $1, 05597; MIPS64EB-NEXT: mtc1 $1, $f15598; MIPS64EB-NEXT: add.s $f1, $f0, $f15599; MIPS64EB-NEXT: dsrl $1, $5, 325600; MIPS64EB-NEXT: mfc1 $2, $f15601; MIPS64EB-NEXT: sll $3, $4, 05602; MIPS64EB-NEXT: sll $1, $1, 05603; MIPS64EB-NEXT: mtc1 $1, $f15604; MIPS64EB-NEXT: add.s $f1, $f0, $f15605; MIPS64EB-NEXT: mfc1 $1, $f15606; MIPS64EB-NEXT: mtc1 $3, $f15607; MIPS64EB-NEXT: sll $3, $5, 05608; MIPS64EB-NEXT: mtc1 $3, $f25609; MIPS64EB-NEXT: dsll $2, $2, 325610; MIPS64EB-NEXT: add.s $f1, $f0, $f15611; MIPS64EB-NEXT: mfc1 $3, $f15612; MIPS64EB-NEXT: dsll $3, $3, 325613; MIPS64EB-NEXT: dsrl $3, $3, 325614; MIPS64EB-NEXT: or $2, $3, $25615; MIPS64EB-NEXT: dsll $1, $1, 325616; MIPS64EB-NEXT: add.s $f0, $f0, $f25617; MIPS64EB-NEXT: mfc1 $3, $f05618; MIPS64EB-NEXT: dsll $3, $3, 325619; MIPS64EB-NEXT: dsrl $3, $3, 325620; MIPS64EB-NEXT: or $3, $3, $15621; MIPS64EB-NEXT: daddiu $sp, $sp, 165622; MIPS64EB-NEXT: jr $ra5623; MIPS64EB-NEXT: nop5624;5625; MIPS32R5EB-LABEL: mixed_32:5626; MIPS32R5EB: # %bb.0: # %entry5627; MIPS32R5EB-NEXT: addiu $sp, $sp, -85628; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 85629; MIPS32R5EB-NEXT: lw $1, 32($sp)5630; MIPS32R5EB-NEXT: sw $1, 4($sp)5631; MIPS32R5EB-NEXT: lui $1, 172005632; MIPS32R5EB-NEXT: sw $1, 0($sp)5633; MIPS32R5EB-NEXT: lui $1, %hi($CPI41_0)5634; MIPS32R5EB-NEXT: ldc1 $f0, %lo($CPI41_0)($1)5635; MIPS32R5EB-NEXT: ldc1 $f1, 0($sp)5636; MIPS32R5EB-NEXT: sub.d $f0, $f1, $f05637; MIPS32R5EB-NEXT: insert.w $w1[0], $65638; MIPS32R5EB-NEXT: insert.w $w1[1], $75639; MIPS32R5EB-NEXT: lw $1, 24($sp)5640; MIPS32R5EB-NEXT: insert.w $w1[2], $15641; MIPS32R5EB-NEXT: lw $1, 28($sp)5642; MIPS32R5EB-NEXT: insert.w $w1[3], $15643; MIPS32R5EB-NEXT: cvt.s.d $f0, $f05644; MIPS32R5EB-NEXT: splati.w $w0, $w0[0]5645; MIPS32R5EB-NEXT: fadd.w $w0, $w0, $w15646; MIPS32R5EB-NEXT: st.w $w0, 0($4)5647; MIPS32R5EB-NEXT: addiu $sp, $sp, 85648; MIPS32R5EB-NEXT: jr $ra5649; MIPS32R5EB-NEXT: nop5650;5651; MIPS64R5EB-LABEL: mixed_32:5652; MIPS64R5EB: # %bb.0: # %entry5653; MIPS64R5EB-NEXT: daddiu $sp, $sp, -165654; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 165655; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(mixed_32)))5656; MIPS64R5EB-NEXT: daddu $1, $1, $255657; MIPS64R5EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(mixed_32)))5658; MIPS64R5EB-NEXT: lui $2, 172005659; MIPS64R5EB-NEXT: sw $2, 8($sp)5660; MIPS64R5EB-NEXT: sll $2, $6, 05661; MIPS64R5EB-NEXT: sw $2, 12($sp)5662; MIPS64R5EB-NEXT: ld $1, %got_page(.LCPI41_0)($1)5663; MIPS64R5EB-NEXT: ldc1 $f0, %got_ofst(.LCPI41_0)($1)5664; MIPS64R5EB-NEXT: ldc1 $f1, 8($sp)5665; MIPS64R5EB-NEXT: sub.d $f0, $f1, $f05666; MIPS64R5EB-NEXT: insert.d $w1[0], $45667; MIPS64R5EB-NEXT: insert.d $w1[1], $55668; MIPS64R5EB-NEXT: shf.w $w1, $w1, 1775669; MIPS64R5EB-NEXT: cvt.s.d $f0, $f05670; MIPS64R5EB-NEXT: splati.w $w0, $w0[0]5671; MIPS64R5EB-NEXT: fadd.w $w0, $w0, $w15672; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1775673; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]5674; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]5675; MIPS64R5EB-NEXT: daddiu $sp, $sp, 165676; MIPS64R5EB-NEXT: jr $ra5677; MIPS64R5EB-NEXT: nop5678;5679; MIPS32EL-LABEL: mixed_32:5680; MIPS32EL: # %bb.0: # %entry5681; MIPS32EL-NEXT: addiu $sp, $sp, -85682; MIPS32EL-NEXT: .cfi_def_cfa_offset 85683; MIPS32EL-NEXT: lui $1, 172005684; MIPS32EL-NEXT: sw $1, 4($sp)5685; MIPS32EL-NEXT: lw $1, 32($sp)5686; MIPS32EL-NEXT: sw $1, 0($sp)5687; MIPS32EL-NEXT: lui $1, %hi($CPI41_0)5688; MIPS32EL-NEXT: ldc1 $f0, %lo($CPI41_0)($1)5689; MIPS32EL-NEXT: ldc1 $f2, 0($sp)5690; MIPS32EL-NEXT: sub.d $f0, $f2, $f05691; MIPS32EL-NEXT: cvt.s.d $f0, $f05692; MIPS32EL-NEXT: lwc1 $f1, 28($sp)5693; MIPS32EL-NEXT: lwc1 $f2, 24($sp)5694; MIPS32EL-NEXT: add.s $f2, $f0, $f25695; MIPS32EL-NEXT: add.s $f1, $f0, $f15696; MIPS32EL-NEXT: swc1 $f1, 12($4)5697; MIPS32EL-NEXT: swc1 $f2, 8($4)5698; MIPS32EL-NEXT: mtc1 $7, $f15699; MIPS32EL-NEXT: add.s $f1, $f0, $f15700; MIPS32EL-NEXT: swc1 $f1, 4($4)5701; MIPS32EL-NEXT: mtc1 $6, $f15702; MIPS32EL-NEXT: add.s $f0, $f0, $f15703; MIPS32EL-NEXT: swc1 $f0, 0($4)5704; MIPS32EL-NEXT: addiu $sp, $sp, 85705; MIPS32EL-NEXT: jr $ra5706; MIPS32EL-NEXT: nop5707;5708; MIPS64EL-LABEL: mixed_32:5709; MIPS64EL: # %bb.0: # %entry5710; MIPS64EL-NEXT: daddiu $sp, $sp, -165711; MIPS64EL-NEXT: .cfi_def_cfa_offset 165712; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(mixed_32)))5713; MIPS64EL-NEXT: daddu $1, $1, $255714; MIPS64EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(mixed_32)))5715; MIPS64EL-NEXT: lui $2, 172005716; MIPS64EL-NEXT: sw $2, 12($sp)5717; MIPS64EL-NEXT: sll $2, $6, 05718; MIPS64EL-NEXT: sw $2, 8($sp)5719; MIPS64EL-NEXT: ld $1, %got_page(.LCPI41_0)($1)5720; MIPS64EL-NEXT: ldc1 $f0, %got_ofst(.LCPI41_0)($1)5721; MIPS64EL-NEXT: ldc1 $f1, 8($sp)5722; MIPS64EL-NEXT: sub.d $f0, $f1, $f05723; MIPS64EL-NEXT: cvt.s.d $f0, $f05724; MIPS64EL-NEXT: dsrl $1, $4, 325725; MIPS64EL-NEXT: sll $1, $1, 05726; MIPS64EL-NEXT: mtc1 $1, $f15727; MIPS64EL-NEXT: add.s $f1, $f0, $f15728; MIPS64EL-NEXT: dsrl $1, $5, 325729; MIPS64EL-NEXT: mfc1 $2, $f15730; MIPS64EL-NEXT: sll $3, $4, 05731; MIPS64EL-NEXT: sll $1, $1, 05732; MIPS64EL-NEXT: mtc1 $1, $f15733; MIPS64EL-NEXT: add.s $f1, $f0, $f15734; MIPS64EL-NEXT: mfc1 $1, $f15735; MIPS64EL-NEXT: mtc1 $3, $f15736; MIPS64EL-NEXT: sll $3, $5, 05737; MIPS64EL-NEXT: mtc1 $3, $f25738; MIPS64EL-NEXT: dsll $2, $2, 325739; MIPS64EL-NEXT: add.s $f1, $f0, $f15740; MIPS64EL-NEXT: mfc1 $3, $f15741; MIPS64EL-NEXT: dsll $3, $3, 325742; MIPS64EL-NEXT: dsrl $3, $3, 325743; MIPS64EL-NEXT: or $2, $3, $25744; MIPS64EL-NEXT: dsll $1, $1, 325745; MIPS64EL-NEXT: add.s $f0, $f0, $f25746; MIPS64EL-NEXT: mfc1 $3, $f05747; MIPS64EL-NEXT: dsll $3, $3, 325748; MIPS64EL-NEXT: dsrl $3, $3, 325749; MIPS64EL-NEXT: or $3, $3, $15750; MIPS64EL-NEXT: daddiu $sp, $sp, 165751; MIPS64EL-NEXT: jr $ra5752; MIPS64EL-NEXT: nop5753;5754; MIPS32R5EL-LABEL: mixed_32:5755; MIPS32R5EL: # %bb.0: # %entry5756; MIPS32R5EL-NEXT: addiu $sp, $sp, -85757; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 85758; MIPS32R5EL-NEXT: lui $1, 172005759; MIPS32R5EL-NEXT: sw $1, 4($sp)5760; MIPS32R5EL-NEXT: lw $1, 32($sp)5761; MIPS32R5EL-NEXT: sw $1, 0($sp)5762; MIPS32R5EL-NEXT: lui $1, %hi($CPI41_0)5763; MIPS32R5EL-NEXT: ldc1 $f0, %lo($CPI41_0)($1)5764; MIPS32R5EL-NEXT: ldc1 $f1, 0($sp)5765; MIPS32R5EL-NEXT: sub.d $f0, $f1, $f05766; MIPS32R5EL-NEXT: insert.w $w1[0], $65767; MIPS32R5EL-NEXT: insert.w $w1[1], $75768; MIPS32R5EL-NEXT: lw $1, 24($sp)5769; MIPS32R5EL-NEXT: insert.w $w1[2], $15770; MIPS32R5EL-NEXT: lw $1, 28($sp)5771; MIPS32R5EL-NEXT: insert.w $w1[3], $15772; MIPS32R5EL-NEXT: cvt.s.d $f0, $f05773; MIPS32R5EL-NEXT: splati.w $w0, $w0[0]5774; MIPS32R5EL-NEXT: fadd.w $w0, $w0, $w15775; MIPS32R5EL-NEXT: st.w $w0, 0($4)5776; MIPS32R5EL-NEXT: addiu $sp, $sp, 85777; MIPS32R5EL-NEXT: jr $ra5778; MIPS32R5EL-NEXT: nop5779;5780; MIPS64R5EL-LABEL: mixed_32:5781; MIPS64R5EL: # %bb.0: # %entry5782; MIPS64R5EL-NEXT: daddiu $sp, $sp, -165783; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 165784; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(mixed_32)))5785; MIPS64R5EL-NEXT: daddu $1, $1, $255786; MIPS64R5EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(mixed_32)))5787; MIPS64R5EL-NEXT: lui $2, 172005788; MIPS64R5EL-NEXT: sw $2, 12($sp)5789; MIPS64R5EL-NEXT: sll $2, $6, 05790; MIPS64R5EL-NEXT: sw $2, 8($sp)5791; MIPS64R5EL-NEXT: ld $1, %got_page(.LCPI41_0)($1)5792; MIPS64R5EL-NEXT: ldc1 $f0, %got_ofst(.LCPI41_0)($1)5793; MIPS64R5EL-NEXT: ldc1 $f1, 8($sp)5794; MIPS64R5EL-NEXT: sub.d $f0, $f1, $f05795; MIPS64R5EL-NEXT: insert.d $w1[0], $45796; MIPS64R5EL-NEXT: insert.d $w1[1], $55797; MIPS64R5EL-NEXT: cvt.s.d $f0, $f05798; MIPS64R5EL-NEXT: splati.w $w0, $w0[0]5799; MIPS64R5EL-NEXT: fadd.w $w0, $w0, $w15800; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]5801; MIPS64R5EL-NEXT: copy_s.d $3, $w0[1]5802; MIPS64R5EL-NEXT: daddiu $sp, $sp, 165803; MIPS64R5EL-NEXT: jr $ra5804; MIPS64R5EL-NEXT: nop5805entry:5806 %0 = uitofp i32 %b to float5807 %1 = insertelement <4 x float> undef, float %0, i32 05808 %2 = insertelement <4 x float> %1, float %0, i32 15809 %3 = insertelement <4 x float> %2, float %0, i32 25810 %4 = insertelement <4 x float> %3, float %0, i32 35811 %5 = fadd <4 x float> %4, %a5812 ret <4 x float> %55813}5814 5815 5816; This test is slightly more fragile than I'd like as the offset into the5817; outgoing arguments area is dependant on the size of the stack frame for5818; this function.5819 5820define <4 x float> @cast(<4 x i32> %a) {5821; MIPS32EB-LABEL: cast:5822; MIPS32EB: # %bb.0: # %entry5823; MIPS32EB-NEXT: addiu $sp, $sp, -325824; MIPS32EB-NEXT: .cfi_def_cfa_offset 325825; MIPS32EB-NEXT: lw $1, 48($sp)5826; MIPS32EB-NEXT: lui $2, 172005827; MIPS32EB-NEXT: lw $3, 52($sp)5828; MIPS32EB-NEXT: sw $3, 28($sp)5829; MIPS32EB-NEXT: sw $2, 24($sp)5830; MIPS32EB-NEXT: sw $1, 20($sp)5831; MIPS32EB-NEXT: sw $2, 16($sp)5832; MIPS32EB-NEXT: lui $1, %hi($CPI42_0)5833; MIPS32EB-NEXT: sw $7, 12($sp)5834; MIPS32EB-NEXT: sw $2, 8($sp)5835; MIPS32EB-NEXT: ldc1 $f0, %lo($CPI42_0)($1)5836; MIPS32EB-NEXT: ldc1 $f2, 24($sp)5837; MIPS32EB-NEXT: sub.d $f2, $f2, $f05838; MIPS32EB-NEXT: ldc1 $f4, 16($sp)5839; MIPS32EB-NEXT: sub.d $f4, $f4, $f05840; MIPS32EB-NEXT: ldc1 $f6, 8($sp)5841; MIPS32EB-NEXT: sub.d $f6, $f6, $f05842; MIPS32EB-NEXT: cvt.s.d $f6, $f65843; MIPS32EB-NEXT: cvt.s.d $f4, $f45844; MIPS32EB-NEXT: cvt.s.d $f2, $f25845; MIPS32EB-NEXT: swc1 $f2, 12($4)5846; MIPS32EB-NEXT: swc1 $f4, 8($4)5847; MIPS32EB-NEXT: swc1 $f6, 4($4)5848; MIPS32EB-NEXT: sw $6, 4($sp)5849; MIPS32EB-NEXT: sw $2, 0($sp)5850; MIPS32EB-NEXT: ldc1 $f2, 0($sp)5851; MIPS32EB-NEXT: sub.d $f0, $f2, $f05852; MIPS32EB-NEXT: cvt.s.d $f0, $f05853; MIPS32EB-NEXT: swc1 $f0, 0($4)5854; MIPS32EB-NEXT: addiu $sp, $sp, 325855; MIPS32EB-NEXT: jr $ra5856; MIPS32EB-NEXT: nop5857;5858; MIPS64EB-LABEL: cast:5859; MIPS64EB: # %bb.0: # %entry5860; MIPS64EB-NEXT: daddiu $sp, $sp, -325861; MIPS64EB-NEXT: .cfi_def_cfa_offset 325862; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(cast)))5863; MIPS64EB-NEXT: daddu $1, $1, $255864; MIPS64EB-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(cast)))5865; MIPS64EB-NEXT: sll $2, $4, 05866; MIPS64EB-NEXT: lui $3, 172005867; MIPS64EB-NEXT: sw $3, 0($sp)5868; MIPS64EB-NEXT: sw $2, 4($sp)5869; MIPS64EB-NEXT: sll $2, $5, 05870; MIPS64EB-NEXT: sw $3, 8($sp)5871; MIPS64EB-NEXT: sw $2, 12($sp)5872; MIPS64EB-NEXT: ld $1, %got_page(.LCPI42_0)($1)5873; MIPS64EB-NEXT: ldc1 $f0, %got_ofst(.LCPI42_0)($1)5874; MIPS64EB-NEXT: ldc1 $f1, 0($sp)5875; MIPS64EB-NEXT: sub.d $f1, $f1, $f05876; MIPS64EB-NEXT: cvt.s.d $f1, $f15877; MIPS64EB-NEXT: ldc1 $f2, 8($sp)5878; MIPS64EB-NEXT: sub.d $f2, $f2, $f05879; MIPS64EB-NEXT: mfc1 $1, $f15880; MIPS64EB-NEXT: dsrl $2, $4, 325881; MIPS64EB-NEXT: sll $2, $2, 05882; MIPS64EB-NEXT: sw $3, 16($sp)5883; MIPS64EB-NEXT: sw $2, 20($sp)5884; MIPS64EB-NEXT: sw $3, 24($sp)5885; MIPS64EB-NEXT: dsll $1, $1, 325886; MIPS64EB-NEXT: cvt.s.d $f1, $f25887; MIPS64EB-NEXT: dsrl $2, $5, 325888; MIPS64EB-NEXT: sll $2, $2, 05889; MIPS64EB-NEXT: sw $2, 28($sp)5890; MIPS64EB-NEXT: mfc1 $2, $f15891; MIPS64EB-NEXT: dsll $3, $2, 325892; MIPS64EB-NEXT: dsrl $1, $1, 325893; MIPS64EB-NEXT: ldc1 $f1, 16($sp)5894; MIPS64EB-NEXT: sub.d $f1, $f1, $f05895; MIPS64EB-NEXT: cvt.s.d $f1, $f15896; MIPS64EB-NEXT: mfc1 $2, $f15897; MIPS64EB-NEXT: dsll $2, $2, 325898; MIPS64EB-NEXT: or $2, $1, $25899; MIPS64EB-NEXT: dsrl $1, $3, 325900; MIPS64EB-NEXT: ldc1 $f1, 24($sp)5901; MIPS64EB-NEXT: sub.d $f0, $f1, $f05902; MIPS64EB-NEXT: cvt.s.d $f0, $f05903; MIPS64EB-NEXT: mfc1 $3, $f05904; MIPS64EB-NEXT: dsll $3, $3, 325905; MIPS64EB-NEXT: or $3, $1, $35906; MIPS64EB-NEXT: daddiu $sp, $sp, 325907; MIPS64EB-NEXT: jr $ra5908; MIPS64EB-NEXT: nop5909;5910; MIPS32R5-LABEL: cast:5911; MIPS32R5: # %bb.0: # %entry5912; MIPS32R5-NEXT: insert.w $w0[0], $65913; MIPS32R5-NEXT: insert.w $w0[1], $75914; MIPS32R5-NEXT: lw $1, 16($sp)5915; MIPS32R5-NEXT: insert.w $w0[2], $15916; MIPS32R5-NEXT: lw $1, 20($sp)5917; MIPS32R5-NEXT: insert.w $w0[3], $15918; MIPS32R5-NEXT: ffint_u.w $w0, $w05919; MIPS32R5-NEXT: st.w $w0, 0($4)5920; MIPS32R5-NEXT: jr $ra5921; MIPS32R5-NEXT: nop5922;5923; MIPS64R5EB-LABEL: cast:5924; MIPS64R5EB: # %bb.0: # %entry5925; MIPS64R5EB-NEXT: insert.d $w0[0], $45926; MIPS64R5EB-NEXT: insert.d $w0[1], $55927; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1775928; MIPS64R5EB-NEXT: ffint_u.w $w0, $w05929; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1775930; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]5931; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]5932; MIPS64R5EB-NEXT: jr $ra5933; MIPS64R5EB-NEXT: nop5934;5935; MIPS32EL-LABEL: cast:5936; MIPS32EL: # %bb.0: # %entry5937; MIPS32EL-NEXT: addiu $sp, $sp, -325938; MIPS32EL-NEXT: .cfi_def_cfa_offset 325939; MIPS32EL-NEXT: lw $1, 52($sp)5940; MIPS32EL-NEXT: lui $2, 172005941; MIPS32EL-NEXT: sw $2, 28($sp)5942; MIPS32EL-NEXT: sw $1, 24($sp)5943; MIPS32EL-NEXT: lw $1, 48($sp)5944; MIPS32EL-NEXT: sw $2, 20($sp)5945; MIPS32EL-NEXT: sw $1, 16($sp)5946; MIPS32EL-NEXT: lui $1, %hi($CPI42_0)5947; MIPS32EL-NEXT: sw $2, 12($sp)5948; MIPS32EL-NEXT: sw $7, 8($sp)5949; MIPS32EL-NEXT: ldc1 $f0, %lo($CPI42_0)($1)5950; MIPS32EL-NEXT: ldc1 $f2, 24($sp)5951; MIPS32EL-NEXT: sub.d $f2, $f2, $f05952; MIPS32EL-NEXT: ldc1 $f4, 16($sp)5953; MIPS32EL-NEXT: sub.d $f4, $f4, $f05954; MIPS32EL-NEXT: ldc1 $f6, 8($sp)5955; MIPS32EL-NEXT: sub.d $f6, $f6, $f05956; MIPS32EL-NEXT: cvt.s.d $f6, $f65957; MIPS32EL-NEXT: cvt.s.d $f4, $f45958; MIPS32EL-NEXT: cvt.s.d $f2, $f25959; MIPS32EL-NEXT: swc1 $f2, 12($4)5960; MIPS32EL-NEXT: swc1 $f4, 8($4)5961; MIPS32EL-NEXT: swc1 $f6, 4($4)5962; MIPS32EL-NEXT: sw $2, 4($sp)5963; MIPS32EL-NEXT: sw $6, 0($sp)5964; MIPS32EL-NEXT: ldc1 $f2, 0($sp)5965; MIPS32EL-NEXT: sub.d $f0, $f2, $f05966; MIPS32EL-NEXT: cvt.s.d $f0, $f05967; MIPS32EL-NEXT: swc1 $f0, 0($4)5968; MIPS32EL-NEXT: addiu $sp, $sp, 325969; MIPS32EL-NEXT: jr $ra5970; MIPS32EL-NEXT: nop5971;5972; MIPS64EL-LABEL: cast:5973; MIPS64EL: # %bb.0: # %entry5974; MIPS64EL-NEXT: daddiu $sp, $sp, -325975; MIPS64EL-NEXT: .cfi_def_cfa_offset 325976; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(cast)))5977; MIPS64EL-NEXT: daddu $1, $1, $255978; MIPS64EL-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(cast)))5979; MIPS64EL-NEXT: sll $2, $4, 05980; MIPS64EL-NEXT: lui $3, 172005981; MIPS64EL-NEXT: sw $3, 4($sp)5982; MIPS64EL-NEXT: sw $2, 0($sp)5983; MIPS64EL-NEXT: sll $2, $5, 05984; MIPS64EL-NEXT: sw $3, 12($sp)5985; MIPS64EL-NEXT: sw $2, 8($sp)5986; MIPS64EL-NEXT: ld $1, %got_page(.LCPI42_0)($1)5987; MIPS64EL-NEXT: ldc1 $f0, %got_ofst(.LCPI42_0)($1)5988; MIPS64EL-NEXT: ldc1 $f1, 0($sp)5989; MIPS64EL-NEXT: sub.d $f1, $f1, $f05990; MIPS64EL-NEXT: cvt.s.d $f1, $f15991; MIPS64EL-NEXT: ldc1 $f2, 8($sp)5992; MIPS64EL-NEXT: sub.d $f2, $f2, $f05993; MIPS64EL-NEXT: mfc1 $1, $f15994; MIPS64EL-NEXT: dsrl $2, $4, 325995; MIPS64EL-NEXT: sll $2, $2, 05996; MIPS64EL-NEXT: sw $3, 20($sp)5997; MIPS64EL-NEXT: sw $2, 16($sp)5998; MIPS64EL-NEXT: sw $3, 28($sp)5999; MIPS64EL-NEXT: dsll $1, $1, 326000; MIPS64EL-NEXT: cvt.s.d $f1, $f26001; MIPS64EL-NEXT: dsrl $2, $5, 326002; MIPS64EL-NEXT: sll $2, $2, 06003; MIPS64EL-NEXT: sw $2, 24($sp)6004; MIPS64EL-NEXT: mfc1 $2, $f16005; MIPS64EL-NEXT: dsll $3, $2, 326006; MIPS64EL-NEXT: dsrl $1, $1, 326007; MIPS64EL-NEXT: ldc1 $f1, 16($sp)6008; MIPS64EL-NEXT: sub.d $f1, $f1, $f06009; MIPS64EL-NEXT: cvt.s.d $f1, $f16010; MIPS64EL-NEXT: mfc1 $2, $f16011; MIPS64EL-NEXT: dsll $2, $2, 326012; MIPS64EL-NEXT: or $2, $1, $26013; MIPS64EL-NEXT: dsrl $1, $3, 326014; MIPS64EL-NEXT: ldc1 $f1, 24($sp)6015; MIPS64EL-NEXT: sub.d $f0, $f1, $f06016; MIPS64EL-NEXT: cvt.s.d $f0, $f06017; MIPS64EL-NEXT: mfc1 $3, $f06018; MIPS64EL-NEXT: dsll $3, $3, 326019; MIPS64EL-NEXT: or $3, $1, $36020; MIPS64EL-NEXT: daddiu $sp, $sp, 326021; MIPS64EL-NEXT: jr $ra6022; MIPS64EL-NEXT: nop6023;6024; MIPS64R5EL-LABEL: cast:6025; MIPS64R5EL: # %bb.0: # %entry6026; MIPS64R5EL-NEXT: insert.d $w0[0], $46027; MIPS64R5EL-NEXT: insert.d $w0[1], $56028; MIPS64R5EL-NEXT: ffint_u.w $w0, $w06029; MIPS64R5EL-NEXT: copy_s.d $2, $w0[0]6030; MIPS64R5EL-NEXT: copy_s.d $3, $w0[1]6031; MIPS64R5EL-NEXT: jr $ra6032; MIPS64R5EL-NEXT: nop6033entry:6034 %0 = uitofp <4 x i32> %a to <4 x float>6035 ret <4 x float> %06036}6037 6038define <4 x float> @select(<4 x i32> %cond, <4 x float> %arg1, <4 x float> %arg2) {6039; MIPS32-LABEL: select:6040; MIPS32: # %bb.0: # %entry6041; MIPS32-NEXT: andi $1, $7, 16042; MIPS32-NEXT: lw $2, 16($sp)6043; MIPS32-NEXT: andi $2, $2, 16044; MIPS32-NEXT: addiu $3, $sp, 446045; MIPS32-NEXT: addiu $5, $sp, 286046; MIPS32-NEXT: addiu $7, $sp, 486047; MIPS32-NEXT: addiu $8, $sp, 326048; MIPS32-NEXT: movn $7, $8, $26049; MIPS32-NEXT: movn $3, $5, $16050; MIPS32-NEXT: andi $1, $6, 16051; MIPS32-NEXT: addiu $2, $sp, 406052; MIPS32-NEXT: addiu $5, $sp, 246053; MIPS32-NEXT: movn $2, $5, $16054; MIPS32-NEXT: lw $1, 20($sp)6055; MIPS32-NEXT: lwc1 $f0, 0($2)6056; MIPS32-NEXT: lwc1 $f1, 0($3)6057; MIPS32-NEXT: lwc1 $f2, 0($7)6058; MIPS32-NEXT: andi $1, $1, 16059; MIPS32-NEXT: addiu $2, $sp, 526060; MIPS32-NEXT: addiu $3, $sp, 366061; MIPS32-NEXT: movn $2, $3, $16062; MIPS32-NEXT: lwc1 $f3, 0($2)6063; MIPS32-NEXT: swc1 $f3, 12($4)6064; MIPS32-NEXT: swc1 $f2, 8($4)6065; MIPS32-NEXT: swc1 $f1, 4($4)6066; MIPS32-NEXT: swc1 $f0, 0($4)6067; MIPS32-NEXT: jr $ra6068; MIPS32-NEXT: nop6069;6070; MIPS64-LABEL: select:6071; MIPS64: # %bb.0: # %entry6072; MIPS64-NEXT: sll $1, $8, 06073; MIPS64-NEXT: mtc1 $1, $f06074; MIPS64-NEXT: sll $1, $4, 06075; MIPS64-NEXT: andi $1, $1, 16076; MIPS64-NEXT: sll $2, $6, 06077; MIPS64-NEXT: mtc1 $2, $f16078; MIPS64-NEXT: movn.s $f0, $f1, $16079; MIPS64-NEXT: dsrl $1, $8, 326080; MIPS64-NEXT: dsrl $2, $4, 326081; MIPS64-NEXT: sll $1, $1, 06082; MIPS64-NEXT: mfc1 $3, $f06083; MIPS64-NEXT: sll $4, $9, 06084; MIPS64-NEXT: mtc1 $1, $f06085; MIPS64-NEXT: sll $1, $2, 06086; MIPS64-NEXT: andi $1, $1, 16087; MIPS64-NEXT: dsrl $2, $6, 326088; MIPS64-NEXT: sll $2, $2, 06089; MIPS64-NEXT: mtc1 $2, $f16090; MIPS64-NEXT: movn.s $f0, $f1, $16091; MIPS64-NEXT: dsll $1, $3, 326092; MIPS64-NEXT: mtc1 $4, $f16093; MIPS64-NEXT: sll $2, $5, 06094; MIPS64-NEXT: andi $2, $2, 16095; MIPS64-NEXT: sll $3, $7, 06096; MIPS64-NEXT: mtc1 $3, $f26097; MIPS64-NEXT: movn.s $f1, $f2, $26098; MIPS64-NEXT: mfc1 $2, $f16099; MIPS64-NEXT: dsll $3, $2, 326100; MIPS64-NEXT: dsrl $1, $1, 326101; MIPS64-NEXT: mfc1 $2, $f06102; MIPS64-NEXT: dsrl $4, $5, 326103; MIPS64-NEXT: dsrl $5, $9, 326104; MIPS64-NEXT: dsll $2, $2, 326105; MIPS64-NEXT: sll $5, $5, 06106; MIPS64-NEXT: or $2, $1, $26107; MIPS64-NEXT: dsrl $1, $3, 326108; MIPS64-NEXT: mtc1 $5, $f06109; MIPS64-NEXT: sll $3, $4, 06110; MIPS64-NEXT: andi $3, $3, 16111; MIPS64-NEXT: dsrl $4, $7, 326112; MIPS64-NEXT: sll $4, $4, 06113; MIPS64-NEXT: mtc1 $4, $f16114; MIPS64-NEXT: movn.s $f0, $f1, $36115; MIPS64-NEXT: mfc1 $3, $f06116; MIPS64-NEXT: dsll $3, $3, 326117; MIPS64-NEXT: or $3, $1, $36118; MIPS64-NEXT: jr $ra6119; MIPS64-NEXT: nop6120;6121; MIPS32R5-LABEL: select:6122; MIPS32R5: # %bb.0: # %entry6123; MIPS32R5-NEXT: lw $1, 44($sp)6124; MIPS32R5-NEXT: lw $2, 40($sp)6125; MIPS32R5-NEXT: insert.w $w0[0], $26126; MIPS32R5-NEXT: insert.w $w0[1], $16127; MIPS32R5-NEXT: lw $1, 48($sp)6128; MIPS32R5-NEXT: insert.w $w0[2], $16129; MIPS32R5-NEXT: lw $1, 28($sp)6130; MIPS32R5-NEXT: lw $2, 24($sp)6131; MIPS32R5-NEXT: lw $3, 52($sp)6132; MIPS32R5-NEXT: insert.w $w0[3], $36133; MIPS32R5-NEXT: insert.w $w1[0], $26134; MIPS32R5-NEXT: insert.w $w1[1], $16135; MIPS32R5-NEXT: lw $1, 32($sp)6136; MIPS32R5-NEXT: insert.w $w1[2], $16137; MIPS32R5-NEXT: lw $1, 36($sp)6138; MIPS32R5-NEXT: insert.w $w1[3], $16139; MIPS32R5-NEXT: insert.w $w2[0], $66140; MIPS32R5-NEXT: insert.w $w2[1], $76141; MIPS32R5-NEXT: lw $1, 16($sp)6142; MIPS32R5-NEXT: insert.w $w2[2], $16143; MIPS32R5-NEXT: lw $1, 20($sp)6144; MIPS32R5-NEXT: insert.w $w2[3], $16145; MIPS32R5-NEXT: slli.w $w2, $w2, 316146; MIPS32R5-NEXT: srai.w $w2, $w2, 316147; MIPS32R5-NEXT: bsel.v $w2, $w0, $w16148; MIPS32R5-NEXT: st.w $w2, 0($4)6149; MIPS32R5-NEXT: jr $ra6150; MIPS32R5-NEXT: nop6151;6152; MIPS64R5EB-LABEL: select:6153; MIPS64R5EB: # %bb.0: # %entry6154; MIPS64R5EB-NEXT: insert.d $w0[0], $86155; MIPS64R5EB-NEXT: insert.d $w0[1], $96156; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1776157; MIPS64R5EB-NEXT: insert.d $w1[0], $66158; MIPS64R5EB-NEXT: insert.d $w1[1], $76159; MIPS64R5EB-NEXT: shf.w $w1, $w1, 1776160; MIPS64R5EB-NEXT: insert.d $w2[0], $46161; MIPS64R5EB-NEXT: insert.d $w2[1], $56162; MIPS64R5EB-NEXT: shf.w $w2, $w2, 1776163; MIPS64R5EB-NEXT: slli.w $w2, $w2, 316164; MIPS64R5EB-NEXT: srai.w $w2, $w2, 316165; MIPS64R5EB-NEXT: bsel.v $w2, $w0, $w16166; MIPS64R5EB-NEXT: shf.w $w0, $w2, 1776167; MIPS64R5EB-NEXT: copy_s.d $2, $w0[0]6168; MIPS64R5EB-NEXT: copy_s.d $3, $w0[1]6169; MIPS64R5EB-NEXT: jr $ra6170; MIPS64R5EB-NEXT: nop6171;6172; MIPS64R5EL-LABEL: select:6173; MIPS64R5EL: # %bb.0: # %entry6174; MIPS64R5EL-NEXT: insert.d $w0[0], $86175; MIPS64R5EL-NEXT: insert.d $w0[1], $96176; MIPS64R5EL-NEXT: insert.d $w1[0], $66177; MIPS64R5EL-NEXT: insert.d $w1[1], $76178; MIPS64R5EL-NEXT: insert.d $w2[0], $46179; MIPS64R5EL-NEXT: insert.d $w2[1], $56180; MIPS64R5EL-NEXT: slli.w $w2, $w2, 316181; MIPS64R5EL-NEXT: srai.w $w2, $w2, 316182; MIPS64R5EL-NEXT: bsel.v $w2, $w0, $w16183; MIPS64R5EL-NEXT: copy_s.d $2, $w2[0]6184; MIPS64R5EL-NEXT: copy_s.d $3, $w2[1]6185; MIPS64R5EL-NEXT: jr $ra6186; MIPS64R5EL-NEXT: nop6187entry:6188 %cond.t = trunc <4 x i32> %cond to <4 x i1>6189 %res = select <4 x i1> %cond.t, <4 x float> %arg1, <4 x float> %arg26190 ret <4 x float> %res6191}6192 6193; Check that vectors of types with non-power-of-two size are correctly handled.6194 6195define <2 x i24> @i24x2(<2 x i24> %a, <2 x i24> %b) {6196; MIPS32-LABEL: i24x2:6197; MIPS32: # %bb.0: # %Entry6198; MIPS32-NEXT: addu $2, $4, $66199; MIPS32-NEXT: addu $3, $5, $76200; MIPS32-NEXT: jr $ra6201; MIPS32-NEXT: nop6202;6203; MIPS64-LABEL: i24x2:6204; MIPS64: # %bb.0: # %Entry6205; MIPS64-NEXT: sll $1, $6, 06206; MIPS64-NEXT: sll $2, $4, 06207; MIPS64-NEXT: addu $2, $2, $16208; MIPS64-NEXT: sll $1, $7, 06209; MIPS64-NEXT: sll $3, $5, 06210; MIPS64-NEXT: addu $3, $3, $16211; MIPS64-NEXT: jr $ra6212; MIPS64-NEXT: nop6213;6214; MIPS32R5EB-LABEL: i24x2:6215; MIPS32R5EB: # %bb.0: # %Entry6216; MIPS32R5EB-NEXT: addiu $sp, $sp, -486217; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 486218; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill6219; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill6220; MIPS32R5EB-NEXT: .cfi_offset 31, -46221; MIPS32R5EB-NEXT: .cfi_offset 30, -86222; MIPS32R5EB-NEXT: move $fp, $sp6223; MIPS32R5EB-NEXT: .cfi_def_cfa_register 306224; MIPS32R5EB-NEXT: addiu $1, $zero, -166225; MIPS32R5EB-NEXT: and $sp, $sp, $16226; MIPS32R5EB-NEXT: sw $7, 28($sp)6227; MIPS32R5EB-NEXT: sw $6, 20($sp)6228; MIPS32R5EB-NEXT: sw $5, 12($sp)6229; MIPS32R5EB-NEXT: sw $4, 4($sp)6230; MIPS32R5EB-NEXT: ld.d $w0, 16($sp)6231; MIPS32R5EB-NEXT: ld.d $w1, 0($sp)6232; MIPS32R5EB-NEXT: addv.d $w0, $w1, $w06233; MIPS32R5EB-NEXT: shf.w $w0, $w0, 1776234; MIPS32R5EB-NEXT: copy_s.w $2, $w0[1]6235; MIPS32R5EB-NEXT: copy_s.w $3, $w0[3]6236; MIPS32R5EB-NEXT: move $sp, $fp6237; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload6238; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload6239; MIPS32R5EB-NEXT: addiu $sp, $sp, 486240; MIPS32R5EB-NEXT: jr $ra6241; MIPS32R5EB-NEXT: nop6242;6243; MIPS64R5EB-LABEL: i24x2:6244; MIPS64R5EB: # %bb.0: # %Entry6245; MIPS64R5EB-NEXT: insert.d $w0[0], $66246; MIPS64R5EB-NEXT: insert.d $w0[1], $76247; MIPS64R5EB-NEXT: insert.d $w1[0], $46248; MIPS64R5EB-NEXT: insert.d $w1[1], $56249; MIPS64R5EB-NEXT: addv.d $w0, $w1, $w06250; MIPS64R5EB-NEXT: shf.w $w0, $w0, 1776251; MIPS64R5EB-NEXT: copy_s.w $2, $w0[1]6252; MIPS64R5EB-NEXT: copy_s.w $3, $w0[3]6253; MIPS64R5EB-NEXT: jr $ra6254; MIPS64R5EB-NEXT: nop6255;6256; MIPS32R5EL-LABEL: i24x2:6257; MIPS32R5EL: # %bb.0: # %Entry6258; MIPS32R5EL-NEXT: addiu $sp, $sp, -486259; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 486260; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill6261; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill6262; MIPS32R5EL-NEXT: .cfi_offset 31, -46263; MIPS32R5EL-NEXT: .cfi_offset 30, -86264; MIPS32R5EL-NEXT: move $fp, $sp6265; MIPS32R5EL-NEXT: .cfi_def_cfa_register 306266; MIPS32R5EL-NEXT: addiu $1, $zero, -166267; MIPS32R5EL-NEXT: and $sp, $sp, $16268; MIPS32R5EL-NEXT: sw $7, 24($sp)6269; MIPS32R5EL-NEXT: sw $6, 16($sp)6270; MIPS32R5EL-NEXT: sw $5, 8($sp)6271; MIPS32R5EL-NEXT: sw $4, 0($sp)6272; MIPS32R5EL-NEXT: ld.d $w0, 16($sp)6273; MIPS32R5EL-NEXT: ld.d $w1, 0($sp)6274; MIPS32R5EL-NEXT: addv.d $w0, $w1, $w06275; MIPS32R5EL-NEXT: copy_s.w $2, $w0[0]6276; MIPS32R5EL-NEXT: copy_s.w $3, $w0[2]6277; MIPS32R5EL-NEXT: move $sp, $fp6278; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload6279; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload6280; MIPS32R5EL-NEXT: addiu $sp, $sp, 486281; MIPS32R5EL-NEXT: jr $ra6282; MIPS32R5EL-NEXT: nop6283;6284; MIPS64R5EL-LABEL: i24x2:6285; MIPS64R5EL: # %bb.0: # %Entry6286; MIPS64R5EL-NEXT: insert.d $w0[0], $66287; MIPS64R5EL-NEXT: insert.d $w0[1], $76288; MIPS64R5EL-NEXT: insert.d $w1[0], $46289; MIPS64R5EL-NEXT: insert.d $w1[1], $56290; MIPS64R5EL-NEXT: addv.d $w0, $w1, $w06291; MIPS64R5EL-NEXT: copy_s.w $2, $w0[0]6292; MIPS64R5EL-NEXT: copy_s.w $3, $w0[2]6293; MIPS64R5EL-NEXT: jr $ra6294; MIPS64R5EL-NEXT: nop6295Entry:6296 %0 = add <2 x i24> %a, %b6297 ret <2 x i24> %06298}6299 6300define void @call_i24x2() {6301; MIPS32EB-LABEL: call_i24x2:6302; MIPS32EB: # %bb.0: # %entry6303; MIPS32EB-NEXT: addiu $sp, $sp, -246304; MIPS32EB-NEXT: .cfi_def_cfa_offset 246305; MIPS32EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill6306; MIPS32EB-NEXT: .cfi_offset 31, -46307; MIPS32EB-NEXT: addiu $4, $zero, 66308; MIPS32EB-NEXT: addiu $5, $zero, 76309; MIPS32EB-NEXT: addiu $6, $zero, 126310; MIPS32EB-NEXT: addiu $7, $zero, 86311; MIPS32EB-NEXT: jal i24x26312; MIPS32EB-NEXT: nop6313; MIPS32EB-NEXT: lui $1, %hi(gv2i24)6314; MIPS32EB-NEXT: addiu $4, $1, %lo(gv2i24)6315; MIPS32EB-NEXT: sb $3, 5($4)6316; MIPS32EB-NEXT: sb $2, 2($4)6317; MIPS32EB-NEXT: srl $5, $3, 86318; MIPS32EB-NEXT: sb $5, 4($4)6319; MIPS32EB-NEXT: srl $3, $3, 166320; MIPS32EB-NEXT: sb $3, 3($4)6321; MIPS32EB-NEXT: srl $2, $2, 86322; MIPS32EB-NEXT: sh $2, %lo(gv2i24)($1)6323; MIPS32EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload6324; MIPS32EB-NEXT: addiu $sp, $sp, 246325; MIPS32EB-NEXT: jr $ra6326; MIPS32EB-NEXT: nop6327;6328; MIPS64EB-LABEL: call_i24x2:6329; MIPS64EB: # %bb.0: # %entry6330; MIPS64EB-NEXT: daddiu $sp, $sp, -166331; MIPS64EB-NEXT: .cfi_def_cfa_offset 166332; MIPS64EB-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill6333; MIPS64EB-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill6334; MIPS64EB-NEXT: .cfi_offset 31, -86335; MIPS64EB-NEXT: .cfi_offset 28, -166336; MIPS64EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i24x2)))6337; MIPS64EB-NEXT: daddu $1, $1, $256338; MIPS64EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i24x2)))6339; MIPS64EB-NEXT: ld $25, %call16(i24x2)($gp)6340; MIPS64EB-NEXT: daddiu $4, $zero, 66341; MIPS64EB-NEXT: daddiu $5, $zero, 76342; MIPS64EB-NEXT: daddiu $6, $zero, 126343; MIPS64EB-NEXT: daddiu $7, $zero, 86344; MIPS64EB-NEXT: jalr $256345; MIPS64EB-NEXT: nop6346; MIPS64EB-NEXT: ld $1, %got_disp(gv2i24)($gp)6347; MIPS64EB-NEXT: sb $3, 5($1)6348; MIPS64EB-NEXT: sb $2, 2($1)6349; MIPS64EB-NEXT: srl $4, $3, 86350; MIPS64EB-NEXT: sb $4, 4($1)6351; MIPS64EB-NEXT: srl $3, $3, 166352; MIPS64EB-NEXT: sb $3, 3($1)6353; MIPS64EB-NEXT: srl $2, $2, 86354; MIPS64EB-NEXT: sh $2, 0($1)6355; MIPS64EB-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload6356; MIPS64EB-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload6357; MIPS64EB-NEXT: daddiu $sp, $sp, 166358; MIPS64EB-NEXT: jr $ra6359; MIPS64EB-NEXT: nop6360;6361; MIPS32R5EB-LABEL: call_i24x2:6362; MIPS32R5EB: # %bb.0: # %entry6363; MIPS32R5EB-NEXT: addiu $sp, $sp, -246364; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 246365; MIPS32R5EB-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill6366; MIPS32R5EB-NEXT: .cfi_offset 31, -46367; MIPS32R5EB-NEXT: addiu $4, $zero, 66368; MIPS32R5EB-NEXT: addiu $5, $zero, 76369; MIPS32R5EB-NEXT: addiu $6, $zero, 126370; MIPS32R5EB-NEXT: addiu $7, $zero, 86371; MIPS32R5EB-NEXT: jal i24x26372; MIPS32R5EB-NEXT: nop6373; MIPS32R5EB-NEXT: lui $1, %hi(gv2i24)6374; MIPS32R5EB-NEXT: addiu $4, $1, %lo(gv2i24)6375; MIPS32R5EB-NEXT: sb $3, 5($4)6376; MIPS32R5EB-NEXT: sb $2, 2($4)6377; MIPS32R5EB-NEXT: srl $5, $3, 86378; MIPS32R5EB-NEXT: sb $5, 4($4)6379; MIPS32R5EB-NEXT: srl $3, $3, 166380; MIPS32R5EB-NEXT: sb $3, 3($4)6381; MIPS32R5EB-NEXT: srl $2, $2, 86382; MIPS32R5EB-NEXT: sh $2, %lo(gv2i24)($1)6383; MIPS32R5EB-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload6384; MIPS32R5EB-NEXT: addiu $sp, $sp, 246385; MIPS32R5EB-NEXT: jr $ra6386; MIPS32R5EB-NEXT: nop6387;6388; MIPS64R5EB-LABEL: call_i24x2:6389; MIPS64R5EB: # %bb.0: # %entry6390; MIPS64R5EB-NEXT: daddiu $sp, $sp, -326391; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 326392; MIPS64R5EB-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill6393; MIPS64R5EB-NEXT: sd $gp, 16($sp) # 8-byte Folded Spill6394; MIPS64R5EB-NEXT: .cfi_offset 31, -86395; MIPS64R5EB-NEXT: .cfi_offset 28, -166396; MIPS64R5EB-NEXT: lui $1, %hi(%neg(%gp_rel(call_i24x2)))6397; MIPS64R5EB-NEXT: daddu $1, $1, $256398; MIPS64R5EB-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i24x2)))6399; MIPS64R5EB-NEXT: ld $25, %call16(i24x2)($gp)6400; MIPS64R5EB-NEXT: daddiu $4, $zero, 66401; MIPS64R5EB-NEXT: daddiu $5, $zero, 76402; MIPS64R5EB-NEXT: daddiu $6, $zero, 126403; MIPS64R5EB-NEXT: daddiu $7, $zero, 86404; MIPS64R5EB-NEXT: jalr $256405; MIPS64R5EB-NEXT: nop6406; MIPS64R5EB-NEXT: sw $3, 12($sp)6407; MIPS64R5EB-NEXT: sw $2, 4($sp)6408; MIPS64R5EB-NEXT: ld.d $w0, 0($sp)6409; MIPS64R5EB-NEXT: copy_s.d $1, $w0[0]6410; MIPS64R5EB-NEXT: copy_s.d $2, $w0[1]6411; MIPS64R5EB-NEXT: ld $3, %got_disp(gv2i24)($gp)6412; MIPS64R5EB-NEXT: sb $2, 5($3)6413; MIPS64R5EB-NEXT: sb $1, 2($3)6414; MIPS64R5EB-NEXT: dsrl $4, $2, 86415; MIPS64R5EB-NEXT: sb $4, 4($3)6416; MIPS64R5EB-NEXT: dsrl $2, $2, 166417; MIPS64R5EB-NEXT: sb $2, 3($3)6418; MIPS64R5EB-NEXT: dsrl $1, $1, 86419; MIPS64R5EB-NEXT: sh $1, 0($3)6420; MIPS64R5EB-NEXT: ld $gp, 16($sp) # 8-byte Folded Reload6421; MIPS64R5EB-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload6422; MIPS64R5EB-NEXT: daddiu $sp, $sp, 326423; MIPS64R5EB-NEXT: jr $ra6424; MIPS64R5EB-NEXT: nop6425;6426; MIPS32EL-LABEL: call_i24x2:6427; MIPS32EL: # %bb.0: # %entry6428; MIPS32EL-NEXT: addiu $sp, $sp, -246429; MIPS32EL-NEXT: .cfi_def_cfa_offset 246430; MIPS32EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill6431; MIPS32EL-NEXT: .cfi_offset 31, -46432; MIPS32EL-NEXT: addiu $4, $zero, 66433; MIPS32EL-NEXT: addiu $5, $zero, 76434; MIPS32EL-NEXT: addiu $6, $zero, 126435; MIPS32EL-NEXT: addiu $7, $zero, 86436; MIPS32EL-NEXT: jal i24x26437; MIPS32EL-NEXT: nop6438; MIPS32EL-NEXT: lui $1, %hi(gv2i24)6439; MIPS32EL-NEXT: addiu $4, $1, %lo(gv2i24)6440; MIPS32EL-NEXT: sb $3, 3($4)6441; MIPS32EL-NEXT: sh $2, %lo(gv2i24)($1)6442; MIPS32EL-NEXT: srl $1, $3, 86443; MIPS32EL-NEXT: sb $1, 4($4)6444; MIPS32EL-NEXT: srl $1, $3, 166445; MIPS32EL-NEXT: sb $1, 5($4)6446; MIPS32EL-NEXT: srl $1, $2, 166447; MIPS32EL-NEXT: sb $1, 2($4)6448; MIPS32EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload6449; MIPS32EL-NEXT: addiu $sp, $sp, 246450; MIPS32EL-NEXT: jr $ra6451; MIPS32EL-NEXT: nop6452;6453; MIPS64EL-LABEL: call_i24x2:6454; MIPS64EL: # %bb.0: # %entry6455; MIPS64EL-NEXT: daddiu $sp, $sp, -166456; MIPS64EL-NEXT: .cfi_def_cfa_offset 166457; MIPS64EL-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill6458; MIPS64EL-NEXT: sd $gp, 0($sp) # 8-byte Folded Spill6459; MIPS64EL-NEXT: .cfi_offset 31, -86460; MIPS64EL-NEXT: .cfi_offset 28, -166461; MIPS64EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i24x2)))6462; MIPS64EL-NEXT: daddu $1, $1, $256463; MIPS64EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i24x2)))6464; MIPS64EL-NEXT: ld $25, %call16(i24x2)($gp)6465; MIPS64EL-NEXT: daddiu $4, $zero, 66466; MIPS64EL-NEXT: daddiu $5, $zero, 76467; MIPS64EL-NEXT: daddiu $6, $zero, 126468; MIPS64EL-NEXT: daddiu $7, $zero, 86469; MIPS64EL-NEXT: jalr $256470; MIPS64EL-NEXT: nop6471; MIPS64EL-NEXT: ld $1, %got_disp(gv2i24)($gp)6472; MIPS64EL-NEXT: sb $3, 3($1)6473; MIPS64EL-NEXT: sh $2, 0($1)6474; MIPS64EL-NEXT: srl $4, $3, 86475; MIPS64EL-NEXT: sb $4, 4($1)6476; MIPS64EL-NEXT: srl $3, $3, 166477; MIPS64EL-NEXT: sb $3, 5($1)6478; MIPS64EL-NEXT: srl $2, $2, 166479; MIPS64EL-NEXT: sb $2, 2($1)6480; MIPS64EL-NEXT: ld $gp, 0($sp) # 8-byte Folded Reload6481; MIPS64EL-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload6482; MIPS64EL-NEXT: daddiu $sp, $sp, 166483; MIPS64EL-NEXT: jr $ra6484; MIPS64EL-NEXT: nop6485;6486; MIPS32R5EL-LABEL: call_i24x2:6487; MIPS32R5EL: # %bb.0: # %entry6488; MIPS32R5EL-NEXT: addiu $sp, $sp, -246489; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 246490; MIPS32R5EL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill6491; MIPS32R5EL-NEXT: .cfi_offset 31, -46492; MIPS32R5EL-NEXT: addiu $4, $zero, 66493; MIPS32R5EL-NEXT: addiu $5, $zero, 76494; MIPS32R5EL-NEXT: addiu $6, $zero, 126495; MIPS32R5EL-NEXT: addiu $7, $zero, 86496; MIPS32R5EL-NEXT: jal i24x26497; MIPS32R5EL-NEXT: nop6498; MIPS32R5EL-NEXT: lui $1, %hi(gv2i24)6499; MIPS32R5EL-NEXT: addiu $4, $1, %lo(gv2i24)6500; MIPS32R5EL-NEXT: sb $3, 3($4)6501; MIPS32R5EL-NEXT: sh $2, %lo(gv2i24)($1)6502; MIPS32R5EL-NEXT: srl $1, $3, 86503; MIPS32R5EL-NEXT: sb $1, 4($4)6504; MIPS32R5EL-NEXT: srl $1, $3, 166505; MIPS32R5EL-NEXT: sb $1, 5($4)6506; MIPS32R5EL-NEXT: srl $1, $2, 166507; MIPS32R5EL-NEXT: sb $1, 2($4)6508; MIPS32R5EL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload6509; MIPS32R5EL-NEXT: addiu $sp, $sp, 246510; MIPS32R5EL-NEXT: jr $ra6511; MIPS32R5EL-NEXT: nop6512;6513; MIPS64R5EL-LABEL: call_i24x2:6514; MIPS64R5EL: # %bb.0: # %entry6515; MIPS64R5EL-NEXT: daddiu $sp, $sp, -326516; MIPS64R5EL-NEXT: .cfi_def_cfa_offset 326517; MIPS64R5EL-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill6518; MIPS64R5EL-NEXT: sd $gp, 16($sp) # 8-byte Folded Spill6519; MIPS64R5EL-NEXT: .cfi_offset 31, -86520; MIPS64R5EL-NEXT: .cfi_offset 28, -166521; MIPS64R5EL-NEXT: lui $1, %hi(%neg(%gp_rel(call_i24x2)))6522; MIPS64R5EL-NEXT: daddu $1, $1, $256523; MIPS64R5EL-NEXT: daddiu $gp, $1, %lo(%neg(%gp_rel(call_i24x2)))6524; MIPS64R5EL-NEXT: ld $25, %call16(i24x2)($gp)6525; MIPS64R5EL-NEXT: daddiu $4, $zero, 66526; MIPS64R5EL-NEXT: daddiu $5, $zero, 76527; MIPS64R5EL-NEXT: daddiu $6, $zero, 126528; MIPS64R5EL-NEXT: daddiu $7, $zero, 86529; MIPS64R5EL-NEXT: jalr $256530; MIPS64R5EL-NEXT: nop6531; MIPS64R5EL-NEXT: sw $3, 8($sp)6532; MIPS64R5EL-NEXT: sw $2, 0($sp)6533; MIPS64R5EL-NEXT: ld.d $w0, 0($sp)6534; MIPS64R5EL-NEXT: copy_s.d $1, $w0[0]6535; MIPS64R5EL-NEXT: copy_s.d $2, $w0[1]6536; MIPS64R5EL-NEXT: ld $3, %got_disp(gv2i24)($gp)6537; MIPS64R5EL-NEXT: sb $2, 3($3)6538; MIPS64R5EL-NEXT: sh $1, 0($3)6539; MIPS64R5EL-NEXT: dsrl $4, $2, 86540; MIPS64R5EL-NEXT: sb $4, 4($3)6541; MIPS64R5EL-NEXT: dsrl $2, $2, 166542; MIPS64R5EL-NEXT: sb $2, 5($3)6543; MIPS64R5EL-NEXT: dsrl $1, $1, 166544; MIPS64R5EL-NEXT: sb $1, 2($3)6545; MIPS64R5EL-NEXT: ld $gp, 16($sp) # 8-byte Folded Reload6546; MIPS64R5EL-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload6547; MIPS64R5EL-NEXT: daddiu $sp, $sp, 326548; MIPS64R5EL-NEXT: jr $ra6549; MIPS64R5EL-NEXT: nop6550entry:6551 %0 = call <2 x i24> @i24x2(<2 x i24> <i24 6, i24 7>, <2 x i24> <i24 12, i24 8>)6552 store <2 x i24> %0, ptr @gv2i246553 ret void6554}6555