brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.3 KiB · 21ff30f Raw
762 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-pc-win32 -mcpu=core-avx2 | FileCheck %s --check-prefix=FMA3; RUN: llc < %s -mtriple=x86_64-pc-win32 -mattr=+fma | FileCheck %s --check-prefix=FMA4; RUN: llc < %s -mcpu=bdver2 -mtriple=x86_64-pc-win32 -mattr=-fma4 | FileCheck %s --check-prefix=FMA5 6attributes #0 = { nounwind }7 8declare <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone9define <4 x float> @test_x86_fmadd_baa_ss(<4 x float> %a, <4 x float> %b) #0 {10; FMA-LABEL: test_x86_fmadd_baa_ss:11; FMA:       # %bb.0:12; FMA-NEXT:    vmovaps (%rdx), %xmm013; FMA-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero14; FMA-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm115; FMA-NEXT:    retq16  %res = call <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind17  ret <4 x float> %res18}19 20define <4 x float> @test_x86_fmadd_aba_ss(<4 x float> %a, <4 x float> %b) #0 {21; FMA-LABEL: test_x86_fmadd_aba_ss:22; FMA:       # %bb.0:23; FMA-NEXT:    vmovaps (%rcx), %xmm024; FMA-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm025; FMA-NEXT:    retq26  %res = call <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind27  ret <4 x float> %res28}29 30define <4 x float> @test_x86_fmadd_bba_ss(<4 x float> %a, <4 x float> %b) #0 {31; FMA-LABEL: test_x86_fmadd_bba_ss:32; FMA:       # %bb.0:33; FMA-NEXT:    vmovaps (%rdx), %xmm034; FMA-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm0 * xmm0) + mem35; FMA-NEXT:    retq36  %res = call <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind37  ret <4 x float> %res38}39 40declare <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone41define <4 x float> @test_x86_fmadd_baa_ps(<4 x float> %a, <4 x float> %b) #0 {42; FMA-LABEL: test_x86_fmadd_baa_ps:43; FMA:       # %bb.0:44; FMA-NEXT:    vmovaps (%rcx), %xmm045; FMA-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm046; FMA-NEXT:    retq47  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind48  ret <4 x float> %res49}50 51define <4 x float> @test_x86_fmadd_aba_ps(<4 x float> %a, <4 x float> %b) #0 {52; FMA-LABEL: test_x86_fmadd_aba_ps:53; FMA:       # %bb.0:54; FMA-NEXT:    vmovaps (%rcx), %xmm055; FMA-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm056; FMA-NEXT:    retq57  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind58  ret <4 x float> %res59}60 61define <4 x float> @test_x86_fmadd_bba_ps(<4 x float> %a, <4 x float> %b) #0 {62; FMA-LABEL: test_x86_fmadd_bba_ps:63; FMA:       # %bb.0:64; FMA-NEXT:    vmovaps (%rdx), %xmm065; FMA-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm0 * xmm0) + mem66; FMA-NEXT:    retq67  %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind68  ret <4 x float> %res69}70 71declare <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone72define <8 x float> @test_x86_fmadd_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {73; FMA-LABEL: test_x86_fmadd_baa_ps_y:74; FMA:       # %bb.0:75; FMA-NEXT:    vmovaps (%rcx), %ymm076; FMA-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm077; FMA-NEXT:    retq78  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind79  ret <8 x float> %res80}81 82define <8 x float> @test_x86_fmadd_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {83; FMA-LABEL: test_x86_fmadd_aba_ps_y:84; FMA:       # %bb.0:85; FMA-NEXT:    vmovaps (%rcx), %ymm086; FMA-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm087; FMA-NEXT:    retq88  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind89  ret <8 x float> %res90}91 92define <8 x float> @test_x86_fmadd_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {93; FMA-LABEL: test_x86_fmadd_bba_ps_y:94; FMA:       # %bb.0:95; FMA-NEXT:    vmovaps (%rdx), %ymm096; FMA-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm0 * ymm0) + mem97; FMA-NEXT:    retq98  %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind99  ret <8 x float> %res100}101 102declare <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone103define <2 x double> @test_x86_fmadd_baa_sd(<2 x double> %a, <2 x double> %b) #0 {104; FMA-LABEL: test_x86_fmadd_baa_sd:105; FMA:       # %bb.0:106; FMA-NEXT:    vmovapd (%rdx), %xmm0107; FMA-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero108; FMA-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm1109; FMA-NEXT:    retq110  %res = call <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind111  ret <2 x double> %res112}113 114define <2 x double> @test_x86_fmadd_aba_sd(<2 x double> %a, <2 x double> %b) #0 {115; FMA-LABEL: test_x86_fmadd_aba_sd:116; FMA:       # %bb.0:117; FMA-NEXT:    vmovapd (%rcx), %xmm0118; FMA-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0119; FMA-NEXT:    retq120  %res = call <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind121  ret <2 x double> %res122}123 124define <2 x double> @test_x86_fmadd_bba_sd(<2 x double> %a, <2 x double> %b) #0 {125; FMA-LABEL: test_x86_fmadd_bba_sd:126; FMA:       # %bb.0:127; FMA-NEXT:    vmovapd (%rdx), %xmm0128; FMA-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm0 * xmm0) + mem129; FMA-NEXT:    retq130  %res = call <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind131  ret <2 x double> %res132}133 134declare <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone135define <2 x double> @test_x86_fmadd_baa_pd(<2 x double> %a, <2 x double> %b) #0 {136; FMA-LABEL: test_x86_fmadd_baa_pd:137; FMA:       # %bb.0:138; FMA-NEXT:    vmovapd (%rcx), %xmm0139; FMA-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0140; FMA-NEXT:    retq141  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind142  ret <2 x double> %res143}144 145define <2 x double> @test_x86_fmadd_aba_pd(<2 x double> %a, <2 x double> %b) #0 {146; FMA-LABEL: test_x86_fmadd_aba_pd:147; FMA:       # %bb.0:148; FMA-NEXT:    vmovapd (%rcx), %xmm0149; FMA-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm0150; FMA-NEXT:    retq151  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind152  ret <2 x double> %res153}154 155define <2 x double> @test_x86_fmadd_bba_pd(<2 x double> %a, <2 x double> %b) #0 {156; FMA-LABEL: test_x86_fmadd_bba_pd:157; FMA:       # %bb.0:158; FMA-NEXT:    vmovapd (%rdx), %xmm0159; FMA-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm0 * xmm0) + mem160; FMA-NEXT:    retq161  %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind162  ret <2 x double> %res163}164 165declare <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone166define <4 x double> @test_x86_fmadd_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {167; FMA-LABEL: test_x86_fmadd_baa_pd_y:168; FMA:       # %bb.0:169; FMA-NEXT:    vmovapd (%rcx), %ymm0170; FMA-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm0171; FMA-NEXT:    retq172  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind173  ret <4 x double> %res174}175 176define <4 x double> @test_x86_fmadd_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {177; FMA-LABEL: test_x86_fmadd_aba_pd_y:178; FMA:       # %bb.0:179; FMA-NEXT:    vmovapd (%rcx), %ymm0180; FMA-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm0181; FMA-NEXT:    retq182  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind183  ret <4 x double> %res184}185 186define <4 x double> @test_x86_fmadd_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {187; FMA-LABEL: test_x86_fmadd_bba_pd_y:188; FMA:       # %bb.0:189; FMA-NEXT:    vmovapd (%rdx), %ymm0190; FMA-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm0 * ymm0) + mem191; FMA-NEXT:    retq192  %res = call <4 x double> @llvm.x86.fma.vfmadd.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind193  ret <4 x double> %res194}195 196 197declare <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone198define <4 x float> @test_x86_fnmadd_baa_ss(<4 x float> %a, <4 x float> %b) #0 {199; FMA-LABEL: test_x86_fnmadd_baa_ss:200; FMA:       # %bb.0:201; FMA-NEXT:    vmovaps (%rdx), %xmm0202; FMA-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero203; FMA-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm1204; FMA-NEXT:    retq205  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind206  ret <4 x float> %res207}208 209define <4 x float> @test_x86_fnmadd_aba_ss(<4 x float> %a, <4 x float> %b) #0 {210; FMA-LABEL: test_x86_fnmadd_aba_ss:211; FMA:       # %bb.0:212; FMA-NEXT:    vmovaps (%rcx), %xmm0213; FMA-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0214; FMA-NEXT:    retq215  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind216  ret <4 x float> %res217}218 219define <4 x float> @test_x86_fnmadd_bba_ss(<4 x float> %a, <4 x float> %b) #0 {220; FMA-LABEL: test_x86_fnmadd_bba_ss:221; FMA:       # %bb.0:222; FMA-NEXT:    vmovaps (%rdx), %xmm0223; FMA-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem224; FMA-NEXT:    retq225  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind226  ret <4 x float> %res227}228 229declare <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone230define <4 x float> @test_x86_fnmadd_baa_ps(<4 x float> %a, <4 x float> %b) #0 {231; FMA-LABEL: test_x86_fnmadd_baa_ps:232; FMA:       # %bb.0:233; FMA-NEXT:    vmovaps (%rcx), %xmm0234; FMA-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0235; FMA-NEXT:    retq236  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind237  ret <4 x float> %res238}239 240define <4 x float> @test_x86_fnmadd_aba_ps(<4 x float> %a, <4 x float> %b) #0 {241; FMA-LABEL: test_x86_fnmadd_aba_ps:242; FMA:       # %bb.0:243; FMA-NEXT:    vmovaps (%rcx), %xmm0244; FMA-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0245; FMA-NEXT:    retq246  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind247  ret <4 x float> %res248}249 250define <4 x float> @test_x86_fnmadd_bba_ps(<4 x float> %a, <4 x float> %b) #0 {251; FMA-LABEL: test_x86_fnmadd_bba_ps:252; FMA:       # %bb.0:253; FMA-NEXT:    vmovaps (%rdx), %xmm0254; FMA-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem255; FMA-NEXT:    retq256  %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind257  ret <4 x float> %res258}259 260declare <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone261define <8 x float> @test_x86_fnmadd_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {262; FMA-LABEL: test_x86_fnmadd_baa_ps_y:263; FMA:       # %bb.0:264; FMA-NEXT:    vmovaps (%rcx), %ymm0265; FMA-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0266; FMA-NEXT:    retq267  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind268  ret <8 x float> %res269}270 271define <8 x float> @test_x86_fnmadd_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {272; FMA-LABEL: test_x86_fnmadd_aba_ps_y:273; FMA:       # %bb.0:274; FMA-NEXT:    vmovaps (%rcx), %ymm0275; FMA-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0276; FMA-NEXT:    retq277  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind278  ret <8 x float> %res279}280 281define <8 x float> @test_x86_fnmadd_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {282; FMA-LABEL: test_x86_fnmadd_bba_ps_y:283; FMA:       # %bb.0:284; FMA-NEXT:    vmovaps (%rdx), %ymm0285; FMA-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm0 * ymm0) + mem286; FMA-NEXT:    retq287  %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind288  ret <8 x float> %res289}290 291declare <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone292define <2 x double> @test_x86_fnmadd_baa_sd(<2 x double> %a, <2 x double> %b) #0 {293; FMA-LABEL: test_x86_fnmadd_baa_sd:294; FMA:       # %bb.0:295; FMA-NEXT:    vmovapd (%rdx), %xmm0296; FMA-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero297; FMA-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm1298; FMA-NEXT:    retq299  %res = call <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind300  ret <2 x double> %res301}302 303define <2 x double> @test_x86_fnmadd_aba_sd(<2 x double> %a, <2 x double> %b) #0 {304; FMA-LABEL: test_x86_fnmadd_aba_sd:305; FMA:       # %bb.0:306; FMA-NEXT:    vmovapd (%rcx), %xmm0307; FMA-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0308; FMA-NEXT:    retq309  %res = call <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind310  ret <2 x double> %res311}312 313define <2 x double> @test_x86_fnmadd_bba_sd(<2 x double> %a, <2 x double> %b) #0 {314; FMA-LABEL: test_x86_fnmadd_bba_sd:315; FMA:       # %bb.0:316; FMA-NEXT:    vmovapd (%rdx), %xmm0317; FMA-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem318; FMA-NEXT:    retq319  %res = call <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind320  ret <2 x double> %res321}322 323declare <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone324define <2 x double> @test_x86_fnmadd_baa_pd(<2 x double> %a, <2 x double> %b) #0 {325; FMA-LABEL: test_x86_fnmadd_baa_pd:326; FMA:       # %bb.0:327; FMA-NEXT:    vmovapd (%rcx), %xmm0328; FMA-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0329; FMA-NEXT:    retq330  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind331  ret <2 x double> %res332}333 334define <2 x double> @test_x86_fnmadd_aba_pd(<2 x double> %a, <2 x double> %b) #0 {335; FMA-LABEL: test_x86_fnmadd_aba_pd:336; FMA:       # %bb.0:337; FMA-NEXT:    vmovapd (%rcx), %xmm0338; FMA-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm0339; FMA-NEXT:    retq340  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind341  ret <2 x double> %res342}343 344define <2 x double> @test_x86_fnmadd_bba_pd(<2 x double> %a, <2 x double> %b) #0 {345; FMA-LABEL: test_x86_fnmadd_bba_pd:346; FMA:       # %bb.0:347; FMA-NEXT:    vmovapd (%rdx), %xmm0348; FMA-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm0 * xmm0) + mem349; FMA-NEXT:    retq350  %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind351  ret <2 x double> %res352}353 354declare <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone355define <4 x double> @test_x86_fnmadd_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {356; FMA-LABEL: test_x86_fnmadd_baa_pd_y:357; FMA:       # %bb.0:358; FMA-NEXT:    vmovapd (%rcx), %ymm0359; FMA-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0360; FMA-NEXT:    retq361  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind362  ret <4 x double> %res363}364 365define <4 x double> @test_x86_fnmadd_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {366; FMA-LABEL: test_x86_fnmadd_aba_pd_y:367; FMA:       # %bb.0:368; FMA-NEXT:    vmovapd (%rcx), %ymm0369; FMA-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm0370; FMA-NEXT:    retq371  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind372  ret <4 x double> %res373}374 375define <4 x double> @test_x86_fnmadd_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {376; FMA-LABEL: test_x86_fnmadd_bba_pd_y:377; FMA:       # %bb.0:378; FMA-NEXT:    vmovapd (%rdx), %ymm0379; FMA-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm0 * ymm0) + mem380; FMA-NEXT:    retq381  %res = call <4 x double> @llvm.x86.fma.vfnmadd.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind382  ret <4 x double> %res383}384 385declare <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone386define <4 x float> @test_x86_fmsub_baa_ss(<4 x float> %a, <4 x float> %b) #0 {387; FMA-LABEL: test_x86_fmsub_baa_ss:388; FMA:       # %bb.0:389; FMA-NEXT:    vmovaps (%rdx), %xmm0390; FMA-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero391; FMA-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm1392; FMA-NEXT:    retq393  %res = call <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind394  ret <4 x float> %res395}396 397define <4 x float> @test_x86_fmsub_aba_ss(<4 x float> %a, <4 x float> %b) #0 {398; FMA-LABEL: test_x86_fmsub_aba_ss:399; FMA:       # %bb.0:400; FMA-NEXT:    vmovaps (%rcx), %xmm0401; FMA-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm0402; FMA-NEXT:    retq403  %res = call <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind404  ret <4 x float> %res405}406 407define <4 x float> @test_x86_fmsub_bba_ss(<4 x float> %a, <4 x float> %b) #0 {408; FMA-LABEL: test_x86_fmsub_bba_ss:409; FMA:       # %bb.0:410; FMA-NEXT:    vmovaps (%rdx), %xmm0411; FMA-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm0 * xmm0) - mem412; FMA-NEXT:    retq413  %res = call <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind414  ret <4 x float> %res415}416 417declare <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone418define <4 x float> @test_x86_fmsub_baa_ps(<4 x float> %a, <4 x float> %b) #0 {419; FMA-LABEL: test_x86_fmsub_baa_ps:420; FMA:       # %bb.0:421; FMA-NEXT:    vmovaps (%rcx), %xmm0422; FMA-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm0423; FMA-NEXT:    retq424  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind425  ret <4 x float> %res426}427 428define <4 x float> @test_x86_fmsub_aba_ps(<4 x float> %a, <4 x float> %b) #0 {429; FMA-LABEL: test_x86_fmsub_aba_ps:430; FMA:       # %bb.0:431; FMA-NEXT:    vmovaps (%rcx), %xmm0432; FMA-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm0433; FMA-NEXT:    retq434  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind435  ret <4 x float> %res436}437 438define <4 x float> @test_x86_fmsub_bba_ps(<4 x float> %a, <4 x float> %b) #0 {439; FMA-LABEL: test_x86_fmsub_bba_ps:440; FMA:       # %bb.0:441; FMA-NEXT:    vmovaps (%rdx), %xmm0442; FMA-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm0 * xmm0) - mem443; FMA-NEXT:    retq444  %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind445  ret <4 x float> %res446}447 448declare <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone449define <8 x float> @test_x86_fmsub_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {450; FMA-LABEL: test_x86_fmsub_baa_ps_y:451; FMA:       # %bb.0:452; FMA-NEXT:    vmovaps (%rcx), %ymm0453; FMA-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm0454; FMA-NEXT:    retq455  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind456  ret <8 x float> %res457}458 459define <8 x float> @test_x86_fmsub_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {460; FMA-LABEL: test_x86_fmsub_aba_ps_y:461; FMA:       # %bb.0:462; FMA-NEXT:    vmovaps (%rcx), %ymm0463; FMA-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm0464; FMA-NEXT:    retq465  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind466  ret <8 x float> %res467}468 469define <8 x float> @test_x86_fmsub_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {470; FMA-LABEL: test_x86_fmsub_bba_ps_y:471; FMA:       # %bb.0:472; FMA-NEXT:    vmovaps (%rdx), %ymm0473; FMA-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm0 * ymm0) - mem474; FMA-NEXT:    retq475  %res = call <8 x float> @llvm.x86.fma.vfmsub.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind476  ret <8 x float> %res477}478 479declare <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone480define <2 x double> @test_x86_fmsub_baa_sd(<2 x double> %a, <2 x double> %b) #0 {481; FMA-LABEL: test_x86_fmsub_baa_sd:482; FMA:       # %bb.0:483; FMA-NEXT:    vmovapd (%rdx), %xmm0484; FMA-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero485; FMA-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm1486; FMA-NEXT:    retq487  %res = call <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind488  ret <2 x double> %res489}490 491define <2 x double> @test_x86_fmsub_aba_sd(<2 x double> %a, <2 x double> %b) #0 {492; FMA-LABEL: test_x86_fmsub_aba_sd:493; FMA:       # %bb.0:494; FMA-NEXT:    vmovapd (%rcx), %xmm0495; FMA-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm0496; FMA-NEXT:    retq497  %res = call <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind498  ret <2 x double> %res499}500 501define <2 x double> @test_x86_fmsub_bba_sd(<2 x double> %a, <2 x double> %b) #0 {502; FMA-LABEL: test_x86_fmsub_bba_sd:503; FMA:       # %bb.0:504; FMA-NEXT:    vmovapd (%rdx), %xmm0505; FMA-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm0 * xmm0) - mem506; FMA-NEXT:    retq507  %res = call <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind508  ret <2 x double> %res509}510 511declare <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone512define <2 x double> @test_x86_fmsub_baa_pd(<2 x double> %a, <2 x double> %b) #0 {513; FMA-LABEL: test_x86_fmsub_baa_pd:514; FMA:       # %bb.0:515; FMA-NEXT:    vmovapd (%rcx), %xmm0516; FMA-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm0517; FMA-NEXT:    retq518  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind519  ret <2 x double> %res520}521 522define <2 x double> @test_x86_fmsub_aba_pd(<2 x double> %a, <2 x double> %b) #0 {523; FMA-LABEL: test_x86_fmsub_aba_pd:524; FMA:       # %bb.0:525; FMA-NEXT:    vmovapd (%rcx), %xmm0526; FMA-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm0527; FMA-NEXT:    retq528  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind529  ret <2 x double> %res530}531 532define <2 x double> @test_x86_fmsub_bba_pd(<2 x double> %a, <2 x double> %b) #0 {533; FMA-LABEL: test_x86_fmsub_bba_pd:534; FMA:       # %bb.0:535; FMA-NEXT:    vmovapd (%rdx), %xmm0536; FMA-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm0 * xmm0) - mem537; FMA-NEXT:    retq538  %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind539  ret <2 x double> %res540}541 542declare <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone543define <4 x double> @test_x86_fmsub_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {544; FMA-LABEL: test_x86_fmsub_baa_pd_y:545; FMA:       # %bb.0:546; FMA-NEXT:    vmovapd (%rcx), %ymm0547; FMA-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm0548; FMA-NEXT:    retq549  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind550  ret <4 x double> %res551}552 553define <4 x double> @test_x86_fmsub_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {554; FMA-LABEL: test_x86_fmsub_aba_pd_y:555; FMA:       # %bb.0:556; FMA-NEXT:    vmovapd (%rcx), %ymm0557; FMA-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm0558; FMA-NEXT:    retq559  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind560  ret <4 x double> %res561}562 563define <4 x double> @test_x86_fmsub_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {564; FMA-LABEL: test_x86_fmsub_bba_pd_y:565; FMA:       # %bb.0:566; FMA-NEXT:    vmovapd (%rdx), %ymm0567; FMA-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm0 * ymm0) - mem568; FMA-NEXT:    retq569  %res = call <4 x double> @llvm.x86.fma.vfmsub.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind570  ret <4 x double> %res571}572 573 574declare <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone575define <4 x float> @test_x86_fnmsub_baa_ss(<4 x float> %a, <4 x float> %b) #0 {576; FMA-LABEL: test_x86_fnmsub_baa_ss:577; FMA:       # %bb.0:578; FMA-NEXT:    vmovaps (%rdx), %xmm0579; FMA-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero580; FMA-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm1581; FMA-NEXT:    retq582  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind583  ret <4 x float> %res584}585 586define <4 x float> @test_x86_fnmsub_aba_ss(<4 x float> %a, <4 x float> %b) #0 {587; FMA-LABEL: test_x86_fnmsub_aba_ss:588; FMA:       # %bb.0:589; FMA-NEXT:    vmovaps (%rcx), %xmm0590; FMA-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0591; FMA-NEXT:    retq592  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind593  ret <4 x float> %res594}595 596define <4 x float> @test_x86_fnmsub_bba_ss(<4 x float> %a, <4 x float> %b) #0 {597; FMA-LABEL: test_x86_fnmsub_bba_ss:598; FMA:       # %bb.0:599; FMA-NEXT:    vmovaps (%rdx), %xmm0600; FMA-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem601; FMA-NEXT:    retq602  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind603  ret <4 x float> %res604}605 606declare <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone607define <4 x float> @test_x86_fnmsub_baa_ps(<4 x float> %a, <4 x float> %b) #0 {608; FMA-LABEL: test_x86_fnmsub_baa_ps:609; FMA:       # %bb.0:610; FMA-NEXT:    vmovaps (%rcx), %xmm0611; FMA-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0612; FMA-NEXT:    retq613  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %b, <4 x float> %a, <4 x float> %a) nounwind614  ret <4 x float> %res615}616 617define <4 x float> @test_x86_fnmsub_aba_ps(<4 x float> %a, <4 x float> %b) #0 {618; FMA-LABEL: test_x86_fnmsub_aba_ps:619; FMA:       # %bb.0:620; FMA-NEXT:    vmovaps (%rcx), %xmm0621; FMA-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0622; FMA-NEXT:    retq623  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %a, <4 x float> %b, <4 x float> %a) nounwind624  ret <4 x float> %res625}626 627define <4 x float> @test_x86_fnmsub_bba_ps(<4 x float> %a, <4 x float> %b) #0 {628; FMA-LABEL: test_x86_fnmsub_bba_ps:629; FMA:       # %bb.0:630; FMA-NEXT:    vmovaps (%rdx), %xmm0631; FMA-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem632; FMA-NEXT:    retq633  %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %b, <4 x float> %b, <4 x float> %a) nounwind634  ret <4 x float> %res635}636 637declare <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone638define <8 x float> @test_x86_fnmsub_baa_ps_y(<8 x float> %a, <8 x float> %b) #0 {639; FMA-LABEL: test_x86_fnmsub_baa_ps_y:640; FMA:       # %bb.0:641; FMA-NEXT:    vmovaps (%rcx), %ymm0642; FMA-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0643; FMA-NEXT:    retq644  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %b, <8 x float> %a, <8 x float> %a) nounwind645  ret <8 x float> %res646}647 648define <8 x float> @test_x86_fnmsub_aba_ps_y(<8 x float> %a, <8 x float> %b) #0 {649; FMA-LABEL: test_x86_fnmsub_aba_ps_y:650; FMA:       # %bb.0:651; FMA-NEXT:    vmovaps (%rcx), %ymm0652; FMA-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0653; FMA-NEXT:    retq654  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %a) nounwind655  ret <8 x float> %res656}657 658define <8 x float> @test_x86_fnmsub_bba_ps_y(<8 x float> %a, <8 x float> %b) #0 {659; FMA-LABEL: test_x86_fnmsub_bba_ps_y:660; FMA:       # %bb.0:661; FMA-NEXT:    vmovaps (%rdx), %ymm0662; FMA-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm0 * ymm0) - mem663; FMA-NEXT:    retq664  %res = call <8 x float> @llvm.x86.fma.vfnmsub.ps.256(<8 x float> %b, <8 x float> %b, <8 x float> %a) nounwind665  ret <8 x float> %res666}667 668declare <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone669define <2 x double> @test_x86_fnmsub_baa_sd(<2 x double> %a, <2 x double> %b) #0 {670; FMA-LABEL: test_x86_fnmsub_baa_sd:671; FMA:       # %bb.0:672; FMA-NEXT:    vmovapd (%rdx), %xmm0673; FMA-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero674; FMA-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm1675; FMA-NEXT:    retq676  %res = call <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind677  ret <2 x double> %res678}679 680define <2 x double> @test_x86_fnmsub_aba_sd(<2 x double> %a, <2 x double> %b) #0 {681; FMA-LABEL: test_x86_fnmsub_aba_sd:682; FMA:       # %bb.0:683; FMA-NEXT:    vmovapd (%rcx), %xmm0684; FMA-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0685; FMA-NEXT:    retq686  %res = call <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind687  ret <2 x double> %res688}689 690define <2 x double> @test_x86_fnmsub_bba_sd(<2 x double> %a, <2 x double> %b) #0 {691; FMA-LABEL: test_x86_fnmsub_bba_sd:692; FMA:       # %bb.0:693; FMA-NEXT:    vmovapd (%rdx), %xmm0694; FMA-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem695; FMA-NEXT:    retq696  %res = call <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind697  ret <2 x double> %res698}699 700declare <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone701define <2 x double> @test_x86_fnmsub_baa_pd(<2 x double> %a, <2 x double> %b) #0 {702; FMA-LABEL: test_x86_fnmsub_baa_pd:703; FMA:       # %bb.0:704; FMA-NEXT:    vmovapd (%rcx), %xmm0705; FMA-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0706; FMA-NEXT:    retq707  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %b, <2 x double> %a, <2 x double> %a) nounwind708  ret <2 x double> %res709}710 711define <2 x double> @test_x86_fnmsub_aba_pd(<2 x double> %a, <2 x double> %b) #0 {712; FMA-LABEL: test_x86_fnmsub_aba_pd:713; FMA:       # %bb.0:714; FMA-NEXT:    vmovapd (%rcx), %xmm0715; FMA-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm0716; FMA-NEXT:    retq717  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %a, <2 x double> %b, <2 x double> %a) nounwind718  ret <2 x double> %res719}720 721define <2 x double> @test_x86_fnmsub_bba_pd(<2 x double> %a, <2 x double> %b) #0 {722; FMA-LABEL: test_x86_fnmsub_bba_pd:723; FMA:       # %bb.0:724; FMA-NEXT:    vmovapd (%rdx), %xmm0725; FMA-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm0 * xmm0) - mem726; FMA-NEXT:    retq727  %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %b, <2 x double> %b, <2 x double> %a) nounwind728  ret <2 x double> %res729}730 731declare <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone732define <4 x double> @test_x86_fnmsub_baa_pd_y(<4 x double> %a, <4 x double> %b) #0 {733; FMA-LABEL: test_x86_fnmsub_baa_pd_y:734; FMA:       # %bb.0:735; FMA-NEXT:    vmovapd (%rcx), %ymm0736; FMA-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0737; FMA-NEXT:    retq738  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %b, <4 x double> %a, <4 x double> %a) nounwind739  ret <4 x double> %res740}741 742define <4 x double> @test_x86_fnmsub_aba_pd_y(<4 x double> %a, <4 x double> %b) #0 {743; FMA-LABEL: test_x86_fnmsub_aba_pd_y:744; FMA:       # %bb.0:745; FMA-NEXT:    vmovapd (%rcx), %ymm0746; FMA-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm0747; FMA-NEXT:    retq748  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %a) nounwind749  ret <4 x double> %res750}751 752define <4 x double> @test_x86_fnmsub_bba_pd_y(<4 x double> %a, <4 x double> %b) #0 {753; FMA-LABEL: test_x86_fnmsub_bba_pd_y:754; FMA:       # %bb.0:755; FMA-NEXT:    vmovapd (%rdx), %ymm0756; FMA-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm0 * ymm0) - mem757; FMA-NEXT:    retq758  %res = call <4 x double> @llvm.x86.fma.vfnmsub.pd.256(<4 x double> %b, <4 x double> %b, <4 x double> %a) nounwind759  ret <4 x double> %res760}761 762