1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2; RUN: llc -mtriple=i386 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-32 3; RUN: llc -mtriple=i386 -mattr +fma < %s | FileCheck %s -check-prefix=SOFT-FLOAT-32-FMA 4; RUN: llc -mtriple=i386 -mattr +fma4 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-32-FMA4 5; RUN: llc -mtriple=x86_64 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-64 6; RUN: llc -mtriple=x86_64 -mattr +fma < %s | FileCheck %s -check-prefix=SOFT-FLOAT-64-FMA 7; RUN: llc -mtriple=x86_64 -mattr +fma4 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-64-FMA4 8 9define float @fmuladd_intrinsic_f32(float %a, float %b, float %c) #0 { 10; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f32: 11; SOFT-FLOAT-32: # %bb.0: 12; SOFT-FLOAT-32-NEXT: pushl %esi 13; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 14; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -8 15; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 16; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 17; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 18; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 19; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 20; SOFT-FLOAT-32-NEXT: calll __mulsf3 21; SOFT-FLOAT-32-NEXT: addl $8, %esp 22; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 23; SOFT-FLOAT-32-NEXT: pushl %esi 24; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 25; SOFT-FLOAT-32-NEXT: pushl %eax 26; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 27; SOFT-FLOAT-32-NEXT: calll __addsf3 28; SOFT-FLOAT-32-NEXT: addl $8, %esp 29; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 30; SOFT-FLOAT-32-NEXT: popl %esi 31; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 32; SOFT-FLOAT-32-NEXT: retl 33; 34; SOFT-FLOAT-32-FMA-LABEL: fmuladd_intrinsic_f32: 35; SOFT-FLOAT-32-FMA: # %bb.0: 36; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 37; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 38; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -8 39; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 40; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 41; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 42; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 43; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 44; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 45; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 46; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 47; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 48; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 49; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 50; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 51; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 52; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 53; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 54; SOFT-FLOAT-32-FMA-NEXT: popl %esi 55; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 56; SOFT-FLOAT-32-FMA-NEXT: retl 57; 58; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_intrinsic_f32: 59; SOFT-FLOAT-32-FMA4: # %bb.0: 60; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 61; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 62; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -8 63; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 64; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 65; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 66; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 67; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 68; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 69; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 70; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 71; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 72; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 73; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 74; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 75; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 76; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 77; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 78; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 79; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 80; SOFT-FLOAT-32-FMA4-NEXT: retl 81; 82; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f32: 83; SOFT-FLOAT-64: # %bb.0: 84; SOFT-FLOAT-64-NEXT: pushq %rbx 85; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 86; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -16 87; SOFT-FLOAT-64-NEXT: movl %edx, %ebx 88; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 89; SOFT-FLOAT-64-NEXT: movl %eax, %edi 90; SOFT-FLOAT-64-NEXT: movl %ebx, %esi 91; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 92; SOFT-FLOAT-64-NEXT: popq %rbx 93; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 94; SOFT-FLOAT-64-NEXT: retq 95; 96; SOFT-FLOAT-64-FMA-LABEL: fmuladd_intrinsic_f32: 97; SOFT-FLOAT-64-FMA: # %bb.0: 98; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 99; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 100; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -16 101; SOFT-FLOAT-64-FMA-NEXT: movl %edx, %ebx 102; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 103; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %edi 104; SOFT-FLOAT-64-FMA-NEXT: movl %ebx, %esi 105; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 106; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 107; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 108; SOFT-FLOAT-64-FMA-NEXT: retq 109; 110; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_intrinsic_f32: 111; SOFT-FLOAT-64-FMA4: # %bb.0: 112; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 113; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 114; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -16 115; SOFT-FLOAT-64-FMA4-NEXT: movl %edx, %ebx 116; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 117; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %edi 118; SOFT-FLOAT-64-FMA4-NEXT: movl %ebx, %esi 119; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 120; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 121; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 122; SOFT-FLOAT-64-FMA4-NEXT: retq 123 %result = call float @llvm.fmuladd.f32(float %a, float %b, float %c) 124 ret float %result 125} 126 127define double @fmuladd_intrinsic_f64(double %a, double %b, double %c) #0 { 128; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f64: 129; SOFT-FLOAT-32: # %bb.0: 130; SOFT-FLOAT-32-NEXT: pushl %edi 131; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 132; SOFT-FLOAT-32-NEXT: pushl %esi 133; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 134; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -12 135; SOFT-FLOAT-32-NEXT: .cfi_offset %edi, -8 136; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 137; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %edi 138; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 139; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 140; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 141; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 142; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 143; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 144; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 145; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 146; SOFT-FLOAT-32-NEXT: calll __muldf3 147; SOFT-FLOAT-32-NEXT: addl $16, %esp 148; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 149; SOFT-FLOAT-32-NEXT: pushl %edi 150; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 151; SOFT-FLOAT-32-NEXT: pushl %esi 152; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 153; SOFT-FLOAT-32-NEXT: pushl %edx 154; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 155; SOFT-FLOAT-32-NEXT: pushl %eax 156; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 157; SOFT-FLOAT-32-NEXT: calll __adddf3 158; SOFT-FLOAT-32-NEXT: addl $16, %esp 159; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 160; SOFT-FLOAT-32-NEXT: popl %esi 161; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 162; SOFT-FLOAT-32-NEXT: popl %edi 163; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 164; SOFT-FLOAT-32-NEXT: retl 165; 166; SOFT-FLOAT-32-FMA-LABEL: fmuladd_intrinsic_f64: 167; SOFT-FLOAT-32-FMA: # %bb.0: 168; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 169; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 170; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 171; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 172; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -12 173; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %edi, -8 174; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 175; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %edi 176; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 177; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 178; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 179; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 180; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 181; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 182; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 183; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 184; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 185; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 186; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 187; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 188; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 189; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 190; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 191; SOFT-FLOAT-32-FMA-NEXT: pushl %edx 192; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 193; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 194; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 195; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 196; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 197; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 198; SOFT-FLOAT-32-FMA-NEXT: popl %esi 199; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 200; SOFT-FLOAT-32-FMA-NEXT: popl %edi 201; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 202; SOFT-FLOAT-32-FMA-NEXT: retl 203; 204; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_intrinsic_f64: 205; SOFT-FLOAT-32-FMA4: # %bb.0: 206; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 207; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 208; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 209; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 210; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -12 211; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %edi, -8 212; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 213; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %edi 214; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 215; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 216; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 217; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 218; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 219; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 220; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 221; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 222; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 223; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 224; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 225; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 226; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 227; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 228; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 229; SOFT-FLOAT-32-FMA4-NEXT: pushl %edx 230; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 231; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 232; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 233; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 234; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 235; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 236; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 237; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 238; SOFT-FLOAT-32-FMA4-NEXT: popl %edi 239; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 240; SOFT-FLOAT-32-FMA4-NEXT: retl 241; 242; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f64: 243; SOFT-FLOAT-64: # %bb.0: 244; SOFT-FLOAT-64-NEXT: pushq %rbx 245; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 246; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -16 247; SOFT-FLOAT-64-NEXT: movq %rdx, %rbx 248; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 249; SOFT-FLOAT-64-NEXT: movq %rax, %rdi 250; SOFT-FLOAT-64-NEXT: movq %rbx, %rsi 251; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 252; SOFT-FLOAT-64-NEXT: popq %rbx 253; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 254; SOFT-FLOAT-64-NEXT: retq 255; 256; SOFT-FLOAT-64-FMA-LABEL: fmuladd_intrinsic_f64: 257; SOFT-FLOAT-64-FMA: # %bb.0: 258; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 259; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 260; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -16 261; SOFT-FLOAT-64-FMA-NEXT: movq %rdx, %rbx 262; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 263; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %rdi 264; SOFT-FLOAT-64-FMA-NEXT: movq %rbx, %rsi 265; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 266; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 267; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 268; SOFT-FLOAT-64-FMA-NEXT: retq 269; 270; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_intrinsic_f64: 271; SOFT-FLOAT-64-FMA4: # %bb.0: 272; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 273; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 274; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -16 275; SOFT-FLOAT-64-FMA4-NEXT: movq %rdx, %rbx 276; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 277; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %rdi 278; SOFT-FLOAT-64-FMA4-NEXT: movq %rbx, %rsi 279; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 280; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 281; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 282; SOFT-FLOAT-64-FMA4-NEXT: retq 283 %result = call double @llvm.fmuladd.f64(double %a, double %b, double %c) 284 ret double %result 285} 286 287define float @fmuladd_contract_f32(float %a, float %b, float %c) #0 { 288; SOFT-FLOAT-32-LABEL: fmuladd_contract_f32: 289; SOFT-FLOAT-32: # %bb.0: 290; SOFT-FLOAT-32-NEXT: pushl %esi 291; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 292; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -8 293; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 294; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 295; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 296; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 297; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 298; SOFT-FLOAT-32-NEXT: calll __mulsf3 299; SOFT-FLOAT-32-NEXT: addl $8, %esp 300; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 301; SOFT-FLOAT-32-NEXT: pushl %esi 302; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 303; SOFT-FLOAT-32-NEXT: pushl %eax 304; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 305; SOFT-FLOAT-32-NEXT: calll __addsf3 306; SOFT-FLOAT-32-NEXT: addl $8, %esp 307; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 308; SOFT-FLOAT-32-NEXT: popl %esi 309; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 310; SOFT-FLOAT-32-NEXT: retl 311; 312; SOFT-FLOAT-32-FMA-LABEL: fmuladd_contract_f32: 313; SOFT-FLOAT-32-FMA: # %bb.0: 314; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 315; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 316; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -8 317; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 318; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 319; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 320; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 321; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 322; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 323; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 324; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 325; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 326; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 327; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 328; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 329; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 330; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 331; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 332; SOFT-FLOAT-32-FMA-NEXT: popl %esi 333; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 334; SOFT-FLOAT-32-FMA-NEXT: retl 335; 336; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_contract_f32: 337; SOFT-FLOAT-32-FMA4: # %bb.0: 338; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 339; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 340; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -8 341; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 342; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 343; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 344; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 345; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 346; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 347; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 348; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 349; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 350; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 351; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 352; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 353; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 354; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 355; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 356; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 357; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 358; SOFT-FLOAT-32-FMA4-NEXT: retl 359; 360; SOFT-FLOAT-64-LABEL: fmuladd_contract_f32: 361; SOFT-FLOAT-64: # %bb.0: 362; SOFT-FLOAT-64-NEXT: pushq %rbx 363; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 364; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -16 365; SOFT-FLOAT-64-NEXT: movl %edx, %ebx 366; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 367; SOFT-FLOAT-64-NEXT: movl %eax, %edi 368; SOFT-FLOAT-64-NEXT: movl %ebx, %esi 369; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 370; SOFT-FLOAT-64-NEXT: popq %rbx 371; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 372; SOFT-FLOAT-64-NEXT: retq 373; 374; SOFT-FLOAT-64-FMA-LABEL: fmuladd_contract_f32: 375; SOFT-FLOAT-64-FMA: # %bb.0: 376; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 377; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 378; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -16 379; SOFT-FLOAT-64-FMA-NEXT: movl %edx, %ebx 380; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 381; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %edi 382; SOFT-FLOAT-64-FMA-NEXT: movl %ebx, %esi 383; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 384; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 385; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 386; SOFT-FLOAT-64-FMA-NEXT: retq 387; 388; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_contract_f32: 389; SOFT-FLOAT-64-FMA4: # %bb.0: 390; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 391; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 392; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -16 393; SOFT-FLOAT-64-FMA4-NEXT: movl %edx, %ebx 394; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 395; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %edi 396; SOFT-FLOAT-64-FMA4-NEXT: movl %ebx, %esi 397; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 398; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 399; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 400; SOFT-FLOAT-64-FMA4-NEXT: retq 401 %product = fmul contract float %a, %b 402 %result = fadd contract float %product, %c 403 ret float %result 404} 405 406define double @fmuladd_contract_f64(double %a, double %b, double %c) #0 { 407; SOFT-FLOAT-32-LABEL: fmuladd_contract_f64: 408; SOFT-FLOAT-32: # %bb.0: 409; SOFT-FLOAT-32-NEXT: pushl %edi 410; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 411; SOFT-FLOAT-32-NEXT: pushl %esi 412; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 413; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -12 414; SOFT-FLOAT-32-NEXT: .cfi_offset %edi, -8 415; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 416; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %edi 417; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 418; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 419; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 420; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 421; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 422; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 423; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 424; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 425; SOFT-FLOAT-32-NEXT: calll __muldf3 426; SOFT-FLOAT-32-NEXT: addl $16, %esp 427; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 428; SOFT-FLOAT-32-NEXT: pushl %edi 429; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 430; SOFT-FLOAT-32-NEXT: pushl %esi 431; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 432; SOFT-FLOAT-32-NEXT: pushl %edx 433; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 434; SOFT-FLOAT-32-NEXT: pushl %eax 435; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 436; SOFT-FLOAT-32-NEXT: calll __adddf3 437; SOFT-FLOAT-32-NEXT: addl $16, %esp 438; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 439; SOFT-FLOAT-32-NEXT: popl %esi 440; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 441; SOFT-FLOAT-32-NEXT: popl %edi 442; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 443; SOFT-FLOAT-32-NEXT: retl 444; 445; SOFT-FLOAT-32-FMA-LABEL: fmuladd_contract_f64: 446; SOFT-FLOAT-32-FMA: # %bb.0: 447; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 448; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 449; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 450; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 451; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -12 452; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %edi, -8 453; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 454; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %edi 455; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 456; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 457; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 458; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 459; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 460; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 461; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 462; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 463; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 464; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 465; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 466; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 467; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 468; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 469; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 470; SOFT-FLOAT-32-FMA-NEXT: pushl %edx 471; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 472; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 473; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 474; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 475; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 476; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 477; SOFT-FLOAT-32-FMA-NEXT: popl %esi 478; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 479; SOFT-FLOAT-32-FMA-NEXT: popl %edi 480; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 481; SOFT-FLOAT-32-FMA-NEXT: retl 482; 483; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_contract_f64: 484; SOFT-FLOAT-32-FMA4: # %bb.0: 485; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 486; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 487; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 488; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 489; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -12 490; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %edi, -8 491; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 492; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %edi 493; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 494; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 495; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 496; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 497; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 498; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 499; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 500; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 501; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 502; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 503; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 504; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 505; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 506; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 507; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 508; SOFT-FLOAT-32-FMA4-NEXT: pushl %edx 509; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 510; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 511; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 512; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 513; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 514; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 515; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 516; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 517; SOFT-FLOAT-32-FMA4-NEXT: popl %edi 518; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 519; SOFT-FLOAT-32-FMA4-NEXT: retl 520; 521; SOFT-FLOAT-64-LABEL: fmuladd_contract_f64: 522; SOFT-FLOAT-64: # %bb.0: 523; SOFT-FLOAT-64-NEXT: pushq %rbx 524; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 525; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -16 526; SOFT-FLOAT-64-NEXT: movq %rdx, %rbx 527; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 528; SOFT-FLOAT-64-NEXT: movq %rax, %rdi 529; SOFT-FLOAT-64-NEXT: movq %rbx, %rsi 530; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 531; SOFT-FLOAT-64-NEXT: popq %rbx 532; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 533; SOFT-FLOAT-64-NEXT: retq 534; 535; SOFT-FLOAT-64-FMA-LABEL: fmuladd_contract_f64: 536; SOFT-FLOAT-64-FMA: # %bb.0: 537; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 538; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 539; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -16 540; SOFT-FLOAT-64-FMA-NEXT: movq %rdx, %rbx 541; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 542; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %rdi 543; SOFT-FLOAT-64-FMA-NEXT: movq %rbx, %rsi 544; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 545; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 546; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 547; SOFT-FLOAT-64-FMA-NEXT: retq 548; 549; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_contract_f64: 550; SOFT-FLOAT-64-FMA4: # %bb.0: 551; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 552; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 553; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -16 554; SOFT-FLOAT-64-FMA4-NEXT: movq %rdx, %rbx 555; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 556; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %rdi 557; SOFT-FLOAT-64-FMA4-NEXT: movq %rbx, %rsi 558; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 559; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 560; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 561; SOFT-FLOAT-64-FMA4-NEXT: retq 562 %product = fmul contract double %a, %b 563 %result = fadd contract double %product, %c 564 ret double %result 565} 566 567define <4 x float> @fmuladd_contract_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) #0 { 568; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f32: 569; SOFT-FLOAT-32: # %bb.0: 570; SOFT-FLOAT-32-NEXT: pushl %ebp 571; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 572; SOFT-FLOAT-32-NEXT: pushl %ebx 573; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 574; SOFT-FLOAT-32-NEXT: pushl %edi 575; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 16 576; SOFT-FLOAT-32-NEXT: pushl %esi 577; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 20 578; SOFT-FLOAT-32-NEXT: pushl %eax 579; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 24 580; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -20 581; SOFT-FLOAT-32-NEXT: .cfi_offset %edi, -16 582; SOFT-FLOAT-32-NEXT: .cfi_offset %ebx, -12 583; SOFT-FLOAT-32-NEXT: .cfi_offset %ebp, -8 584; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 585; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %ebp 586; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %ebx 587; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %edi 588; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 589; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 590; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 591; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 592; SOFT-FLOAT-32-NEXT: calll __mulsf3 593; SOFT-FLOAT-32-NEXT: addl $8, %esp 594; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 595; SOFT-FLOAT-32-NEXT: movl %eax, (%esp) # 4-byte Spill 596; SOFT-FLOAT-32-NEXT: pushl %edi 597; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 598; SOFT-FLOAT-32-NEXT: pushl %ebx 599; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 600; SOFT-FLOAT-32-NEXT: calll __mulsf3 601; SOFT-FLOAT-32-NEXT: addl $8, %esp 602; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 603; SOFT-FLOAT-32-NEXT: movl %eax, %ebx 604; SOFT-FLOAT-32-NEXT: pushl %ebp 605; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 606; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 607; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 608; SOFT-FLOAT-32-NEXT: calll __mulsf3 609; SOFT-FLOAT-32-NEXT: addl $8, %esp 610; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 611; SOFT-FLOAT-32-NEXT: movl %eax, %edi 612; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 613; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 614; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 615; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 616; SOFT-FLOAT-32-NEXT: calll __mulsf3 617; SOFT-FLOAT-32-NEXT: addl $8, %esp 618; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 619; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 620; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 621; SOFT-FLOAT-32-NEXT: pushl %eax 622; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 623; SOFT-FLOAT-32-NEXT: calll __addsf3 624; SOFT-FLOAT-32-NEXT: addl $8, %esp 625; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 626; SOFT-FLOAT-32-NEXT: movl %eax, %ebp 627; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 628; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 629; SOFT-FLOAT-32-NEXT: pushl %edi 630; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 631; SOFT-FLOAT-32-NEXT: calll __addsf3 632; SOFT-FLOAT-32-NEXT: addl $8, %esp 633; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 634; SOFT-FLOAT-32-NEXT: movl %eax, %edi 635; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 636; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 637; SOFT-FLOAT-32-NEXT: pushl %ebx 638; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 639; SOFT-FLOAT-32-NEXT: calll __addsf3 640; SOFT-FLOAT-32-NEXT: addl $8, %esp 641; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 642; SOFT-FLOAT-32-NEXT: movl %eax, %ebx 643; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 644; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 645; SOFT-FLOAT-32-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 646; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 647; SOFT-FLOAT-32-NEXT: calll __addsf3 648; SOFT-FLOAT-32-NEXT: addl $8, %esp 649; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -8 650; SOFT-FLOAT-32-NEXT: movl %eax, 12(%esi) 651; SOFT-FLOAT-32-NEXT: movl %ebx, 8(%esi) 652; SOFT-FLOAT-32-NEXT: movl %edi, 4(%esi) 653; SOFT-FLOAT-32-NEXT: movl %ebp, (%esi) 654; SOFT-FLOAT-32-NEXT: movl %esi, %eax 655; SOFT-FLOAT-32-NEXT: addl $4, %esp 656; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 20 657; SOFT-FLOAT-32-NEXT: popl %esi 658; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 16 659; SOFT-FLOAT-32-NEXT: popl %edi 660; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 661; SOFT-FLOAT-32-NEXT: popl %ebx 662; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 663; SOFT-FLOAT-32-NEXT: popl %ebp 664; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 665; SOFT-FLOAT-32-NEXT: retl $4 666; 667; SOFT-FLOAT-32-FMA-LABEL: fmuladd_contract_v4f32: 668; SOFT-FLOAT-32-FMA: # %bb.0: 669; SOFT-FLOAT-32-FMA-NEXT: pushl %ebp 670; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 671; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 672; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 673; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 674; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 16 675; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 676; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 20 677; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 678; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 24 679; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -20 680; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %edi, -16 681; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %ebx, -12 682; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %ebp, -8 683; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 684; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %ebp 685; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %ebx 686; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %edi 687; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 688; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 689; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 690; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 691; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 692; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 693; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 694; SOFT-FLOAT-32-FMA-NEXT: movl %eax, (%esp) # 4-byte Spill 695; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 696; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 697; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 698; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 699; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 700; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 701; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 702; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %ebx 703; SOFT-FLOAT-32-FMA-NEXT: pushl %ebp 704; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 705; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 706; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 707; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 708; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 709; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 710; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %edi 711; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 712; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 713; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 714; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 715; SOFT-FLOAT-32-FMA-NEXT: calll __mulsf3 716; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 717; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 718; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 719; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 720; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 721; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 722; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 723; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 724; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 725; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %ebp 726; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 727; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 728; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 729; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 730; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 731; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 732; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 733; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %edi 734; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 735; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 736; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 737; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 738; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 739; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 740; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 741; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %ebx 742; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 743; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 744; SOFT-FLOAT-32-FMA-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 745; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 746; SOFT-FLOAT-32-FMA-NEXT: calll __addsf3 747; SOFT-FLOAT-32-FMA-NEXT: addl $8, %esp 748; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -8 749; SOFT-FLOAT-32-FMA-NEXT: movl %eax, 12(%esi) 750; SOFT-FLOAT-32-FMA-NEXT: movl %ebx, 8(%esi) 751; SOFT-FLOAT-32-FMA-NEXT: movl %edi, 4(%esi) 752; SOFT-FLOAT-32-FMA-NEXT: movl %ebp, (%esi) 753; SOFT-FLOAT-32-FMA-NEXT: movl %esi, %eax 754; SOFT-FLOAT-32-FMA-NEXT: addl $4, %esp 755; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 20 756; SOFT-FLOAT-32-FMA-NEXT: popl %esi 757; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 16 758; SOFT-FLOAT-32-FMA-NEXT: popl %edi 759; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 760; SOFT-FLOAT-32-FMA-NEXT: popl %ebx 761; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 762; SOFT-FLOAT-32-FMA-NEXT: popl %ebp 763; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 764; SOFT-FLOAT-32-FMA-NEXT: retl $4 765; 766; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_contract_v4f32: 767; SOFT-FLOAT-32-FMA4: # %bb.0: 768; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebp 769; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 770; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 771; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 772; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 773; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 16 774; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 775; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 20 776; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 777; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 24 778; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -20 779; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %edi, -16 780; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %ebx, -12 781; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %ebp, -8 782; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 783; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %ebp 784; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %ebx 785; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %edi 786; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 787; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 788; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 789; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 790; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 791; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 792; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 793; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, (%esp) # 4-byte Spill 794; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 795; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 796; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 797; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 798; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 799; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 800; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 801; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %ebx 802; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebp 803; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 804; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 805; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 806; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 807; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 808; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 809; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %edi 810; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 811; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 812; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 813; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 814; SOFT-FLOAT-32-FMA4-NEXT: calll __mulsf3 815; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 816; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 817; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 818; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 819; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 820; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 821; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 822; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 823; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 824; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %ebp 825; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 826; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 827; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 828; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 829; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 830; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 831; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 832; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %edi 833; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 834; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 835; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 836; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 837; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 838; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 839; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 840; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %ebx 841; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 842; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 843; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 844; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 845; SOFT-FLOAT-32-FMA4-NEXT: calll __addsf3 846; SOFT-FLOAT-32-FMA4-NEXT: addl $8, %esp 847; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -8 848; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, 12(%esi) 849; SOFT-FLOAT-32-FMA4-NEXT: movl %ebx, 8(%esi) 850; SOFT-FLOAT-32-FMA4-NEXT: movl %edi, 4(%esi) 851; SOFT-FLOAT-32-FMA4-NEXT: movl %ebp, (%esi) 852; SOFT-FLOAT-32-FMA4-NEXT: movl %esi, %eax 853; SOFT-FLOAT-32-FMA4-NEXT: addl $4, %esp 854; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 20 855; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 856; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 16 857; SOFT-FLOAT-32-FMA4-NEXT: popl %edi 858; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 859; SOFT-FLOAT-32-FMA4-NEXT: popl %ebx 860; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 861; SOFT-FLOAT-32-FMA4-NEXT: popl %ebp 862; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 863; SOFT-FLOAT-32-FMA4-NEXT: retl $4 864; 865; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f32: 866; SOFT-FLOAT-64: # %bb.0: 867; SOFT-FLOAT-64-NEXT: pushq %rbp 868; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 869; SOFT-FLOAT-64-NEXT: pushq %r15 870; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 24 871; SOFT-FLOAT-64-NEXT: pushq %r14 872; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 32 873; SOFT-FLOAT-64-NEXT: pushq %r13 874; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 40 875; SOFT-FLOAT-64-NEXT: pushq %r12 876; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 48 877; SOFT-FLOAT-64-NEXT: pushq %rbx 878; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 56 879; SOFT-FLOAT-64-NEXT: pushq %rax 880; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 64 881; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -56 882; SOFT-FLOAT-64-NEXT: .cfi_offset %r12, -48 883; SOFT-FLOAT-64-NEXT: .cfi_offset %r13, -40 884; SOFT-FLOAT-64-NEXT: .cfi_offset %r14, -32 885; SOFT-FLOAT-64-NEXT: .cfi_offset %r15, -24 886; SOFT-FLOAT-64-NEXT: .cfi_offset %rbp, -16 887; SOFT-FLOAT-64-NEXT: movl %r9d, %r13d 888; SOFT-FLOAT-64-NEXT: movl %ecx, %ebp 889; SOFT-FLOAT-64-NEXT: movl %edx, %r14d 890; SOFT-FLOAT-64-NEXT: movl %esi, %r12d 891; SOFT-FLOAT-64-NEXT: movq %rdi, %rbx 892; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 893; SOFT-FLOAT-64-NEXT: movl %r8d, %edi 894; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 895; SOFT-FLOAT-64-NEXT: movl %eax, %r15d 896; SOFT-FLOAT-64-NEXT: movl %ebp, %edi 897; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 898; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 899; SOFT-FLOAT-64-NEXT: movl %eax, %ebp 900; SOFT-FLOAT-64-NEXT: movl %r14d, %edi 901; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 902; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 903; SOFT-FLOAT-64-NEXT: movl %eax, %r14d 904; SOFT-FLOAT-64-NEXT: movl %r12d, %edi 905; SOFT-FLOAT-64-NEXT: movl %r13d, %esi 906; SOFT-FLOAT-64-NEXT: callq __mulsf3@PLT 907; SOFT-FLOAT-64-NEXT: movl %eax, %edi 908; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 909; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 910; SOFT-FLOAT-64-NEXT: movl %eax, %r12d 911; SOFT-FLOAT-64-NEXT: movl %r14d, %edi 912; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 913; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 914; SOFT-FLOAT-64-NEXT: movl %eax, %r14d 915; SOFT-FLOAT-64-NEXT: movl %ebp, %edi 916; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 917; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 918; SOFT-FLOAT-64-NEXT: movl %eax, %ebp 919; SOFT-FLOAT-64-NEXT: movl %r15d, %edi 920; SOFT-FLOAT-64-NEXT: movl {{[0-9]+}}(%rsp), %esi 921; SOFT-FLOAT-64-NEXT: callq __addsf3@PLT 922; SOFT-FLOAT-64-NEXT: movl %eax, 12(%rbx) 923; SOFT-FLOAT-64-NEXT: movl %ebp, 8(%rbx) 924; SOFT-FLOAT-64-NEXT: movl %r14d, 4(%rbx) 925; SOFT-FLOAT-64-NEXT: movl %r12d, (%rbx) 926; SOFT-FLOAT-64-NEXT: movq %rbx, %rax 927; SOFT-FLOAT-64-NEXT: addq $8, %rsp 928; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 56 929; SOFT-FLOAT-64-NEXT: popq %rbx 930; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 48 931; SOFT-FLOAT-64-NEXT: popq %r12 932; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 40 933; SOFT-FLOAT-64-NEXT: popq %r13 934; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 32 935; SOFT-FLOAT-64-NEXT: popq %r14 936; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 24 937; SOFT-FLOAT-64-NEXT: popq %r15 938; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 939; SOFT-FLOAT-64-NEXT: popq %rbp 940; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 941; SOFT-FLOAT-64-NEXT: retq 942; 943; SOFT-FLOAT-64-FMA-LABEL: fmuladd_contract_v4f32: 944; SOFT-FLOAT-64-FMA: # %bb.0: 945; SOFT-FLOAT-64-FMA-NEXT: pushq %rbp 946; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 947; SOFT-FLOAT-64-FMA-NEXT: pushq %r15 948; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 24 949; SOFT-FLOAT-64-FMA-NEXT: pushq %r14 950; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 32 951; SOFT-FLOAT-64-FMA-NEXT: pushq %r13 952; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 40 953; SOFT-FLOAT-64-FMA-NEXT: pushq %r12 954; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 48 955; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 956; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 56 957; SOFT-FLOAT-64-FMA-NEXT: pushq %rax 958; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 64 959; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -56 960; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r12, -48 961; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r13, -40 962; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r14, -32 963; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r15, -24 964; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbp, -16 965; SOFT-FLOAT-64-FMA-NEXT: movl %r9d, %r13d 966; SOFT-FLOAT-64-FMA-NEXT: movl %ecx, %ebp 967; SOFT-FLOAT-64-FMA-NEXT: movl %edx, %r14d 968; SOFT-FLOAT-64-FMA-NEXT: movl %esi, %r12d 969; SOFT-FLOAT-64-FMA-NEXT: movq %rdi, %rbx 970; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 971; SOFT-FLOAT-64-FMA-NEXT: movl %r8d, %edi 972; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 973; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %r15d 974; SOFT-FLOAT-64-FMA-NEXT: movl %ebp, %edi 975; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 976; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 977; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %ebp 978; SOFT-FLOAT-64-FMA-NEXT: movl %r14d, %edi 979; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 980; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 981; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %r14d 982; SOFT-FLOAT-64-FMA-NEXT: movl %r12d, %edi 983; SOFT-FLOAT-64-FMA-NEXT: movl %r13d, %esi 984; SOFT-FLOAT-64-FMA-NEXT: callq __mulsf3@PLT 985; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %edi 986; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 987; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 988; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %r12d 989; SOFT-FLOAT-64-FMA-NEXT: movl %r14d, %edi 990; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 991; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 992; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %r14d 993; SOFT-FLOAT-64-FMA-NEXT: movl %ebp, %edi 994; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 995; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 996; SOFT-FLOAT-64-FMA-NEXT: movl %eax, %ebp 997; SOFT-FLOAT-64-FMA-NEXT: movl %r15d, %edi 998; SOFT-FLOAT-64-FMA-NEXT: movl {{[0-9]+}}(%rsp), %esi 999; SOFT-FLOAT-64-FMA-NEXT: callq __addsf3@PLT 1000; SOFT-FLOAT-64-FMA-NEXT: movl %eax, 12(%rbx) 1001; SOFT-FLOAT-64-FMA-NEXT: movl %ebp, 8(%rbx) 1002; SOFT-FLOAT-64-FMA-NEXT: movl %r14d, 4(%rbx) 1003; SOFT-FLOAT-64-FMA-NEXT: movl %r12d, (%rbx) 1004; SOFT-FLOAT-64-FMA-NEXT: movq %rbx, %rax 1005; SOFT-FLOAT-64-FMA-NEXT: addq $8, %rsp 1006; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 56 1007; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 1008; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 48 1009; SOFT-FLOAT-64-FMA-NEXT: popq %r12 1010; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 40 1011; SOFT-FLOAT-64-FMA-NEXT: popq %r13 1012; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 32 1013; SOFT-FLOAT-64-FMA-NEXT: popq %r14 1014; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 24 1015; SOFT-FLOAT-64-FMA-NEXT: popq %r15 1016; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 1017; SOFT-FLOAT-64-FMA-NEXT: popq %rbp 1018; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 1019; SOFT-FLOAT-64-FMA-NEXT: retq 1020; 1021; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_contract_v4f32: 1022; SOFT-FLOAT-64-FMA4: # %bb.0: 1023; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbp 1024; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 1025; SOFT-FLOAT-64-FMA4-NEXT: pushq %r15 1026; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 24 1027; SOFT-FLOAT-64-FMA4-NEXT: pushq %r14 1028; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 32 1029; SOFT-FLOAT-64-FMA4-NEXT: pushq %r13 1030; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 40 1031; SOFT-FLOAT-64-FMA4-NEXT: pushq %r12 1032; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 48 1033; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 1034; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 56 1035; SOFT-FLOAT-64-FMA4-NEXT: pushq %rax 1036; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 64 1037; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -56 1038; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r12, -48 1039; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r13, -40 1040; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r14, -32 1041; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r15, -24 1042; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbp, -16 1043; SOFT-FLOAT-64-FMA4-NEXT: movl %r9d, %r13d 1044; SOFT-FLOAT-64-FMA4-NEXT: movl %ecx, %ebp 1045; SOFT-FLOAT-64-FMA4-NEXT: movl %edx, %r14d 1046; SOFT-FLOAT-64-FMA4-NEXT: movl %esi, %r12d 1047; SOFT-FLOAT-64-FMA4-NEXT: movq %rdi, %rbx 1048; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1049; SOFT-FLOAT-64-FMA4-NEXT: movl %r8d, %edi 1050; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 1051; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %r15d 1052; SOFT-FLOAT-64-FMA4-NEXT: movl %ebp, %edi 1053; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1054; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 1055; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %ebp 1056; SOFT-FLOAT-64-FMA4-NEXT: movl %r14d, %edi 1057; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1058; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 1059; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %r14d 1060; SOFT-FLOAT-64-FMA4-NEXT: movl %r12d, %edi 1061; SOFT-FLOAT-64-FMA4-NEXT: movl %r13d, %esi 1062; SOFT-FLOAT-64-FMA4-NEXT: callq __mulsf3@PLT 1063; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %edi 1064; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1065; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 1066; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %r12d 1067; SOFT-FLOAT-64-FMA4-NEXT: movl %r14d, %edi 1068; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1069; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 1070; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %r14d 1071; SOFT-FLOAT-64-FMA4-NEXT: movl %ebp, %edi 1072; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1073; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 1074; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, %ebp 1075; SOFT-FLOAT-64-FMA4-NEXT: movl %r15d, %edi 1076; SOFT-FLOAT-64-FMA4-NEXT: movl {{[0-9]+}}(%rsp), %esi 1077; SOFT-FLOAT-64-FMA4-NEXT: callq __addsf3@PLT 1078; SOFT-FLOAT-64-FMA4-NEXT: movl %eax, 12(%rbx) 1079; SOFT-FLOAT-64-FMA4-NEXT: movl %ebp, 8(%rbx) 1080; SOFT-FLOAT-64-FMA4-NEXT: movl %r14d, 4(%rbx) 1081; SOFT-FLOAT-64-FMA4-NEXT: movl %r12d, (%rbx) 1082; SOFT-FLOAT-64-FMA4-NEXT: movq %rbx, %rax 1083; SOFT-FLOAT-64-FMA4-NEXT: addq $8, %rsp 1084; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 56 1085; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 1086; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 48 1087; SOFT-FLOAT-64-FMA4-NEXT: popq %r12 1088; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 40 1089; SOFT-FLOAT-64-FMA4-NEXT: popq %r13 1090; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 32 1091; SOFT-FLOAT-64-FMA4-NEXT: popq %r14 1092; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 24 1093; SOFT-FLOAT-64-FMA4-NEXT: popq %r15 1094; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 1095; SOFT-FLOAT-64-FMA4-NEXT: popq %rbp 1096; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 1097; SOFT-FLOAT-64-FMA4-NEXT: retq 1098 %product = fmul contract <4 x float> %a, %b 1099 %result = fadd contract <4 x float> %product, %c 1100 ret <4 x float> %result 1101} 1102 1103define <4 x double> @fmuladd_contract_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c) #0 { 1104; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f64: 1105; SOFT-FLOAT-32: # %bb.0: 1106; SOFT-FLOAT-32-NEXT: pushl %ebp 1107; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 1108; SOFT-FLOAT-32-NEXT: pushl %ebx 1109; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 1110; SOFT-FLOAT-32-NEXT: pushl %edi 1111; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 16 1112; SOFT-FLOAT-32-NEXT: pushl %esi 1113; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 20 1114; SOFT-FLOAT-32-NEXT: subl $16, %esp 1115; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 36 1116; SOFT-FLOAT-32-NEXT: .cfi_offset %esi, -20 1117; SOFT-FLOAT-32-NEXT: .cfi_offset %edi, -16 1118; SOFT-FLOAT-32-NEXT: .cfi_offset %ebx, -12 1119; SOFT-FLOAT-32-NEXT: .cfi_offset %ebp, -8 1120; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %edi 1121; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %ebx 1122; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %esi 1123; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %ebp 1124; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1125; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1126; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1127; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1128; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1129; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1130; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1131; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1132; SOFT-FLOAT-32-NEXT: calll __muldf3 1133; SOFT-FLOAT-32-NEXT: addl $16, %esp 1134; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1135; SOFT-FLOAT-32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1136; SOFT-FLOAT-32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1137; SOFT-FLOAT-32-NEXT: pushl %ebp 1138; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1139; SOFT-FLOAT-32-NEXT: pushl %esi 1140; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1141; SOFT-FLOAT-32-NEXT: pushl %ebx 1142; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1143; SOFT-FLOAT-32-NEXT: pushl %edi 1144; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1145; SOFT-FLOAT-32-NEXT: calll __muldf3 1146; SOFT-FLOAT-32-NEXT: addl $16, %esp 1147; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1148; SOFT-FLOAT-32-NEXT: movl %eax, %esi 1149; SOFT-FLOAT-32-NEXT: movl %edx, %ebp 1150; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1151; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1152; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1153; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1154; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1155; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1156; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1157; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1158; SOFT-FLOAT-32-NEXT: calll __muldf3 1159; SOFT-FLOAT-32-NEXT: addl $16, %esp 1160; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1161; SOFT-FLOAT-32-NEXT: movl %eax, %edi 1162; SOFT-FLOAT-32-NEXT: movl %edx, %ebx 1163; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1164; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1165; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1166; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1167; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1168; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1169; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1170; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1171; SOFT-FLOAT-32-NEXT: calll __muldf3 1172; SOFT-FLOAT-32-NEXT: addl $16, %esp 1173; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1174; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1175; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1176; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1177; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1178; SOFT-FLOAT-32-NEXT: pushl %edx 1179; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1180; SOFT-FLOAT-32-NEXT: pushl %eax 1181; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1182; SOFT-FLOAT-32-NEXT: calll __adddf3 1183; SOFT-FLOAT-32-NEXT: addl $16, %esp 1184; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1185; SOFT-FLOAT-32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1186; SOFT-FLOAT-32-NEXT: movl %edx, (%esp) # 4-byte Spill 1187; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1188; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1189; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1190; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1191; SOFT-FLOAT-32-NEXT: pushl %ebx 1192; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1193; SOFT-FLOAT-32-NEXT: pushl %edi 1194; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1195; SOFT-FLOAT-32-NEXT: calll __adddf3 1196; SOFT-FLOAT-32-NEXT: addl $16, %esp 1197; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1198; SOFT-FLOAT-32-NEXT: movl %eax, %edi 1199; SOFT-FLOAT-32-NEXT: movl %edx, %ebx 1200; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1201; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1202; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1203; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1204; SOFT-FLOAT-32-NEXT: pushl %ebp 1205; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1206; SOFT-FLOAT-32-NEXT: pushl %esi 1207; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1208; SOFT-FLOAT-32-NEXT: calll __adddf3 1209; SOFT-FLOAT-32-NEXT: addl $16, %esp 1210; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1211; SOFT-FLOAT-32-NEXT: movl %eax, %ebp 1212; SOFT-FLOAT-32-NEXT: movl %edx, %esi 1213; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1214; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1215; SOFT-FLOAT-32-NEXT: pushl {{[0-9]+}}(%esp) 1216; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1217; SOFT-FLOAT-32-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1218; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1219; SOFT-FLOAT-32-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1220; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset 4 1221; SOFT-FLOAT-32-NEXT: calll __adddf3 1222; SOFT-FLOAT-32-NEXT: addl $16, %esp 1223; SOFT-FLOAT-32-NEXT: .cfi_adjust_cfa_offset -16 1224; SOFT-FLOAT-32-NEXT: movl {{[0-9]+}}(%esp), %ecx 1225; SOFT-FLOAT-32-NEXT: movl %edx, 28(%ecx) 1226; SOFT-FLOAT-32-NEXT: movl %eax, 24(%ecx) 1227; SOFT-FLOAT-32-NEXT: movl %esi, 20(%ecx) 1228; SOFT-FLOAT-32-NEXT: movl %ebp, 16(%ecx) 1229; SOFT-FLOAT-32-NEXT: movl %ebx, 12(%ecx) 1230; SOFT-FLOAT-32-NEXT: movl %edi, 8(%ecx) 1231; SOFT-FLOAT-32-NEXT: movl (%esp), %eax # 4-byte Reload 1232; SOFT-FLOAT-32-NEXT: movl %eax, 4(%ecx) 1233; SOFT-FLOAT-32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 1234; SOFT-FLOAT-32-NEXT: movl %eax, (%ecx) 1235; SOFT-FLOAT-32-NEXT: movl %ecx, %eax 1236; SOFT-FLOAT-32-NEXT: addl $16, %esp 1237; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 20 1238; SOFT-FLOAT-32-NEXT: popl %esi 1239; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 16 1240; SOFT-FLOAT-32-NEXT: popl %edi 1241; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 12 1242; SOFT-FLOAT-32-NEXT: popl %ebx 1243; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 8 1244; SOFT-FLOAT-32-NEXT: popl %ebp 1245; SOFT-FLOAT-32-NEXT: .cfi_def_cfa_offset 4 1246; SOFT-FLOAT-32-NEXT: retl $4 1247; 1248; SOFT-FLOAT-32-FMA-LABEL: fmuladd_contract_v4f64: 1249; SOFT-FLOAT-32-FMA: # %bb.0: 1250; SOFT-FLOAT-32-FMA-NEXT: pushl %ebp 1251; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 1252; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 1253; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 1254; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 1255; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 16 1256; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 1257; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 20 1258; SOFT-FLOAT-32-FMA-NEXT: subl $16, %esp 1259; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 36 1260; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %esi, -20 1261; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %edi, -16 1262; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %ebx, -12 1263; SOFT-FLOAT-32-FMA-NEXT: .cfi_offset %ebp, -8 1264; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %edi 1265; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %ebx 1266; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %esi 1267; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %ebp 1268; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1269; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1270; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1271; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1272; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1273; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1274; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1275; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1276; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 1277; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1278; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1279; SOFT-FLOAT-32-FMA-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1280; SOFT-FLOAT-32-FMA-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1281; SOFT-FLOAT-32-FMA-NEXT: pushl %ebp 1282; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1283; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 1284; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1285; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 1286; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1287; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 1288; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1289; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 1290; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1291; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1292; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %esi 1293; SOFT-FLOAT-32-FMA-NEXT: movl %edx, %ebp 1294; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1295; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1296; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1297; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1298; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1299; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1300; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1301; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1302; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 1303; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1304; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1305; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %edi 1306; SOFT-FLOAT-32-FMA-NEXT: movl %edx, %ebx 1307; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1308; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1309; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1310; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1311; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1312; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1313; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1314; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1315; SOFT-FLOAT-32-FMA-NEXT: calll __muldf3 1316; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1317; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1318; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1319; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1320; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1321; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1322; SOFT-FLOAT-32-FMA-NEXT: pushl %edx 1323; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1324; SOFT-FLOAT-32-FMA-NEXT: pushl %eax 1325; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1326; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 1327; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1328; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1329; SOFT-FLOAT-32-FMA-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1330; SOFT-FLOAT-32-FMA-NEXT: movl %edx, (%esp) # 4-byte Spill 1331; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1332; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1333; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1334; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1335; SOFT-FLOAT-32-FMA-NEXT: pushl %ebx 1336; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1337; SOFT-FLOAT-32-FMA-NEXT: pushl %edi 1338; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1339; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 1340; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1341; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1342; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %edi 1343; SOFT-FLOAT-32-FMA-NEXT: movl %edx, %ebx 1344; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1345; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1346; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1347; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1348; SOFT-FLOAT-32-FMA-NEXT: pushl %ebp 1349; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1350; SOFT-FLOAT-32-FMA-NEXT: pushl %esi 1351; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1352; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 1353; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1354; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1355; SOFT-FLOAT-32-FMA-NEXT: movl %eax, %ebp 1356; SOFT-FLOAT-32-FMA-NEXT: movl %edx, %esi 1357; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1358; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1359; SOFT-FLOAT-32-FMA-NEXT: pushl {{[0-9]+}}(%esp) 1360; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1361; SOFT-FLOAT-32-FMA-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1362; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1363; SOFT-FLOAT-32-FMA-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1364; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset 4 1365; SOFT-FLOAT-32-FMA-NEXT: calll __adddf3 1366; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1367; SOFT-FLOAT-32-FMA-NEXT: .cfi_adjust_cfa_offset -16 1368; SOFT-FLOAT-32-FMA-NEXT: movl {{[0-9]+}}(%esp), %ecx 1369; SOFT-FLOAT-32-FMA-NEXT: movl %edx, 28(%ecx) 1370; SOFT-FLOAT-32-FMA-NEXT: movl %eax, 24(%ecx) 1371; SOFT-FLOAT-32-FMA-NEXT: movl %esi, 20(%ecx) 1372; SOFT-FLOAT-32-FMA-NEXT: movl %ebp, 16(%ecx) 1373; SOFT-FLOAT-32-FMA-NEXT: movl %ebx, 12(%ecx) 1374; SOFT-FLOAT-32-FMA-NEXT: movl %edi, 8(%ecx) 1375; SOFT-FLOAT-32-FMA-NEXT: movl (%esp), %eax # 4-byte Reload 1376; SOFT-FLOAT-32-FMA-NEXT: movl %eax, 4(%ecx) 1377; SOFT-FLOAT-32-FMA-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 1378; SOFT-FLOAT-32-FMA-NEXT: movl %eax, (%ecx) 1379; SOFT-FLOAT-32-FMA-NEXT: movl %ecx, %eax 1380; SOFT-FLOAT-32-FMA-NEXT: addl $16, %esp 1381; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 20 1382; SOFT-FLOAT-32-FMA-NEXT: popl %esi 1383; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 16 1384; SOFT-FLOAT-32-FMA-NEXT: popl %edi 1385; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 12 1386; SOFT-FLOAT-32-FMA-NEXT: popl %ebx 1387; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 8 1388; SOFT-FLOAT-32-FMA-NEXT: popl %ebp 1389; SOFT-FLOAT-32-FMA-NEXT: .cfi_def_cfa_offset 4 1390; SOFT-FLOAT-32-FMA-NEXT: retl $4 1391; 1392; SOFT-FLOAT-32-FMA4-LABEL: fmuladd_contract_v4f64: 1393; SOFT-FLOAT-32-FMA4: # %bb.0: 1394; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebp 1395; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 1396; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 1397; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 1398; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 1399; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 16 1400; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 1401; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 20 1402; SOFT-FLOAT-32-FMA4-NEXT: subl $16, %esp 1403; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 36 1404; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %esi, -20 1405; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %edi, -16 1406; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %ebx, -12 1407; SOFT-FLOAT-32-FMA4-NEXT: .cfi_offset %ebp, -8 1408; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %edi 1409; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %ebx 1410; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %esi 1411; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %ebp 1412; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1413; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1414; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1415; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1416; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1417; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1418; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1419; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1420; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 1421; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1422; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1423; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1424; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1425; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebp 1426; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1427; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 1428; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1429; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 1430; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1431; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 1432; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1433; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 1434; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1435; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1436; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %esi 1437; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, %ebp 1438; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1439; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1440; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1441; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1442; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1443; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1444; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1445; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1446; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 1447; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1448; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1449; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %edi 1450; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, %ebx 1451; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1452; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1453; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1454; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1455; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1456; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1457; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1458; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1459; SOFT-FLOAT-32-FMA4-NEXT: calll __muldf3 1460; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1461; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1462; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1463; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1464; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1465; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1466; SOFT-FLOAT-32-FMA4-NEXT: pushl %edx 1467; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1468; SOFT-FLOAT-32-FMA4-NEXT: pushl %eax 1469; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1470; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 1471; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1472; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1473; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 1474; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, (%esp) # 4-byte Spill 1475; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1476; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1477; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1478; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1479; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebx 1480; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1481; SOFT-FLOAT-32-FMA4-NEXT: pushl %edi 1482; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1483; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 1484; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1485; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1486; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %edi 1487; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, %ebx 1488; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1489; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1490; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1491; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1492; SOFT-FLOAT-32-FMA4-NEXT: pushl %ebp 1493; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1494; SOFT-FLOAT-32-FMA4-NEXT: pushl %esi 1495; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1496; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 1497; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1498; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1499; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, %ebp 1500; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, %esi 1501; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1502; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1503; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[0-9]+}}(%esp) 1504; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1505; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1506; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1507; SOFT-FLOAT-32-FMA4-NEXT: pushl {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload 1508; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset 4 1509; SOFT-FLOAT-32-FMA4-NEXT: calll __adddf3 1510; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1511; SOFT-FLOAT-32-FMA4-NEXT: .cfi_adjust_cfa_offset -16 1512; SOFT-FLOAT-32-FMA4-NEXT: movl {{[0-9]+}}(%esp), %ecx 1513; SOFT-FLOAT-32-FMA4-NEXT: movl %edx, 28(%ecx) 1514; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, 24(%ecx) 1515; SOFT-FLOAT-32-FMA4-NEXT: movl %esi, 20(%ecx) 1516; SOFT-FLOAT-32-FMA4-NEXT: movl %ebp, 16(%ecx) 1517; SOFT-FLOAT-32-FMA4-NEXT: movl %ebx, 12(%ecx) 1518; SOFT-FLOAT-32-FMA4-NEXT: movl %edi, 8(%ecx) 1519; SOFT-FLOAT-32-FMA4-NEXT: movl (%esp), %eax # 4-byte Reload 1520; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, 4(%ecx) 1521; SOFT-FLOAT-32-FMA4-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 1522; SOFT-FLOAT-32-FMA4-NEXT: movl %eax, (%ecx) 1523; SOFT-FLOAT-32-FMA4-NEXT: movl %ecx, %eax 1524; SOFT-FLOAT-32-FMA4-NEXT: addl $16, %esp 1525; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 20 1526; SOFT-FLOAT-32-FMA4-NEXT: popl %esi 1527; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 16 1528; SOFT-FLOAT-32-FMA4-NEXT: popl %edi 1529; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 12 1530; SOFT-FLOAT-32-FMA4-NEXT: popl %ebx 1531; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 8 1532; SOFT-FLOAT-32-FMA4-NEXT: popl %ebp 1533; SOFT-FLOAT-32-FMA4-NEXT: .cfi_def_cfa_offset 4 1534; SOFT-FLOAT-32-FMA4-NEXT: retl $4 1535; 1536; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f64: 1537; SOFT-FLOAT-64: # %bb.0: 1538; SOFT-FLOAT-64-NEXT: pushq %rbp 1539; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 1540; SOFT-FLOAT-64-NEXT: pushq %r15 1541; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 24 1542; SOFT-FLOAT-64-NEXT: pushq %r14 1543; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 32 1544; SOFT-FLOAT-64-NEXT: pushq %r13 1545; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 40 1546; SOFT-FLOAT-64-NEXT: pushq %r12 1547; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 48 1548; SOFT-FLOAT-64-NEXT: pushq %rbx 1549; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 56 1550; SOFT-FLOAT-64-NEXT: pushq %rax 1551; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 64 1552; SOFT-FLOAT-64-NEXT: .cfi_offset %rbx, -56 1553; SOFT-FLOAT-64-NEXT: .cfi_offset %r12, -48 1554; SOFT-FLOAT-64-NEXT: .cfi_offset %r13, -40 1555; SOFT-FLOAT-64-NEXT: .cfi_offset %r14, -32 1556; SOFT-FLOAT-64-NEXT: .cfi_offset %r15, -24 1557; SOFT-FLOAT-64-NEXT: .cfi_offset %rbp, -16 1558; SOFT-FLOAT-64-NEXT: movq %r9, %rbp 1559; SOFT-FLOAT-64-NEXT: movq %rcx, %r14 1560; SOFT-FLOAT-64-NEXT: movq %rdx, %r15 1561; SOFT-FLOAT-64-NEXT: movq %rsi, %r13 1562; SOFT-FLOAT-64-NEXT: movq %rdi, %rbx 1563; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1564; SOFT-FLOAT-64-NEXT: movq %r8, %rdi 1565; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 1566; SOFT-FLOAT-64-NEXT: movq %rax, %r12 1567; SOFT-FLOAT-64-NEXT: movq %r14, %rdi 1568; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1569; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 1570; SOFT-FLOAT-64-NEXT: movq %rax, %r14 1571; SOFT-FLOAT-64-NEXT: movq %r15, %rdi 1572; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1573; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 1574; SOFT-FLOAT-64-NEXT: movq %rax, %r15 1575; SOFT-FLOAT-64-NEXT: movq %r13, %rdi 1576; SOFT-FLOAT-64-NEXT: movq %rbp, %rsi 1577; SOFT-FLOAT-64-NEXT: callq __muldf3@PLT 1578; SOFT-FLOAT-64-NEXT: movq %rax, %rdi 1579; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1580; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 1581; SOFT-FLOAT-64-NEXT: movq %rax, %r13 1582; SOFT-FLOAT-64-NEXT: movq %r15, %rdi 1583; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1584; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 1585; SOFT-FLOAT-64-NEXT: movq %rax, %r15 1586; SOFT-FLOAT-64-NEXT: movq %r14, %rdi 1587; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1588; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 1589; SOFT-FLOAT-64-NEXT: movq %rax, %r14 1590; SOFT-FLOAT-64-NEXT: movq %r12, %rdi 1591; SOFT-FLOAT-64-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1592; SOFT-FLOAT-64-NEXT: callq __adddf3@PLT 1593; SOFT-FLOAT-64-NEXT: movq %rax, 24(%rbx) 1594; SOFT-FLOAT-64-NEXT: movq %r14, 16(%rbx) 1595; SOFT-FLOAT-64-NEXT: movq %r15, 8(%rbx) 1596; SOFT-FLOAT-64-NEXT: movq %r13, (%rbx) 1597; SOFT-FLOAT-64-NEXT: movq %rbx, %rax 1598; SOFT-FLOAT-64-NEXT: addq $8, %rsp 1599; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 56 1600; SOFT-FLOAT-64-NEXT: popq %rbx 1601; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 48 1602; SOFT-FLOAT-64-NEXT: popq %r12 1603; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 40 1604; SOFT-FLOAT-64-NEXT: popq %r13 1605; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 32 1606; SOFT-FLOAT-64-NEXT: popq %r14 1607; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 24 1608; SOFT-FLOAT-64-NEXT: popq %r15 1609; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 16 1610; SOFT-FLOAT-64-NEXT: popq %rbp 1611; SOFT-FLOAT-64-NEXT: .cfi_def_cfa_offset 8 1612; SOFT-FLOAT-64-NEXT: retq 1613; 1614; SOFT-FLOAT-64-FMA-LABEL: fmuladd_contract_v4f64: 1615; SOFT-FLOAT-64-FMA: # %bb.0: 1616; SOFT-FLOAT-64-FMA-NEXT: pushq %rbp 1617; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 1618; SOFT-FLOAT-64-FMA-NEXT: pushq %r15 1619; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 24 1620; SOFT-FLOAT-64-FMA-NEXT: pushq %r14 1621; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 32 1622; SOFT-FLOAT-64-FMA-NEXT: pushq %r13 1623; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 40 1624; SOFT-FLOAT-64-FMA-NEXT: pushq %r12 1625; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 48 1626; SOFT-FLOAT-64-FMA-NEXT: pushq %rbx 1627; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 56 1628; SOFT-FLOAT-64-FMA-NEXT: pushq %rax 1629; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 64 1630; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbx, -56 1631; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r12, -48 1632; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r13, -40 1633; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r14, -32 1634; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %r15, -24 1635; SOFT-FLOAT-64-FMA-NEXT: .cfi_offset %rbp, -16 1636; SOFT-FLOAT-64-FMA-NEXT: movq %r9, %rbp 1637; SOFT-FLOAT-64-FMA-NEXT: movq %rcx, %r14 1638; SOFT-FLOAT-64-FMA-NEXT: movq %rdx, %r15 1639; SOFT-FLOAT-64-FMA-NEXT: movq %rsi, %r13 1640; SOFT-FLOAT-64-FMA-NEXT: movq %rdi, %rbx 1641; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1642; SOFT-FLOAT-64-FMA-NEXT: movq %r8, %rdi 1643; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 1644; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r12 1645; SOFT-FLOAT-64-FMA-NEXT: movq %r14, %rdi 1646; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1647; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 1648; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r14 1649; SOFT-FLOAT-64-FMA-NEXT: movq %r15, %rdi 1650; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1651; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 1652; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r15 1653; SOFT-FLOAT-64-FMA-NEXT: movq %r13, %rdi 1654; SOFT-FLOAT-64-FMA-NEXT: movq %rbp, %rsi 1655; SOFT-FLOAT-64-FMA-NEXT: callq __muldf3@PLT 1656; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %rdi 1657; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1658; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 1659; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r13 1660; SOFT-FLOAT-64-FMA-NEXT: movq %r15, %rdi 1661; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1662; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 1663; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r15 1664; SOFT-FLOAT-64-FMA-NEXT: movq %r14, %rdi 1665; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1666; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 1667; SOFT-FLOAT-64-FMA-NEXT: movq %rax, %r14 1668; SOFT-FLOAT-64-FMA-NEXT: movq %r12, %rdi 1669; SOFT-FLOAT-64-FMA-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1670; SOFT-FLOAT-64-FMA-NEXT: callq __adddf3@PLT 1671; SOFT-FLOAT-64-FMA-NEXT: movq %rax, 24(%rbx) 1672; SOFT-FLOAT-64-FMA-NEXT: movq %r14, 16(%rbx) 1673; SOFT-FLOAT-64-FMA-NEXT: movq %r15, 8(%rbx) 1674; SOFT-FLOAT-64-FMA-NEXT: movq %r13, (%rbx) 1675; SOFT-FLOAT-64-FMA-NEXT: movq %rbx, %rax 1676; SOFT-FLOAT-64-FMA-NEXT: addq $8, %rsp 1677; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 56 1678; SOFT-FLOAT-64-FMA-NEXT: popq %rbx 1679; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 48 1680; SOFT-FLOAT-64-FMA-NEXT: popq %r12 1681; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 40 1682; SOFT-FLOAT-64-FMA-NEXT: popq %r13 1683; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 32 1684; SOFT-FLOAT-64-FMA-NEXT: popq %r14 1685; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 24 1686; SOFT-FLOAT-64-FMA-NEXT: popq %r15 1687; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 16 1688; SOFT-FLOAT-64-FMA-NEXT: popq %rbp 1689; SOFT-FLOAT-64-FMA-NEXT: .cfi_def_cfa_offset 8 1690; SOFT-FLOAT-64-FMA-NEXT: retq 1691; 1692; SOFT-FLOAT-64-FMA4-LABEL: fmuladd_contract_v4f64: 1693; SOFT-FLOAT-64-FMA4: # %bb.0: 1694; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbp 1695; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 1696; SOFT-FLOAT-64-FMA4-NEXT: pushq %r15 1697; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 24 1698; SOFT-FLOAT-64-FMA4-NEXT: pushq %r14 1699; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 32 1700; SOFT-FLOAT-64-FMA4-NEXT: pushq %r13 1701; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 40 1702; SOFT-FLOAT-64-FMA4-NEXT: pushq %r12 1703; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 48 1704; SOFT-FLOAT-64-FMA4-NEXT: pushq %rbx 1705; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 56 1706; SOFT-FLOAT-64-FMA4-NEXT: pushq %rax 1707; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 64 1708; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbx, -56 1709; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r12, -48 1710; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r13, -40 1711; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r14, -32 1712; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %r15, -24 1713; SOFT-FLOAT-64-FMA4-NEXT: .cfi_offset %rbp, -16 1714; SOFT-FLOAT-64-FMA4-NEXT: movq %r9, %rbp 1715; SOFT-FLOAT-64-FMA4-NEXT: movq %rcx, %r14 1716; SOFT-FLOAT-64-FMA4-NEXT: movq %rdx, %r15 1717; SOFT-FLOAT-64-FMA4-NEXT: movq %rsi, %r13 1718; SOFT-FLOAT-64-FMA4-NEXT: movq %rdi, %rbx 1719; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1720; SOFT-FLOAT-64-FMA4-NEXT: movq %r8, %rdi 1721; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 1722; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r12 1723; SOFT-FLOAT-64-FMA4-NEXT: movq %r14, %rdi 1724; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1725; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 1726; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r14 1727; SOFT-FLOAT-64-FMA4-NEXT: movq %r15, %rdi 1728; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1729; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 1730; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r15 1731; SOFT-FLOAT-64-FMA4-NEXT: movq %r13, %rdi 1732; SOFT-FLOAT-64-FMA4-NEXT: movq %rbp, %rsi 1733; SOFT-FLOAT-64-FMA4-NEXT: callq __muldf3@PLT 1734; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %rdi 1735; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1736; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 1737; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r13 1738; SOFT-FLOAT-64-FMA4-NEXT: movq %r15, %rdi 1739; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1740; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 1741; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r15 1742; SOFT-FLOAT-64-FMA4-NEXT: movq %r14, %rdi 1743; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1744; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 1745; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, %r14 1746; SOFT-FLOAT-64-FMA4-NEXT: movq %r12, %rdi 1747; SOFT-FLOAT-64-FMA4-NEXT: movq {{[0-9]+}}(%rsp), %rsi 1748; SOFT-FLOAT-64-FMA4-NEXT: callq __adddf3@PLT 1749; SOFT-FLOAT-64-FMA4-NEXT: movq %rax, 24(%rbx) 1750; SOFT-FLOAT-64-FMA4-NEXT: movq %r14, 16(%rbx) 1751; SOFT-FLOAT-64-FMA4-NEXT: movq %r15, 8(%rbx) 1752; SOFT-FLOAT-64-FMA4-NEXT: movq %r13, (%rbx) 1753; SOFT-FLOAT-64-FMA4-NEXT: movq %rbx, %rax 1754; SOFT-FLOAT-64-FMA4-NEXT: addq $8, %rsp 1755; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 56 1756; SOFT-FLOAT-64-FMA4-NEXT: popq %rbx 1757; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 48 1758; SOFT-FLOAT-64-FMA4-NEXT: popq %r12 1759; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 40 1760; SOFT-FLOAT-64-FMA4-NEXT: popq %r13 1761; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 32 1762; SOFT-FLOAT-64-FMA4-NEXT: popq %r14 1763; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 24 1764; SOFT-FLOAT-64-FMA4-NEXT: popq %r15 1765; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 16 1766; SOFT-FLOAT-64-FMA4-NEXT: popq %rbp 1767; SOFT-FLOAT-64-FMA4-NEXT: .cfi_def_cfa_offset 8 1768; SOFT-FLOAT-64-FMA4-NEXT: retq 1769 %product = fmul contract <4 x double> %a, %b 1770 %result = fadd contract <4 x double> %product, %c 1771 ret <4 x double> %result 1772} 1773 1774attributes #0 = { "use-soft-float"="true" } 1775 1776declare float @llvm.fmuladd.f32(float %a, float %b, float %c) 1777declare double @llvm.fmuladd.f64(double %a, double %b, double %c) 1778