[cfe-commits] r110771 - in /cfe/trunk: include/clang/Basic/BuiltinsX86.def lib/Headers/avxintrin.h test/CodeGen/builtins-x86.c

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Tue Aug 10 19:14:39 PDT 2010


Author: bruno
Date: Tue Aug 10 21:14:38 2010
New Revision: 110771

URL: http://llvm.org/viewvc/llvm-project?rev=110771&view=rev
Log:
Remove 256-bit cast built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

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

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=110771&r1=110770&r2=110771&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue Aug 10 21:14:38 2010
@@ -377,12 +377,6 @@
 BUILTIN(__builtin_ia32_rcpps256, "V8fV8f", "")
 BUILTIN(__builtin_ia32_roundpd256, "V4dV4di", "")
 BUILTIN(__builtin_ia32_roundps256, "V8fV8fi", "")
-BUILTIN(__builtin_ia32_si256_si, "V8iV4i", "")
-BUILTIN(__builtin_ia32_ps256_ps, "V8fV4f", "")
-BUILTIN(__builtin_ia32_pd256_pd, "V4dV2d", "")
-BUILTIN(__builtin_ia32_si_si256, "V4iV8i", "")
-BUILTIN(__builtin_ia32_ps_ps256, "V4fV8f", "")
-BUILTIN(__builtin_ia32_pd_pd256, "V2dV4d", "")
 BUILTIN(__builtin_ia32_vtestzpd, "iV2dV2d", "")
 BUILTIN(__builtin_ia32_vtestcpd, "iV2dV2d", "")
 BUILTIN(__builtin_ia32_vtestnzcpd, "iV2dV2d", "")

Modified: cfe/trunk/lib/Headers/avxintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avxintrin.h?rev=110771&r1=110770&r2=110771&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/avxintrin.h (original)
+++ cfe/trunk/lib/Headers/avxintrin.h Tue Aug 10 21:14:38 2010
@@ -1122,37 +1122,40 @@
 static __inline __m128d __attribute__((__always_inline__, __nodebug__))
 _mm256_castpd256_pd128(__m256d in)
 {
-  return (__m128d)__builtin_ia32_pd_pd256((__v4df)in);
+  return __builtin_shufflevector(in, in, 0, 1);
 }
 
 static __inline __m128 __attribute__((__always_inline__, __nodebug__))
 _mm256_castps256_ps128(__m256 in)
 {
-  return (__m128)__builtin_ia32_ps_ps256((__v8sf)in);
+  return __builtin_shufflevector(in, in, 0, 1, 2, 3);
 }
 
 static __inline __m128i __attribute__((__always_inline__, __nodebug__))
 _mm256_castsi256_si128(__m256i in)
 {
-  return (__m128i)__builtin_ia32_si_si256((__v8si)in);
+  return __builtin_shufflevector(in, in, 0, 1);
 }
 
 static __inline __m256d __attribute__((__always_inline__, __nodebug__))
 _mm256_castpd128_pd256(__m128d in)
 {
-  return (__m256d)__builtin_ia32_pd256_pd((__v2df)in);
+  __m128d zero = _mm_setzero_pd();
+  return __builtin_shufflevector(in, zero, 0, 1, 2, 2);
 }
 
 static __inline __m256 __attribute__((__always_inline__, __nodebug__))
 _mm256_castps128_ps256(__m128 in)
 {
-  return (__m256)__builtin_ia32_ps256_ps((__v4sf)in);
+  __m128 zero = _mm_setzero_ps();
+  return __builtin_shufflevector(in, zero, 0, 1, 2, 3, 4, 4, 4, 4);
 }
 
 static __inline __m256i __attribute__((__always_inline__, __nodebug__))
 _mm256_castsi128_si256(__m128i in)
 {
-  return (__m256i)__builtin_ia32_si256_si((__v4si)in);
+  __m128i zero = _mm_setzero_si128();
+  return __builtin_shufflevector(in, zero, 0, 1, 2, 2);
 }
 
 #endif /* __AVX__ */

Modified: cfe/trunk/test/CodeGen/builtins-x86.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=110771&r1=110770&r2=110771&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/builtins-x86.c (original)
+++ cfe/trunk/test/CodeGen/builtins-x86.c Tue Aug 10 21:14:38 2010
@@ -440,12 +440,6 @@
   tmp_V8f = __builtin_ia32_rcpps256(tmp_V8f);
   tmp_V4d = __builtin_ia32_roundpd256(tmp_V4d, tmp_i);
   tmp_V8f = __builtin_ia32_roundps256(tmp_V8f, tmp_i);
-  tmp_V8i = __builtin_ia32_si256_si(tmp_V4i);
-  tmp_V8f = __builtin_ia32_ps256_ps(tmp_V4f);
-  tmp_V4d = __builtin_ia32_pd256_pd(tmp_V2d);
-  tmp_V4i = __builtin_ia32_si_si256(tmp_V8i);
-  tmp_V4f = __builtin_ia32_ps_ps256(tmp_V8f);
-  tmp_V2d = __builtin_ia32_pd_pd256(tmp_V4d);
   tmp_i = __builtin_ia32_vtestzpd(tmp_V2d, tmp_V2d);
   tmp_i = __builtin_ia32_vtestcpd(tmp_V2d, tmp_V2d);
   tmp_i = __builtin_ia32_vtestnzcpd(tmp_V2d, tmp_V2d);





More information about the cfe-commits mailing list