[cfe-commits] r110768 - 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 18:43:24 PDT 2010


Author: bruno
Date: Tue Aug 10 20:43:24 2010
New Revision: 110768

URL: http://llvm.org/viewvc/llvm-project?rev=110768&view=rev
Log:
Remove 256-bit unpack 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=110768&r1=110767&r2=110768&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue Aug 10 20:43:24 2010
@@ -377,10 +377,6 @@
 BUILTIN(__builtin_ia32_rcpps256, "V8fV8f", "")
 BUILTIN(__builtin_ia32_roundpd256, "V4dV4di", "")
 BUILTIN(__builtin_ia32_roundps256, "V8fV8fi", "")
-BUILTIN(__builtin_ia32_unpckhpd256, "V4dV4dV4d", "")
-BUILTIN(__builtin_ia32_unpcklpd256, "V4dV4dV4d", "")
-BUILTIN(__builtin_ia32_unpckhps256, "V8fV8fV8f", "")
-BUILTIN(__builtin_ia32_unpcklps256, "V8fV8fV8f", "")
 BUILTIN(__builtin_ia32_si256_si, "V8iV4i", "")
 BUILTIN(__builtin_ia32_ps256_ps, "V8fV4f", "")
 BUILTIN(__builtin_ia32_pd256_pd, "V4dV2d", "")

Modified: cfe/trunk/lib/Headers/avxintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avxintrin.h?rev=110768&r1=110767&r2=110768&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/avxintrin.h (original)
+++ cfe/trunk/lib/Headers/avxintrin.h Tue Aug 10 20:43:24 2010
@@ -598,25 +598,25 @@
 static __inline __m256d __attribute__((__always_inline__, __nodebug__))
 _mm256_unpackhi_pd(__m256d a, __m256d b)
 {
-  return (__m256d)__builtin_ia32_unpckhpd256((__v4df)a, (__v4df)b);
+  return __builtin_shufflevector(a, b, 1, 5, 1+2, 5+2);
 }
 
 static __inline __m256d __attribute__((__always_inline__, __nodebug__))
 _mm256_unpacklo_pd(__m256d a, __m256d b)
 {
-  return (__m256d)__builtin_ia32_unpcklpd256((__v4df)a, (__v4df)b);
+  return __builtin_shufflevector(a, b, 0, 4, 0+2, 4+2);
 }
 
 static __inline __m256 __attribute__((__always_inline__, __nodebug__))
 _mm256_unpackhi_ps(__m256 a, __m256 b)
 {
-  return (__m256)__builtin_ia32_unpckhps256((__v8sf)a, (__v8sf)b);
+  return __builtin_shufflevector(a, b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1);
 }
 
 static __inline __m256 __attribute__((__always_inline__, __nodebug__))
 _mm256_unpacklo_ps(__m256 a, __m256 b)
 {
-  return (__m256)__builtin_ia32_unpcklps256((__v8sf)a, (__v8sf)b);
+  return __builtin_shufflevector(a, b, 0, 8, 0+1, 8+1, 4, 12, 4+1, 12+1);
 }
 
 /* Bit Test */

Modified: cfe/trunk/test/CodeGen/builtins-x86.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=110768&r1=110767&r2=110768&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/builtins-x86.c (original)
+++ cfe/trunk/test/CodeGen/builtins-x86.c Tue Aug 10 20:43:24 2010
@@ -440,10 +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_V4d = __builtin_ia32_unpckhpd256(tmp_V4d, tmp_V4d);
-  tmp_V4d = __builtin_ia32_unpcklpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_unpckhps256(tmp_V8f, tmp_V8f);
-  tmp_V8f = __builtin_ia32_unpcklps256(tmp_V8f, tmp_V8f);
   tmp_V8i = __builtin_ia32_si256_si(tmp_V4i);
   tmp_V8f = __builtin_ia32_ps256_ps(tmp_V4f);
   tmp_V4d = __builtin_ia32_pd256_pd(tmp_V2d);





More information about the cfe-commits mailing list