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