1
1
// REQUIRES: x86-registered-target
2
2
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=UNCONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR
3
- // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -ffp-exception-behavior=maytrap -DSTRICT=1 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=CONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR
3
+ // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -ffp-exception-behavior=maytrap -DSTRICT=1 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=CONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR --implicit-check-not=fpexcept.maytrap
4
4
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON
5
- // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON
5
+ // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON --implicit-check-not=fpexcept.maytrap
6
+
7
+ // Any cases of "fpexcept.maytrap" in this test are clang bugs.
6
8
7
- // FIXME: Every instance of "fpexcept.maytrap" is wrong.
8
9
#ifdef STRICT
9
10
// Test that the constrained intrinsics are picking up the exception
10
11
// metadata from the AST instead of the global default from the command line.
18
19
__m512d test_mm512_cvtepi64_pd (__m512i __A ) {
19
20
// COMMON-LABEL: test_mm512_cvtepi64_pd
20
21
// UNCONSTRAINED: sitofp <8 x i64> %{{.*}} to <8 x double>
21
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
22
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
22
23
// CHECK-ASM: vcvtqq2pd
23
24
return _mm512_cvtepi64_pd (__A );
24
25
}
25
26
26
27
__m512d test_mm512_mask_cvtepi64_pd (__m512d __W , __mmask8 __U , __m512i __A ) {
27
28
// COMMON-LABEL: test_mm512_mask_cvtepi64_pd
28
29
// UNCONSTRAINED: sitofp <8 x i64> %{{.*}} to <8 x double>
29
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
30
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
30
31
// COMMONIR: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
31
32
// CHECK-ASM: vcvtqq2pd
32
33
return _mm512_mask_cvtepi64_pd (__W , __U , __A );
@@ -35,7 +36,7 @@ __m512d test_mm512_mask_cvtepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
35
36
__m512d test_mm512_maskz_cvtepi64_pd (__mmask8 __U , __m512i __A ) {
36
37
// COMMON-LABEL: test_mm512_maskz_cvtepi64_pd
37
38
// UNCONSTRAINED: sitofp <8 x i64> %{{.*}} to <8 x double>
38
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
39
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
39
40
// COMMONIR: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
40
41
// CHECK-ASM: vcvtqq2pd
41
42
return _mm512_maskz_cvtepi64_pd (__U , __A );
@@ -116,15 +117,15 @@ __m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) {
116
117
__m512d test_mm512_cvtepu64_pd (__m512i __A ) {
117
118
// COMMON-LABEL: test_mm512_cvtepu64_pd
118
119
// UNCONSTRAINED: uitofp <8 x i64> %{{.*}} to <8 x double>
119
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
120
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
120
121
// CHECK-ASM: vcvtuqq2pd
121
122
return _mm512_cvtepu64_pd (__A );
122
123
}
123
124
124
125
__m512d test_mm512_mask_cvtepu64_pd (__m512d __W , __mmask8 __U , __m512i __A ) {
125
126
// COMMON-LABEL: test_mm512_mask_cvtepu64_pd
126
127
// UNCONSTRAINED: uitofp <8 x i64> %{{.*}} to <8 x double>
127
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
128
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
128
129
// COMMONIR: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
129
130
// CHECK-ASM: vcvtuqq2pd
130
131
return _mm512_mask_cvtepu64_pd (__W , __U , __A );
@@ -133,7 +134,7 @@ __m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
133
134
__m512d test_mm512_maskz_cvtepu64_pd (__mmask8 __U , __m512i __A ) {
134
135
// COMMON-LABEL: test_mm512_maskz_cvtepu64_pd
135
136
// UNCONSTRAINED: uitofp <8 x i64> %{{.*}} to <8 x double>
136
- // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap ")
137
+ // CONSTRAINED: call <8 x double> @llvm.experimental.constrained.uitofp.v8f64.v8i64(<8 x i64> %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict ")
137
138
// COMMONIR: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
138
139
// CHECK-ASM: vcvtuqq2pd
139
140
return _mm512_maskz_cvtepu64_pd (__U , __A );
0 commit comments