blob: 8659dfe3266c982f898fdf50c3dda6b522dd91f3 [file] [log] [blame]
Craig Toppera15f9d52012-06-03 18:58:46 +00001; RUN: llc < %s -mtriple=x86_64-pc-win32 -mcpu=core-avx2 -mattr=avx2,+fma | FileCheck %s
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +00002
3define <4 x float> @test_x86_fmadd_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
Craig Topper57ae2462012-06-03 01:40:43 +00004 ; CHECK: fmadd132ss %xmm
Craig Topper529ce072012-06-03 07:26:46 +00005 %res = call <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +00006 ret <4 x float> %res
7}
Craig Topper529ce072012-06-03 07:26:46 +00008declare <4 x float> @llvm.x86.fma.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +00009
10define <4 x float> @test_x86_fmadd_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
11 ; CHECK: fmadd132ps
Craig Topper529ce072012-06-03 07:26:46 +000012 %res = call <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000013 ret <4 x float> %res
14}
Craig Topper529ce072012-06-03 07:26:46 +000015declare <4 x float> @llvm.x86.fma.vfmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000016
17define <8 x float> @test_x86_fmadd_ps_y(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {
18 ; CHECK: fmadd132ps {{.*\(%r.*}}, %ymm
Craig Topper529ce072012-06-03 07:26:46 +000019 %res = call <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000020 ret <8 x float> %res
21}
Craig Topper529ce072012-06-03 07:26:46 +000022declare <8 x float> @llvm.x86.fma.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000023
24define <4 x float> @test_x86_fnmadd_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
Craig Topper57ae2462012-06-03 01:40:43 +000025 ; CHECK: fnmadd132ss %xmm
Craig Topper529ce072012-06-03 07:26:46 +000026 %res = call <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000027 ret <4 x float> %res
28}
Craig Topper529ce072012-06-03 07:26:46 +000029declare <4 x float> @llvm.x86.fma.vfnmadd.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000030
31define <4 x float> @test_x86_fnmadd_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
32 ; CHECK: fnmadd132ps
Craig Topper529ce072012-06-03 07:26:46 +000033 %res = call <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000034 ret <4 x float> %res
35}
Craig Topper529ce072012-06-03 07:26:46 +000036declare <4 x float> @llvm.x86.fma.vfnmadd.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000037
38define <8 x float> @test_x86_fnmadd_ps_y(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {
39 ; CHECK: fnmadd132ps {{.*\(%r.*}}, %ymm
Craig Topper529ce072012-06-03 07:26:46 +000040 %res = call <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000041 ret <8 x float> %res
42}
Craig Topper529ce072012-06-03 07:26:46 +000043declare <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000044
45
46define <4 x float> @test_x86_fmsub_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
47 ; CHECK: fmsub132ss
Craig Topper529ce072012-06-03 07:26:46 +000048 %res = call <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000049 ret <4 x float> %res
50}
Craig Topper529ce072012-06-03 07:26:46 +000051declare <4 x float> @llvm.x86.fma.vfmsub.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000052
53define <4 x float> @test_x86_fmsub_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
54 ; CHECK: fmsub132ps
Craig Topper529ce072012-06-03 07:26:46 +000055 %res = call <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000056 ret <4 x float> %res
57}
Craig Topper529ce072012-06-03 07:26:46 +000058declare <4 x float> @llvm.x86.fma.vfmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000059
60define <4 x float> @test_x86_fnmsub_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
61 ; CHECK: fnmsub132ss
Craig Topper529ce072012-06-03 07:26:46 +000062 %res = call <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000063 ret <4 x float> %res
64}
Craig Topper529ce072012-06-03 07:26:46 +000065declare <4 x float> @llvm.x86.fma.vfnmsub.ss(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000066
67define <4 x float> @test_x86_fnmsub_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
68 ; CHECK: fnmsub132ps
Craig Topper529ce072012-06-03 07:26:46 +000069 %res = call <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000070 ret <4 x float> %res
71}
Craig Topper529ce072012-06-03 07:26:46 +000072declare <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000073
74;;;;
75
76define <2 x double> @test_x86_fmadd_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
77 ; CHECK: fmadd132sd
Craig Topper529ce072012-06-03 07:26:46 +000078 %res = call <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000079 ret <2 x double> %res
80}
Craig Topper529ce072012-06-03 07:26:46 +000081declare <2 x double> @llvm.x86.fma.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000082
83define <2 x double> @test_x86_fmadd_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
84 ; CHECK: fmadd132pd
Craig Topper529ce072012-06-03 07:26:46 +000085 %res = call <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000086 ret <2 x double> %res
87}
Craig Topper529ce072012-06-03 07:26:46 +000088declare <2 x double> @llvm.x86.fma.vfmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000089
90define <2 x double> @test_x86_fnmadd_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
91 ; CHECK: fnmadd132sd
Craig Topper529ce072012-06-03 07:26:46 +000092 %res = call <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000093 ret <2 x double> %res
94}
Craig Topper529ce072012-06-03 07:26:46 +000095declare <2 x double> @llvm.x86.fma.vfnmadd.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +000096
97define <2 x double> @test_x86_fnmadd_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
98 ; CHECK: fnmadd132pd
Craig Topper529ce072012-06-03 07:26:46 +000099 %res = call <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000100 ret <2 x double> %res
101}
Craig Topper529ce072012-06-03 07:26:46 +0000102declare <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000103
104
105
106define <2 x double> @test_x86_fmsub_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
107 ; CHECK: fmsub132sd
Craig Topper529ce072012-06-03 07:26:46 +0000108 %res = call <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000109 ret <2 x double> %res
110}
Craig Topper529ce072012-06-03 07:26:46 +0000111declare <2 x double> @llvm.x86.fma.vfmsub.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000112
113define <2 x double> @test_x86_fmsub_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
114 ; CHECK: fmsub132pd
Craig Topper529ce072012-06-03 07:26:46 +0000115 %res = call <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000116 ret <2 x double> %res
117}
Craig Topper529ce072012-06-03 07:26:46 +0000118declare <2 x double> @llvm.x86.fma.vfmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000119
120define <2 x double> @test_x86_fnmsub_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
121 ; CHECK: fnmsub132sd
Craig Topper529ce072012-06-03 07:26:46 +0000122 %res = call <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000123 ret <2 x double> %res
124}
Craig Topper529ce072012-06-03 07:26:46 +0000125declare <2 x double> @llvm.x86.fma.vfnmsub.sd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000126
127define <2 x double> @test_x86_fnmsub_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
128 ; CHECK: fnmsub132pd
Craig Topper529ce072012-06-03 07:26:46 +0000129 %res = call <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) nounwind
Elena Demikhovsky177cf1e2012-05-31 09:20:20 +0000130 ret <2 x double> %res
131}
Craig Topper529ce072012-06-03 07:26:46 +0000132declare <2 x double> @llvm.x86.fma.vfnmsub.pd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone