1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2; RUN: llc -mtriple=mips < %s | FileCheck %s -check-prefix=SOFT-FLOAT-32 3; RUN: llc -mtriple=mips -mcpu mips32r2 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-32R2 4; RUN: llc -mtriple=mips64 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-64 5; RUN: llc -mtriple=mips64 -mcpu mips64r2 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-64R2 6 7define float @fmuladd_intrinsic_f32(float %a, float %b, float %c) #0 { 8; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f32: 9; SOFT-FLOAT-32: # %bb.0: 10; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -24 11; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 24 12; SOFT-FLOAT-32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 13; SOFT-FLOAT-32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill 14; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 15; SOFT-FLOAT-32-NEXT: .cfi_offset 16, -8 16; SOFT-FLOAT-32-NEXT: jal __mulsf3 17; SOFT-FLOAT-32-NEXT: move $16, $6 18; SOFT-FLOAT-32-NEXT: move $4, $2 19; SOFT-FLOAT-32-NEXT: jal __addsf3 20; SOFT-FLOAT-32-NEXT: move $5, $16 21; SOFT-FLOAT-32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload 22; SOFT-FLOAT-32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 23; SOFT-FLOAT-32-NEXT: jr $ra 24; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 24 25; 26; SOFT-FLOAT-32R2-LABEL: fmuladd_intrinsic_f32: 27; SOFT-FLOAT-32R2: # %bb.0: 28; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -24 29; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 24 30; SOFT-FLOAT-32R2-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 31; SOFT-FLOAT-32R2-NEXT: sw $16, 16($sp) # 4-byte Folded Spill 32; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 33; SOFT-FLOAT-32R2-NEXT: .cfi_offset 16, -8 34; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 35; SOFT-FLOAT-32R2-NEXT: move $16, $6 36; SOFT-FLOAT-32R2-NEXT: move $4, $2 37; SOFT-FLOAT-32R2-NEXT: jal __addsf3 38; SOFT-FLOAT-32R2-NEXT: move $5, $16 39; SOFT-FLOAT-32R2-NEXT: lw $16, 16($sp) # 4-byte Folded Reload 40; SOFT-FLOAT-32R2-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 41; SOFT-FLOAT-32R2-NEXT: jr $ra 42; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 24 43; 44; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f32: 45; SOFT-FLOAT-64: # %bb.0: 46; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -16 47; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 48; SOFT-FLOAT-64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 49; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 50; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 51; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -16 52; SOFT-FLOAT-64-NEXT: move $16, $6 53; SOFT-FLOAT-64-NEXT: sll $4, $4, 0 54; SOFT-FLOAT-64-NEXT: jal __mulsf3 55; SOFT-FLOAT-64-NEXT: sll $5, $5, 0 56; SOFT-FLOAT-64-NEXT: sll $4, $2, 0 57; SOFT-FLOAT-64-NEXT: jal __addsf3 58; SOFT-FLOAT-64-NEXT: sll $5, $16, 0 59; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 60; SOFT-FLOAT-64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 61; SOFT-FLOAT-64-NEXT: jr $ra 62; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 16 63; 64; SOFT-FLOAT-64R2-LABEL: fmuladd_intrinsic_f32: 65; SOFT-FLOAT-64R2: # %bb.0: 66; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -16 67; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 16 68; SOFT-FLOAT-64R2-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 69; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 70; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 71; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -16 72; SOFT-FLOAT-64R2-NEXT: move $16, $6 73; SOFT-FLOAT-64R2-NEXT: sll $4, $4, 0 74; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 75; SOFT-FLOAT-64R2-NEXT: sll $5, $5, 0 76; SOFT-FLOAT-64R2-NEXT: sll $4, $2, 0 77; SOFT-FLOAT-64R2-NEXT: jal __addsf3 78; SOFT-FLOAT-64R2-NEXT: sll $5, $16, 0 79; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 80; SOFT-FLOAT-64R2-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 81; SOFT-FLOAT-64R2-NEXT: jr $ra 82; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 16 83 %result = call float @llvm.fmuladd.f32(float %a, float %b, float %c) 84 ret float %result 85} 86 87define double @fmuladd_intrinsic_f64(double %a, double %b, double %c) #0 { 88; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f64: 89; SOFT-FLOAT-32: # %bb.0: 90; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -24 91; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 24 92; SOFT-FLOAT-32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 93; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 94; SOFT-FLOAT-32-NEXT: jal __muldf3 95; SOFT-FLOAT-32-NEXT: nop 96; SOFT-FLOAT-32-NEXT: move $4, $2 97; SOFT-FLOAT-32-NEXT: lw $6, 40($sp) 98; SOFT-FLOAT-32-NEXT: lw $7, 44($sp) 99; SOFT-FLOAT-32-NEXT: jal __adddf3 100; SOFT-FLOAT-32-NEXT: move $5, $3 101; SOFT-FLOAT-32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 102; SOFT-FLOAT-32-NEXT: jr $ra 103; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 24 104; 105; SOFT-FLOAT-32R2-LABEL: fmuladd_intrinsic_f64: 106; SOFT-FLOAT-32R2: # %bb.0: 107; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -24 108; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 24 109; SOFT-FLOAT-32R2-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 110; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 111; SOFT-FLOAT-32R2-NEXT: jal __muldf3 112; SOFT-FLOAT-32R2-NEXT: nop 113; SOFT-FLOAT-32R2-NEXT: move $4, $2 114; SOFT-FLOAT-32R2-NEXT: lw $6, 40($sp) 115; SOFT-FLOAT-32R2-NEXT: lw $7, 44($sp) 116; SOFT-FLOAT-32R2-NEXT: jal __adddf3 117; SOFT-FLOAT-32R2-NEXT: move $5, $3 118; SOFT-FLOAT-32R2-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 119; SOFT-FLOAT-32R2-NEXT: jr $ra 120; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 24 121; 122; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f64: 123; SOFT-FLOAT-64: # %bb.0: 124; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -16 125; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 126; SOFT-FLOAT-64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 127; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 128; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 129; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -16 130; SOFT-FLOAT-64-NEXT: jal __muldf3 131; SOFT-FLOAT-64-NEXT: move $16, $6 132; SOFT-FLOAT-64-NEXT: move $4, $2 133; SOFT-FLOAT-64-NEXT: jal __adddf3 134; SOFT-FLOAT-64-NEXT: move $5, $16 135; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 136; SOFT-FLOAT-64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 137; SOFT-FLOAT-64-NEXT: jr $ra 138; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 16 139; 140; SOFT-FLOAT-64R2-LABEL: fmuladd_intrinsic_f64: 141; SOFT-FLOAT-64R2: # %bb.0: 142; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -16 143; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 16 144; SOFT-FLOAT-64R2-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 145; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 146; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 147; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -16 148; SOFT-FLOAT-64R2-NEXT: jal __muldf3 149; SOFT-FLOAT-64R2-NEXT: move $16, $6 150; SOFT-FLOAT-64R2-NEXT: move $4, $2 151; SOFT-FLOAT-64R2-NEXT: jal __adddf3 152; SOFT-FLOAT-64R2-NEXT: move $5, $16 153; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 154; SOFT-FLOAT-64R2-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 155; SOFT-FLOAT-64R2-NEXT: jr $ra 156; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 16 157 %result = call double @llvm.fmuladd.f64(double %a, double %b, double %c) 158 ret double %result 159} 160 161define float @fmuladd_contract_f32(float %a, float %b, float %c) #0 { 162; SOFT-FLOAT-32-LABEL: fmuladd_contract_f32: 163; SOFT-FLOAT-32: # %bb.0: 164; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -24 165; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 24 166; SOFT-FLOAT-32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 167; SOFT-FLOAT-32-NEXT: sw $16, 16($sp) # 4-byte Folded Spill 168; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 169; SOFT-FLOAT-32-NEXT: .cfi_offset 16, -8 170; SOFT-FLOAT-32-NEXT: jal __mulsf3 171; SOFT-FLOAT-32-NEXT: move $16, $6 172; SOFT-FLOAT-32-NEXT: move $4, $2 173; SOFT-FLOAT-32-NEXT: jal __addsf3 174; SOFT-FLOAT-32-NEXT: move $5, $16 175; SOFT-FLOAT-32-NEXT: lw $16, 16($sp) # 4-byte Folded Reload 176; SOFT-FLOAT-32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 177; SOFT-FLOAT-32-NEXT: jr $ra 178; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 24 179; 180; SOFT-FLOAT-32R2-LABEL: fmuladd_contract_f32: 181; SOFT-FLOAT-32R2: # %bb.0: 182; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -24 183; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 24 184; SOFT-FLOAT-32R2-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 185; SOFT-FLOAT-32R2-NEXT: sw $16, 16($sp) # 4-byte Folded Spill 186; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 187; SOFT-FLOAT-32R2-NEXT: .cfi_offset 16, -8 188; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 189; SOFT-FLOAT-32R2-NEXT: move $16, $6 190; SOFT-FLOAT-32R2-NEXT: move $4, $2 191; SOFT-FLOAT-32R2-NEXT: jal __addsf3 192; SOFT-FLOAT-32R2-NEXT: move $5, $16 193; SOFT-FLOAT-32R2-NEXT: lw $16, 16($sp) # 4-byte Folded Reload 194; SOFT-FLOAT-32R2-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 195; SOFT-FLOAT-32R2-NEXT: jr $ra 196; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 24 197; 198; SOFT-FLOAT-64-LABEL: fmuladd_contract_f32: 199; SOFT-FLOAT-64: # %bb.0: 200; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -16 201; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 202; SOFT-FLOAT-64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 203; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 204; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 205; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -16 206; SOFT-FLOAT-64-NEXT: move $16, $6 207; SOFT-FLOAT-64-NEXT: sll $4, $4, 0 208; SOFT-FLOAT-64-NEXT: jal __mulsf3 209; SOFT-FLOAT-64-NEXT: sll $5, $5, 0 210; SOFT-FLOAT-64-NEXT: sll $4, $2, 0 211; SOFT-FLOAT-64-NEXT: jal __addsf3 212; SOFT-FLOAT-64-NEXT: sll $5, $16, 0 213; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 214; SOFT-FLOAT-64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 215; SOFT-FLOAT-64-NEXT: jr $ra 216; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 16 217; 218; SOFT-FLOAT-64R2-LABEL: fmuladd_contract_f32: 219; SOFT-FLOAT-64R2: # %bb.0: 220; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -16 221; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 16 222; SOFT-FLOAT-64R2-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 223; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 224; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 225; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -16 226; SOFT-FLOAT-64R2-NEXT: move $16, $6 227; SOFT-FLOAT-64R2-NEXT: sll $4, $4, 0 228; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 229; SOFT-FLOAT-64R2-NEXT: sll $5, $5, 0 230; SOFT-FLOAT-64R2-NEXT: sll $4, $2, 0 231; SOFT-FLOAT-64R2-NEXT: jal __addsf3 232; SOFT-FLOAT-64R2-NEXT: sll $5, $16, 0 233; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 234; SOFT-FLOAT-64R2-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 235; SOFT-FLOAT-64R2-NEXT: jr $ra 236; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 16 237 %product = fmul contract float %a, %b 238 %result = fadd contract float %product, %c 239 ret float %result 240} 241 242define double @fmuladd_contract_f64(double %a, double %b, double %c) #0 { 243; SOFT-FLOAT-32-LABEL: fmuladd_contract_f64: 244; SOFT-FLOAT-32: # %bb.0: 245; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -24 246; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 24 247; SOFT-FLOAT-32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 248; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 249; SOFT-FLOAT-32-NEXT: jal __muldf3 250; SOFT-FLOAT-32-NEXT: nop 251; SOFT-FLOAT-32-NEXT: move $4, $2 252; SOFT-FLOAT-32-NEXT: lw $6, 40($sp) 253; SOFT-FLOAT-32-NEXT: lw $7, 44($sp) 254; SOFT-FLOAT-32-NEXT: jal __adddf3 255; SOFT-FLOAT-32-NEXT: move $5, $3 256; SOFT-FLOAT-32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 257; SOFT-FLOAT-32-NEXT: jr $ra 258; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 24 259; 260; SOFT-FLOAT-32R2-LABEL: fmuladd_contract_f64: 261; SOFT-FLOAT-32R2: # %bb.0: 262; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -24 263; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 24 264; SOFT-FLOAT-32R2-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill 265; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 266; SOFT-FLOAT-32R2-NEXT: jal __muldf3 267; SOFT-FLOAT-32R2-NEXT: nop 268; SOFT-FLOAT-32R2-NEXT: move $4, $2 269; SOFT-FLOAT-32R2-NEXT: lw $6, 40($sp) 270; SOFT-FLOAT-32R2-NEXT: lw $7, 44($sp) 271; SOFT-FLOAT-32R2-NEXT: jal __adddf3 272; SOFT-FLOAT-32R2-NEXT: move $5, $3 273; SOFT-FLOAT-32R2-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload 274; SOFT-FLOAT-32R2-NEXT: jr $ra 275; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 24 276; 277; SOFT-FLOAT-64-LABEL: fmuladd_contract_f64: 278; SOFT-FLOAT-64: # %bb.0: 279; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -16 280; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 281; SOFT-FLOAT-64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 282; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 283; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 284; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -16 285; SOFT-FLOAT-64-NEXT: jal __muldf3 286; SOFT-FLOAT-64-NEXT: move $16, $6 287; SOFT-FLOAT-64-NEXT: move $4, $2 288; SOFT-FLOAT-64-NEXT: jal __adddf3 289; SOFT-FLOAT-64-NEXT: move $5, $16 290; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 291; SOFT-FLOAT-64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 292; SOFT-FLOAT-64-NEXT: jr $ra 293; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 16 294; 295; SOFT-FLOAT-64R2-LABEL: fmuladd_contract_f64: 296; SOFT-FLOAT-64R2: # %bb.0: 297; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -16 298; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 16 299; SOFT-FLOAT-64R2-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 300; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 301; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 302; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -16 303; SOFT-FLOAT-64R2-NEXT: jal __muldf3 304; SOFT-FLOAT-64R2-NEXT: move $16, $6 305; SOFT-FLOAT-64R2-NEXT: move $4, $2 306; SOFT-FLOAT-64R2-NEXT: jal __adddf3 307; SOFT-FLOAT-64R2-NEXT: move $5, $16 308; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 309; SOFT-FLOAT-64R2-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 310; SOFT-FLOAT-64R2-NEXT: jr $ra 311; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 16 312 %product = fmul contract double %a, %b 313 %result = fadd contract double %product, %c 314 ret double %result 315} 316 317define <4 x float> @fmuladd_contract_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) #0 { 318; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f32: 319; SOFT-FLOAT-32: # %bb.0: 320; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -48 321; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 48 322; SOFT-FLOAT-32-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill 323; SOFT-FLOAT-32-NEXT: sw $21, 40($sp) # 4-byte Folded Spill 324; SOFT-FLOAT-32-NEXT: sw $20, 36($sp) # 4-byte Folded Spill 325; SOFT-FLOAT-32-NEXT: sw $19, 32($sp) # 4-byte Folded Spill 326; SOFT-FLOAT-32-NEXT: sw $18, 28($sp) # 4-byte Folded Spill 327; SOFT-FLOAT-32-NEXT: sw $17, 24($sp) # 4-byte Folded Spill 328; SOFT-FLOAT-32-NEXT: sw $16, 20($sp) # 4-byte Folded Spill 329; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 330; SOFT-FLOAT-32-NEXT: .cfi_offset 21, -8 331; SOFT-FLOAT-32-NEXT: .cfi_offset 20, -12 332; SOFT-FLOAT-32-NEXT: .cfi_offset 19, -16 333; SOFT-FLOAT-32-NEXT: .cfi_offset 18, -20 334; SOFT-FLOAT-32-NEXT: .cfi_offset 17, -24 335; SOFT-FLOAT-32-NEXT: .cfi_offset 16, -28 336; SOFT-FLOAT-32-NEXT: move $17, $7 337; SOFT-FLOAT-32-NEXT: move $16, $4 338; SOFT-FLOAT-32-NEXT: lw $4, 64($sp) 339; SOFT-FLOAT-32-NEXT: lw $5, 80($sp) 340; SOFT-FLOAT-32-NEXT: jal __mulsf3 341; SOFT-FLOAT-32-NEXT: move $18, $6 342; SOFT-FLOAT-32-NEXT: lw $5, 96($sp) 343; SOFT-FLOAT-32-NEXT: jal __addsf3 344; SOFT-FLOAT-32-NEXT: move $4, $2 345; SOFT-FLOAT-32-NEXT: lw $4, 68($sp) 346; SOFT-FLOAT-32-NEXT: lw $5, 84($sp) 347; SOFT-FLOAT-32-NEXT: jal __mulsf3 348; SOFT-FLOAT-32-NEXT: move $19, $2 349; SOFT-FLOAT-32-NEXT: lw $5, 100($sp) 350; SOFT-FLOAT-32-NEXT: jal __addsf3 351; SOFT-FLOAT-32-NEXT: move $4, $2 352; SOFT-FLOAT-32-NEXT: move $20, $2 353; SOFT-FLOAT-32-NEXT: lw $5, 76($sp) 354; SOFT-FLOAT-32-NEXT: jal __mulsf3 355; SOFT-FLOAT-32-NEXT: move $4, $17 356; SOFT-FLOAT-32-NEXT: move $4, $2 357; SOFT-FLOAT-32-NEXT: lw $17, 88($sp) 358; SOFT-FLOAT-32-NEXT: lw $21, 72($sp) 359; SOFT-FLOAT-32-NEXT: lw $5, 92($sp) 360; SOFT-FLOAT-32-NEXT: sw $20, 12($16) 361; SOFT-FLOAT-32-NEXT: jal __addsf3 362; SOFT-FLOAT-32-NEXT: sw $19, 8($16) 363; SOFT-FLOAT-32-NEXT: sw $2, 4($16) 364; SOFT-FLOAT-32-NEXT: move $4, $18 365; SOFT-FLOAT-32-NEXT: jal __mulsf3 366; SOFT-FLOAT-32-NEXT: move $5, $21 367; SOFT-FLOAT-32-NEXT: move $4, $2 368; SOFT-FLOAT-32-NEXT: jal __addsf3 369; SOFT-FLOAT-32-NEXT: move $5, $17 370; SOFT-FLOAT-32-NEXT: sw $2, 0($16) 371; SOFT-FLOAT-32-NEXT: lw $16, 20($sp) # 4-byte Folded Reload 372; SOFT-FLOAT-32-NEXT: lw $17, 24($sp) # 4-byte Folded Reload 373; SOFT-FLOAT-32-NEXT: lw $18, 28($sp) # 4-byte Folded Reload 374; SOFT-FLOAT-32-NEXT: lw $19, 32($sp) # 4-byte Folded Reload 375; SOFT-FLOAT-32-NEXT: lw $20, 36($sp) # 4-byte Folded Reload 376; SOFT-FLOAT-32-NEXT: lw $21, 40($sp) # 4-byte Folded Reload 377; SOFT-FLOAT-32-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload 378; SOFT-FLOAT-32-NEXT: jr $ra 379; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 48 380; 381; SOFT-FLOAT-32R2-LABEL: fmuladd_contract_v4f32: 382; SOFT-FLOAT-32R2: # %bb.0: 383; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -48 384; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 48 385; SOFT-FLOAT-32R2-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill 386; SOFT-FLOAT-32R2-NEXT: sw $21, 40($sp) # 4-byte Folded Spill 387; SOFT-FLOAT-32R2-NEXT: sw $20, 36($sp) # 4-byte Folded Spill 388; SOFT-FLOAT-32R2-NEXT: sw $19, 32($sp) # 4-byte Folded Spill 389; SOFT-FLOAT-32R2-NEXT: sw $18, 28($sp) # 4-byte Folded Spill 390; SOFT-FLOAT-32R2-NEXT: sw $17, 24($sp) # 4-byte Folded Spill 391; SOFT-FLOAT-32R2-NEXT: sw $16, 20($sp) # 4-byte Folded Spill 392; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 393; SOFT-FLOAT-32R2-NEXT: .cfi_offset 21, -8 394; SOFT-FLOAT-32R2-NEXT: .cfi_offset 20, -12 395; SOFT-FLOAT-32R2-NEXT: .cfi_offset 19, -16 396; SOFT-FLOAT-32R2-NEXT: .cfi_offset 18, -20 397; SOFT-FLOAT-32R2-NEXT: .cfi_offset 17, -24 398; SOFT-FLOAT-32R2-NEXT: .cfi_offset 16, -28 399; SOFT-FLOAT-32R2-NEXT: move $17, $7 400; SOFT-FLOAT-32R2-NEXT: move $16, $4 401; SOFT-FLOAT-32R2-NEXT: lw $4, 64($sp) 402; SOFT-FLOAT-32R2-NEXT: lw $5, 80($sp) 403; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 404; SOFT-FLOAT-32R2-NEXT: move $18, $6 405; SOFT-FLOAT-32R2-NEXT: lw $5, 96($sp) 406; SOFT-FLOAT-32R2-NEXT: jal __addsf3 407; SOFT-FLOAT-32R2-NEXT: move $4, $2 408; SOFT-FLOAT-32R2-NEXT: lw $4, 68($sp) 409; SOFT-FLOAT-32R2-NEXT: lw $5, 84($sp) 410; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 411; SOFT-FLOAT-32R2-NEXT: move $19, $2 412; SOFT-FLOAT-32R2-NEXT: lw $5, 100($sp) 413; SOFT-FLOAT-32R2-NEXT: jal __addsf3 414; SOFT-FLOAT-32R2-NEXT: move $4, $2 415; SOFT-FLOAT-32R2-NEXT: move $20, $2 416; SOFT-FLOAT-32R2-NEXT: lw $5, 76($sp) 417; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 418; SOFT-FLOAT-32R2-NEXT: move $4, $17 419; SOFT-FLOAT-32R2-NEXT: move $4, $2 420; SOFT-FLOAT-32R2-NEXT: lw $17, 88($sp) 421; SOFT-FLOAT-32R2-NEXT: lw $21, 72($sp) 422; SOFT-FLOAT-32R2-NEXT: lw $5, 92($sp) 423; SOFT-FLOAT-32R2-NEXT: sw $20, 12($16) 424; SOFT-FLOAT-32R2-NEXT: jal __addsf3 425; SOFT-FLOAT-32R2-NEXT: sw $19, 8($16) 426; SOFT-FLOAT-32R2-NEXT: sw $2, 4($16) 427; SOFT-FLOAT-32R2-NEXT: move $4, $18 428; SOFT-FLOAT-32R2-NEXT: jal __mulsf3 429; SOFT-FLOAT-32R2-NEXT: move $5, $21 430; SOFT-FLOAT-32R2-NEXT: move $4, $2 431; SOFT-FLOAT-32R2-NEXT: jal __addsf3 432; SOFT-FLOAT-32R2-NEXT: move $5, $17 433; SOFT-FLOAT-32R2-NEXT: sw $2, 0($16) 434; SOFT-FLOAT-32R2-NEXT: lw $16, 20($sp) # 4-byte Folded Reload 435; SOFT-FLOAT-32R2-NEXT: lw $17, 24($sp) # 4-byte Folded Reload 436; SOFT-FLOAT-32R2-NEXT: lw $18, 28($sp) # 4-byte Folded Reload 437; SOFT-FLOAT-32R2-NEXT: lw $19, 32($sp) # 4-byte Folded Reload 438; SOFT-FLOAT-32R2-NEXT: lw $20, 36($sp) # 4-byte Folded Reload 439; SOFT-FLOAT-32R2-NEXT: lw $21, 40($sp) # 4-byte Folded Reload 440; SOFT-FLOAT-32R2-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload 441; SOFT-FLOAT-32R2-NEXT: jr $ra 442; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 48 443; 444; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f32: 445; SOFT-FLOAT-64: # %bb.0: 446; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -64 447; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 64 448; SOFT-FLOAT-64-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill 449; SOFT-FLOAT-64-NEXT: sd $22, 48($sp) # 8-byte Folded Spill 450; SOFT-FLOAT-64-NEXT: sd $21, 40($sp) # 8-byte Folded Spill 451; SOFT-FLOAT-64-NEXT: sd $20, 32($sp) # 8-byte Folded Spill 452; SOFT-FLOAT-64-NEXT: sd $19, 24($sp) # 8-byte Folded Spill 453; SOFT-FLOAT-64-NEXT: sd $18, 16($sp) # 8-byte Folded Spill 454; SOFT-FLOAT-64-NEXT: sd $17, 8($sp) # 8-byte Folded Spill 455; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 456; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 457; SOFT-FLOAT-64-NEXT: .cfi_offset 22, -16 458; SOFT-FLOAT-64-NEXT: .cfi_offset 21, -24 459; SOFT-FLOAT-64-NEXT: .cfi_offset 20, -32 460; SOFT-FLOAT-64-NEXT: .cfi_offset 19, -40 461; SOFT-FLOAT-64-NEXT: .cfi_offset 18, -48 462; SOFT-FLOAT-64-NEXT: .cfi_offset 17, -56 463; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -64 464; SOFT-FLOAT-64-NEXT: move $16, $9 465; SOFT-FLOAT-64-NEXT: move $17, $8 466; SOFT-FLOAT-64-NEXT: move $18, $7 467; SOFT-FLOAT-64-NEXT: move $19, $6 468; SOFT-FLOAT-64-NEXT: move $20, $5 469; SOFT-FLOAT-64-NEXT: move $21, $4 470; SOFT-FLOAT-64-NEXT: sll $4, $4, 0 471; SOFT-FLOAT-64-NEXT: jal __mulsf3 472; SOFT-FLOAT-64-NEXT: sll $5, $6, 0 473; SOFT-FLOAT-64-NEXT: move $22, $2 474; SOFT-FLOAT-64-NEXT: dsra $4, $21, 32 475; SOFT-FLOAT-64-NEXT: jal __mulsf3 476; SOFT-FLOAT-64-NEXT: dsra $5, $19, 32 477; SOFT-FLOAT-64-NEXT: sll $4, $2, 0 478; SOFT-FLOAT-64-NEXT: jal __addsf3 479; SOFT-FLOAT-64-NEXT: dsra $5, $17, 32 480; SOFT-FLOAT-64-NEXT: # kill: def $v0 killed $v0 def $v0_64 481; SOFT-FLOAT-64-NEXT: sll $4, $22, 0 482; SOFT-FLOAT-64-NEXT: sll $5, $17, 0 483; SOFT-FLOAT-64-NEXT: jal __addsf3 484; SOFT-FLOAT-64-NEXT: dsll $17, $2, 32 485; SOFT-FLOAT-64-NEXT: dsll $1, $2, 32 486; SOFT-FLOAT-64-NEXT: dsrl $1, $1, 32 487; SOFT-FLOAT-64-NEXT: sll $4, $20, 0 488; SOFT-FLOAT-64-NEXT: sll $5, $18, 0 489; SOFT-FLOAT-64-NEXT: jal __mulsf3 490; SOFT-FLOAT-64-NEXT: or $17, $1, $17 491; SOFT-FLOAT-64-NEXT: move $19, $2 492; SOFT-FLOAT-64-NEXT: dsra $4, $20, 32 493; SOFT-FLOAT-64-NEXT: jal __mulsf3 494; SOFT-FLOAT-64-NEXT: dsra $5, $18, 32 495; SOFT-FLOAT-64-NEXT: sll $4, $2, 0 496; SOFT-FLOAT-64-NEXT: jal __addsf3 497; SOFT-FLOAT-64-NEXT: dsra $5, $16, 32 498; SOFT-FLOAT-64-NEXT: # kill: def $v0 killed $v0 def $v0_64 499; SOFT-FLOAT-64-NEXT: dsll $18, $2, 32 500; SOFT-FLOAT-64-NEXT: sll $4, $19, 0 501; SOFT-FLOAT-64-NEXT: jal __addsf3 502; SOFT-FLOAT-64-NEXT: sll $5, $16, 0 503; SOFT-FLOAT-64-NEXT: dsll $1, $2, 32 504; SOFT-FLOAT-64-NEXT: dsrl $1, $1, 32 505; SOFT-FLOAT-64-NEXT: or $3, $1, $18 506; SOFT-FLOAT-64-NEXT: move $2, $17 507; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 508; SOFT-FLOAT-64-NEXT: ld $17, 8($sp) # 8-byte Folded Reload 509; SOFT-FLOAT-64-NEXT: ld $18, 16($sp) # 8-byte Folded Reload 510; SOFT-FLOAT-64-NEXT: ld $19, 24($sp) # 8-byte Folded Reload 511; SOFT-FLOAT-64-NEXT: ld $20, 32($sp) # 8-byte Folded Reload 512; SOFT-FLOAT-64-NEXT: ld $21, 40($sp) # 8-byte Folded Reload 513; SOFT-FLOAT-64-NEXT: ld $22, 48($sp) # 8-byte Folded Reload 514; SOFT-FLOAT-64-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload 515; SOFT-FLOAT-64-NEXT: jr $ra 516; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 64 517; 518; SOFT-FLOAT-64R2-LABEL: fmuladd_contract_v4f32: 519; SOFT-FLOAT-64R2: # %bb.0: 520; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -64 521; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 64 522; SOFT-FLOAT-64R2-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill 523; SOFT-FLOAT-64R2-NEXT: sd $22, 48($sp) # 8-byte Folded Spill 524; SOFT-FLOAT-64R2-NEXT: sd $21, 40($sp) # 8-byte Folded Spill 525; SOFT-FLOAT-64R2-NEXT: sd $20, 32($sp) # 8-byte Folded Spill 526; SOFT-FLOAT-64R2-NEXT: sd $19, 24($sp) # 8-byte Folded Spill 527; SOFT-FLOAT-64R2-NEXT: sd $18, 16($sp) # 8-byte Folded Spill 528; SOFT-FLOAT-64R2-NEXT: sd $17, 8($sp) # 8-byte Folded Spill 529; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 530; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 531; SOFT-FLOAT-64R2-NEXT: .cfi_offset 22, -16 532; SOFT-FLOAT-64R2-NEXT: .cfi_offset 21, -24 533; SOFT-FLOAT-64R2-NEXT: .cfi_offset 20, -32 534; SOFT-FLOAT-64R2-NEXT: .cfi_offset 19, -40 535; SOFT-FLOAT-64R2-NEXT: .cfi_offset 18, -48 536; SOFT-FLOAT-64R2-NEXT: .cfi_offset 17, -56 537; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -64 538; SOFT-FLOAT-64R2-NEXT: move $16, $9 539; SOFT-FLOAT-64R2-NEXT: move $17, $8 540; SOFT-FLOAT-64R2-NEXT: move $18, $7 541; SOFT-FLOAT-64R2-NEXT: move $19, $6 542; SOFT-FLOAT-64R2-NEXT: move $20, $5 543; SOFT-FLOAT-64R2-NEXT: move $21, $4 544; SOFT-FLOAT-64R2-NEXT: dsra $4, $4, 32 545; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 546; SOFT-FLOAT-64R2-NEXT: dsra $5, $6, 32 547; SOFT-FLOAT-64R2-NEXT: move $22, $2 548; SOFT-FLOAT-64R2-NEXT: sll $4, $21, 0 549; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 550; SOFT-FLOAT-64R2-NEXT: sll $5, $19, 0 551; SOFT-FLOAT-64R2-NEXT: sll $4, $2, 0 552; SOFT-FLOAT-64R2-NEXT: jal __addsf3 553; SOFT-FLOAT-64R2-NEXT: sll $5, $17, 0 554; SOFT-FLOAT-64R2-NEXT: sll $4, $22, 0 555; SOFT-FLOAT-64R2-NEXT: dsra $5, $17, 32 556; SOFT-FLOAT-64R2-NEXT: jal __addsf3 557; SOFT-FLOAT-64R2-NEXT: dext $17, $2, 0, 32 558; SOFT-FLOAT-64R2-NEXT: # kill: def $v0 killed $v0 def $v0_64 559; SOFT-FLOAT-64R2-NEXT: dsll $1, $2, 32 560; SOFT-FLOAT-64R2-NEXT: dsra $4, $20, 32 561; SOFT-FLOAT-64R2-NEXT: dsra $5, $18, 32 562; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 563; SOFT-FLOAT-64R2-NEXT: or $17, $17, $1 564; SOFT-FLOAT-64R2-NEXT: move $19, $2 565; SOFT-FLOAT-64R2-NEXT: sll $4, $20, 0 566; SOFT-FLOAT-64R2-NEXT: jal __mulsf3 567; SOFT-FLOAT-64R2-NEXT: sll $5, $18, 0 568; SOFT-FLOAT-64R2-NEXT: sll $4, $2, 0 569; SOFT-FLOAT-64R2-NEXT: jal __addsf3 570; SOFT-FLOAT-64R2-NEXT: sll $5, $16, 0 571; SOFT-FLOAT-64R2-NEXT: dext $18, $2, 0, 32 572; SOFT-FLOAT-64R2-NEXT: sll $4, $19, 0 573; SOFT-FLOAT-64R2-NEXT: jal __addsf3 574; SOFT-FLOAT-64R2-NEXT: dsra $5, $16, 32 575; SOFT-FLOAT-64R2-NEXT: # kill: def $v0 killed $v0 def $v0_64 576; SOFT-FLOAT-64R2-NEXT: dsll $1, $2, 32 577; SOFT-FLOAT-64R2-NEXT: or $3, $18, $1 578; SOFT-FLOAT-64R2-NEXT: move $2, $17 579; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 580; SOFT-FLOAT-64R2-NEXT: ld $17, 8($sp) # 8-byte Folded Reload 581; SOFT-FLOAT-64R2-NEXT: ld $18, 16($sp) # 8-byte Folded Reload 582; SOFT-FLOAT-64R2-NEXT: ld $19, 24($sp) # 8-byte Folded Reload 583; SOFT-FLOAT-64R2-NEXT: ld $20, 32($sp) # 8-byte Folded Reload 584; SOFT-FLOAT-64R2-NEXT: ld $21, 40($sp) # 8-byte Folded Reload 585; SOFT-FLOAT-64R2-NEXT: ld $22, 48($sp) # 8-byte Folded Reload 586; SOFT-FLOAT-64R2-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload 587; SOFT-FLOAT-64R2-NEXT: jr $ra 588; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 64 589 %product = fmul contract <4 x float> %a, %b 590 %result = fadd contract <4 x float> %product, %c 591 ret <4 x float> %result 592} 593 594define <4 x double> @fmuladd_contract_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c) #0 { 595; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f64: 596; SOFT-FLOAT-32: # %bb.0: 597; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, -64 598; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 64 599; SOFT-FLOAT-32-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill 600; SOFT-FLOAT-32-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill 601; SOFT-FLOAT-32-NEXT: sw $23, 52($sp) # 4-byte Folded Spill 602; SOFT-FLOAT-32-NEXT: sw $22, 48($sp) # 4-byte Folded Spill 603; SOFT-FLOAT-32-NEXT: sw $21, 44($sp) # 4-byte Folded Spill 604; SOFT-FLOAT-32-NEXT: sw $20, 40($sp) # 4-byte Folded Spill 605; SOFT-FLOAT-32-NEXT: sw $19, 36($sp) # 4-byte Folded Spill 606; SOFT-FLOAT-32-NEXT: sw $18, 32($sp) # 4-byte Folded Spill 607; SOFT-FLOAT-32-NEXT: sw $17, 28($sp) # 4-byte Folded Spill 608; SOFT-FLOAT-32-NEXT: sw $16, 24($sp) # 4-byte Folded Spill 609; SOFT-FLOAT-32-NEXT: .cfi_offset 31, -4 610; SOFT-FLOAT-32-NEXT: .cfi_offset 30, -8 611; SOFT-FLOAT-32-NEXT: .cfi_offset 23, -12 612; SOFT-FLOAT-32-NEXT: .cfi_offset 22, -16 613; SOFT-FLOAT-32-NEXT: .cfi_offset 21, -20 614; SOFT-FLOAT-32-NEXT: .cfi_offset 20, -24 615; SOFT-FLOAT-32-NEXT: .cfi_offset 19, -28 616; SOFT-FLOAT-32-NEXT: .cfi_offset 18, -32 617; SOFT-FLOAT-32-NEXT: .cfi_offset 17, -36 618; SOFT-FLOAT-32-NEXT: .cfi_offset 16, -40 619; SOFT-FLOAT-32-NEXT: sw $7, 20($sp) # 4-byte Folded Spill 620; SOFT-FLOAT-32-NEXT: sw $6, 16($sp) # 4-byte Folded Spill 621; SOFT-FLOAT-32-NEXT: move $16, $4 622; SOFT-FLOAT-32-NEXT: lw $4, 88($sp) 623; SOFT-FLOAT-32-NEXT: lw $5, 92($sp) 624; SOFT-FLOAT-32-NEXT: lw $6, 120($sp) 625; SOFT-FLOAT-32-NEXT: lw $7, 124($sp) 626; SOFT-FLOAT-32-NEXT: jal __muldf3 627; SOFT-FLOAT-32-NEXT: nop 628; SOFT-FLOAT-32-NEXT: move $4, $2 629; SOFT-FLOAT-32-NEXT: lw $6, 152($sp) 630; SOFT-FLOAT-32-NEXT: lw $7, 156($sp) 631; SOFT-FLOAT-32-NEXT: jal __adddf3 632; SOFT-FLOAT-32-NEXT: move $5, $3 633; SOFT-FLOAT-32-NEXT: move $19, $2 634; SOFT-FLOAT-32-NEXT: lw $4, 96($sp) 635; SOFT-FLOAT-32-NEXT: lw $5, 100($sp) 636; SOFT-FLOAT-32-NEXT: lw $6, 128($sp) 637; SOFT-FLOAT-32-NEXT: lw $7, 132($sp) 638; SOFT-FLOAT-32-NEXT: jal __muldf3 639; SOFT-FLOAT-32-NEXT: move $20, $3 640; SOFT-FLOAT-32-NEXT: move $4, $2 641; SOFT-FLOAT-32-NEXT: lw $6, 160($sp) 642; SOFT-FLOAT-32-NEXT: lw $7, 164($sp) 643; SOFT-FLOAT-32-NEXT: jal __adddf3 644; SOFT-FLOAT-32-NEXT: move $5, $3 645; SOFT-FLOAT-32-NEXT: move $21, $2 646; SOFT-FLOAT-32-NEXT: lw $4, 80($sp) 647; SOFT-FLOAT-32-NEXT: lw $5, 84($sp) 648; SOFT-FLOAT-32-NEXT: lw $6, 112($sp) 649; SOFT-FLOAT-32-NEXT: lw $7, 116($sp) 650; SOFT-FLOAT-32-NEXT: jal __muldf3 651; SOFT-FLOAT-32-NEXT: move $22, $3 652; SOFT-FLOAT-32-NEXT: move $4, $2 653; SOFT-FLOAT-32-NEXT: move $5, $3 654; SOFT-FLOAT-32-NEXT: lw $23, 140($sp) 655; SOFT-FLOAT-32-NEXT: lw $fp, 136($sp) 656; SOFT-FLOAT-32-NEXT: lw $17, 108($sp) 657; SOFT-FLOAT-32-NEXT: lw $18, 104($sp) 658; SOFT-FLOAT-32-NEXT: lw $7, 148($sp) 659; SOFT-FLOAT-32-NEXT: lw $6, 144($sp) 660; SOFT-FLOAT-32-NEXT: sw $22, 28($16) 661; SOFT-FLOAT-32-NEXT: sw $21, 24($16) 662; SOFT-FLOAT-32-NEXT: sw $20, 20($16) 663; SOFT-FLOAT-32-NEXT: jal __adddf3 664; SOFT-FLOAT-32-NEXT: sw $19, 16($16) 665; SOFT-FLOAT-32-NEXT: sw $3, 12($16) 666; SOFT-FLOAT-32-NEXT: sw $2, 8($16) 667; SOFT-FLOAT-32-NEXT: lw $4, 16($sp) # 4-byte Folded Reload 668; SOFT-FLOAT-32-NEXT: lw $5, 20($sp) # 4-byte Folded Reload 669; SOFT-FLOAT-32-NEXT: move $6, $18 670; SOFT-FLOAT-32-NEXT: jal __muldf3 671; SOFT-FLOAT-32-NEXT: move $7, $17 672; SOFT-FLOAT-32-NEXT: move $4, $2 673; SOFT-FLOAT-32-NEXT: move $5, $3 674; SOFT-FLOAT-32-NEXT: move $6, $fp 675; SOFT-FLOAT-32-NEXT: jal __adddf3 676; SOFT-FLOAT-32-NEXT: move $7, $23 677; SOFT-FLOAT-32-NEXT: sw $3, 4($16) 678; SOFT-FLOAT-32-NEXT: sw $2, 0($16) 679; SOFT-FLOAT-32-NEXT: lw $16, 24($sp) # 4-byte Folded Reload 680; SOFT-FLOAT-32-NEXT: lw $17, 28($sp) # 4-byte Folded Reload 681; SOFT-FLOAT-32-NEXT: lw $18, 32($sp) # 4-byte Folded Reload 682; SOFT-FLOAT-32-NEXT: lw $19, 36($sp) # 4-byte Folded Reload 683; SOFT-FLOAT-32-NEXT: lw $20, 40($sp) # 4-byte Folded Reload 684; SOFT-FLOAT-32-NEXT: lw $21, 44($sp) # 4-byte Folded Reload 685; SOFT-FLOAT-32-NEXT: lw $22, 48($sp) # 4-byte Folded Reload 686; SOFT-FLOAT-32-NEXT: lw $23, 52($sp) # 4-byte Folded Reload 687; SOFT-FLOAT-32-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload 688; SOFT-FLOAT-32-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload 689; SOFT-FLOAT-32-NEXT: jr $ra 690; SOFT-FLOAT-32-NEXT: addiu $sp, $sp, 64 691; 692; SOFT-FLOAT-32R2-LABEL: fmuladd_contract_v4f64: 693; SOFT-FLOAT-32R2: # %bb.0: 694; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, -64 695; SOFT-FLOAT-32R2-NEXT: .cfi_def_cfa_offset 64 696; SOFT-FLOAT-32R2-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill 697; SOFT-FLOAT-32R2-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill 698; SOFT-FLOAT-32R2-NEXT: sw $23, 52($sp) # 4-byte Folded Spill 699; SOFT-FLOAT-32R2-NEXT: sw $22, 48($sp) # 4-byte Folded Spill 700; SOFT-FLOAT-32R2-NEXT: sw $21, 44($sp) # 4-byte Folded Spill 701; SOFT-FLOAT-32R2-NEXT: sw $20, 40($sp) # 4-byte Folded Spill 702; SOFT-FLOAT-32R2-NEXT: sw $19, 36($sp) # 4-byte Folded Spill 703; SOFT-FLOAT-32R2-NEXT: sw $18, 32($sp) # 4-byte Folded Spill 704; SOFT-FLOAT-32R2-NEXT: sw $17, 28($sp) # 4-byte Folded Spill 705; SOFT-FLOAT-32R2-NEXT: sw $16, 24($sp) # 4-byte Folded Spill 706; SOFT-FLOAT-32R2-NEXT: .cfi_offset 31, -4 707; SOFT-FLOAT-32R2-NEXT: .cfi_offset 30, -8 708; SOFT-FLOAT-32R2-NEXT: .cfi_offset 23, -12 709; SOFT-FLOAT-32R2-NEXT: .cfi_offset 22, -16 710; SOFT-FLOAT-32R2-NEXT: .cfi_offset 21, -20 711; SOFT-FLOAT-32R2-NEXT: .cfi_offset 20, -24 712; SOFT-FLOAT-32R2-NEXT: .cfi_offset 19, -28 713; SOFT-FLOAT-32R2-NEXT: .cfi_offset 18, -32 714; SOFT-FLOAT-32R2-NEXT: .cfi_offset 17, -36 715; SOFT-FLOAT-32R2-NEXT: .cfi_offset 16, -40 716; SOFT-FLOAT-32R2-NEXT: sw $7, 20($sp) # 4-byte Folded Spill 717; SOFT-FLOAT-32R2-NEXT: sw $6, 16($sp) # 4-byte Folded Spill 718; SOFT-FLOAT-32R2-NEXT: move $16, $4 719; SOFT-FLOAT-32R2-NEXT: lw $4, 88($sp) 720; SOFT-FLOAT-32R2-NEXT: lw $5, 92($sp) 721; SOFT-FLOAT-32R2-NEXT: lw $6, 120($sp) 722; SOFT-FLOAT-32R2-NEXT: lw $7, 124($sp) 723; SOFT-FLOAT-32R2-NEXT: jal __muldf3 724; SOFT-FLOAT-32R2-NEXT: nop 725; SOFT-FLOAT-32R2-NEXT: move $4, $2 726; SOFT-FLOAT-32R2-NEXT: lw $6, 152($sp) 727; SOFT-FLOAT-32R2-NEXT: lw $7, 156($sp) 728; SOFT-FLOAT-32R2-NEXT: jal __adddf3 729; SOFT-FLOAT-32R2-NEXT: move $5, $3 730; SOFT-FLOAT-32R2-NEXT: move $19, $2 731; SOFT-FLOAT-32R2-NEXT: lw $4, 96($sp) 732; SOFT-FLOAT-32R2-NEXT: lw $5, 100($sp) 733; SOFT-FLOAT-32R2-NEXT: lw $6, 128($sp) 734; SOFT-FLOAT-32R2-NEXT: lw $7, 132($sp) 735; SOFT-FLOAT-32R2-NEXT: jal __muldf3 736; SOFT-FLOAT-32R2-NEXT: move $20, $3 737; SOFT-FLOAT-32R2-NEXT: move $4, $2 738; SOFT-FLOAT-32R2-NEXT: lw $6, 160($sp) 739; SOFT-FLOAT-32R2-NEXT: lw $7, 164($sp) 740; SOFT-FLOAT-32R2-NEXT: jal __adddf3 741; SOFT-FLOAT-32R2-NEXT: move $5, $3 742; SOFT-FLOAT-32R2-NEXT: move $21, $2 743; SOFT-FLOAT-32R2-NEXT: lw $4, 80($sp) 744; SOFT-FLOAT-32R2-NEXT: lw $5, 84($sp) 745; SOFT-FLOAT-32R2-NEXT: lw $6, 112($sp) 746; SOFT-FLOAT-32R2-NEXT: lw $7, 116($sp) 747; SOFT-FLOAT-32R2-NEXT: jal __muldf3 748; SOFT-FLOAT-32R2-NEXT: move $22, $3 749; SOFT-FLOAT-32R2-NEXT: move $4, $2 750; SOFT-FLOAT-32R2-NEXT: move $5, $3 751; SOFT-FLOAT-32R2-NEXT: lw $23, 140($sp) 752; SOFT-FLOAT-32R2-NEXT: lw $fp, 136($sp) 753; SOFT-FLOAT-32R2-NEXT: lw $17, 108($sp) 754; SOFT-FLOAT-32R2-NEXT: lw $18, 104($sp) 755; SOFT-FLOAT-32R2-NEXT: lw $7, 148($sp) 756; SOFT-FLOAT-32R2-NEXT: lw $6, 144($sp) 757; SOFT-FLOAT-32R2-NEXT: sw $22, 28($16) 758; SOFT-FLOAT-32R2-NEXT: sw $21, 24($16) 759; SOFT-FLOAT-32R2-NEXT: sw $20, 20($16) 760; SOFT-FLOAT-32R2-NEXT: jal __adddf3 761; SOFT-FLOAT-32R2-NEXT: sw $19, 16($16) 762; SOFT-FLOAT-32R2-NEXT: sw $3, 12($16) 763; SOFT-FLOAT-32R2-NEXT: sw $2, 8($16) 764; SOFT-FLOAT-32R2-NEXT: lw $4, 16($sp) # 4-byte Folded Reload 765; SOFT-FLOAT-32R2-NEXT: lw $5, 20($sp) # 4-byte Folded Reload 766; SOFT-FLOAT-32R2-NEXT: move $6, $18 767; SOFT-FLOAT-32R2-NEXT: jal __muldf3 768; SOFT-FLOAT-32R2-NEXT: move $7, $17 769; SOFT-FLOAT-32R2-NEXT: move $4, $2 770; SOFT-FLOAT-32R2-NEXT: move $5, $3 771; SOFT-FLOAT-32R2-NEXT: move $6, $fp 772; SOFT-FLOAT-32R2-NEXT: jal __adddf3 773; SOFT-FLOAT-32R2-NEXT: move $7, $23 774; SOFT-FLOAT-32R2-NEXT: sw $3, 4($16) 775; SOFT-FLOAT-32R2-NEXT: sw $2, 0($16) 776; SOFT-FLOAT-32R2-NEXT: lw $16, 24($sp) # 4-byte Folded Reload 777; SOFT-FLOAT-32R2-NEXT: lw $17, 28($sp) # 4-byte Folded Reload 778; SOFT-FLOAT-32R2-NEXT: lw $18, 32($sp) # 4-byte Folded Reload 779; SOFT-FLOAT-32R2-NEXT: lw $19, 36($sp) # 4-byte Folded Reload 780; SOFT-FLOAT-32R2-NEXT: lw $20, 40($sp) # 4-byte Folded Reload 781; SOFT-FLOAT-32R2-NEXT: lw $21, 44($sp) # 4-byte Folded Reload 782; SOFT-FLOAT-32R2-NEXT: lw $22, 48($sp) # 4-byte Folded Reload 783; SOFT-FLOAT-32R2-NEXT: lw $23, 52($sp) # 4-byte Folded Reload 784; SOFT-FLOAT-32R2-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload 785; SOFT-FLOAT-32R2-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload 786; SOFT-FLOAT-32R2-NEXT: jr $ra 787; SOFT-FLOAT-32R2-NEXT: addiu $sp, $sp, 64 788; 789; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f64: 790; SOFT-FLOAT-64: # %bb.0: 791; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, -64 792; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 64 793; SOFT-FLOAT-64-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill 794; SOFT-FLOAT-64-NEXT: sd $22, 48($sp) # 8-byte Folded Spill 795; SOFT-FLOAT-64-NEXT: sd $21, 40($sp) # 8-byte Folded Spill 796; SOFT-FLOAT-64-NEXT: sd $20, 32($sp) # 8-byte Folded Spill 797; SOFT-FLOAT-64-NEXT: sd $19, 24($sp) # 8-byte Folded Spill 798; SOFT-FLOAT-64-NEXT: sd $18, 16($sp) # 8-byte Folded Spill 799; SOFT-FLOAT-64-NEXT: sd $17, 8($sp) # 8-byte Folded Spill 800; SOFT-FLOAT-64-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 801; SOFT-FLOAT-64-NEXT: .cfi_offset 31, -8 802; SOFT-FLOAT-64-NEXT: .cfi_offset 22, -16 803; SOFT-FLOAT-64-NEXT: .cfi_offset 21, -24 804; SOFT-FLOAT-64-NEXT: .cfi_offset 20, -32 805; SOFT-FLOAT-64-NEXT: .cfi_offset 19, -40 806; SOFT-FLOAT-64-NEXT: .cfi_offset 18, -48 807; SOFT-FLOAT-64-NEXT: .cfi_offset 17, -56 808; SOFT-FLOAT-64-NEXT: .cfi_offset 16, -64 809; SOFT-FLOAT-64-NEXT: move $17, $10 810; SOFT-FLOAT-64-NEXT: move $18, $9 811; SOFT-FLOAT-64-NEXT: move $19, $8 812; SOFT-FLOAT-64-NEXT: move $20, $6 813; SOFT-FLOAT-64-NEXT: move $21, $5 814; SOFT-FLOAT-64-NEXT: move $16, $4 815; SOFT-FLOAT-64-NEXT: move $4, $7 816; SOFT-FLOAT-64-NEXT: jal __muldf3 817; SOFT-FLOAT-64-NEXT: move $5, $11 818; SOFT-FLOAT-64-NEXT: ld $5, 88($sp) 819; SOFT-FLOAT-64-NEXT: jal __adddf3 820; SOFT-FLOAT-64-NEXT: move $4, $2 821; SOFT-FLOAT-64-NEXT: move $22, $2 822; SOFT-FLOAT-64-NEXT: ld $5, 64($sp) 823; SOFT-FLOAT-64-NEXT: jal __muldf3 824; SOFT-FLOAT-64-NEXT: move $4, $19 825; SOFT-FLOAT-64-NEXT: ld $5, 96($sp) 826; SOFT-FLOAT-64-NEXT: jal __adddf3 827; SOFT-FLOAT-64-NEXT: move $4, $2 828; SOFT-FLOAT-64-NEXT: move $19, $2 829; SOFT-FLOAT-64-NEXT: move $4, $20 830; SOFT-FLOAT-64-NEXT: jal __muldf3 831; SOFT-FLOAT-64-NEXT: move $5, $17 832; SOFT-FLOAT-64-NEXT: move $4, $2 833; SOFT-FLOAT-64-NEXT: ld $17, 72($sp) 834; SOFT-FLOAT-64-NEXT: ld $5, 80($sp) 835; SOFT-FLOAT-64-NEXT: sd $19, 24($16) 836; SOFT-FLOAT-64-NEXT: jal __adddf3 837; SOFT-FLOAT-64-NEXT: sd $22, 16($16) 838; SOFT-FLOAT-64-NEXT: sd $2, 8($16) 839; SOFT-FLOAT-64-NEXT: move $4, $21 840; SOFT-FLOAT-64-NEXT: jal __muldf3 841; SOFT-FLOAT-64-NEXT: move $5, $18 842; SOFT-FLOAT-64-NEXT: move $4, $2 843; SOFT-FLOAT-64-NEXT: jal __adddf3 844; SOFT-FLOAT-64-NEXT: move $5, $17 845; SOFT-FLOAT-64-NEXT: sd $2, 0($16) 846; SOFT-FLOAT-64-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 847; SOFT-FLOAT-64-NEXT: ld $17, 8($sp) # 8-byte Folded Reload 848; SOFT-FLOAT-64-NEXT: ld $18, 16($sp) # 8-byte Folded Reload 849; SOFT-FLOAT-64-NEXT: ld $19, 24($sp) # 8-byte Folded Reload 850; SOFT-FLOAT-64-NEXT: ld $20, 32($sp) # 8-byte Folded Reload 851; SOFT-FLOAT-64-NEXT: ld $21, 40($sp) # 8-byte Folded Reload 852; SOFT-FLOAT-64-NEXT: ld $22, 48($sp) # 8-byte Folded Reload 853; SOFT-FLOAT-64-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload 854; SOFT-FLOAT-64-NEXT: jr $ra 855; SOFT-FLOAT-64-NEXT: daddiu $sp, $sp, 64 856; 857; SOFT-FLOAT-64R2-LABEL: fmuladd_contract_v4f64: 858; SOFT-FLOAT-64R2: # %bb.0: 859; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, -64 860; SOFT-FLOAT-64R2-NEXT: .cfi_def_cfa_offset 64 861; SOFT-FLOAT-64R2-NEXT: sd $ra, 56($sp) # 8-byte Folded Spill 862; SOFT-FLOAT-64R2-NEXT: sd $22, 48($sp) # 8-byte Folded Spill 863; SOFT-FLOAT-64R2-NEXT: sd $21, 40($sp) # 8-byte Folded Spill 864; SOFT-FLOAT-64R2-NEXT: sd $20, 32($sp) # 8-byte Folded Spill 865; SOFT-FLOAT-64R2-NEXT: sd $19, 24($sp) # 8-byte Folded Spill 866; SOFT-FLOAT-64R2-NEXT: sd $18, 16($sp) # 8-byte Folded Spill 867; SOFT-FLOAT-64R2-NEXT: sd $17, 8($sp) # 8-byte Folded Spill 868; SOFT-FLOAT-64R2-NEXT: sd $16, 0($sp) # 8-byte Folded Spill 869; SOFT-FLOAT-64R2-NEXT: .cfi_offset 31, -8 870; SOFT-FLOAT-64R2-NEXT: .cfi_offset 22, -16 871; SOFT-FLOAT-64R2-NEXT: .cfi_offset 21, -24 872; SOFT-FLOAT-64R2-NEXT: .cfi_offset 20, -32 873; SOFT-FLOAT-64R2-NEXT: .cfi_offset 19, -40 874; SOFT-FLOAT-64R2-NEXT: .cfi_offset 18, -48 875; SOFT-FLOAT-64R2-NEXT: .cfi_offset 17, -56 876; SOFT-FLOAT-64R2-NEXT: .cfi_offset 16, -64 877; SOFT-FLOAT-64R2-NEXT: move $17, $10 878; SOFT-FLOAT-64R2-NEXT: move $18, $9 879; SOFT-FLOAT-64R2-NEXT: move $19, $8 880; SOFT-FLOAT-64R2-NEXT: move $20, $6 881; SOFT-FLOAT-64R2-NEXT: move $21, $5 882; SOFT-FLOAT-64R2-NEXT: move $16, $4 883; SOFT-FLOAT-64R2-NEXT: move $4, $7 884; SOFT-FLOAT-64R2-NEXT: jal __muldf3 885; SOFT-FLOAT-64R2-NEXT: move $5, $11 886; SOFT-FLOAT-64R2-NEXT: ld $5, 88($sp) 887; SOFT-FLOAT-64R2-NEXT: jal __adddf3 888; SOFT-FLOAT-64R2-NEXT: move $4, $2 889; SOFT-FLOAT-64R2-NEXT: move $22, $2 890; SOFT-FLOAT-64R2-NEXT: ld $5, 64($sp) 891; SOFT-FLOAT-64R2-NEXT: jal __muldf3 892; SOFT-FLOAT-64R2-NEXT: move $4, $19 893; SOFT-FLOAT-64R2-NEXT: ld $5, 96($sp) 894; SOFT-FLOAT-64R2-NEXT: jal __adddf3 895; SOFT-FLOAT-64R2-NEXT: move $4, $2 896; SOFT-FLOAT-64R2-NEXT: move $19, $2 897; SOFT-FLOAT-64R2-NEXT: move $4, $20 898; SOFT-FLOAT-64R2-NEXT: jal __muldf3 899; SOFT-FLOAT-64R2-NEXT: move $5, $17 900; SOFT-FLOAT-64R2-NEXT: move $4, $2 901; SOFT-FLOAT-64R2-NEXT: ld $17, 72($sp) 902; SOFT-FLOAT-64R2-NEXT: ld $5, 80($sp) 903; SOFT-FLOAT-64R2-NEXT: sd $19, 24($16) 904; SOFT-FLOAT-64R2-NEXT: jal __adddf3 905; SOFT-FLOAT-64R2-NEXT: sd $22, 16($16) 906; SOFT-FLOAT-64R2-NEXT: sd $2, 8($16) 907; SOFT-FLOAT-64R2-NEXT: move $4, $21 908; SOFT-FLOAT-64R2-NEXT: jal __muldf3 909; SOFT-FLOAT-64R2-NEXT: move $5, $18 910; SOFT-FLOAT-64R2-NEXT: move $4, $2 911; SOFT-FLOAT-64R2-NEXT: jal __adddf3 912; SOFT-FLOAT-64R2-NEXT: move $5, $17 913; SOFT-FLOAT-64R2-NEXT: sd $2, 0($16) 914; SOFT-FLOAT-64R2-NEXT: ld $16, 0($sp) # 8-byte Folded Reload 915; SOFT-FLOAT-64R2-NEXT: ld $17, 8($sp) # 8-byte Folded Reload 916; SOFT-FLOAT-64R2-NEXT: ld $18, 16($sp) # 8-byte Folded Reload 917; SOFT-FLOAT-64R2-NEXT: ld $19, 24($sp) # 8-byte Folded Reload 918; SOFT-FLOAT-64R2-NEXT: ld $20, 32($sp) # 8-byte Folded Reload 919; SOFT-FLOAT-64R2-NEXT: ld $21, 40($sp) # 8-byte Folded Reload 920; SOFT-FLOAT-64R2-NEXT: ld $22, 48($sp) # 8-byte Folded Reload 921; SOFT-FLOAT-64R2-NEXT: ld $ra, 56($sp) # 8-byte Folded Reload 922; SOFT-FLOAT-64R2-NEXT: jr $ra 923; SOFT-FLOAT-64R2-NEXT: daddiu $sp, $sp, 64 924 %product = fmul contract <4 x double> %a, %b 925 %result = fadd contract <4 x double> %product, %c 926 ret <4 x double> %result 927} 928 929attributes #0 = { "use-soft-float"="true" } 930 931declare float @llvm.fmuladd.f32(float %a, float %b, float %c) 932declare double @llvm.fmuladd.f64(double %a, double %b, double %c) 933