[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