Skip to content

Commit aa4d948

Browse files
committed
[clang][x86] Update FMA/FMA4 intrinsic tests for both C/C++ and 32/64-bit targets
Requires some call instructions to handle additional markers
1 parent f71d621 commit aa4d948

File tree

3 files changed

+104
-95
lines changed

3 files changed

+104
-95
lines changed

clang/test/CodeGen/X86/fma-builtins-constrained.c

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
// REQUIRES: x86-registered-target
2-
// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,UNCONSTRAINED
3-
// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -ffp-exception-behavior=maytrap -DSTRICT=1 -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,CONSTRAINED
4-
// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
5-
// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
2+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,UNCONSTRAINED
3+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -ffp-exception-behavior=maytrap -DSTRICT=1 -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,CONSTRAINED
4+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
5+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
6+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,UNCONSTRAINED
7+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -ffp-exception-behavior=maytrap -DSTRICT=1 -O2 -emit-llvm -o - | FileCheck %s --check-prefixes=COMMON,COMMONIR,CONSTRAINED
8+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
9+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +fma -O2 -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - | FileCheck %s --check-prefixes=COMMON,CHECK-ASM
610

711
#ifdef STRICT
812
// Test that the constrained intrinsics are picking up the exception
@@ -15,16 +19,16 @@
1519

1620
__m128 test_mm_fmadd_ps(__m128 a, __m128 b, __m128 c) {
1721
// COMMON-LABEL: test_mm_fmadd_ps
18-
// UNCONSTRAINED: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
19-
// CONSTRAINED: call <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
22+
// UNCONSTRAINED: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
23+
// CONSTRAINED: call {{.*}}<4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
2024
// CHECK-ASM: vfmadd213ps
2125
return _mm_fmadd_ps(a, b, c);
2226
}
2327

2428
__m128d test_mm_fmadd_pd(__m128d a, __m128d b, __m128d c) {
2529
// COMMON-LABEL: test_mm_fmadd_pd
26-
// UNCONSTRAINED: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
27-
// CONSTRAINED: call <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
30+
// UNCONSTRAINED: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
31+
// CONSTRAINED: call {{.*}}<2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
2832
// CHECK-ASM: vfmadd213pd
2933
return _mm_fmadd_pd(a, b, c);
3034
}
@@ -56,17 +60,17 @@ __m128d test_mm_fmadd_sd(__m128d a, __m128d b, __m128d c) {
5660
__m128 test_mm_fmsub_ps(__m128 a, __m128 b, __m128 c) {
5761
// COMMON-LABEL: test_mm_fmsub_ps
5862
// COMMONIR: [[NEG:%.+]] = fneg <4 x float> %{{.+}}
59-
// UNCONSTRAINED: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
60-
// CONSTRAINED: call <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
63+
// UNCONSTRAINED: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
64+
// CONSTRAINED: call {{.*}}<4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
6165
// CHECK-ASM: vfmsub213ps
6266
return _mm_fmsub_ps(a, b, c);
6367
}
6468

6569
__m128d test_mm_fmsub_pd(__m128d a, __m128d b, __m128d c) {
6670
// COMMON-LABEL: test_mm_fmsub_pd
6771
// COMMONIR: [[NEG:%.+]] = fneg <2 x double> %{{.+}}
68-
// UNCONSTRAINED: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
69-
// CONSTRAINED: call <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
72+
// UNCONSTRAINED: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
73+
// CONSTRAINED: call {{.*}}<2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
7074
// CHECK-ASM: vfmsub213pd
7175
return _mm_fmsub_pd(a, b, c);
7276
}
@@ -100,17 +104,17 @@ __m128d test_mm_fmsub_sd(__m128d a, __m128d b, __m128d c) {
100104
__m128 test_mm_fnmadd_ps(__m128 a, __m128 b, __m128 c) {
101105
// COMMON-LABEL: test_mm_fnmadd_ps
102106
// COMMONIR: [[NEG:%.+]] = fneg <4 x float> %{{.+}}
103-
// UNCONSTRAINED: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
104-
// CONSTRAINED: call <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
107+
// UNCONSTRAINED: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
108+
// CONSTRAINED: call {{.*}}<4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
105109
// CHECK-ASM: vfnmadd213ps
106110
return _mm_fnmadd_ps(a, b, c);
107111
}
108112

109113
__m128d test_mm_fnmadd_pd(__m128d a, __m128d b, __m128d c) {
110114
// COMMON-LABEL: test_mm_fnmadd_pd
111115
// COMMONIR: [[NEG:%.+]] = fneg <2 x double> %{{.+}}
112-
// UNCONSTRAINED: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
113-
// CONSTRAINED: call <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
116+
// UNCONSTRAINED: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
117+
// CONSTRAINED: call {{.*}}<2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
114118
// CHECK-ASM: vfnmadd213pd
115119
return _mm_fnmadd_pd(a, b, c);
116120
}
@@ -145,8 +149,8 @@ __m128 test_mm_fnmsub_ps(__m128 a, __m128 b, __m128 c) {
145149
// COMMON-LABEL: test_mm_fnmsub_ps
146150
// COMMONIR: [[NEG:%.+]] = fneg <4 x float> %{{.+}}
147151
// COMMONIR: [[NEG2:%.+]] = fneg <4 x float> %{{.+}}
148-
// UNCONSTRAINED: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
149-
// CONSTRAINED: call <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
152+
// UNCONSTRAINED: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
153+
// CONSTRAINED: call {{.*}}<4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !{{.*}})
150154
// CHECK-ASM: vfnmsub213ps
151155
return _mm_fnmsub_ps(a, b, c);
152156
}
@@ -155,8 +159,8 @@ __m128d test_mm_fnmsub_pd(__m128d a, __m128d b, __m128d c) {
155159
// COMMON-LABEL: test_mm_fnmsub_pd
156160
// COMMONIR: [[NEG:%.+]] = fneg <2 x double> %{{.+}}
157161
// COMMONIR: [[NEG2:%.+]] = fneg <2 x double> %{{.+}}
158-
// UNCONSTRAINED: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
159-
// CONSTRAINED: call <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
162+
// UNCONSTRAINED: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
163+
// CONSTRAINED: call {{.*}}<2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !{{.*}})
160164
// CHECK-ASM: vfnmsub213pd
161165
return _mm_fnmsub_pd(a, b, c);
162166
}
@@ -192,83 +196,83 @@ __m128d test_mm_fnmsub_sd(__m128d a, __m128d b, __m128d c) {
192196
__m128 test_mm_fmaddsub_ps(__m128 a, __m128 b, __m128 c) {
193197
// COMMON-LABEL: test_mm_fmaddsub_ps
194198
// COMMONIR-NOT: fneg
195-
// COMMONIR: tail call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
199+
// COMMONIR: tail call {{.*}}<4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
196200
// CHECK-ASM: vfmaddsub213ps
197201
return _mm_fmaddsub_ps(a, b, c);
198202
}
199203

200204
__m128d test_mm_fmaddsub_pd(__m128d a, __m128d b, __m128d c) {
201205
// COMMON-LABEL: test_mm_fmaddsub_pd
202206
// COMMONIR-NOT: fneg
203-
// COMMONIR: tail call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
207+
// COMMONIR: tail call {{.*}}<2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
204208
// CHECK-ASM: vfmaddsub213pd
205209
return _mm_fmaddsub_pd(a, b, c);
206210
}
207211

208212
__m128 test_mm_fmsubadd_ps(__m128 a, __m128 b, __m128 c) {
209213
// COMMON-LABEL: test_mm_fmsubadd_ps
210214
// COMMONIR: [[FNEG:%.+]] = fneg <4 x float> %{{.*}}
211-
// COMMONIR: tail call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[FNEG]])
215+
// COMMONIR: tail call {{.*}}<4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[FNEG]])
212216
// CHECK-ASM: vfmsubadd213ps
213217
return _mm_fmsubadd_ps(a, b, c);
214218
}
215219

216220
__m128d test_mm_fmsubadd_pd(__m128d a, __m128d b, __m128d c) {
217221
// COMMON-LABEL: test_mm_fmsubadd_pd
218222
// COMMONIR: [[FNEG:%.+]] = fneg <2 x double> %{{.*}}
219-
// COMMONIR: tail call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[FNEG]])
223+
// COMMONIR: tail call {{.*}}<2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[FNEG]])
220224
// CHECK-ASM: vfmsubadd213pd
221225
return _mm_fmsubadd_pd(a, b, c);
222226
}
223227

224228
__m256 test_mm256_fmadd_ps(__m256 a, __m256 b, __m256 c) {
225229
// COMMON-LABEL: test_mm256_fmadd_ps
226-
// UNCONSTRAINED: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
227-
// CONSTRAINED: call <8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
230+
// UNCONSTRAINED: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
231+
// CONSTRAINED: call {{.*}}<8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
228232
// CHECK-ASM: vfmadd213ps
229233
return _mm256_fmadd_ps(a, b, c);
230234
}
231235

232236
__m256d test_mm256_fmadd_pd(__m256d a, __m256d b, __m256d c) {
233237
// COMMON-LABEL: test_mm256_fmadd_pd
234-
// UNCONSTRAINED: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
235-
// CONSTRAINED: call <4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
238+
// UNCONSTRAINED: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
239+
// CONSTRAINED: call {{.*}}<4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
236240
// CHECK-ASM: vfmadd213pd
237241
return _mm256_fmadd_pd(a, b, c);
238242
}
239243

240244
__m256 test_mm256_fmsub_ps(__m256 a, __m256 b, __m256 c) {
241245
// COMMON-LABEL: test_mm256_fmsub_ps
242246
// COMMONIR: [[NEG:%.+]] = fneg <8 x float> %{{.*}}
243-
// UNCONSTRAINED: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
244-
// CONSTRAINED: call <8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
247+
// UNCONSTRAINED: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
248+
// CONSTRAINED: call {{.*}}<8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
245249
// CHECK-ASM: vfmsub213ps
246250
return _mm256_fmsub_ps(a, b, c);
247251
}
248252

249253
__m256d test_mm256_fmsub_pd(__m256d a, __m256d b, __m256d c) {
250254
// COMMON-LABEL: test_mm256_fmsub_pd
251255
// COMMONIR: [[NEG:%.+]] = fneg <4 x double> %{{.+}}
252-
// UNCONSTRAINED: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
253-
// CONSTRAINED: call <4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
256+
// UNCONSTRAINED: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
257+
// CONSTRAINED: call {{.*}}<4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
254258
// CHECK-ASM: vfmsub213pd
255259
return _mm256_fmsub_pd(a, b, c);
256260
}
257261

258262
__m256 test_mm256_fnmadd_ps(__m256 a, __m256 b, __m256 c) {
259263
// COMMON-LABEL: test_mm256_fnmadd_ps
260264
// COMMONIR: [[NEG:%.+]] = fneg <8 x float> %{{.*}}
261-
// UNCONSTRAINED: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
262-
// CONSTRAINED: call <8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
265+
// UNCONSTRAINED: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
266+
// CONSTRAINED: call {{.*}}<8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
263267
// CHECK-ASM: vfnmadd213ps
264268
return _mm256_fnmadd_ps(a, b, c);
265269
}
266270

267271
__m256d test_mm256_fnmadd_pd(__m256d a, __m256d b, __m256d c) {
268272
// COMMON-LABEL: test_mm256_fnmadd_pd
269273
// COMMONIR: [[NEG:%.+]] = fneg <4 x double> %{{.+}}
270-
// UNCONSTRAINED: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
271-
// CONSTRAINED: call <4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
274+
// UNCONSTRAINED: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
275+
// CONSTRAINED: call {{.*}}<4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
272276
// CHECK-ASM: vfnmadd213pd
273277
return _mm256_fnmadd_pd(a, b, c);
274278
}
@@ -277,8 +281,8 @@ __m256 test_mm256_fnmsub_ps(__m256 a, __m256 b, __m256 c) {
277281
// COMMON-LABEL: test_mm256_fnmsub_ps
278282
// COMMONIR: [[NEG:%.+]] = fneg <8 x float> %{{.*}}
279283
// COMMONIR: [[NEG2:%.+]] = fneg <8 x float> %{{.*}}
280-
// UNCONSTRAINED: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
281-
// CONSTRAINED: call <8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
284+
// UNCONSTRAINED: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
285+
// CONSTRAINED: call {{.*}}<8 x float> @llvm.experimental.constrained.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !{{.*}})
282286
// CHECK-ASM: vfnmsub213ps
283287
return _mm256_fnmsub_ps(a, b, c);
284288
}
@@ -287,40 +291,40 @@ __m256d test_mm256_fnmsub_pd(__m256d a, __m256d b, __m256d c) {
287291
// COMMON-LABEL: test_mm256_fnmsub_pd
288292
// COMMONIR: [[NEG:%.+]] = fneg <4 x double> %{{.+}}
289293
// COMMONIR: [[NEG2:%.+]] = fneg <4 x double> %{{.+}}
290-
// UNCONSTRAINED: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
291-
// CONSTRAINED: call <4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
294+
// UNCONSTRAINED: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
295+
// CONSTRAINED: call {{.*}}<4 x double> @llvm.experimental.constrained.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !{{.*}})
292296
// CHECK-ASM: vfnmsub213pd
293297
return _mm256_fnmsub_pd(a, b, c);
294298
}
295299

296300
__m256 test_mm256_fmaddsub_ps(__m256 a, __m256 b, __m256 c) {
297301
// COMMON-LABEL: test_mm256_fmaddsub_ps
298302
// COMMONIR-NOT: fneg
299-
// COMMONIR: tail call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
303+
// COMMONIR: tail call {{.*}}<8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
300304
// CHECK-ASM: vfmaddsub213ps
301305
return _mm256_fmaddsub_ps(a, b, c);
302306
}
303307

304308
__m256d test_mm256_fmaddsub_pd(__m256d a, __m256d b, __m256d c) {
305309
// COMMON-LABEL: test_mm256_fmaddsub_pd
306310
// COMMONIR-NOT: fneg
307-
// COMMONIR: tail call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
311+
// COMMONIR: tail call {{.*}}<4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
308312
// CHECK-ASM: vfmaddsub213pd
309313
return _mm256_fmaddsub_pd(a, b, c);
310314
}
311315

312316
__m256 test_mm256_fmsubadd_ps(__m256 a, __m256 b, __m256 c) {
313317
// COMMON-LABEL: test_mm256_fmsubadd_ps
314318
// COMMONIR: [[FNEG:%.+]] = fneg <8 x float> %{{.*}}
315-
// COMMONIR: tail call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[FNEG]])
319+
// COMMONIR: tail call {{.*}}<8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[FNEG]])
316320
// CHECK-ASM: vfmsubadd213ps
317321
return _mm256_fmsubadd_ps(a, b, c);
318322
}
319323

320324
__m256d test_mm256_fmsubadd_pd(__m256d a, __m256d b, __m256d c) {
321325
// COMMON-LABEL: test_mm256_fmsubadd_pd
322326
// COMMONIR: [[FNEG:%.+]] = fneg <4 x double> %{{.*}}
323-
// COMMONIR: tail call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[FNEG]])
327+
// COMMONIR: tail call {{.*}}<4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[FNEG]])
324328
// CHECK-ASM: vfmsubadd213pd
325329
return _mm256_fmsubadd_pd(a, b, c);
326330
}

0 commit comments

Comments
 (0)