1925 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=mips64 < %s | FileCheck %s --check-prefix=MIPS643; RUN: llc -mtriple=mips < %s | FileCheck %s --check-prefix=MIPS324 5define void @arg_v1i32(<1 x i32> %vec, ptr %p) {6; MIPS64-LABEL: arg_v1i32:7; MIPS64: # %bb.0:8; MIPS64-NEXT: jr $ra9; MIPS64-NEXT: sw $4, 0($5)10;11; MIPS32-LABEL: arg_v1i32:12; MIPS32: # %bb.0:13; MIPS32-NEXT: jr $ra14; MIPS32-NEXT: sw $4, 0($5)15 store <1 x i32> %vec, ptr %p16 ret void17}18 19define <1 x i32> @ret_v1i32(ptr %p) {20; MIPS64-LABEL: ret_v1i32:21; MIPS64: # %bb.0:22; MIPS64-NEXT: lw $2, 0($4)23; MIPS64-NEXT: jr $ra24; MIPS64-NEXT: nop25;26; MIPS32-LABEL: ret_v1i32:27; MIPS32: # %bb.0:28; MIPS32-NEXT: lw $2, 0($4)29; MIPS32-NEXT: jr $ra30; MIPS32-NEXT: nop31 %v = load <1 x i32>, ptr %p32 ret <1 x i32> %v33}34 35define void @call_v1i32(ptr %p) nounwind {36; MIPS64-LABEL: call_v1i32:37; MIPS64: # %bb.0:38; MIPS64-NEXT: daddiu $sp, $sp, -1639; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill40; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill41; MIPS64-NEXT: move $16, $442; MIPS64-NEXT: lw $4, 0($4)43; MIPS64-NEXT: jal arg_v1i3244; MIPS64-NEXT: nop45; MIPS64-NEXT: jal ret_v1i3246; MIPS64-NEXT: nop47; MIPS64-NEXT: sw $2, 0($16)48; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload49; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload50; MIPS64-NEXT: jr $ra51; MIPS64-NEXT: daddiu $sp, $sp, 1652;53; MIPS32-LABEL: call_v1i32:54; MIPS32: # %bb.0:55; MIPS32-NEXT: addiu $sp, $sp, -2456; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill57; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill58; MIPS32-NEXT: move $16, $459; MIPS32-NEXT: lw $4, 0($4)60; MIPS32-NEXT: jal arg_v1i3261; MIPS32-NEXT: nop62; MIPS32-NEXT: jal ret_v1i3263; MIPS32-NEXT: nop64; MIPS32-NEXT: sw $2, 0($16)65; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload66; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload67; MIPS32-NEXT: jr $ra68; MIPS32-NEXT: addiu $sp, $sp, 2469 %v1 = load <1 x i32>, ptr %p70 call void @arg_v1i32(<1 x i32> %v1)71 %v2 = call <1 x i32> @ret_v1i32()72 store <1 x i32> %v2, ptr %p73 ret void74}75 76define void @arg_v1i80(<1 x i80> %vec, ptr %p) {77; MIPS64-LABEL: arg_v1i80:78; MIPS64: # %bb.0:79; MIPS64-NEXT: sh $5, 8($6)80; MIPS64-NEXT: dsrl $1, $5, 1681; MIPS64-NEXT: dsll $2, $4, 4882; MIPS64-NEXT: or $1, $2, $183; MIPS64-NEXT: jr $ra84; MIPS64-NEXT: sd $1, 0($6)85;86; MIPS32-LABEL: arg_v1i80:87; MIPS32: # %bb.0:88; MIPS32-NEXT: sll $1, $5, 1689; MIPS32-NEXT: srl $2, $6, 1690; MIPS32-NEXT: sh $6, 8($7)91; MIPS32-NEXT: or $1, $2, $192; MIPS32-NEXT: sw $1, 4($7)93; MIPS32-NEXT: srl $1, $5, 1694; MIPS32-NEXT: sll $2, $4, 1695; MIPS32-NEXT: or $1, $2, $196; MIPS32-NEXT: jr $ra97; MIPS32-NEXT: sw $1, 0($7)98 store <1 x i80> %vec, ptr %p99 ret void100}101 102define <1 x i80> @ret_v1i80(ptr %p) {103; MIPS64-LABEL: ret_v1i80:104; MIPS64: # %bb.0:105; MIPS64-NEXT: lhu $1, 8($4)106; MIPS64-NEXT: ld $2, 0($4)107; MIPS64-NEXT: dsll $3, $2, 16108; MIPS64-NEXT: or $3, $1, $3109; MIPS64-NEXT: jr $ra110; MIPS64-NEXT: dsrl $2, $2, 48111;112; MIPS32-LABEL: ret_v1i80:113; MIPS32: # %bb.0:114; MIPS32-NEXT: lw $1, 4($4)115; MIPS32-NEXT: srl $2, $1, 16116; MIPS32-NEXT: lw $5, 0($4)117; MIPS32-NEXT: sll $3, $5, 16118; MIPS32-NEXT: or $3, $3, $2119; MIPS32-NEXT: lhu $2, 8($4)120; MIPS32-NEXT: sll $1, $1, 16121; MIPS32-NEXT: or $4, $2, $1122; MIPS32-NEXT: jr $ra123; MIPS32-NEXT: srl $2, $5, 16124 %v = load <1 x i80>, ptr %p125 ret <1 x i80> %v126}127 128define void @call_v1i80(ptr %p) nounwind {129; MIPS64-LABEL: call_v1i80:130; MIPS64: # %bb.0:131; MIPS64-NEXT: daddiu $sp, $sp, -16132; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill133; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill134; MIPS64-NEXT: move $16, $4135; MIPS64-NEXT: lhu $1, 8($4)136; MIPS64-NEXT: ld $2, 0($4)137; MIPS64-NEXT: dsll $3, $2, 16138; MIPS64-NEXT: or $5, $1, $3139; MIPS64-NEXT: jal arg_v1i80140; MIPS64-NEXT: dsrl $4, $2, 48141; MIPS64-NEXT: jal ret_v1i80142; MIPS64-NEXT: nop143; MIPS64-NEXT: sh $3, 8($16)144; MIPS64-NEXT: dsrl $1, $3, 16145; MIPS64-NEXT: dsll $2, $2, 48146; MIPS64-NEXT: or $1, $2, $1147; MIPS64-NEXT: sd $1, 0($16)148; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload149; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload150; MIPS64-NEXT: jr $ra151; MIPS64-NEXT: daddiu $sp, $sp, 16152;153; MIPS32-LABEL: call_v1i80:154; MIPS32: # %bb.0:155; MIPS32-NEXT: addiu $sp, $sp, -24156; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill157; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill158; MIPS32-NEXT: move $16, $4159; MIPS32-NEXT: lw $1, 4($4)160; MIPS32-NEXT: srl $2, $1, 16161; MIPS32-NEXT: lw $3, 0($4)162; MIPS32-NEXT: sll $4, $3, 16163; MIPS32-NEXT: or $5, $4, $2164; MIPS32-NEXT: lhu $2, 8($16)165; MIPS32-NEXT: sll $1, $1, 16166; MIPS32-NEXT: or $6, $2, $1167; MIPS32-NEXT: jal arg_v1i80168; MIPS32-NEXT: srl $4, $3, 16169; MIPS32-NEXT: jal ret_v1i80170; MIPS32-NEXT: nop171; MIPS32-NEXT: sh $4, 8($16)172; MIPS32-NEXT: sll $1, $3, 16173; MIPS32-NEXT: srl $4, $4, 16174; MIPS32-NEXT: or $1, $4, $1175; MIPS32-NEXT: sw $1, 4($16)176; MIPS32-NEXT: srl $1, $3, 16177; MIPS32-NEXT: sll $2, $2, 16178; MIPS32-NEXT: or $1, $2, $1179; MIPS32-NEXT: sw $1, 0($16)180; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload181; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload182; MIPS32-NEXT: jr $ra183; MIPS32-NEXT: addiu $sp, $sp, 24184 %v1 = load <1 x i80>, ptr %p185 call void @arg_v1i80(<1 x i80> %v1)186 %v2 = call <1 x i80> @ret_v1i80()187 store <1 x i80> %v2, ptr %p188 ret void189}190 191define void @arg_v2i32(<2 x i32> %vec, ptr %p) {192; MIPS64-LABEL: arg_v2i32:193; MIPS64: # %bb.0:194; MIPS64-NEXT: jr $ra195; MIPS64-NEXT: sd $4, 0($5)196;197; MIPS32-LABEL: arg_v2i32:198; MIPS32: # %bb.0:199; MIPS32-NEXT: sw $5, 4($6)200; MIPS32-NEXT: jr $ra201; MIPS32-NEXT: sw $4, 0($6)202 store <2 x i32> %vec, ptr %p203 ret void204}205 206define <2 x i32> @ret_v2i32(ptr %p) {207; MIPS64-LABEL: ret_v2i32:208; MIPS64: # %bb.0:209; MIPS64-NEXT: ld $2, 0($4)210; MIPS64-NEXT: jr $ra211; MIPS64-NEXT: nop212;213; MIPS32-LABEL: ret_v2i32:214; MIPS32: # %bb.0:215; MIPS32-NEXT: lw $2, 0($4)216; MIPS32-NEXT: lw $3, 4($4)217; MIPS32-NEXT: jr $ra218; MIPS32-NEXT: nop219 %v = load <2 x i32>, ptr %p220 ret <2 x i32> %v221}222 223define void @call_v2i32(ptr %p) nounwind {224; MIPS64-LABEL: call_v2i32:225; MIPS64: # %bb.0:226; MIPS64-NEXT: daddiu $sp, $sp, -16227; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill228; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill229; MIPS64-NEXT: move $16, $4230; MIPS64-NEXT: ld $4, 0($4)231; MIPS64-NEXT: jal arg_v2i32232; MIPS64-NEXT: nop233; MIPS64-NEXT: jal ret_v2i32234; MIPS64-NEXT: nop235; MIPS64-NEXT: sd $2, 0($16)236; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload237; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload238; MIPS64-NEXT: jr $ra239; MIPS64-NEXT: daddiu $sp, $sp, 16240;241; MIPS32-LABEL: call_v2i32:242; MIPS32: # %bb.0:243; MIPS32-NEXT: addiu $sp, $sp, -24244; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill245; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill246; MIPS32-NEXT: move $16, $4247; MIPS32-NEXT: lw $5, 4($4)248; MIPS32-NEXT: lw $4, 0($4)249; MIPS32-NEXT: jal arg_v2i32250; MIPS32-NEXT: nop251; MIPS32-NEXT: jal ret_v2i32252; MIPS32-NEXT: nop253; MIPS32-NEXT: sw $3, 4($16)254; MIPS32-NEXT: sw $2, 0($16)255; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload256; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload257; MIPS32-NEXT: jr $ra258; MIPS32-NEXT: addiu $sp, $sp, 24259 %v1 = load <2 x i32>, ptr %p260 call void @arg_v2i32(<2 x i32> %v1)261 %v2 = call <2 x i32> @ret_v2i32()262 store <2 x i32> %v2, ptr %p263 ret void264}265 266define <3 x i32> @arg_v3i32(<3 x i32> %vec, ptr %p) {267; MIPS64-LABEL: arg_v3i32:268; MIPS64: # %bb.0:269; MIPS64-NEXT: daddiu $1, $zero, 1270; MIPS64-NEXT: dsll $1, $1, 32271; MIPS64-NEXT: daddiu $2, $1, -1272; MIPS64-NEXT: sll $1, $6, 0273; MIPS64-NEXT: sw $1, 8($7)274; MIPS64-NEXT: and $2, $5, $2275; MIPS64-NEXT: dsll $3, $4, 32276; MIPS64-NEXT: or $2, $2, $3277; MIPS64-NEXT: sd $2, 0($7)278; MIPS64-NEXT: sll $2, $4, 0279; MIPS64-NEXT: sll $3, $5, 0280; MIPS64-NEXT: jr $ra281; MIPS64-NEXT: move $4, $1282;283; MIPS32-LABEL: arg_v3i32:284; MIPS32: # %bb.0:285; MIPS32-NEXT: sw $6, 8($7)286; MIPS32-NEXT: sw $5, 4($7)287; MIPS32-NEXT: sw $4, 0($7)288; MIPS32-NEXT: move $2, $4289; MIPS32-NEXT: move $3, $5290; MIPS32-NEXT: jr $ra291; MIPS32-NEXT: move $4, $6292 store <3 x i32> %vec, ptr %p293 ret <3 x i32> %vec294}295 296define <3 x i32> @ret_v3i32(ptr %p) {297; MIPS64-LABEL: ret_v3i32:298; MIPS64: # %bb.0:299; MIPS64-NEXT: lw $1, 8($4)300; MIPS64-NEXT: ld $2, 0($4)301; MIPS64-NEXT: sll $3, $2, 0302; MIPS64-NEXT: dsrl $2, $2, 32303; MIPS64-NEXT: sll $2, $2, 0304; MIPS64-NEXT: jr $ra305; MIPS64-NEXT: move $4, $1306;307; MIPS32-LABEL: ret_v3i32:308; MIPS32: # %bb.0:309; MIPS32-NEXT: lw $2, 0($4)310; MIPS32-NEXT: lw $3, 4($4)311; MIPS32-NEXT: lw $4, 8($4)312; MIPS32-NEXT: jr $ra313; MIPS32-NEXT: nop314 %v = load <3 x i32>, ptr %p315 ret <3 x i32> %v316}317 318define void @call_v3i32(ptr %p) nounwind {319; MIPS64-LABEL: call_v3i32:320; MIPS64: # %bb.0:321; MIPS64-NEXT: daddiu $sp, $sp, -16322; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill323; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill324; MIPS64-NEXT: move $16, $4325; MIPS64-NEXT: lw $6, 8($4)326; MIPS64-NEXT: ld $5, 0($4)327; MIPS64-NEXT: jal arg_v3i32328; MIPS64-NEXT: dsrl $4, $5, 32329; MIPS64-NEXT: jal ret_v3i32330; MIPS64-NEXT: nop331; MIPS64-NEXT: # kill: def $v0 killed $v0 def $v0_64332; MIPS64-NEXT: sw $4, 8($16)333; MIPS64-NEXT: dsll $1, $2, 32334; MIPS64-NEXT: dsll $2, $3, 32335; MIPS64-NEXT: dsrl $2, $2, 32336; MIPS64-NEXT: or $1, $2, $1337; MIPS64-NEXT: sd $1, 0($16)338; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload339; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload340; MIPS64-NEXT: jr $ra341; MIPS64-NEXT: daddiu $sp, $sp, 16342;343; MIPS32-LABEL: call_v3i32:344; MIPS32: # %bb.0:345; MIPS32-NEXT: addiu $sp, $sp, -24346; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill347; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill348; MIPS32-NEXT: move $16, $4349; MIPS32-NEXT: lw $6, 8($4)350; MIPS32-NEXT: lw $5, 4($4)351; MIPS32-NEXT: lw $4, 0($4)352; MIPS32-NEXT: jal arg_v3i32353; MIPS32-NEXT: nop354; MIPS32-NEXT: jal ret_v3i32355; MIPS32-NEXT: nop356; MIPS32-NEXT: sw $4, 8($16)357; MIPS32-NEXT: sw $3, 4($16)358; MIPS32-NEXT: sw $2, 0($16)359; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload360; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload361; MIPS32-NEXT: jr $ra362; MIPS32-NEXT: addiu $sp, $sp, 24363 %v1 = load <3 x i32>, ptr %p364 call void @arg_v3i32(<3 x i32> %v1)365 %v2 = call <3 x i32> @ret_v3i32()366 store <3 x i32> %v2, ptr %p367 ret void368}369 370define void @arg_v4i32(<4 x i32> %vec, ptr %p) {371; MIPS64-LABEL: arg_v4i32:372; MIPS64: # %bb.0:373; MIPS64-NEXT: sd $5, 8($6)374; MIPS64-NEXT: jr $ra375; MIPS64-NEXT: sd $4, 0($6)376;377; MIPS32-LABEL: arg_v4i32:378; MIPS32: # %bb.0:379; MIPS32-NEXT: lw $1, 16($sp)380; MIPS32-NEXT: sw $7, 12($1)381; MIPS32-NEXT: sw $6, 8($1)382; MIPS32-NEXT: sw $5, 4($1)383; MIPS32-NEXT: jr $ra384; MIPS32-NEXT: sw $4, 0($1)385 store <4 x i32> %vec, ptr %p386 ret void387}388 389define <4 x i32> @ret_v4i32(ptr %p) {390; MIPS64-LABEL: ret_v4i32:391; MIPS64: # %bb.0:392; MIPS64-NEXT: ld $2, 0($4)393; MIPS64-NEXT: ld $3, 8($4)394; MIPS64-NEXT: jr $ra395; MIPS64-NEXT: nop396;397; MIPS32-LABEL: ret_v4i32:398; MIPS32: # %bb.0:399; MIPS32-NEXT: lw $2, 0($4)400; MIPS32-NEXT: lw $3, 4($4)401; MIPS32-NEXT: lw $1, 8($4)402; MIPS32-NEXT: lw $5, 12($4)403; MIPS32-NEXT: jr $ra404; MIPS32-NEXT: move $4, $1405 %v = load <4 x i32>, ptr %p406 ret <4 x i32> %v407}408 409define void @call_v4i32(ptr %p) nounwind {410; MIPS64-LABEL: call_v4i32:411; MIPS64: # %bb.0:412; MIPS64-NEXT: daddiu $sp, $sp, -16413; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill414; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill415; MIPS64-NEXT: move $16, $4416; MIPS64-NEXT: ld $5, 8($4)417; MIPS64-NEXT: ld $4, 0($4)418; MIPS64-NEXT: jal arg_v4i32419; MIPS64-NEXT: nop420; MIPS64-NEXT: jal ret_v4i32421; MIPS64-NEXT: nop422; MIPS64-NEXT: sd $3, 8($16)423; MIPS64-NEXT: sd $2, 0($16)424; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload425; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload426; MIPS64-NEXT: jr $ra427; MIPS64-NEXT: daddiu $sp, $sp, 16428;429; MIPS32-LABEL: call_v4i32:430; MIPS32: # %bb.0:431; MIPS32-NEXT: addiu $sp, $sp, -24432; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill433; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill434; MIPS32-NEXT: move $16, $4435; MIPS32-NEXT: lw $7, 12($4)436; MIPS32-NEXT: lw $6, 8($4)437; MIPS32-NEXT: lw $5, 4($4)438; MIPS32-NEXT: lw $4, 0($4)439; MIPS32-NEXT: jal arg_v4i32440; MIPS32-NEXT: nop441; MIPS32-NEXT: jal ret_v4i32442; MIPS32-NEXT: nop443; MIPS32-NEXT: sw $5, 12($16)444; MIPS32-NEXT: sw $4, 8($16)445; MIPS32-NEXT: sw $3, 4($16)446; MIPS32-NEXT: sw $2, 0($16)447; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload448; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload449; MIPS32-NEXT: jr $ra450; MIPS32-NEXT: addiu $sp, $sp, 24451 %v1 = load <4 x i32>, ptr %p452 call void @arg_v4i32(<4 x i32> %v1)453 %v2 = call <4 x i32> @ret_v4i32()454 store <4 x i32> %v2, ptr %p455 ret void456}457 458define void @arg_v5i32(<5 x i32> %vec, ptr %p) {459; MIPS64-LABEL: arg_v5i32:460; MIPS64: # %bb.0:461; MIPS64-NEXT: daddiu $1, $zero, 1462; MIPS64-NEXT: dsll $1, $1, 32463; MIPS64-NEXT: daddiu $1, $1, -1464; MIPS64-NEXT: and $2, $7, $1465; MIPS64-NEXT: dsll $3, $6, 32466; MIPS64-NEXT: or $2, $2, $3467; MIPS64-NEXT: sw $8, 16($9)468; MIPS64-NEXT: sd $2, 8($9)469; MIPS64-NEXT: and $1, $5, $1470; MIPS64-NEXT: dsll $2, $4, 32471; MIPS64-NEXT: or $1, $1, $2472; MIPS64-NEXT: jr $ra473; MIPS64-NEXT: sd $1, 0($9)474;475; MIPS32-LABEL: arg_v5i32:476; MIPS32: # %bb.0:477; MIPS32-NEXT: lw $1, 20($sp)478; MIPS32-NEXT: lw $2, 16($sp)479; MIPS32-NEXT: sw $2, 16($1)480; MIPS32-NEXT: sw $7, 12($1)481; MIPS32-NEXT: sw $6, 8($1)482; MIPS32-NEXT: sw $5, 4($1)483; MIPS32-NEXT: jr $ra484; MIPS32-NEXT: sw $4, 0($1)485 store <5 x i32> %vec, ptr %p486 ret void487}488 489define <5 x i32> @ret_v5i32(ptr %p) {490; MIPS64-LABEL: ret_v5i32:491; MIPS64: # %bb.0:492; MIPS64-NEXT: lw $1, 16($5)493; MIPS64-NEXT: sw $1, 16($4)494; MIPS64-NEXT: ld $1, 8($5)495; MIPS64-NEXT: sd $1, 8($4)496; MIPS64-NEXT: ld $1, 0($5)497; MIPS64-NEXT: jr $ra498; MIPS64-NEXT: sd $1, 0($4)499;500; MIPS32-LABEL: ret_v5i32:501; MIPS32: # %bb.0:502; MIPS32-NEXT: lw $1, 12($5)503; MIPS32-NEXT: lw $2, 16($5)504; MIPS32-NEXT: sw $2, 16($4)505; MIPS32-NEXT: sw $1, 12($4)506; MIPS32-NEXT: lw $1, 8($5)507; MIPS32-NEXT: sw $1, 8($4)508; MIPS32-NEXT: lw $1, 4($5)509; MIPS32-NEXT: sw $1, 4($4)510; MIPS32-NEXT: lw $1, 0($5)511; MIPS32-NEXT: jr $ra512; MIPS32-NEXT: sw $1, 0($4)513 %v = load <5 x i32>, ptr %p514 ret <5 x i32> %v515}516 517define void @call_v5i32(ptr %p) nounwind {518; MIPS64-LABEL: call_v5i32:519; MIPS64: # %bb.0:520; MIPS64-NEXT: daddiu $sp, $sp, -64521; MIPS64-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill522; MIPS64-NEXT: sd $fp, 48($sp) # 8-byte Folded Spill523; MIPS64-NEXT: sd $16, 40($sp) # 8-byte Folded Spill524; MIPS64-NEXT: move $fp, $sp525; MIPS64-NEXT: daddiu $1, $zero, -32526; MIPS64-NEXT: and $sp, $sp, $1527; MIPS64-NEXT: move $16, $4528; MIPS64-NEXT: lw $8, 16($4)529; MIPS64-NEXT: ld $7, 8($4)530; MIPS64-NEXT: ld $5, 0($4)531; MIPS64-NEXT: dsrl $4, $5, 32532; MIPS64-NEXT: jal arg_v5i32533; MIPS64-NEXT: dsrl $6, $7, 32534; MIPS64-NEXT: jal ret_v5i32535; MIPS64-NEXT: daddiu $4, $sp, 0536; MIPS64-NEXT: lw $1, 16($sp)537; MIPS64-NEXT: ld $2, 0($sp)538; MIPS64-NEXT: sd $2, 0($16)539; MIPS64-NEXT: ld $2, 8($sp)540; MIPS64-NEXT: sd $2, 8($16)541; MIPS64-NEXT: sw $1, 16($16)542; MIPS64-NEXT: move $sp, $fp543; MIPS64-NEXT: ld $16, 40($sp) # 8-byte Folded Reload544; MIPS64-NEXT: ld $fp, 48($sp) # 8-byte Folded Reload545; MIPS64-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload546; MIPS64-NEXT: jr $ra547; MIPS64-NEXT: daddiu $sp, $sp, 64548;549; MIPS32-LABEL: call_v5i32:550; MIPS32: # %bb.0:551; MIPS32-NEXT: addiu $sp, $sp, -96552; MIPS32-NEXT: sw $ra, 92($sp) # 4-byte Folded Spill553; MIPS32-NEXT: sw $fp, 88($sp) # 4-byte Folded Spill554; MIPS32-NEXT: sw $16, 84($sp) # 4-byte Folded Spill555; MIPS32-NEXT: move $fp, $sp556; MIPS32-NEXT: addiu $1, $zero, -32557; MIPS32-NEXT: and $sp, $sp, $1558; MIPS32-NEXT: move $16, $4559; MIPS32-NEXT: lw $7, 12($4)560; MIPS32-NEXT: lw $6, 8($4)561; MIPS32-NEXT: lw $5, 4($4)562; MIPS32-NEXT: lw $4, 0($4)563; MIPS32-NEXT: lw $1, 16($16)564; MIPS32-NEXT: jal arg_v5i32565; MIPS32-NEXT: sw $1, 16($sp)566; MIPS32-NEXT: jal ret_v5i32567; MIPS32-NEXT: addiu $4, $sp, 32568; MIPS32-NEXT: lw $1, 36($sp)569; MIPS32-NEXT: lw $2, 32($sp)570; MIPS32-NEXT: sw $2, 0($16)571; MIPS32-NEXT: sw $1, 4($16)572; MIPS32-NEXT: lw $1, 40($sp)573; MIPS32-NEXT: sw $1, 8($16)574; MIPS32-NEXT: lw $1, 44($sp)575; MIPS32-NEXT: sw $1, 12($16)576; MIPS32-NEXT: lw $1, 48($sp)577; MIPS32-NEXT: sw $1, 16($16)578; MIPS32-NEXT: move $sp, $fp579; MIPS32-NEXT: lw $16, 84($sp) # 4-byte Folded Reload580; MIPS32-NEXT: lw $fp, 88($sp) # 4-byte Folded Reload581; MIPS32-NEXT: lw $ra, 92($sp) # 4-byte Folded Reload582; MIPS32-NEXT: jr $ra583; MIPS32-NEXT: addiu $sp, $sp, 96584 %v1 = load <5 x i32>, ptr %p585 call void @arg_v5i32(<5 x i32> %v1)586 %v2 = call <5 x i32> @ret_v5i32()587 store <5 x i32> %v2, ptr %p588 ret void589}590 591define void @arg_v8i32(<8 x i32> %vec, ptr %p) {592; MIPS64-LABEL: arg_v8i32:593; MIPS64: # %bb.0:594; MIPS64-NEXT: sd $7, 24($8)595; MIPS64-NEXT: sd $6, 16($8)596; MIPS64-NEXT: sd $5, 8($8)597; MIPS64-NEXT: jr $ra598; MIPS64-NEXT: sd $4, 0($8)599;600; MIPS32-LABEL: arg_v8i32:601; MIPS32: # %bb.0:602; MIPS32-NEXT: lw $1, 16($sp)603; MIPS32-NEXT: lw $2, 20($sp)604; MIPS32-NEXT: lw $3, 24($sp)605; MIPS32-NEXT: lw $8, 32($sp)606; MIPS32-NEXT: lw $9, 28($sp)607; MIPS32-NEXT: sw $9, 28($8)608; MIPS32-NEXT: sw $3, 24($8)609; MIPS32-NEXT: sw $2, 20($8)610; MIPS32-NEXT: sw $1, 16($8)611; MIPS32-NEXT: sw $7, 12($8)612; MIPS32-NEXT: sw $6, 8($8)613; MIPS32-NEXT: sw $5, 4($8)614; MIPS32-NEXT: jr $ra615; MIPS32-NEXT: sw $4, 0($8)616 store <8 x i32> %vec, ptr %p617 ret void618}619 620define <8 x i32> @ret_v8i32(ptr %p) {621; MIPS64-LABEL: ret_v8i32:622; MIPS64: # %bb.0:623; MIPS64-NEXT: ld $1, 24($5)624; MIPS64-NEXT: sd $1, 24($4)625; MIPS64-NEXT: ld $1, 16($5)626; MIPS64-NEXT: sd $1, 16($4)627; MIPS64-NEXT: ld $1, 8($5)628; MIPS64-NEXT: sd $1, 8($4)629; MIPS64-NEXT: ld $1, 0($5)630; MIPS64-NEXT: jr $ra631; MIPS64-NEXT: sd $1, 0($4)632;633; MIPS32-LABEL: ret_v8i32:634; MIPS32: # %bb.0:635; MIPS32-NEXT: lw $1, 12($5)636; MIPS32-NEXT: lw $2, 16($5)637; MIPS32-NEXT: lw $3, 20($5)638; MIPS32-NEXT: lw $6, 24($5)639; MIPS32-NEXT: lw $7, 28($5)640; MIPS32-NEXT: sw $7, 28($4)641; MIPS32-NEXT: sw $6, 24($4)642; MIPS32-NEXT: sw $3, 20($4)643; MIPS32-NEXT: sw $2, 16($4)644; MIPS32-NEXT: sw $1, 12($4)645; MIPS32-NEXT: lw $1, 8($5)646; MIPS32-NEXT: sw $1, 8($4)647; MIPS32-NEXT: lw $1, 4($5)648; MIPS32-NEXT: sw $1, 4($4)649; MIPS32-NEXT: lw $1, 0($5)650; MIPS32-NEXT: jr $ra651; MIPS32-NEXT: sw $1, 0($4)652 %v = load <8 x i32>, ptr %p653 ret <8 x i32> %v654}655 656define void @call_v8i32(ptr %p) nounwind {657; MIPS64-LABEL: call_v8i32:658; MIPS64: # %bb.0:659; MIPS64-NEXT: daddiu $sp, $sp, -64660; MIPS64-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill661; MIPS64-NEXT: sd $fp, 48($sp) # 8-byte Folded Spill662; MIPS64-NEXT: sd $16, 40($sp) # 8-byte Folded Spill663; MIPS64-NEXT: move $fp, $sp664; MIPS64-NEXT: daddiu $1, $zero, -32665; MIPS64-NEXT: move $16, $4666; MIPS64-NEXT: ld $7, 24($4)667; MIPS64-NEXT: ld $6, 16($4)668; MIPS64-NEXT: ld $5, 8($4)669; MIPS64-NEXT: ld $4, 0($4)670; MIPS64-NEXT: jal arg_v8i32671; MIPS64-NEXT: and $sp, $sp, $1672; MIPS64-NEXT: jal ret_v8i32673; MIPS64-NEXT: daddiu $4, $sp, 0674; MIPS64-NEXT: ld $1, 0($sp)675; MIPS64-NEXT: lw $2, 16($sp)676; MIPS64-NEXT: lw $3, 20($sp)677; MIPS64-NEXT: lw $4, 24($sp)678; MIPS64-NEXT: lw $5, 28($sp)679; MIPS64-NEXT: sw $5, 28($16)680; MIPS64-NEXT: sw $4, 24($16)681; MIPS64-NEXT: sw $3, 20($16)682; MIPS64-NEXT: sw $2, 16($16)683; MIPS64-NEXT: lw $2, 12($sp)684; MIPS64-NEXT: sw $2, 12($16)685; MIPS64-NEXT: lw $2, 8($sp)686; MIPS64-NEXT: sw $2, 8($16)687; MIPS64-NEXT: sd $1, 0($16)688; MIPS64-NEXT: move $sp, $fp689; MIPS64-NEXT: ld $16, 40($sp) # 8-byte Folded Reload690; MIPS64-NEXT: ld $fp, 48($sp) # 8-byte Folded Reload691; MIPS64-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload692; MIPS64-NEXT: jr $ra693; MIPS64-NEXT: daddiu $sp, $sp, 64694;695; MIPS32-LABEL: call_v8i32:696; MIPS32: # %bb.0:697; MIPS32-NEXT: addiu $sp, $sp, -96698; MIPS32-NEXT: sw $ra, 92($sp) # 4-byte Folded Spill699; MIPS32-NEXT: sw $fp, 88($sp) # 4-byte Folded Spill700; MIPS32-NEXT: sw $16, 84($sp) # 4-byte Folded Spill701; MIPS32-NEXT: move $fp, $sp702; MIPS32-NEXT: addiu $1, $zero, -32703; MIPS32-NEXT: and $sp, $sp, $1704; MIPS32-NEXT: move $16, $4705; MIPS32-NEXT: lw $7, 12($4)706; MIPS32-NEXT: lw $6, 8($4)707; MIPS32-NEXT: lw $5, 4($4)708; MIPS32-NEXT: lw $4, 0($4)709; MIPS32-NEXT: lw $1, 16($16)710; MIPS32-NEXT: lw $2, 20($16)711; MIPS32-NEXT: lw $3, 24($16)712; MIPS32-NEXT: lw $8, 28($16)713; MIPS32-NEXT: sw $8, 28($sp)714; MIPS32-NEXT: sw $3, 24($sp)715; MIPS32-NEXT: sw $2, 20($sp)716; MIPS32-NEXT: jal arg_v8i32717; MIPS32-NEXT: sw $1, 16($sp)718; MIPS32-NEXT: jal ret_v8i32719; MIPS32-NEXT: addiu $4, $sp, 32720; MIPS32-NEXT: lw $1, 44($sp)721; MIPS32-NEXT: lw $2, 48($sp)722; MIPS32-NEXT: lw $3, 52($sp)723; MIPS32-NEXT: lw $4, 56($sp)724; MIPS32-NEXT: lw $5, 60($sp)725; MIPS32-NEXT: sw $5, 28($16)726; MIPS32-NEXT: sw $4, 24($16)727; MIPS32-NEXT: sw $3, 20($16)728; MIPS32-NEXT: sw $2, 16($16)729; MIPS32-NEXT: sw $1, 12($16)730; MIPS32-NEXT: lw $1, 40($sp)731; MIPS32-NEXT: sw $1, 8($16)732; MIPS32-NEXT: lw $1, 36($sp)733; MIPS32-NEXT: sw $1, 4($16)734; MIPS32-NEXT: lw $1, 32($sp)735; MIPS32-NEXT: sw $1, 0($16)736; MIPS32-NEXT: move $sp, $fp737; MIPS32-NEXT: lw $16, 84($sp) # 4-byte Folded Reload738; MIPS32-NEXT: lw $fp, 88($sp) # 4-byte Folded Reload739; MIPS32-NEXT: lw $ra, 92($sp) # 4-byte Folded Reload740; MIPS32-NEXT: jr $ra741; MIPS32-NEXT: addiu $sp, $sp, 96742 %v1 = load <8 x i32>, ptr %p743 call void @arg_v8i32(<8 x i32> %v1)744 %v2 = call <8 x i32> @ret_v8i32()745 store <8 x i32> %v2, ptr %p746 ret void747}748 749define void @arg_v3i24(<3 x i24> %vec, ptr %p) {750; MIPS64-LABEL: arg_v3i24:751; MIPS64: # %bb.0:752; MIPS64-NEXT: sll $1, $6, 0753; MIPS64-NEXT: srl $2, $1, 8754; MIPS64-NEXT: sll $3, $4, 0755; MIPS64-NEXT: sll $4, $5, 0756; MIPS64-NEXT: sb $1, 8($7)757; MIPS64-NEXT: sb $4, 5($7)758; MIPS64-NEXT: sb $3, 2($7)759; MIPS64-NEXT: sh $2, 6($7)760; MIPS64-NEXT: srl $1, $4, 8761; MIPS64-NEXT: sb $1, 4($7)762; MIPS64-NEXT: srl $1, $4, 16763; MIPS64-NEXT: sb $1, 3($7)764; MIPS64-NEXT: srl $1, $3, 8765; MIPS64-NEXT: jr $ra766; MIPS64-NEXT: sh $1, 0($7)767;768; MIPS32-LABEL: arg_v3i24:769; MIPS32: # %bb.0:770; MIPS32-NEXT: srl $1, $6, 8771; MIPS32-NEXT: sb $6, 8($7)772; MIPS32-NEXT: sb $5, 5($7)773; MIPS32-NEXT: sb $4, 2($7)774; MIPS32-NEXT: sh $1, 6($7)775; MIPS32-NEXT: srl $1, $5, 8776; MIPS32-NEXT: sb $1, 4($7)777; MIPS32-NEXT: srl $1, $5, 16778; MIPS32-NEXT: sb $1, 3($7)779; MIPS32-NEXT: srl $1, $4, 8780; MIPS32-NEXT: jr $ra781; MIPS32-NEXT: sh $1, 0($7)782 store <3 x i24> %vec, ptr %p783 ret void784}785 786define <3 x i24> @ret_v3i24(ptr %p) {787; MIPS64-LABEL: ret_v3i24:788; MIPS64: # %bb.0:789; MIPS64-NEXT: lbu $1, 8($4)790; MIPS64-NEXT: lh $2, 6($4)791; MIPS64-NEXT: sll $3, $2, 8792; MIPS64-NEXT: lbu $2, 2($4)793; MIPS64-NEXT: lhu $5, 0($4)794; MIPS64-NEXT: sll $5, $5, 8795; MIPS64-NEXT: or $2, $2, $5796; MIPS64-NEXT: or $1, $1, $3797; MIPS64-NEXT: lbu $3, 4($4)798; MIPS64-NEXT: sll $3, $3, 8799; MIPS64-NEXT: lb $5, 3($4)800; MIPS64-NEXT: sll $5, $5, 16801; MIPS64-NEXT: or $3, $5, $3802; MIPS64-NEXT: lbu $4, 5($4)803; MIPS64-NEXT: or $3, $4, $3804; MIPS64-NEXT: jr $ra805; MIPS64-NEXT: move $4, $1806;807; MIPS32-LABEL: ret_v3i24:808; MIPS32: # %bb.0:809; MIPS32-NEXT: lbu $1, 8($4)810; MIPS32-NEXT: lh $2, 6($4)811; MIPS32-NEXT: sll $3, $2, 8812; MIPS32-NEXT: lbu $2, 2($4)813; MIPS32-NEXT: lhu $5, 0($4)814; MIPS32-NEXT: sll $5, $5, 8815; MIPS32-NEXT: or $2, $2, $5816; MIPS32-NEXT: or $1, $1, $3817; MIPS32-NEXT: lbu $3, 4($4)818; MIPS32-NEXT: sll $3, $3, 8819; MIPS32-NEXT: lb $5, 3($4)820; MIPS32-NEXT: sll $5, $5, 16821; MIPS32-NEXT: or $3, $5, $3822; MIPS32-NEXT: lbu $4, 5($4)823; MIPS32-NEXT: or $3, $4, $3824; MIPS32-NEXT: jr $ra825; MIPS32-NEXT: move $4, $1826 %v = load <3 x i24>, ptr %p827 ret <3 x i24> %v828}829 830define void @call_v3i24(ptr %p) nounwind {831; MIPS64-LABEL: call_v3i24:832; MIPS64: # %bb.0:833; MIPS64-NEXT: daddiu $sp, $sp, -16834; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill835; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill836; MIPS64-NEXT: move $16, $4837; MIPS64-NEXT: lbu $1, 4($4)838; MIPS64-NEXT: lbu $2, 8($4)839; MIPS64-NEXT: lh $3, 6($4)840; MIPS64-NEXT: dsll $3, $3, 8841; MIPS64-NEXT: lbu $4, 2($4)842; MIPS64-NEXT: lh $5, 0($16)843; MIPS64-NEXT: dsll $5, $5, 8844; MIPS64-NEXT: or $4, $4, $5845; MIPS64-NEXT: or $6, $2, $3846; MIPS64-NEXT: dsll $1, $1, 8847; MIPS64-NEXT: lb $2, 3($16)848; MIPS64-NEXT: dsll $2, $2, 16849; MIPS64-NEXT: or $1, $2, $1850; MIPS64-NEXT: lbu $2, 5($16)851; MIPS64-NEXT: jal arg_v3i24852; MIPS64-NEXT: or $5, $2, $1853; MIPS64-NEXT: jal ret_v3i24854; MIPS64-NEXT: nop855; MIPS64-NEXT: srl $1, $4, 8856; MIPS64-NEXT: sb $4, 8($16)857; MIPS64-NEXT: sb $3, 5($16)858; MIPS64-NEXT: sb $2, 2($16)859; MIPS64-NEXT: sh $1, 6($16)860; MIPS64-NEXT: srl $1, $3, 8861; MIPS64-NEXT: sb $1, 4($16)862; MIPS64-NEXT: srl $1, $3, 16863; MIPS64-NEXT: sb $1, 3($16)864; MIPS64-NEXT: srl $1, $2, 8865; MIPS64-NEXT: sh $1, 0($16)866; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload867; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload868; MIPS64-NEXT: jr $ra869; MIPS64-NEXT: daddiu $sp, $sp, 16870;871; MIPS32-LABEL: call_v3i24:872; MIPS32: # %bb.0:873; MIPS32-NEXT: addiu $sp, $sp, -24874; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill875; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill876; MIPS32-NEXT: move $16, $4877; MIPS32-NEXT: lbu $1, 4($4)878; MIPS32-NEXT: lbu $2, 8($4)879; MIPS32-NEXT: lh $3, 6($4)880; MIPS32-NEXT: sll $3, $3, 8881; MIPS32-NEXT: lbu $4, 2($4)882; MIPS32-NEXT: lhu $5, 0($16)883; MIPS32-NEXT: sll $5, $5, 8884; MIPS32-NEXT: or $4, $4, $5885; MIPS32-NEXT: or $6, $2, $3886; MIPS32-NEXT: sll $1, $1, 8887; MIPS32-NEXT: lb $2, 3($16)888; MIPS32-NEXT: sll $2, $2, 16889; MIPS32-NEXT: or $1, $2, $1890; MIPS32-NEXT: lbu $2, 5($16)891; MIPS32-NEXT: jal arg_v3i24892; MIPS32-NEXT: or $5, $2, $1893; MIPS32-NEXT: jal ret_v3i24894; MIPS32-NEXT: nop895; MIPS32-NEXT: srl $1, $4, 8896; MIPS32-NEXT: sb $4, 8($16)897; MIPS32-NEXT: sb $3, 5($16)898; MIPS32-NEXT: sb $2, 2($16)899; MIPS32-NEXT: sh $1, 6($16)900; MIPS32-NEXT: srl $1, $3, 8901; MIPS32-NEXT: sb $1, 4($16)902; MIPS32-NEXT: srl $1, $3, 16903; MIPS32-NEXT: sb $1, 3($16)904; MIPS32-NEXT: srl $1, $2, 8905; MIPS32-NEXT: sh $1, 0($16)906; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload907; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload908; MIPS32-NEXT: jr $ra909; MIPS32-NEXT: addiu $sp, $sp, 24910 %v1 = load <3 x i24>, ptr %p911 call void @arg_v3i24(<3 x i24> %v1)912 %v2 = call <3 x i24> @ret_v3i24()913 store <3 x i24> %v2, ptr %p914 ret void915}916 917define void @arg_v4i24(<4 x i24> %vec, ptr %p) {918; MIPS64-LABEL: arg_v4i24:919; MIPS64: # %bb.0:920; MIPS64-NEXT: sll $1, $7, 0921; MIPS64-NEXT: sll $2, $6, 0922; MIPS64-NEXT: srl $3, $2, 8923; MIPS64-NEXT: srl $6, $1, 16924; MIPS64-NEXT: srl $7, $1, 8925; MIPS64-NEXT: sll $4, $4, 0926; MIPS64-NEXT: sll $5, $5, 0927; MIPS64-NEXT: sb $1, 11($8)928; MIPS64-NEXT: sb $2, 8($8)929; MIPS64-NEXT: sb $5, 5($8)930; MIPS64-NEXT: sb $4, 2($8)931; MIPS64-NEXT: sb $7, 10($8)932; MIPS64-NEXT: sb $6, 9($8)933; MIPS64-NEXT: sh $3, 6($8)934; MIPS64-NEXT: srl $1, $5, 8935; MIPS64-NEXT: sb $1, 4($8)936; MIPS64-NEXT: srl $1, $5, 16937; MIPS64-NEXT: sb $1, 3($8)938; MIPS64-NEXT: srl $1, $4, 8939; MIPS64-NEXT: jr $ra940; MIPS64-NEXT: sh $1, 0($8)941;942; MIPS32-LABEL: arg_v4i24:943; MIPS32: # %bb.0:944; MIPS32-NEXT: srl $1, $6, 8945; MIPS32-NEXT: srl $2, $7, 16946; MIPS32-NEXT: srl $3, $7, 8947; MIPS32-NEXT: lw $8, 16($sp)948; MIPS32-NEXT: sb $7, 11($8)949; MIPS32-NEXT: sb $6, 8($8)950; MIPS32-NEXT: sb $5, 5($8)951; MIPS32-NEXT: sb $4, 2($8)952; MIPS32-NEXT: sb $3, 10($8)953; MIPS32-NEXT: sb $2, 9($8)954; MIPS32-NEXT: sh $1, 6($8)955; MIPS32-NEXT: srl $1, $5, 8956; MIPS32-NEXT: sb $1, 4($8)957; MIPS32-NEXT: srl $1, $5, 16958; MIPS32-NEXT: sb $1, 3($8)959; MIPS32-NEXT: srl $1, $4, 8960; MIPS32-NEXT: jr $ra961; MIPS32-NEXT: sh $1, 0($8)962 store <4 x i24> %vec, ptr %p963 ret void964}965 966define <4 x i24> @ret_v4i24(ptr %p) {967; MIPS64-LABEL: ret_v4i24:968; MIPS64: # %bb.0:969; MIPS64-NEXT: lbu $1, 4($4)970; MIPS64-NEXT: sll $1, $1, 8971; MIPS64-NEXT: lbu $2, 3($4)972; MIPS64-NEXT: sll $2, $2, 16973; MIPS64-NEXT: or $3, $2, $1974; MIPS64-NEXT: lbu $5, 5($4)975; MIPS64-NEXT: lbu $1, 8($4)976; MIPS64-NEXT: lhu $2, 6($4)977; MIPS64-NEXT: sll $6, $2, 8978; MIPS64-NEXT: lbu $2, 2($4)979; MIPS64-NEXT: lhu $7, 0($4)980; MIPS64-NEXT: sll $7, $7, 8981; MIPS64-NEXT: or $2, $2, $7982; MIPS64-NEXT: or $1, $1, $6983; MIPS64-NEXT: or $3, $5, $3984; MIPS64-NEXT: lbu $5, 10($4)985; MIPS64-NEXT: sll $5, $5, 8986; MIPS64-NEXT: lbu $6, 9($4)987; MIPS64-NEXT: sll $6, $6, 16988; MIPS64-NEXT: or $5, $6, $5989; MIPS64-NEXT: lbu $4, 11($4)990; MIPS64-NEXT: or $5, $4, $5991; MIPS64-NEXT: jr $ra992; MIPS64-NEXT: move $4, $1993;994; MIPS32-LABEL: ret_v4i24:995; MIPS32: # %bb.0:996; MIPS32-NEXT: lbu $1, 4($4)997; MIPS32-NEXT: sll $1, $1, 8998; MIPS32-NEXT: lbu $2, 3($4)999; MIPS32-NEXT: sll $2, $2, 161000; MIPS32-NEXT: or $3, $2, $11001; MIPS32-NEXT: lbu $5, 5($4)1002; MIPS32-NEXT: lbu $1, 8($4)1003; MIPS32-NEXT: lhu $2, 6($4)1004; MIPS32-NEXT: sll $6, $2, 81005; MIPS32-NEXT: lbu $2, 2($4)1006; MIPS32-NEXT: lhu $7, 0($4)1007; MIPS32-NEXT: sll $7, $7, 81008; MIPS32-NEXT: or $2, $2, $71009; MIPS32-NEXT: or $1, $1, $61010; MIPS32-NEXT: or $3, $5, $31011; MIPS32-NEXT: lbu $5, 10($4)1012; MIPS32-NEXT: sll $5, $5, 81013; MIPS32-NEXT: lbu $6, 9($4)1014; MIPS32-NEXT: sll $6, $6, 161015; MIPS32-NEXT: or $5, $6, $51016; MIPS32-NEXT: lbu $4, 11($4)1017; MIPS32-NEXT: or $5, $4, $51018; MIPS32-NEXT: jr $ra1019; MIPS32-NEXT: move $4, $11020 %v = load <4 x i24>, ptr %p1021 ret <4 x i24> %v1022}1023 1024define void @call_v4i24(ptr %p) nounwind {1025; MIPS64-LABEL: call_v4i24:1026; MIPS64: # %bb.0:1027; MIPS64-NEXT: daddiu $sp, $sp, -161028; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill1029; MIPS64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill1030; MIPS64-NEXT: move $16, $41031; MIPS64-NEXT: lbu $1, 4($4)1032; MIPS64-NEXT: dsll $1, $1, 81033; MIPS64-NEXT: lb $2, 3($4)1034; MIPS64-NEXT: dsll $2, $2, 161035; MIPS64-NEXT: or $1, $2, $11036; MIPS64-NEXT: lbu $2, 10($4)1037; MIPS64-NEXT: lbu $3, 5($4)1038; MIPS64-NEXT: lbu $5, 8($4)1039; MIPS64-NEXT: lh $4, 6($4)1040; MIPS64-NEXT: dsll $6, $4, 81041; MIPS64-NEXT: lbu $4, 2($16)1042; MIPS64-NEXT: lh $7, 0($16)1043; MIPS64-NEXT: dsll $7, $7, 81044; MIPS64-NEXT: or $4, $4, $71045; MIPS64-NEXT: or $6, $5, $61046; MIPS64-NEXT: or $5, $3, $11047; MIPS64-NEXT: dsll $1, $2, 81048; MIPS64-NEXT: lb $2, 9($16)1049; MIPS64-NEXT: dsll $2, $2, 161050; MIPS64-NEXT: or $1, $2, $11051; MIPS64-NEXT: lbu $2, 11($16)1052; MIPS64-NEXT: jal arg_v4i241053; MIPS64-NEXT: or $7, $2, $11054; MIPS64-NEXT: jal ret_v4i241055; MIPS64-NEXT: nop1056; MIPS64-NEXT: srl $1, $4, 81057; MIPS64-NEXT: srl $6, $5, 161058; MIPS64-NEXT: srl $7, $5, 81059; MIPS64-NEXT: sb $5, 11($16)1060; MIPS64-NEXT: sb $4, 8($16)1061; MIPS64-NEXT: sb $3, 5($16)1062; MIPS64-NEXT: sb $2, 2($16)1063; MIPS64-NEXT: sb $7, 10($16)1064; MIPS64-NEXT: sb $6, 9($16)1065; MIPS64-NEXT: sh $1, 6($16)1066; MIPS64-NEXT: srl $1, $3, 81067; MIPS64-NEXT: sb $1, 4($16)1068; MIPS64-NEXT: srl $1, $3, 161069; MIPS64-NEXT: sb $1, 3($16)1070; MIPS64-NEXT: srl $1, $2, 81071; MIPS64-NEXT: sh $1, 0($16)1072; MIPS64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload1073; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload1074; MIPS64-NEXT: jr $ra1075; MIPS64-NEXT: daddiu $sp, $sp, 161076;1077; MIPS32-LABEL: call_v4i24:1078; MIPS32: # %bb.0:1079; MIPS32-NEXT: addiu $sp, $sp, -241080; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill1081; MIPS32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill1082; MIPS32-NEXT: move $16, $41083; MIPS32-NEXT: lbu $1, 4($4)1084; MIPS32-NEXT: sll $1, $1, 81085; MIPS32-NEXT: lbu $2, 3($4)1086; MIPS32-NEXT: sll $2, $2, 161087; MIPS32-NEXT: or $1, $2, $11088; MIPS32-NEXT: lbu $2, 10($4)1089; MIPS32-NEXT: lbu $3, 5($4)1090; MIPS32-NEXT: lbu $5, 8($4)1091; MIPS32-NEXT: lhu $4, 6($4)1092; MIPS32-NEXT: sll $6, $4, 81093; MIPS32-NEXT: lbu $4, 2($16)1094; MIPS32-NEXT: lhu $7, 0($16)1095; MIPS32-NEXT: sll $7, $7, 81096; MIPS32-NEXT: or $4, $4, $71097; MIPS32-NEXT: or $6, $5, $61098; MIPS32-NEXT: or $5, $3, $11099; MIPS32-NEXT: sll $1, $2, 81100; MIPS32-NEXT: lbu $2, 9($16)1101; MIPS32-NEXT: sll $2, $2, 161102; MIPS32-NEXT: or $1, $2, $11103; MIPS32-NEXT: lbu $2, 11($16)1104; MIPS32-NEXT: jal arg_v4i241105; MIPS32-NEXT: or $7, $2, $11106; MIPS32-NEXT: jal ret_v4i241107; MIPS32-NEXT: nop1108; MIPS32-NEXT: srl $1, $4, 81109; MIPS32-NEXT: srl $6, $5, 161110; MIPS32-NEXT: srl $7, $5, 81111; MIPS32-NEXT: sb $5, 11($16)1112; MIPS32-NEXT: sb $4, 8($16)1113; MIPS32-NEXT: sb $3, 5($16)1114; MIPS32-NEXT: sb $2, 2($16)1115; MIPS32-NEXT: sb $7, 10($16)1116; MIPS32-NEXT: sb $6, 9($16)1117; MIPS32-NEXT: sh $1, 6($16)1118; MIPS32-NEXT: srl $1, $3, 81119; MIPS32-NEXT: sb $1, 4($16)1120; MIPS32-NEXT: srl $1, $3, 161121; MIPS32-NEXT: sb $1, 3($16)1122; MIPS32-NEXT: srl $1, $2, 81123; MIPS32-NEXT: sh $1, 0($16)1124; MIPS32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload1125; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload1126; MIPS32-NEXT: jr $ra1127; MIPS32-NEXT: addiu $sp, $sp, 241128 %v1 = load <4 x i24>, ptr %p1129 call void @arg_v4i24(<4 x i24> %v1)1130 %v2 = call <4 x i24> @ret_v4i24()1131 store <4 x i24> %v2, ptr %p1132 ret void1133}1134 1135define void @arg_v4i18(<4 x i18> %vec, ptr %p) {1136; MIPS64-LABEL: arg_v4i18:1137; MIPS64: # %bb.0:1138; MIPS64-NEXT: lui $1, 31139; MIPS64-NEXT: ori $2, $1, 655351140; MIPS64-NEXT: and $3, $5, $21141; MIPS64-NEXT: dsll $3, $3, 361142; MIPS64-NEXT: dsll $5, $4, 541143; MIPS64-NEXT: or $3, $5, $31144; MIPS64-NEXT: and $2, $6, $21145; MIPS64-NEXT: dsll $2, $2, 181146; MIPS64-NEXT: or $2, $3, $21147; MIPS64-NEXT: ori $1, $1, 652801148; MIPS64-NEXT: and $1, $7, $11149; MIPS64-NEXT: sb $7, 8($8)1150; MIPS64-NEXT: or $1, $2, $11151; MIPS64-NEXT: daddiu $2, $zero, 2551152; MIPS64-NEXT: dsrl $1, $1, 81153; MIPS64-NEXT: dsll $2, $2, 561154; MIPS64-NEXT: dsll $3, $4, 461155; MIPS64-NEXT: and $2, $3, $21156; MIPS64-NEXT: or $1, $2, $11157; MIPS64-NEXT: jr $ra1158; MIPS64-NEXT: sd $1, 0($8)1159;1160; MIPS32-LABEL: arg_v4i18:1161; MIPS32: # %bb.0:1162; MIPS32-NEXT: sll $1, $4, 141163; MIPS32-NEXT: lui $2, 631164; MIPS32-NEXT: lui $3, 652801165; MIPS32-NEXT: and $1, $1, $31166; MIPS32-NEXT: ori $2, $2, 652801167; MIPS32-NEXT: sll $3, $5, 41168; MIPS32-NEXT: and $2, $3, $21169; MIPS32-NEXT: sll $4, $4, 221170; MIPS32-NEXT: or $2, $4, $21171; MIPS32-NEXT: srl $2, $2, 81172; MIPS32-NEXT: lui $4, 31173; MIPS32-NEXT: or $1, $1, $21174; MIPS32-NEXT: ori $2, $4, 652801175; MIPS32-NEXT: and $2, $7, $21176; MIPS32-NEXT: sll $5, $6, 181177; MIPS32-NEXT: or $2, $5, $21178; MIPS32-NEXT: lw $5, 16($sp)1179; MIPS32-NEXT: sb $7, 8($5)1180; MIPS32-NEXT: sw $1, 0($5)1181; MIPS32-NEXT: srl $1, $2, 81182; MIPS32-NEXT: ori $2, $4, 491521183; MIPS32-NEXT: and $2, $6, $21184; MIPS32-NEXT: srl $2, $2, 141185; MIPS32-NEXT: or $2, $3, $21186; MIPS32-NEXT: sll $2, $2, 241187; MIPS32-NEXT: or $1, $1, $21188; MIPS32-NEXT: jr $ra1189; MIPS32-NEXT: sw $1, 4($5)1190 store <4 x i18> %vec, ptr %p1191 ret void1192}1193 1194define <4 x i18> @ret_v4i18(ptr %p) {1195; MIPS64-LABEL: ret_v4i18:1196; MIPS64: # %bb.0:1197; MIPS64-NEXT: lbu $1, 8($4)1198; MIPS64-NEXT: ld $2, 0($4)1199; MIPS64-NEXT: dsll $6, $2, 81200; MIPS64-NEXT: or $1, $1, $61201; MIPS64-NEXT: sll $3, $2, 01202; MIPS64-NEXT: sll $1, $1, 01203; MIPS64-NEXT: srl $4, $3, 101204; MIPS64-NEXT: lui $3, 31205; MIPS64-NEXT: ori $5, $3, 655351206; MIPS64-NEXT: dsrl $3, $2, 281207; MIPS64-NEXT: sll $3, $3, 01208; MIPS64-NEXT: lui $7, 31209; MIPS64-NEXT: and $3, $3, $51210; MIPS64-NEXT: and $4, $4, $51211; MIPS64-NEXT: and $5, $1, $51212; MIPS64-NEXT: ori $1, $7, 645121213; MIPS64-NEXT: dsrl $2, $2, 461214; MIPS64-NEXT: and $1, $2, $11215; MIPS64-NEXT: dsrl $2, $6, 541216; MIPS64-NEXT: or $1, $2, $11217; MIPS64-NEXT: jr $ra1218; MIPS64-NEXT: sll $2, $1, 01219;1220; MIPS32-LABEL: ret_v4i18:1221; MIPS32: # %bb.0:1222; MIPS32-NEXT: lbu $1, 8($4)1223; MIPS32-NEXT: lw $2, 4($4)1224; MIPS32-NEXT: sll $6, $2, 81225; MIPS32-NEXT: lui $3, 31226; MIPS32-NEXT: or $1, $1, $61227; MIPS32-NEXT: ori $5, $3, 645121228; MIPS32-NEXT: lw $4, 0($4)1229; MIPS32-NEXT: srl $7, $4, 141230; MIPS32-NEXT: and $5, $7, $51231; MIPS32-NEXT: srl $7, $2, 241232; MIPS32-NEXT: ori $8, $3, 655351233; MIPS32-NEXT: sll $3, $4, 81234; MIPS32-NEXT: srl $2, $3, 221235; MIPS32-NEXT: or $2, $2, $51236; MIPS32-NEXT: and $5, $1, $81237; MIPS32-NEXT: or $1, $3, $71238; MIPS32-NEXT: srl $1, $1, 41239; MIPS32-NEXT: and $3, $1, $81240; MIPS32-NEXT: sll $1, $7, 141241; MIPS32-NEXT: srl $4, $6, 181242; MIPS32-NEXT: or $1, $4, $11243; MIPS32-NEXT: jr $ra1244; MIPS32-NEXT: and $4, $1, $81245 %v = load <4 x i18>, ptr %p1246 ret <4 x i18> %v1247}1248 1249define void @call_v4i18(ptr %p) nounwind {1250; MIPS64-LABEL: call_v4i18:1251; MIPS64: # %bb.0:1252; MIPS64-NEXT: daddiu $sp, $sp, -481253; MIPS64-NEXT: sd $ra, 40($sp) # 8-byte Folded Spill1254; MIPS64-NEXT: sd $19, 32($sp) # 8-byte Folded Spill1255; MIPS64-NEXT: sd $18, 24($sp) # 8-byte Folded Spill1256; MIPS64-NEXT: sd $17, 16($sp) # 8-byte Folded Spill1257; MIPS64-NEXT: sd $16, 8($sp) # 8-byte Folded Spill1258; MIPS64-NEXT: move $16, $41259; MIPS64-NEXT: lui $17, 31260; MIPS64-NEXT: ori $1, $17, 645121261; MIPS64-NEXT: ld $2, 0($4)1262; MIPS64-NEXT: dsrl $3, $2, 461263; MIPS64-NEXT: dsrl $4, $2, 101264; MIPS64-NEXT: ori $18, $17, 655351265; MIPS64-NEXT: dsrl $5, $2, 281266; MIPS64-NEXT: and $5, $5, $181267; MIPS64-NEXT: and $6, $4, $181268; MIPS64-NEXT: and $1, $3, $11269; MIPS64-NEXT: dsll $2, $2, 81270; MIPS64-NEXT: dsrl $3, $2, 541271; MIPS64-NEXT: or $4, $3, $11272; MIPS64-NEXT: lbu $1, 8($16)1273; MIPS64-NEXT: or $1, $1, $21274; MIPS64-NEXT: jal arg_v4i181275; MIPS64-NEXT: and $7, $1, $181276; MIPS64-NEXT: daddiu $1, $zero, 2551277; MIPS64-NEXT: dsll $19, $1, 561278; MIPS64-NEXT: jal ret_v4i181279; MIPS64-NEXT: ori $17, $17, 652801280; MIPS64-NEXT: # kill: def $v0 killed $v0 def $v0_641281; MIPS64-NEXT: # kill: def $v1 killed $v1 def $v1_641282; MIPS64-NEXT: # kill: def $a0 killed $a0 def $a0_641283; MIPS64-NEXT: # kill: def $a1 killed $a1 def $a1_641284; MIPS64-NEXT: dsll $1, $2, 541285; MIPS64-NEXT: and $3, $3, $181286; MIPS64-NEXT: dsll $3, $3, 361287; MIPS64-NEXT: or $1, $1, $31288; MIPS64-NEXT: and $3, $4, $181289; MIPS64-NEXT: dsll $3, $3, 181290; MIPS64-NEXT: sb $5, 8($16)1291; MIPS64-NEXT: or $1, $1, $31292; MIPS64-NEXT: and $3, $5, $171293; MIPS64-NEXT: or $1, $1, $31294; MIPS64-NEXT: dsrl $1, $1, 81295; MIPS64-NEXT: dsll $2, $2, 461296; MIPS64-NEXT: and $2, $2, $191297; MIPS64-NEXT: or $1, $2, $11298; MIPS64-NEXT: sd $1, 0($16)1299; MIPS64-NEXT: ld $16, 8($sp) # 8-byte Folded Reload1300; MIPS64-NEXT: ld $17, 16($sp) # 8-byte Folded Reload1301; MIPS64-NEXT: ld $18, 24($sp) # 8-byte Folded Reload1302; MIPS64-NEXT: ld $19, 32($sp) # 8-byte Folded Reload1303; MIPS64-NEXT: ld $ra, 40($sp) # 8-byte Folded Reload1304; MIPS64-NEXT: jr $ra1305; MIPS64-NEXT: daddiu $sp, $sp, 481306;1307; MIPS32-LABEL: call_v4i18:1308; MIPS32: # %bb.0:1309; MIPS32-NEXT: addiu $sp, $sp, -401310; MIPS32-NEXT: sw $ra, 36($sp) # 4-byte Folded Spill1311; MIPS32-NEXT: sw $19, 32($sp) # 4-byte Folded Spill1312; MIPS32-NEXT: sw $18, 28($sp) # 4-byte Folded Spill1313; MIPS32-NEXT: sw $17, 24($sp) # 4-byte Folded Spill1314; MIPS32-NEXT: sw $16, 20($sp) # 4-byte Folded Spill1315; MIPS32-NEXT: move $16, $41316; MIPS32-NEXT: lw $1, 4($4)1317; MIPS32-NEXT: srl $2, $1, 241318; MIPS32-NEXT: lw $3, 0($4)1319; MIPS32-NEXT: sll $4, $3, 81320; MIPS32-NEXT: or $5, $4, $21321; MIPS32-NEXT: lbu $6, 8($16)1322; MIPS32-NEXT: sll $1, $1, 81323; MIPS32-NEXT: srl $5, $5, 41324; MIPS32-NEXT: or $6, $6, $11325; MIPS32-NEXT: lui $17, 31326; MIPS32-NEXT: ori $7, $17, 645121327; MIPS32-NEXT: srl $3, $3, 141328; MIPS32-NEXT: and $3, $3, $71329; MIPS32-NEXT: ori $8, $17, 655351330; MIPS32-NEXT: srl $4, $4, 221331; MIPS32-NEXT: or $4, $4, $31332; MIPS32-NEXT: and $7, $6, $81333; MIPS32-NEXT: and $5, $5, $81334; MIPS32-NEXT: sll $2, $2, 141335; MIPS32-NEXT: srl $1, $1, 181336; MIPS32-NEXT: or $1, $1, $21337; MIPS32-NEXT: jal arg_v4i181338; MIPS32-NEXT: and $6, $1, $81339; MIPS32-NEXT: ori $18, $17, 491521340; MIPS32-NEXT: ori $17, $17, 652801341; MIPS32-NEXT: lui $1, 631342; MIPS32-NEXT: jal ret_v4i181343; MIPS32-NEXT: ori $19, $1, 652801344; MIPS32-NEXT: lui $1, 652801345; MIPS32-NEXT: and $6, $5, $171346; MIPS32-NEXT: sll $7, $4, 181347; MIPS32-NEXT: or $6, $7, $61348; MIPS32-NEXT: srl $6, $6, 81349; MIPS32-NEXT: and $4, $4, $181350; MIPS32-NEXT: srl $4, $4, 141351; MIPS32-NEXT: sll $3, $3, 41352; MIPS32-NEXT: or $4, $3, $41353; MIPS32-NEXT: sll $4, $4, 241354; MIPS32-NEXT: or $4, $6, $41355; MIPS32-NEXT: sll $6, $2, 141356; MIPS32-NEXT: sb $5, 8($16)1357; MIPS32-NEXT: sw $4, 4($16)1358; MIPS32-NEXT: and $1, $6, $11359; MIPS32-NEXT: and $3, $3, $191360; MIPS32-NEXT: sll $2, $2, 221361; MIPS32-NEXT: or $2, $2, $31362; MIPS32-NEXT: srl $2, $2, 81363; MIPS32-NEXT: or $1, $1, $21364; MIPS32-NEXT: sw $1, 0($16)1365; MIPS32-NEXT: lw $16, 20($sp) # 4-byte Folded Reload1366; MIPS32-NEXT: lw $17, 24($sp) # 4-byte Folded Reload1367; MIPS32-NEXT: lw $18, 28($sp) # 4-byte Folded Reload1368; MIPS32-NEXT: lw $19, 32($sp) # 4-byte Folded Reload1369; MIPS32-NEXT: lw $ra, 36($sp) # 4-byte Folded Reload1370; MIPS32-NEXT: jr $ra1371; MIPS32-NEXT: addiu $sp, $sp, 401372 %v1 = load <4 x i18>, ptr %p1373 call void @arg_v4i18(<4 x i18> %v1)1374 %v2 = call <4 x i18> @ret_v4i18()1375 store <4 x i18> %v2, ptr %p1376 ret void1377}1378 1379define void @arg_v7i18(<7 x i18> %vec, ptr %p) {1380; MIPS64-LABEL: arg_v7i18:1381; MIPS64: # %bb.0:1382; MIPS64-NEXT: lui $1, 31383; MIPS64-NEXT: ori $2, $1, 655351384; MIPS64-NEXT: and $3, $8, $21385; MIPS64-NEXT: dsll $3, $3, 361386; MIPS64-NEXT: dsll $8, $7, 541387; MIPS64-NEXT: or $3, $8, $31388; MIPS64-NEXT: and $8, $9, $21389; MIPS64-NEXT: dsll $8, $8, 181390; MIPS64-NEXT: or $3, $3, $81391; MIPS64-NEXT: and $5, $5, $21392; MIPS64-NEXT: and $8, $10, $21393; MIPS64-NEXT: or $3, $3, $81394; MIPS64-NEXT: dsll $5, $5, 261395; MIPS64-NEXT: dsll $4, $4, 441396; MIPS64-NEXT: or $4, $4, $51397; MIPS64-NEXT: and $2, $6, $21398; MIPS64-NEXT: dsll $2, $2, 81399; MIPS64-NEXT: sd $3, 8($11)1400; MIPS64-NEXT: or $2, $4, $21401; MIPS64-NEXT: ori $1, $1, 645121402; MIPS64-NEXT: and $1, $7, $11403; MIPS64-NEXT: dsrl $1, $1, 101404; MIPS64-NEXT: or $1, $2, $11405; MIPS64-NEXT: daddiu $2, $zero, 11406; MIPS64-NEXT: dsll $2, $2, 621407; MIPS64-NEXT: daddiu $2, $2, -11408; MIPS64-NEXT: and $1, $1, $21409; MIPS64-NEXT: jr $ra1410; MIPS64-NEXT: sd $1, 0($11)1411;1412; MIPS32-LABEL: arg_v7i18:1413; MIPS32: # %bb.0:1414; MIPS32-NEXT: lui $1, 31415; MIPS32-NEXT: ori $2, $1, 655351416; MIPS32-NEXT: and $3, $6, $21417; MIPS32-NEXT: sll $3, $3, 81418; MIPS32-NEXT: ori $6, $1, 654721419; MIPS32-NEXT: and $6, $5, $61420; MIPS32-NEXT: srl $6, $6, 61421; MIPS32-NEXT: sll $5, $5, 261422; MIPS32-NEXT: sll $4, $4, 121423; MIPS32-NEXT: or $4, $4, $61424; MIPS32-NEXT: or $3, $5, $31425; MIPS32-NEXT: ori $5, $1, 645121426; MIPS32-NEXT: and $5, $7, $51427; MIPS32-NEXT: srl $5, $5, 101428; MIPS32-NEXT: lui $6, 163831429; MIPS32-NEXT: ori $6, $6, 655351430; MIPS32-NEXT: lw $8, 24($sp)1431; MIPS32-NEXT: lw $9, 16($sp)1432; MIPS32-NEXT: or $3, $3, $51433; MIPS32-NEXT: and $5, $9, $21434; MIPS32-NEXT: and $4, $4, $61435; MIPS32-NEXT: and $2, $8, $21436; MIPS32-NEXT: lw $6, 20($sp)1437; MIPS32-NEXT: sll $8, $6, 181438; MIPS32-NEXT: or $2, $8, $21439; MIPS32-NEXT: lw $8, 28($sp)1440; MIPS32-NEXT: sw $2, 12($8)1441; MIPS32-NEXT: sw $4, 0($8)1442; MIPS32-NEXT: sw $3, 4($8)1443; MIPS32-NEXT: sll $2, $5, 41444; MIPS32-NEXT: sll $3, $7, 221445; MIPS32-NEXT: or $2, $3, $21446; MIPS32-NEXT: ori $1, $1, 491521447; MIPS32-NEXT: and $1, $6, $11448; MIPS32-NEXT: srl $1, $1, 141449; MIPS32-NEXT: or $1, $2, $11450; MIPS32-NEXT: jr $ra1451; MIPS32-NEXT: sw $1, 8($8)1452 store <7 x i18> %vec, ptr %p1453 ret void1454}1455 1456define <7 x i18> @ret_v7i18(ptr %p) {1457; MIPS64-LABEL: ret_v7i18:1458; MIPS64: # %bb.0:1459; MIPS64-NEXT: ld $1, 0($5)1460; MIPS64-NEXT: sd $1, 0($4)1461; MIPS64-NEXT: ld $1, 8($5)1462; MIPS64-NEXT: jr $ra1463; MIPS64-NEXT: sd $1, 8($4)1464;1465; MIPS32-LABEL: ret_v7i18:1466; MIPS32: # %bb.0:1467; MIPS32-NEXT: lw $1, 0($5)1468; MIPS32-NEXT: sw $1, 0($4)1469; MIPS32-NEXT: lw $1, 4($5)1470; MIPS32-NEXT: sw $1, 4($4)1471; MIPS32-NEXT: lw $1, 12($5)1472; MIPS32-NEXT: sw $1, 12($4)1473; MIPS32-NEXT: lw $1, 8($5)1474; MIPS32-NEXT: jr $ra1475; MIPS32-NEXT: sw $1, 8($4)1476 %v = load <7 x i18>, ptr %p1477 ret <7 x i18> %v1478}1479 1480define void @call_v7i18(ptr %p) nounwind {1481; MIPS64-LABEL: call_v7i18:1482; MIPS64: # %bb.0:1483; MIPS64-NEXT: daddiu $sp, $sp, -321484; MIPS64-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill1485; MIPS64-NEXT: sd $16, 16($sp) # 8-byte Folded Spill1486; MIPS64-NEXT: move $16, $41487; MIPS64-NEXT: ld $1, 0($4)1488; MIPS64-NEXT: ld $2, 8($4)1489; MIPS64-NEXT: dsrl $3, $2, 181490; MIPS64-NEXT: dsrl $4, $2, 361491; MIPS64-NEXT: dsrl $6, $1, 81492; MIPS64-NEXT: dsrl $5, $1, 261493; MIPS64-NEXT: lui $7, 31494; MIPS64-NEXT: ori $7, $7, 655351495; MIPS64-NEXT: and $10, $2, $71496; MIPS64-NEXT: and $5, $5, $71497; MIPS64-NEXT: and $6, $6, $71498; MIPS64-NEXT: and $8, $4, $71499; MIPS64-NEXT: and $9, $3, $71500; MIPS64-NEXT: dsll $3, $1, 101501; MIPS64-NEXT: dsrl $2, $2, 541502; MIPS64-NEXT: or $2, $2, $31503; MIPS64-NEXT: and $7, $2, $71504; MIPS64-NEXT: jal arg_v7i181505; MIPS64-NEXT: dsrl $4, $1, 441506; MIPS64-NEXT: jal ret_v7i181507; MIPS64-NEXT: daddiu $4, $sp, 01508; MIPS64-NEXT: ld $1, 0($sp)1509; MIPS64-NEXT: sd $1, 0($16)1510; MIPS64-NEXT: ld $1, 8($sp)1511; MIPS64-NEXT: sd $1, 8($16)1512; MIPS64-NEXT: ld $16, 16($sp) # 8-byte Folded Reload1513; MIPS64-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload1514; MIPS64-NEXT: jr $ra1515; MIPS64-NEXT: daddiu $sp, $sp, 321516;1517; MIPS32-LABEL: call_v7i18:1518; MIPS32: # %bb.0:1519; MIPS32-NEXT: addiu $sp, $sp, -641520; MIPS32-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill1521; MIPS32-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill1522; MIPS32-NEXT: sw $16, 52($sp) # 4-byte Folded Spill1523; MIPS32-NEXT: move $fp, $sp1524; MIPS32-NEXT: addiu $1, $zero, -161525; MIPS32-NEXT: and $sp, $sp, $11526; MIPS32-NEXT: move $16, $41527; MIPS32-NEXT: lw $1, 8($4)1528; MIPS32-NEXT: sll $2, $1, 141529; MIPS32-NEXT: lw $3, 12($4)1530; MIPS32-NEXT: srl $4, $3, 181531; MIPS32-NEXT: or $2, $4, $21532; MIPS32-NEXT: srl $4, $1, 41533; MIPS32-NEXT: lui $5, 31534; MIPS32-NEXT: ori $7, $5, 655351535; MIPS32-NEXT: and $2, $2, $71536; MIPS32-NEXT: and $4, $4, $71537; MIPS32-NEXT: and $3, $3, $71538; MIPS32-NEXT: lw $8, 4($16)1539; MIPS32-NEXT: lw $9, 0($16)1540; MIPS32-NEXT: sll $5, $9, 61541; MIPS32-NEXT: srl $6, $8, 261542; MIPS32-NEXT: sw $3, 24($sp)1543; MIPS32-NEXT: sw $4, 16($sp)1544; MIPS32-NEXT: sw $2, 20($sp)1545; MIPS32-NEXT: or $2, $6, $51546; MIPS32-NEXT: srl $3, $8, 81547; MIPS32-NEXT: and $6, $3, $71548; MIPS32-NEXT: and $5, $2, $71549; MIPS32-NEXT: sll $2, $8, 101550; MIPS32-NEXT: srl $1, $1, 221551; MIPS32-NEXT: or $1, $1, $21552; MIPS32-NEXT: and $7, $1, $71553; MIPS32-NEXT: jal arg_v7i181554; MIPS32-NEXT: srl $4, $9, 121555; MIPS32-NEXT: jal ret_v7i181556; MIPS32-NEXT: addiu $4, $sp, 321557; MIPS32-NEXT: lw $1, 32($sp)1558; MIPS32-NEXT: sw $1, 0($16)1559; MIPS32-NEXT: lw $1, 36($sp)1560; MIPS32-NEXT: sw $1, 4($16)1561; MIPS32-NEXT: lw $1, 40($sp)1562; MIPS32-NEXT: sw $1, 8($16)1563; MIPS32-NEXT: lw $1, 44($sp)1564; MIPS32-NEXT: sw $1, 12($16)1565; MIPS32-NEXT: move $sp, $fp1566; MIPS32-NEXT: lw $16, 52($sp) # 4-byte Folded Reload1567; MIPS32-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload1568; MIPS32-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload1569; MIPS32-NEXT: jr $ra1570; MIPS32-NEXT: addiu $sp, $sp, 641571 %v1 = load <7 x i18>, ptr %p1572 call void @arg_v7i18(<7 x i18> %v1)1573 %v2 = call <7 x i18> @ret_v7i18()1574 store <7 x i18> %v2, ptr %p1575 ret void1576}1577 1578define void @arg_v2i128(<2 x i128> %vec, ptr %p) {1579; MIPS64-LABEL: arg_v2i128:1580; MIPS64: # %bb.0:1581; MIPS64-NEXT: sd $7, 24($8)1582; MIPS64-NEXT: sd $6, 16($8)1583; MIPS64-NEXT: sd $5, 8($8)1584; MIPS64-NEXT: jr $ra1585; MIPS64-NEXT: sd $4, 0($8)1586;1587; MIPS32-LABEL: arg_v2i128:1588; MIPS32: # %bb.0:1589; MIPS32-NEXT: lw $1, 16($sp)1590; MIPS32-NEXT: lw $2, 20($sp)1591; MIPS32-NEXT: lw $3, 24($sp)1592; MIPS32-NEXT: lw $8, 32($sp)1593; MIPS32-NEXT: lw $9, 28($sp)1594; MIPS32-NEXT: sw $9, 28($8)1595; MIPS32-NEXT: sw $3, 24($8)1596; MIPS32-NEXT: sw $2, 20($8)1597; MIPS32-NEXT: sw $1, 16($8)1598; MIPS32-NEXT: sw $7, 12($8)1599; MIPS32-NEXT: sw $6, 8($8)1600; MIPS32-NEXT: sw $5, 4($8)1601; MIPS32-NEXT: jr $ra1602; MIPS32-NEXT: sw $4, 0($8)1603 store <2 x i128> %vec, ptr %p1604 ret void1605}1606 1607define <2 x i128> @ret_v2i128(ptr %p) {1608; MIPS64-LABEL: ret_v2i128:1609; MIPS64: # %bb.0:1610; MIPS64-NEXT: ld $1, 24($5)1611; MIPS64-NEXT: sd $1, 24($4)1612; MIPS64-NEXT: ld $1, 16($5)1613; MIPS64-NEXT: sd $1, 16($4)1614; MIPS64-NEXT: ld $1, 8($5)1615; MIPS64-NEXT: sd $1, 8($4)1616; MIPS64-NEXT: ld $1, 0($5)1617; MIPS64-NEXT: jr $ra1618; MIPS64-NEXT: sd $1, 0($4)1619;1620; MIPS32-LABEL: ret_v2i128:1621; MIPS32: # %bb.0:1622; MIPS32-NEXT: lw $1, 12($5)1623; MIPS32-NEXT: lw $2, 16($5)1624; MIPS32-NEXT: lw $3, 20($5)1625; MIPS32-NEXT: lw $6, 24($5)1626; MIPS32-NEXT: lw $7, 28($5)1627; MIPS32-NEXT: sw $7, 28($4)1628; MIPS32-NEXT: sw $6, 24($4)1629; MIPS32-NEXT: sw $3, 20($4)1630; MIPS32-NEXT: sw $2, 16($4)1631; MIPS32-NEXT: sw $1, 12($4)1632; MIPS32-NEXT: lw $1, 8($5)1633; MIPS32-NEXT: sw $1, 8($4)1634; MIPS32-NEXT: lw $1, 4($5)1635; MIPS32-NEXT: sw $1, 4($4)1636; MIPS32-NEXT: lw $1, 0($5)1637; MIPS32-NEXT: jr $ra1638; MIPS32-NEXT: sw $1, 0($4)1639 %v = load <2 x i128>, ptr %p1640 ret <2 x i128> %v1641}1642 1643define void @call_v2i128(ptr %p) nounwind {1644; MIPS64-LABEL: call_v2i128:1645; MIPS64: # %bb.0:1646; MIPS64-NEXT: daddiu $sp, $sp, -641647; MIPS64-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill1648; MIPS64-NEXT: sd $fp, 48($sp) # 8-byte Folded Spill1649; MIPS64-NEXT: sd $16, 40($sp) # 8-byte Folded Spill1650; MIPS64-NEXT: move $fp, $sp1651; MIPS64-NEXT: daddiu $1, $zero, -321652; MIPS64-NEXT: move $16, $41653; MIPS64-NEXT: ld $7, 24($4)1654; MIPS64-NEXT: ld $6, 16($4)1655; MIPS64-NEXT: ld $5, 8($4)1656; MIPS64-NEXT: ld $4, 0($4)1657; MIPS64-NEXT: jal arg_v2i1281658; MIPS64-NEXT: and $sp, $sp, $11659; MIPS64-NEXT: jal ret_v2i1281660; MIPS64-NEXT: daddiu $4, $sp, 01661; MIPS64-NEXT: ld $1, 16($sp)1662; MIPS64-NEXT: sd $1, 16($16)1663; MIPS64-NEXT: ld $1, 24($sp)1664; MIPS64-NEXT: sd $1, 24($16)1665; MIPS64-NEXT: ld $1, 0($sp)1666; MIPS64-NEXT: sd $1, 0($16)1667; MIPS64-NEXT: ld $1, 8($sp)1668; MIPS64-NEXT: sd $1, 8($16)1669; MIPS64-NEXT: move $sp, $fp1670; MIPS64-NEXT: ld $16, 40($sp) # 8-byte Folded Reload1671; MIPS64-NEXT: ld $fp, 48($sp) # 8-byte Folded Reload1672; MIPS64-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload1673; MIPS64-NEXT: jr $ra1674; MIPS64-NEXT: daddiu $sp, $sp, 641675;1676; MIPS32-LABEL: call_v2i128:1677; MIPS32: # %bb.0:1678; MIPS32-NEXT: addiu $sp, $sp, -961679; MIPS32-NEXT: sw $ra, 92($sp) # 4-byte Folded Spill1680; MIPS32-NEXT: sw $fp, 88($sp) # 4-byte Folded Spill1681; MIPS32-NEXT: sw $16, 84($sp) # 4-byte Folded Spill1682; MIPS32-NEXT: move $fp, $sp1683; MIPS32-NEXT: addiu $1, $zero, -321684; MIPS32-NEXT: and $sp, $sp, $11685; MIPS32-NEXT: move $16, $41686; MIPS32-NEXT: lw $7, 12($4)1687; MIPS32-NEXT: lw $6, 8($4)1688; MIPS32-NEXT: lw $5, 4($4)1689; MIPS32-NEXT: lw $4, 0($4)1690; MIPS32-NEXT: lw $1, 16($16)1691; MIPS32-NEXT: lw $2, 20($16)1692; MIPS32-NEXT: lw $3, 24($16)1693; MIPS32-NEXT: lw $8, 28($16)1694; MIPS32-NEXT: sw $8, 28($sp)1695; MIPS32-NEXT: sw $3, 24($sp)1696; MIPS32-NEXT: sw $2, 20($sp)1697; MIPS32-NEXT: jal arg_v2i1281698; MIPS32-NEXT: sw $1, 16($sp)1699; MIPS32-NEXT: jal ret_v2i1281700; MIPS32-NEXT: addiu $4, $sp, 321701; MIPS32-NEXT: lw $1, 40($sp)1702; MIPS32-NEXT: lw $2, 52($sp)1703; MIPS32-NEXT: lw $3, 48($sp)1704; MIPS32-NEXT: lw $4, 60($sp)1705; MIPS32-NEXT: lw $5, 56($sp)1706; MIPS32-NEXT: sw $5, 24($16)1707; MIPS32-NEXT: sw $4, 28($16)1708; MIPS32-NEXT: sw $3, 16($16)1709; MIPS32-NEXT: sw $2, 20($16)1710; MIPS32-NEXT: sw $1, 8($16)1711; MIPS32-NEXT: lw $1, 44($sp)1712; MIPS32-NEXT: sw $1, 12($16)1713; MIPS32-NEXT: lw $1, 32($sp)1714; MIPS32-NEXT: sw $1, 0($16)1715; MIPS32-NEXT: lw $1, 36($sp)1716; MIPS32-NEXT: sw $1, 4($16)1717; MIPS32-NEXT: move $sp, $fp1718; MIPS32-NEXT: lw $16, 84($sp) # 4-byte Folded Reload1719; MIPS32-NEXT: lw $fp, 88($sp) # 4-byte Folded Reload1720; MIPS32-NEXT: lw $ra, 92($sp) # 4-byte Folded Reload1721; MIPS32-NEXT: jr $ra1722; MIPS32-NEXT: addiu $sp, $sp, 961723 %v1 = load <2 x i128>, ptr %p1724 call void @arg_v2i128(<2 x i128> %v1)1725 %v2 = call <2 x i128> @ret_v2i128()1726 store <2 x i128> %v2, ptr %p1727 ret void1728}1729 1730define void @arg_v3i128(<3 x i128> %vec, ptr %p) {1731; MIPS64-LABEL: arg_v3i128:1732; MIPS64: # %bb.0:1733; MIPS64-NEXT: sd $9, 40($10)1734; MIPS64-NEXT: sd $8, 32($10)1735; MIPS64-NEXT: sd $7, 24($10)1736; MIPS64-NEXT: sd $6, 16($10)1737; MIPS64-NEXT: sd $5, 8($10)1738; MIPS64-NEXT: jr $ra1739; MIPS64-NEXT: sd $4, 0($10)1740;1741; MIPS32-LABEL: arg_v3i128:1742; MIPS32: # %bb.0:1743; MIPS32-NEXT: lw $1, 16($sp)1744; MIPS32-NEXT: lw $2, 20($sp)1745; MIPS32-NEXT: lw $3, 24($sp)1746; MIPS32-NEXT: lw $8, 28($sp)1747; MIPS32-NEXT: lw $9, 32($sp)1748; MIPS32-NEXT: lw $10, 36($sp)1749; MIPS32-NEXT: lw $11, 40($sp)1750; MIPS32-NEXT: lw $12, 48($sp)1751; MIPS32-NEXT: lw $13, 44($sp)1752; MIPS32-NEXT: sw $13, 44($12)1753; MIPS32-NEXT: sw $11, 40($12)1754; MIPS32-NEXT: sw $10, 36($12)1755; MIPS32-NEXT: sw $9, 32($12)1756; MIPS32-NEXT: sw $8, 28($12)1757; MIPS32-NEXT: sw $3, 24($12)1758; MIPS32-NEXT: sw $2, 20($12)1759; MIPS32-NEXT: sw $1, 16($12)1760; MIPS32-NEXT: sw $7, 12($12)1761; MIPS32-NEXT: sw $6, 8($12)1762; MIPS32-NEXT: sw $5, 4($12)1763; MIPS32-NEXT: jr $ra1764; MIPS32-NEXT: sw $4, 0($12)1765 store <3 x i128> %vec, ptr %p1766 ret void1767}1768 1769define <3 x i128> @ret_v3i128(ptr %p) {1770; MIPS64-LABEL: ret_v3i128:1771; MIPS64: # %bb.0:1772; MIPS64-NEXT: ld $1, 24($5)1773; MIPS64-NEXT: ld $2, 32($5)1774; MIPS64-NEXT: ld $3, 40($5)1775; MIPS64-NEXT: sd $3, 40($4)1776; MIPS64-NEXT: sd $2, 32($4)1777; MIPS64-NEXT: sd $1, 24($4)1778; MIPS64-NEXT: ld $1, 16($5)1779; MIPS64-NEXT: sd $1, 16($4)1780; MIPS64-NEXT: ld $1, 8($5)1781; MIPS64-NEXT: sd $1, 8($4)1782; MIPS64-NEXT: ld $1, 0($5)1783; MIPS64-NEXT: jr $ra1784; MIPS64-NEXT: sd $1, 0($4)1785;1786; MIPS32-LABEL: ret_v3i128:1787; MIPS32: # %bb.0:1788; MIPS32-NEXT: lw $1, 28($5)1789; MIPS32-NEXT: lw $2, 32($5)1790; MIPS32-NEXT: lw $3, 36($5)1791; MIPS32-NEXT: lw $6, 40($5)1792; MIPS32-NEXT: lw $7, 12($5)1793; MIPS32-NEXT: lw $8, 16($5)1794; MIPS32-NEXT: lw $9, 20($5)1795; MIPS32-NEXT: lw $10, 24($5)1796; MIPS32-NEXT: lw $11, 44($5)1797; MIPS32-NEXT: sw $11, 44($4)1798; MIPS32-NEXT: sw $6, 40($4)1799; MIPS32-NEXT: sw $3, 36($4)1800; MIPS32-NEXT: sw $2, 32($4)1801; MIPS32-NEXT: sw $1, 28($4)1802; MIPS32-NEXT: sw $10, 24($4)1803; MIPS32-NEXT: sw $9, 20($4)1804; MIPS32-NEXT: sw $8, 16($4)1805; MIPS32-NEXT: sw $7, 12($4)1806; MIPS32-NEXT: lw $1, 8($5)1807; MIPS32-NEXT: sw $1, 8($4)1808; MIPS32-NEXT: lw $1, 4($5)1809; MIPS32-NEXT: sw $1, 4($4)1810; MIPS32-NEXT: lw $1, 0($5)1811; MIPS32-NEXT: jr $ra1812; MIPS32-NEXT: sw $1, 0($4)1813 %v = load <3 x i128>, ptr %p1814 ret <3 x i128> %v1815}1816 1817define void @call_v3i128(ptr %p) nounwind {1818; MIPS64-LABEL: call_v3i128:1819; MIPS64: # %bb.0:1820; MIPS64-NEXT: daddiu $sp, $sp, -1281821; MIPS64-NEXT: sd $ra, 120($sp) # 8-byte Folded Spill1822; MIPS64-NEXT: sd $fp, 112($sp) # 8-byte Folded Spill1823; MIPS64-NEXT: sd $16, 104($sp) # 8-byte Folded Spill1824; MIPS64-NEXT: move $fp, $sp1825; MIPS64-NEXT: daddiu $1, $zero, -641826; MIPS64-NEXT: move $16, $41827; MIPS64-NEXT: ld $9, 40($4)1828; MIPS64-NEXT: ld $8, 32($4)1829; MIPS64-NEXT: ld $7, 24($4)1830; MIPS64-NEXT: ld $6, 16($4)1831; MIPS64-NEXT: ld $5, 8($4)1832; MIPS64-NEXT: ld $4, 0($4)1833; MIPS64-NEXT: jal arg_v3i1281834; MIPS64-NEXT: and $sp, $sp, $11835; MIPS64-NEXT: jal ret_v3i1281836; MIPS64-NEXT: daddiu $4, $sp, 01837; MIPS64-NEXT: ld $1, 16($sp)1838; MIPS64-NEXT: ld $2, 40($sp)1839; MIPS64-NEXT: ld $3, 32($sp)1840; MIPS64-NEXT: sd $3, 32($16)1841; MIPS64-NEXT: sd $2, 40($16)1842; MIPS64-NEXT: sd $1, 16($16)1843; MIPS64-NEXT: ld $1, 24($sp)1844; MIPS64-NEXT: sd $1, 24($16)1845; MIPS64-NEXT: ld $1, 0($sp)1846; MIPS64-NEXT: sd $1, 0($16)1847; MIPS64-NEXT: ld $1, 8($sp)1848; MIPS64-NEXT: sd $1, 8($16)1849; MIPS64-NEXT: move $sp, $fp1850; MIPS64-NEXT: ld $16, 104($sp) # 8-byte Folded Reload1851; MIPS64-NEXT: ld $fp, 112($sp) # 8-byte Folded Reload1852; MIPS64-NEXT: ld $ra, 120($sp) # 8-byte Folded Reload1853; MIPS64-NEXT: jr $ra1854; MIPS64-NEXT: daddiu $sp, $sp, 1281855;1856; MIPS32-LABEL: call_v3i128:1857; MIPS32: # %bb.0:1858; MIPS32-NEXT: addiu $sp, $sp, -1921859; MIPS32-NEXT: sw $ra, 188($sp) # 4-byte Folded Spill1860; MIPS32-NEXT: sw $fp, 184($sp) # 4-byte Folded Spill1861; MIPS32-NEXT: sw $16, 180($sp) # 4-byte Folded Spill1862; MIPS32-NEXT: move $fp, $sp1863; MIPS32-NEXT: addiu $1, $zero, -641864; MIPS32-NEXT: and $sp, $sp, $11865; MIPS32-NEXT: move $16, $41866; MIPS32-NEXT: lw $7, 12($4)1867; MIPS32-NEXT: lw $6, 8($4)1868; MIPS32-NEXT: lw $5, 4($4)1869; MIPS32-NEXT: lw $4, 0($4)1870; MIPS32-NEXT: lw $1, 16($16)1871; MIPS32-NEXT: lw $2, 20($16)1872; MIPS32-NEXT: lw $3, 24($16)1873; MIPS32-NEXT: lw $8, 28($16)1874; MIPS32-NEXT: lw $9, 32($16)1875; MIPS32-NEXT: lw $10, 36($16)1876; MIPS32-NEXT: lw $11, 40($16)1877; MIPS32-NEXT: lw $12, 44($16)1878; MIPS32-NEXT: sw $12, 44($sp)1879; MIPS32-NEXT: sw $11, 40($sp)1880; MIPS32-NEXT: sw $10, 36($sp)1881; MIPS32-NEXT: sw $9, 32($sp)1882; MIPS32-NEXT: sw $8, 28($sp)1883; MIPS32-NEXT: sw $3, 24($sp)1884; MIPS32-NEXT: sw $2, 20($sp)1885; MIPS32-NEXT: jal arg_v3i1281886; MIPS32-NEXT: sw $1, 16($sp)1887; MIPS32-NEXT: jal ret_v3i1281888; MIPS32-NEXT: addiu $4, $sp, 641889; MIPS32-NEXT: lw $1, 88($sp)1890; MIPS32-NEXT: lw $2, 100($sp)1891; MIPS32-NEXT: lw $3, 96($sp)1892; MIPS32-NEXT: lw $4, 108($sp)1893; MIPS32-NEXT: lw $5, 64($sp)1894; MIPS32-NEXT: lw $6, 84($sp)1895; MIPS32-NEXT: lw $7, 80($sp)1896; MIPS32-NEXT: lw $8, 92($sp)1897; MIPS32-NEXT: lw $9, 104($sp)1898; MIPS32-NEXT: sw $9, 40($16)1899; MIPS32-NEXT: sw $4, 44($16)1900; MIPS32-NEXT: sw $3, 32($16)1901; MIPS32-NEXT: sw $2, 36($16)1902; MIPS32-NEXT: sw $1, 24($16)1903; MIPS32-NEXT: sw $8, 28($16)1904; MIPS32-NEXT: sw $7, 16($16)1905; MIPS32-NEXT: sw $6, 20($16)1906; MIPS32-NEXT: sw $5, 0($16)1907; MIPS32-NEXT: lw $1, 68($sp)1908; MIPS32-NEXT: sw $1, 4($16)1909; MIPS32-NEXT: lw $1, 72($sp)1910; MIPS32-NEXT: sw $1, 8($16)1911; MIPS32-NEXT: lw $1, 76($sp)1912; MIPS32-NEXT: sw $1, 12($16)1913; MIPS32-NEXT: move $sp, $fp1914; MIPS32-NEXT: lw $16, 180($sp) # 4-byte Folded Reload1915; MIPS32-NEXT: lw $fp, 184($sp) # 4-byte Folded Reload1916; MIPS32-NEXT: lw $ra, 188($sp) # 4-byte Folded Reload1917; MIPS32-NEXT: jr $ra1918; MIPS32-NEXT: addiu $sp, $sp, 1921919 %v1 = load <3 x i128>, ptr %p1920 call void @arg_v3i128(<3 x i128> %v1)1921 %v2 = call <3 x i128> @ret_v3i128()1922 store <3 x i128> %v2, ptr %p1923 ret void1924}1925