3
3
; RUN: llc < %s -mcpu=bdver2 -mtriple=x86_64-pc-win32 -mattr=-fma4 | FileCheck %s
4
4
5
5
define <4 x float > @test_x86_fmadd_ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) {
6
- ; CHECK: fmadd213ss (%r8), %xmm
6
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
7
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
8
+ ; CHECK: fmadd213ss (%r8), [[XMM1]], [[XMM0]]
7
9
%res = call <4 x float > @llvm.x86.fma.vfmadd.ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) nounwind
8
10
ret <4 x float > %res
9
11
}
@@ -24,7 +26,9 @@ define <8 x float> @test_x86_fmadd_ps_y(<8 x float> %a0, <8 x float> %a1, <8 x f
24
26
declare <8 x float > @llvm.x86.fma.vfmadd.ps.256 (<8 x float >, <8 x float >, <8 x float >) nounwind readnone
25
27
26
28
define <4 x float > @test_x86_fnmadd_ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) {
27
- ; CHECK: fnmadd213ss (%r8), %xmm
29
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
30
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
31
+ ; CHECK: fnmadd213ss (%r8), [[XMM1]], [[XMM0]]
28
32
%res = call <4 x float > @llvm.x86.fma.vfnmadd.ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) nounwind
29
33
ret <4 x float > %res
30
34
}
@@ -46,7 +50,9 @@ declare <8 x float> @llvm.x86.fma.vfnmadd.ps.256(<8 x float>, <8 x float>, <8 x
46
50
47
51
48
52
define <4 x float > @test_x86_fmsub_ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) {
49
- ; CHECK: fmsub213ss
53
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
54
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
55
+ ; CHECK: fmsub213ss (%r8), [[XMM1]], [[XMM0]]
50
56
%res = call <4 x float > @llvm.x86.fma.vfmsub.ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) nounwind
51
57
ret <4 x float > %res
52
58
}
@@ -60,7 +66,9 @@ define <4 x float> @test_x86_fmsub_ps(<4 x float> %a0, <4 x float> %a1, <4 x flo
60
66
declare <4 x float > @llvm.x86.fma.vfmsub.ps (<4 x float >, <4 x float >, <4 x float >) nounwind readnone
61
67
62
68
define <4 x float > @test_x86_fnmsub_ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) {
63
- ; CHECK: fnmsub213ss
69
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
70
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
71
+ ; CHECK: fnmsub213ss (%r8), [[XMM1]], [[XMM0]]
64
72
%res = call <4 x float > @llvm.x86.fma.vfnmsub.ss (<4 x float > %a0 , <4 x float > %a1 , <4 x float > %a2 ) nounwind
65
73
ret <4 x float > %res
66
74
}
@@ -76,7 +84,9 @@ declare <4 x float> @llvm.x86.fma.vfnmsub.ps(<4 x float>, <4 x float>, <4 x floa
76
84
;;;;
77
85
78
86
define <2 x double > @test_x86_fmadd_sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) {
79
- ; CHECK: fmadd213sd
87
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
88
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
89
+ ; CHECK: fmadd213sd (%r8), [[XMM1]], [[XMM0]]
80
90
%res = call <2 x double > @llvm.x86.fma.vfmadd.sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) nounwind
81
91
ret <2 x double > %res
82
92
}
@@ -90,7 +100,9 @@ define <2 x double> @test_x86_fmadd_pd(<2 x double> %a0, <2 x double> %a1, <2 x
90
100
declare <2 x double > @llvm.x86.fma.vfmadd.pd (<2 x double >, <2 x double >, <2 x double >) nounwind readnone
91
101
92
102
define <2 x double > @test_x86_fnmadd_sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) {
93
- ; CHECK: fnmadd213sd
103
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
104
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
105
+ ; CHECK: fnmadd213sd (%r8), [[XMM1]], [[XMM0]]
94
106
%res = call <2 x double > @llvm.x86.fma.vfnmadd.sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) nounwind
95
107
ret <2 x double > %res
96
108
}
@@ -106,7 +118,9 @@ declare <2 x double> @llvm.x86.fma.vfnmadd.pd(<2 x double>, <2 x double>, <2 x d
106
118
107
119
108
120
define <2 x double > @test_x86_fmsub_sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) {
109
- ; CHECK: fmsub213sd
121
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
122
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
123
+ ; CHECK: fmsub213sd (%r8), [[XMM1]], [[XMM0]]
110
124
%res = call <2 x double > @llvm.x86.fma.vfmsub.sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) nounwind
111
125
ret <2 x double > %res
112
126
}
@@ -120,7 +134,9 @@ define <2 x double> @test_x86_fmsub_pd(<2 x double> %a0, <2 x double> %a1, <2 x
120
134
declare <2 x double > @llvm.x86.fma.vfmsub.pd (<2 x double >, <2 x double >, <2 x double >) nounwind readnone
121
135
122
136
define <2 x double > @test_x86_fnmsub_sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) {
123
- ; CHECK: fnmsub213sd
137
+ ; CHECK-DAG: vmovaps (%rcx), [[XMM1:%xmm[0-9]+]]
138
+ ; CHECK-DAG: vmovaps (%rdx), [[XMM0:%xmm[0-9]+]]
139
+ ; CHECK: fnmsub213sd (%r8), [[XMM1]], [[XMM0]]
124
140
%res = call <2 x double > @llvm.x86.fma.vfnmsub.sd (<2 x double > %a0 , <2 x double > %a1 , <2 x double > %a2 ) nounwind
125
141
ret <2 x double > %res
126
142
}
0 commit comments