r226421 - [x86] Mark that the AVX-512 cmpps/cmppd builtins need an ICE for the comparison immediate. This requires converting to a macro in the header file.

Craig Topper craig.topper at gmail.com
Sun Jan 18 17:18:20 PST 2015


Author: ctopper
Date: Sun Jan 18 19:18:19 2015
New Revision: 226421

URL: http://llvm.org/viewvc/llvm-project?rev=226421&view=rev
Log:
[x86] Mark that the AVX-512 cmpps/cmppd builtins need an ICE for the comparison immediate. This requires converting to a macro in the header file.

Modified:
    cfe/trunk/include/clang/Basic/BuiltinsX86.def
    cfe/trunk/lib/Headers/avx512fintrin.h
    cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=226421&r1=226420&r2=226421&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Sun Jan 18 19:18:19 2015
@@ -842,7 +842,7 @@ BUILTIN(__builtin_ia32_cvttps2dq512_mask
 BUILTIN(__builtin_ia32_cvttps2udq512_mask, "V16iV16fV16iUsiC", "")
 BUILTIN(__builtin_ia32_cvttpd2dq512_mask, "V8iV8dV8iUciC", "")
 BUILTIN(__builtin_ia32_cvttpd2udq512_mask, "V8iV8dV8iUciC", "")
-BUILTIN(__builtin_ia32_cmpps512_mask, "UsV16fV16fiCUsi", "")
+BUILTIN(__builtin_ia32_cmpps512_mask, "UsV16fV16fIiUsi", "")
 BUILTIN(__builtin_ia32_pcmpeqb512_mask, "LLiV64cV64cLLi", "")
 BUILTIN(__builtin_ia32_pcmpeqd512_mask, "sV16iV16is", "")
 BUILTIN(__builtin_ia32_pcmpeqq512_mask, "cV8LLiV8LLic", "")
@@ -855,7 +855,7 @@ BUILTIN(__builtin_ia32_pcmpeqb128_mask,
 BUILTIN(__builtin_ia32_pcmpeqd128_mask, "cV4iV4ic", "")
 BUILTIN(__builtin_ia32_pcmpeqq128_mask, "cV2LLiV2LLic", "")
 BUILTIN(__builtin_ia32_pcmpeqw128_mask, "cV8sV8sc", "")
-BUILTIN(__builtin_ia32_cmppd512_mask, "UcV8dV8diCUci", "")
+BUILTIN(__builtin_ia32_cmppd512_mask, "UcV8dV8dIiUci", "")
 BUILTIN(__builtin_ia32_rndscaleps_mask, "V16fV16fiCV16fUsiC", "")
 BUILTIN(__builtin_ia32_rndscalepd_mask, "V8dV8diCV8dUciC", "")
 BUILTIN(__builtin_ia32_cvtps2dq512_mask, "V16iV16fV16iUsiC", "")

Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=226421&r1=226420&r2=226421&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Sun Jan 18 19:18:19 2015
@@ -669,22 +669,19 @@ _mm512_mask_blend_epi32(__mmask16 __U, _
 
 /* Compare */
 
-static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
-_mm512_cmp_ps_mask(__m512 a, __m512 b, const int p)
-{
-  return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) a,
-               (__v16sf) b, p, (__mmask16) -1,
-               _MM_FROUND_CUR_DIRECTION);
-}
+#define _mm512_cmp_ps_mask(a, b, p) __extension__ ({ \
+  __m512 __a = (a); \
+  __m512 __b = (b); \
+  (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)__a, (__v16sf)__b, (p), \
+                                          (__mmask16)-1,                   \
+                                          _MM_FROUND_CUR_DIRECTION); })
 
-static __inline __mmask8 __attribute__ ((__always_inline__, __nodebug__)) 
-_mm512_cmp_pd_mask(__m512d __X, __m512d __Y, const int __P)
-{
-  return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X,
-              (__v8df) __Y, __P,
-              (__mmask8) -1,
-              _MM_FROUND_CUR_DIRECTION);
-}
+#define _mm512_cmp_pd_mask(a, b, p) __extension__ ({ \
+  __m512 __a = (a); \
+  __m512 __b = (b); \
+  (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)__a, (__v8df)__b, (p), \
+                                          (__mmask8)-1,                 \
+                                          _MM_FROUND_CUR_DIRECTION); })
 
 /* Conversion */
 

Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=226421&r1=226420&r2=226421&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/avx512f-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c Sun Jan 18 19:18:19 2015
@@ -252,3 +252,15 @@ __m512 test_mm512_unpacklo_ps(__m512 a,
   // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
   return _mm512_unpacklo_ps(a, b);
 }
+
+__mmask16 test_mm512_cmp_ps_mask(__m512 __a, __m512 __b) {
+  // CHECK-LABEL: @test_mm512_cmp_ps_mask
+  // CHECK: @llvm.x86.avx512.mask.cmp.ps.512
+  return _mm512_cmp_ps_mask(__a, __b, 0);
+}
+
+__mmask8 test_mm512_cmp_pd_mask(__m512 __a, __m512 __b) {
+  // CHECK-LABEL: @test_mm512_cmp_pd_mask
+  // CHECK: @llvm.x86.avx512.mask.cmp.pd.512
+  return _mm512_cmp_pd_mask(__a, __b, 0);
+}





More information about the cfe-commits mailing list