[clang] bfa0aaf - [AVX512] Add strict-fp cvtph2ps constrained tests
Simon Pilgrim via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 28 08:55:45 PST 2020
Author: Simon Pilgrim
Date: 2020-02-28T16:55:00Z
New Revision: bfa0aaf37f8d68cb7fb63eff5c825724c3829d09
URL: https://github.com/llvm/llvm-project/commit/bfa0aaf37f8d68cb7fb63eff5c825724c3829d09
DIFF: https://github.com/llvm/llvm-project/commit/bfa0aaf37f8d68cb7fb63eff5c825724c3829d09.diff
LOG: [AVX512] Add strict-fp cvtph2ps constrained tests
As suggested on D75162
Added:
clang/test/CodeGen/avx512vl-builtins-constrained.c
Modified:
clang/test/CodeGen/avx512f-builtins-constrained.c
clang/test/CodeGen/avx512f-builtins.c
Removed:
################################################################################
diff --git a/clang/test/CodeGen/avx512f-builtins-constrained.c b/clang/test/CodeGen/avx512f-builtins-constrained.c
index f4a9697f9ca7..dcddd243ef61 100644
--- a/clang/test/CodeGen/avx512f-builtins-constrained.c
+++ b/clang/test/CodeGen/avx512f-builtins-constrained.c
@@ -70,6 +70,48 @@ __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
return _mm512_maskz_sqrt_ps(__U ,__A);
}
+__m256i test_mm512_cvt_roundps_ph(__m512 __A)
+{
+ // COMMON-LABEL: test_mm512_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.512
+ return _mm512_cvt_roundps_ph(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512 __A)
+{
+ // COMMON-LABEL: test_mm512_mask_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.512
+ return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512 __A)
+{
+ // COMMON-LABEL: test_mm512_maskz_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.512
+ return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m512 test_mm512_cvt_roundph_ps(__m256i __A)
+{
+ // COMMON-LABEL: test_mm512_cvt_roundph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_cvt_roundph_ps(__A, _MM_FROUND_NO_EXC);
+}
+
+__m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
+{
+ // COMMON-LABEL: test_mm512_mask_cvt_roundph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_NO_EXC);
+}
+
+__m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
+{
+ // COMMON-LABEL: test_mm512_maskz_cvt_roundph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_NO_EXC);
+}
+
__m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
// COMMON-LABEL: test_mm_mask_sqrt_sd
// COMMONIR: extractelement <2 x double> %{{.*}}, i64 0
@@ -125,3 +167,25 @@ __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
// COMMONIR-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
return _mm_maskz_sqrt_ss(__U,__A,__B);
}
+
+__m512 test_mm512_cvtph_ps (__m256i __A)
+{
+ // COMMON-LABEL: test_mm512_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_cvtph_ps (__A);
+}
+
+__m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
+{
+ // COMMON-LABEL: test_mm512_mask_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_mask_cvtph_ps (__W,__U,__A);
+}
+
+__m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
+{
+ // COMMON-LABEL: test_mm512_maskz_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_maskz_cvtph_ps (__U,__A);
+}
+
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index bd15424af889..390ea14faa68 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -9460,6 +9460,13 @@ __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
return _mm512_maskz_cvtpd_ps (__U,__A);
}
+__m512 test_mm512_cvtph_ps (__m256i __A)
+{
+ // CHECK-LABEL: @test_mm512_cvtph_ps
+ // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
+ return _mm512_cvtph_ps (__A);
+}
+
__m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
{
// CHECK-LABEL: @test_mm512_mask_cvtph_ps
diff --git a/clang/test/CodeGen/avx512vl-builtins-constrained.c b/clang/test/CodeGen/avx512vl-builtins-constrained.c
new file mode 100644
index 000000000000..0e2aa4e99fe4
--- /dev/null
+++ b/clang/test/CodeGen/avx512vl-builtins-constrained.c
@@ -0,0 +1,79 @@
+// REQUIRES: x86-registered-target
+// RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck --check-prefix=COMMON --check-prefix=COMMONIR --check-prefix=UNCONSTRAINED %s
+// RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck --check-prefix=COMMON --check-prefix=COMMONIR --check-prefix=UNCONSTRAINED %s
+// RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +avx512f -target-feature +avx512vl -ffp-exception-behavior=strict -emit-llvm -o - -Wall -Werror | FileCheck --check-prefix=COMMON --check-prefix=COMMONIR --check-prefix=CONSTRAINED %s
+// RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -fms-compatibility -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +avx512f -target-feature +avx512vl -ffp-exception-behavior=strict -emit-llvm -o - -Wall -Werror | FileCheck --check-prefix=COMMON --check-prefix=COMMONIR --check-prefix=CONSTRAINED %s
+
+#include <immintrin.h>
+
+__m128 test_mm_mask_cvtph_ps(__m128 __W, __mmask8 __U, __m128i __A) {
+ // COMMON-LABEL: @test_mm_mask_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.128
+ return _mm_mask_cvtph_ps(__W, __U, __A);
+}
+
+__m128 test_mm_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
+ // COMMON-LABEL: @test_mm_maskz_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.128
+ return _mm_maskz_cvtph_ps(__U, __A);
+}
+
+__m256 test_mm256_mask_cvtph_ps(__m256 __W, __mmask8 __U, __m128i __A) {
+ // COMMON-LABEL: @test_mm256_mask_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.256
+ return _mm256_mask_cvtph_ps(__W, __U, __A);
+}
+
+__m256 test_mm256_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
+ // COMMON-LABEL: @test_mm256_maskz_cvtph_ps
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtph2ps.256
+ return _mm256_maskz_cvtph_ps(__U, __A);
+}
+
+__m128i test_mm_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
+ // COMMON-LABEL: @test_mm_mask_cvtps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.128
+ return _mm_mask_cvtps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m128i test_mm_maskz_cvtps_ph(__mmask8 __U, __m128 __A) {
+ // COMMON-LABEL: @test_mm_maskz_cvtps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.128
+ return _mm_maskz_cvtps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m128i test_mm256_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
+ // COMMON-LABEL: @test_mm256_mask_cvtps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.256
+ return _mm256_mask_cvtps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m128i test_mm256_maskz_cvtps_ph(__mmask8 __U, __m256 __A) {
+ // COMMON-LABEL: @test_mm256_maskz_cvtps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.256
+ return _mm256_maskz_cvtps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+}
+
+__m128i test_mm_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
+ // COMMON-LABEL: @test_mm_mask_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.128
+ return _mm_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO);
+}
+
+__m128i test_mm_maskz_cvt_roundps_ph(__mmask8 __U, __m128 __A) {
+ // COMMON-LABEL: @test_mm_maskz_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.128
+ return _mm_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO);
+}
+
+__m128i test_mm256_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
+ // COMMON-LABEL: @test_mm256_mask_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.256
+ return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO);
+}
+
+__m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) {
+ // COMMON-LABEL: @test_mm256_maskz_cvt_roundps_ph
+ // COMMONIR: @llvm.x86.avx512.mask.vcvtps2ph.256
+ return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO);
+}
More information about the cfe-commits
mailing list