brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.3 KiB · 88deba3 Raw
564 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mcpu=bdver2 -mtriple=x86_64-pc-win32 | FileCheck %s --check-prefix=FMA43 4attributes #0 = { nounwind }5 6declare <4 x float> @llvm.x86.fma4.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone7define <4 x float> @test_x86_fmadd_baa_ss(<4 x float> %a, <4 x float> %b) #0 {8; FMA4-LABEL: test_x86_fmadd_baa_ss:9; FMA4:       # %bb.0:10; FMA4-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero11; FMA4-NEXT:    vfmaddss {{.*#+}} xmm0 = (xmm0 * mem) + xmm012; FMA4-NEXT:    retq13  %res = call <4 x float> @llvm.x86.fma4.vfmadd.ss(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind14  ret <4 x float> %res15}16 17define <4 x float> @test_x86_fmadd_aba_ss(<4 x float> %a, <4 x float> %b) #0 {18; FMA4-LABEL: test_x86_fmadd_aba_ss:19; FMA4:       # %bb.0:20; FMA4-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero21; FMA4-NEXT:    vfmaddss {{.*#+}} xmm0 = (xmm0 * mem) + xmm022; FMA4-NEXT:    retq23  %res = call <4 x float> @llvm.x86.fma4.vfmadd.ss(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind24  ret <4 x float> %res25}26 27define <4 x float> @test_x86_fmadd_bba_ss(<4 x float> %a, <4 x float> %b) #0 {28; FMA4-LABEL: test_x86_fmadd_bba_ss:29; FMA4:       # %bb.0:30; FMA4-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero31; FMA4-NEXT:    vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm0) + mem32; FMA4-NEXT:    retq33  %res = call <4 x float> @llvm.x86.fma4.vfmadd.ss(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind34  ret <4 x float> %res35}36 37declare <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone38define <4 x float> @test_x86_fmadd_baa_ps(<4 x float> %a, <4 x float> %b) #0 {39; FMA4-LABEL: test_x86_fmadd_baa_ps:40; FMA4:       # %bb.0:41; FMA4-NEXT:    vmovaps (%rcx), %xmm042; FMA4-NEXT:    vfmaddps {{.*#+}} xmm0 = (xmm0 * mem) + xmm043; FMA4-NEXT:    retq44  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind45  ret <4 x float> %res46}47 48define <4 x float> @test_x86_fmadd_aba_ps(<4 x float> %a, <4 x float> %b) #0 {49; FMA4-LABEL: test_x86_fmadd_aba_ps:50; FMA4:       # %bb.0:51; FMA4-NEXT:    vmovaps (%rcx), %xmm052; FMA4-NEXT:    vfmaddps {{.*#+}} xmm0 = (xmm0 * mem) + xmm053; FMA4-NEXT:    retq54  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind55  ret <4 x float> %res56}57 58define <4 x float> @test_x86_fmadd_bba_ps(<4 x float> %a, <4 x float> %b) #0 {59; FMA4-LABEL: test_x86_fmadd_bba_ps:60; FMA4:       # %bb.0:61; FMA4-NEXT:    vmovaps (%rdx), %xmm062; FMA4-NEXT:    vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm0) + mem63; FMA4-NEXT:    retq64  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind65  ret <4 x float> %res66}67 68declare <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone69define <8 x float> @test_x86_fmadd_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {70; FMA4-LABEL: test_x86_fmadd_baa_ps_y:71; FMA4:       # %bb.0:72; FMA4-NEXT:    vmovaps (%rcx), %ymm073; FMA4-NEXT:    vfmaddps {{.*#+}} ymm0 = (ymm0 * mem) + ymm074; FMA4-NEXT:    retq75  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind76  ret <8 x float> %res77}78 79define <8 x float> @test_x86_fmadd_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {80; FMA4-LABEL: test_x86_fmadd_aba_ps_y:81; FMA4:       # %bb.0:82; FMA4-NEXT:    vmovaps (%rcx), %ymm083; FMA4-NEXT:    vfmaddps {{.*#+}} ymm0 = (ymm0 * mem) + ymm084; FMA4-NEXT:    retq85  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind86  ret <8 x float> %res87}88 89define <8 x float> @test_x86_fmadd_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {90; FMA4-LABEL: test_x86_fmadd_bba_ps_y:91; FMA4:       # %bb.0:92; FMA4-NEXT:    vmovaps (%rdx), %ymm093; FMA4-NEXT:    vfmaddps {{.*#+}} ymm0 = (ymm0 * ymm0) + mem94; FMA4-NEXT:    retq95  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind96  ret <8 x float> %res97}98 99declare <2 x double> @llvm.x86.fma4.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone100define <2 x double> @test_x86_fmadd_baa_sd(<2 x double> %a, <2 x double> %b) #0 {101; FMA4-LABEL: test_x86_fmadd_baa_sd:102; FMA4:       # %bb.0:103; FMA4-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero104; FMA4-NEXT:    vfmaddsd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0105; FMA4-NEXT:    retq106  %res = call <2 x double> @llvm.x86.fma4.vfmadd.sd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind107  ret <2 x double> %res108}109 110define <2 x double> @test_x86_fmadd_aba_sd(<2 x double> %a, <2 x double> %b) #0 {111; FMA4-LABEL: test_x86_fmadd_aba_sd:112; FMA4:       # %bb.0:113; FMA4-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero114; FMA4-NEXT:    vfmaddsd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0115; FMA4-NEXT:    retq116  %res = call <2 x double> @llvm.x86.fma4.vfmadd.sd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind117  ret <2 x double> %res118}119 120define <2 x double> @test_x86_fmadd_bba_sd(<2 x double> %a, <2 x double> %b) #0 {121; FMA4-LABEL: test_x86_fmadd_bba_sd:122; FMA4:       # %bb.0:123; FMA4-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero124; FMA4-NEXT:    vfmaddsd {{.*#+}} xmm0 = (xmm0 * xmm0) + mem125; FMA4-NEXT:    retq126  %res = call <2 x double> @llvm.x86.fma4.vfmadd.sd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind127  ret <2 x double> %res128}129 130declare <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone131define <2 x double> @test_x86_fmadd_baa_pd(<2 x double> %a, <2 x double> %b) #0 {132; FMA4-LABEL: test_x86_fmadd_baa_pd:133; FMA4:       # %bb.0:134; FMA4-NEXT:    vmovapd (%rcx), %xmm0135; FMA4-NEXT:    vfmaddpd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0136; FMA4-NEXT:    retq137  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind138  ret <2 x double> %res139}140 141define <2 x double> @test_x86_fmadd_aba_pd(<2 x double> %a, <2 x double> %b) #0 {142; FMA4-LABEL: test_x86_fmadd_aba_pd:143; FMA4:       # %bb.0:144; FMA4-NEXT:    vmovapd (%rcx), %xmm0145; FMA4-NEXT:    vfmaddpd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0146; FMA4-NEXT:    retq147  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind148  ret <2 x double> %res149}150 151define <2 x double> @test_x86_fmadd_bba_pd(<2 x double> %a, <2 x double> %b) #0 {152; FMA4-LABEL: test_x86_fmadd_bba_pd:153; FMA4:       # %bb.0:154; FMA4-NEXT:    vmovapd (%rdx), %xmm0155; FMA4-NEXT:    vfmaddpd {{.*#+}} xmm0 = (xmm0 * xmm0) + mem156; FMA4-NEXT:    retq157  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind158  ret <2 x double> %res159}160 161declare <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone162define <4 x double> @test_x86_fmadd_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {163; FMA4-LABEL: test_x86_fmadd_baa_pd_y:164; FMA4:       # %bb.0:165; FMA4-NEXT:    vmovapd (%rcx), %ymm0166; FMA4-NEXT:    vfmaddpd {{.*#+}} ymm0 = (ymm0 * mem) + ymm0167; FMA4-NEXT:    retq168  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind169  ret <4 x double> %res170}171 172define <4 x double> @test_x86_fmadd_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {173; FMA4-LABEL: test_x86_fmadd_aba_pd_y:174; FMA4:       # %bb.0:175; FMA4-NEXT:    vmovapd (%rcx), %ymm0176; FMA4-NEXT:    vfmaddpd {{.*#+}} ymm0 = (ymm0 * mem) + ymm0177; FMA4-NEXT:    retq178  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind179  ret <4 x double> %res180}181 182define <4 x double> @test_x86_fmadd_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {183; FMA4-LABEL: test_x86_fmadd_bba_pd_y:184; FMA4:       # %bb.0:185; FMA4-NEXT:    vmovapd (%rdx), %ymm0186; FMA4-NEXT:    vfmaddpd {{.*#+}} ymm0 = (ymm0 * ymm0) + mem187; FMA4-NEXT:    retq188  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind189  ret <4 x double> %res190}191 192declare <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone193define <4 x float> @test_x86_fnmadd_baa_ps(<4 x float> %a, <4 x float> %b) #0 {194; FMA4-LABEL: test_x86_fnmadd_baa_ps:195; FMA4:       # %bb.0:196; FMA4-NEXT:    vmovaps (%rcx), %xmm0197; FMA4-NEXT:    vfnmaddps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0198; FMA4-NEXT:    retq199  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind200  ret <4 x float> %res201}202 203define <4 x float> @test_x86_fnmadd_aba_ps(<4 x float> %a, <4 x float> %b) #0 {204; FMA4-LABEL: test_x86_fnmadd_aba_ps:205; FMA4:       # %bb.0:206; FMA4-NEXT:    vmovaps (%rcx), %xmm0207; FMA4-NEXT:    vfnmaddps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0208; FMA4-NEXT:    retq209  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind210  ret <4 x float> %res211}212 213define <4 x float> @test_x86_fnmadd_bba_ps(<4 x float> %a, <4 x float> %b) #0 {214; FMA4-LABEL: test_x86_fnmadd_bba_ps:215; FMA4:       # %bb.0:216; FMA4-NEXT:    vmovaps (%rdx), %xmm0217; FMA4-NEXT:    vfnmaddps {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem218; FMA4-NEXT:    retq219  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind220  ret <4 x float> %res221}222 223declare <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone224define <8 x float> @test_x86_fnmadd_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {225; FMA4-LABEL: test_x86_fnmadd_baa_ps_y:226; FMA4:       # %bb.0:227; FMA4-NEXT:    vmovaps (%rcx), %ymm0228; FMA4-NEXT:    vfnmaddps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0229; FMA4-NEXT:    retq230  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind231  ret <8 x float> %res232}233 234define <8 x float> @test_x86_fnmadd_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {235; FMA4-LABEL: test_x86_fnmadd_aba_ps_y:236; FMA4:       # %bb.0:237; FMA4-NEXT:    vmovaps (%rcx), %ymm0238; FMA4-NEXT:    vfnmaddps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0239; FMA4-NEXT:    retq240  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind241  ret <8 x float> %res242}243 244define <8 x float> @test_x86_fnmadd_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {245; FMA4-LABEL: test_x86_fnmadd_bba_ps_y:246; FMA4:       # %bb.0:247; FMA4-NEXT:    vmovaps (%rdx), %ymm0248; FMA4-NEXT:    vfnmaddps {{.*#+}} ymm0 = -(ymm0 * ymm0) + mem249; FMA4-NEXT:    retq250  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind251  ret <8 x float> %res252}253 254declare <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone255define <2 x double> @test_x86_fnmadd_baa_pd(<2 x double> %a, <2 x double> %b) #0 {256; FMA4-LABEL: test_x86_fnmadd_baa_pd:257; FMA4:       # %bb.0:258; FMA4-NEXT:    vmovapd (%rcx), %xmm0259; FMA4-NEXT:    vfnmaddpd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0260; FMA4-NEXT:    retq261  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind262  ret <2 x double> %res263}264 265define <2 x double> @test_x86_fnmadd_aba_pd(<2 x double> %a, <2 x double> %b) #0 {266; FMA4-LABEL: test_x86_fnmadd_aba_pd:267; FMA4:       # %bb.0:268; FMA4-NEXT:    vmovapd (%rcx), %xmm0269; FMA4-NEXT:    vfnmaddpd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0270; FMA4-NEXT:    retq271  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind272  ret <2 x double> %res273}274 275define <2 x double> @test_x86_fnmadd_bba_pd(<2 x double> %a, <2 x double> %b) #0 {276; FMA4-LABEL: test_x86_fnmadd_bba_pd:277; FMA4:       # %bb.0:278; FMA4-NEXT:    vmovapd (%rdx), %xmm0279; FMA4-NEXT:    vfnmaddpd {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem280; FMA4-NEXT:    retq281  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind282  ret <2 x double> %res283}284 285declare <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone286define <4 x double> @test_x86_fnmadd_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {287; FMA4-LABEL: test_x86_fnmadd_baa_pd_y:288; FMA4:       # %bb.0:289; FMA4-NEXT:    vmovapd (%rcx), %ymm0290; FMA4-NEXT:    vfnmaddpd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0291; FMA4-NEXT:    retq292  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind293  ret <4 x double> %res294}295 296define <4 x double> @test_x86_fnmadd_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {297; FMA4-LABEL: test_x86_fnmadd_aba_pd_y:298; FMA4:       # %bb.0:299; FMA4-NEXT:    vmovapd (%rcx), %ymm0300; FMA4-NEXT:    vfnmaddpd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0301; FMA4-NEXT:    retq302  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind303  ret <4 x double> %res304}305 306define <4 x double> @test_x86_fnmadd_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {307; FMA4-LABEL: test_x86_fnmadd_bba_pd_y:308; FMA4:       # %bb.0:309; FMA4-NEXT:    vmovapd (%rdx), %ymm0310; FMA4-NEXT:    vfnmaddpd {{.*#+}} ymm0 = -(ymm0 * ymm0) + mem311; FMA4-NEXT:    retq312  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind313  ret <4 x double> %res314}315 316declare <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone317define <4 x float> @test_x86_fmsub_baa_ps(<4 x float> %a, <4 x float> %b) #0 {318; FMA4-LABEL: test_x86_fmsub_baa_ps:319; FMA4:       # %bb.0:320; FMA4-NEXT:    vmovaps (%rcx), %xmm0321; FMA4-NEXT:    vfmsubps {{.*#+}} xmm0 = (xmm0 * mem) - xmm0322; FMA4-NEXT:    retq323  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind324  ret <4 x float> %res325}326 327define <4 x float> @test_x86_fmsub_aba_ps(<4 x float> %a, <4 x float> %b) #0 {328; FMA4-LABEL: test_x86_fmsub_aba_ps:329; FMA4:       # %bb.0:330; FMA4-NEXT:    vmovaps (%rcx), %xmm0331; FMA4-NEXT:    vfmsubps {{.*#+}} xmm0 = (xmm0 * mem) - xmm0332; FMA4-NEXT:    retq333  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind334  ret <4 x float> %res335}336 337define <4 x float> @test_x86_fmsub_bba_ps(<4 x float> %a, <4 x float> %b) #0 {338; FMA4-LABEL: test_x86_fmsub_bba_ps:339; FMA4:       # %bb.0:340; FMA4-NEXT:    vmovaps (%rdx), %xmm0341; FMA4-NEXT:    vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm0) - mem342; FMA4-NEXT:    retq343  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind344  ret <4 x float> %res345}346 347declare <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone348define <8 x float> @test_x86_fmsub_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {349; FMA4-LABEL: test_x86_fmsub_baa_ps_y:350; FMA4:       # %bb.0:351; FMA4-NEXT:    vmovaps (%rcx), %ymm0352; FMA4-NEXT:    vfmsubps {{.*#+}} ymm0 = (ymm0 * mem) - ymm0353; FMA4-NEXT:    retq354  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind355  ret <8 x float> %res356}357 358define <8 x float> @test_x86_fmsub_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {359; FMA4-LABEL: test_x86_fmsub_aba_ps_y:360; FMA4:       # %bb.0:361; FMA4-NEXT:    vmovaps (%rcx), %ymm0362; FMA4-NEXT:    vfmsubps {{.*#+}} ymm0 = (ymm0 * mem) - ymm0363; FMA4-NEXT:    retq364  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind365  ret <8 x float> %res366}367 368define <8 x float> @test_x86_fmsub_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {369; FMA4-LABEL: test_x86_fmsub_bba_ps_y:370; FMA4:       # %bb.0:371; FMA4-NEXT:    vmovaps (%rdx), %ymm0372; FMA4-NEXT:    vfmsubps {{.*#+}} ymm0 = (ymm0 * ymm0) - mem373; FMA4-NEXT:    retq374  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind375  ret <8 x float> %res376}377 378declare <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone379define <2 x double> @test_x86_fmsub_baa_pd(<2 x double> %a, <2 x double> %b) #0 {380; FMA4-LABEL: test_x86_fmsub_baa_pd:381; FMA4:       # %bb.0:382; FMA4-NEXT:    vmovapd (%rcx), %xmm0383; FMA4-NEXT:    vfmsubpd {{.*#+}} xmm0 = (xmm0 * mem) - xmm0384; FMA4-NEXT:    retq385  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind386  ret <2 x double> %res387}388 389define <2 x double> @test_x86_fmsub_aba_pd(<2 x double> %a, <2 x double> %b) #0 {390; FMA4-LABEL: test_x86_fmsub_aba_pd:391; FMA4:       # %bb.0:392; FMA4-NEXT:    vmovapd (%rcx), %xmm0393; FMA4-NEXT:    vfmsubpd {{.*#+}} xmm0 = (xmm0 * mem) - xmm0394; FMA4-NEXT:    retq395  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind396  ret <2 x double> %res397}398 399define <2 x double> @test_x86_fmsub_bba_pd(<2 x double> %a, <2 x double> %b) #0 {400; FMA4-LABEL: test_x86_fmsub_bba_pd:401; FMA4:       # %bb.0:402; FMA4-NEXT:    vmovapd (%rdx), %xmm0403; FMA4-NEXT:    vfmsubpd {{.*#+}} xmm0 = (xmm0 * xmm0) - mem404; FMA4-NEXT:    retq405  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind406  ret <2 x double> %res407}408 409declare <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone410define <4 x double> @test_x86_fmsub_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {411; FMA4-LABEL: test_x86_fmsub_baa_pd_y:412; FMA4:       # %bb.0:413; FMA4-NEXT:    vmovapd (%rcx), %ymm0414; FMA4-NEXT:    vfmsubpd {{.*#+}} ymm0 = (ymm0 * mem) - ymm0415; FMA4-NEXT:    retq416  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind417  ret <4 x double> %res418}419 420define <4 x double> @test_x86_fmsub_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {421; FMA4-LABEL: test_x86_fmsub_aba_pd_y:422; FMA4:       # %bb.0:423; FMA4-NEXT:    vmovapd (%rcx), %ymm0424; FMA4-NEXT:    vfmsubpd {{.*#+}} ymm0 = (ymm0 * mem) - ymm0425; FMA4-NEXT:    retq426  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind427  ret <4 x double> %res428}429 430define <4 x double> @test_x86_fmsub_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {431; FMA4-LABEL: test_x86_fmsub_bba_pd_y:432; FMA4:       # %bb.0:433; FMA4-NEXT:    vmovapd (%rdx), %ymm0434; FMA4-NEXT:    vfmsubpd {{.*#+}} ymm0 = (ymm0 * ymm0) - mem435; FMA4-NEXT:    retq436  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind437  ret <4 x double> %res438}439 440declare <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone441define <4 x float> @test_x86_fnmsub_baa_ps(<4 x float> %a, <4 x float> %b) #0 {442; FMA4-LABEL: test_x86_fnmsub_baa_ps:443; FMA4:       # %bb.0:444; FMA4-NEXT:    vmovaps (%rcx), %xmm0445; FMA4-NEXT:    vfnmsubps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0446; FMA4-NEXT:    retq447  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind448  ret <4 x float> %res449}450 451define <4 x float> @test_x86_fnmsub_aba_ps(<4 x float> %a, <4 x float> %b) #0 {452; FMA4-LABEL: test_x86_fnmsub_aba_ps:453; FMA4:       # %bb.0:454; FMA4-NEXT:    vmovaps (%rcx), %xmm0455; FMA4-NEXT:    vfnmsubps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0456; FMA4-NEXT:    retq457  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind458  ret <4 x float> %res459}460 461define <4 x float> @test_x86_fnmsub_bba_ps(<4 x float> %a, <4 x float> %b) #0 {462; FMA4-LABEL: test_x86_fnmsub_bba_ps:463; FMA4:       # %bb.0:464; FMA4-NEXT:    vmovaps (%rdx), %xmm0465; FMA4-NEXT:    vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem466; FMA4-NEXT:    retq467  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind468  ret <4 x float> %res469}470 471declare <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone472define <8 x float> @test_x86_fnmsub_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {473; FMA4-LABEL: test_x86_fnmsub_baa_ps_y:474; FMA4:       # %bb.0:475; FMA4-NEXT:    vmovaps (%rcx), %ymm0476; FMA4-NEXT:    vfnmsubps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0477; FMA4-NEXT:    retq478  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind479  ret <8 x float> %res480}481 482define <8 x float> @test_x86_fnmsub_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {483; FMA4-LABEL: test_x86_fnmsub_aba_ps_y:484; FMA4:       # %bb.0:485; FMA4-NEXT:    vmovaps (%rcx), %ymm0486; FMA4-NEXT:    vfnmsubps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0487; FMA4-NEXT:    retq488  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind489  ret <8 x float> %res490}491 492define <8 x float> @test_x86_fnmsub_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {493; FMA4-LABEL: test_x86_fnmsub_bba_ps_y:494; FMA4:       # %bb.0:495; FMA4-NEXT:    vmovaps (%rdx), %ymm0496; FMA4-NEXT:    vfnmsubps {{.*#+}} ymm0 = -(ymm0 * ymm0) - mem497; FMA4-NEXT:    retq498  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind499  ret <8 x float> %res500}501 502declare <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone503define <2 x double> @test_x86_fnmsub_baa_pd(<2 x double> %a, <2 x double> %b) #0 {504; FMA4-LABEL: test_x86_fnmsub_baa_pd:505; FMA4:       # %bb.0:506; FMA4-NEXT:    vmovapd (%rcx), %xmm0507; FMA4-NEXT:    vfnmsubpd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0508; FMA4-NEXT:    retq509  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind510  ret <2 x double> %res511}512 513define <2 x double> @test_x86_fnmsub_aba_pd(<2 x double> %a, <2 x double> %b) #0 {514; FMA4-LABEL: test_x86_fnmsub_aba_pd:515; FMA4:       # %bb.0:516; FMA4-NEXT:    vmovapd (%rcx), %xmm0517; FMA4-NEXT:    vfnmsubpd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0518; FMA4-NEXT:    retq519  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind520  ret <2 x double> %res521}522 523define <2 x double> @test_x86_fnmsub_bba_pd(<2 x double> %a, <2 x double> %b) #0 {524; FMA4-LABEL: test_x86_fnmsub_bba_pd:525; FMA4:       # %bb.0:526; FMA4-NEXT:    vmovapd (%rdx), %xmm0527; FMA4-NEXT:    vfnmsubpd {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem528; FMA4-NEXT:    retq529  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind530  ret <2 x double> %res531}532 533declare <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone534define <4 x double> @test_x86_fnmsub_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {535; FMA4-LABEL: test_x86_fnmsub_baa_pd_y:536; FMA4:       # %bb.0:537; FMA4-NEXT:    vmovapd (%rcx), %ymm0538; FMA4-NEXT:    vfnmsubpd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0539; FMA4-NEXT:    retq540  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind541  ret <4 x double> %res542}543 544define <4 x double> @test_x86_fnmsub_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {545; FMA4-LABEL: test_x86_fnmsub_aba_pd_y:546; FMA4:       # %bb.0:547; FMA4-NEXT:    vmovapd (%rcx), %ymm0548; FMA4-NEXT:    vfnmsubpd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0549; FMA4-NEXT:    retq550  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind551  ret <4 x double> %res552}553 554define <4 x double> @test_x86_fnmsub_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {555; FMA4-LABEL: test_x86_fnmsub_bba_pd_y:556; FMA4:       # %bb.0:557; FMA4-NEXT:    vmovapd (%rdx), %ymm0558; FMA4-NEXT:    vfnmsubpd {{.*#+}} ymm0 = -(ymm0 * ymm0) - mem559; FMA4-NEXT:    retq560  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind561  ret <4 x double> %res562}563 564