diff options
| author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-08-11 01:43:24 +0000 |
|---|---|---|
| committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-08-11 01:43:24 +0000 |
| commit | a4f1930b757db2a2b0122d1e9b805a1ca22616d2 (patch) | |
| tree | b49a75c0d3728c12ba4b3ea4a4a9b9819e97675e | |
| parent | 90b238c68bcfa83ab200b3a9490e1985bf49ea21 (diff) | |
| download | bcm5719-llvm-a4f1930b757db2a2b0122d1e9b805a1ca22616d2.tar.gz bcm5719-llvm-a4f1930b757db2a2b0122d1e9b805a1ca22616d2.zip | |
Remove 256-bit unpack built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments
llvm-svn: 110768
| -rw-r--r-- | clang/include/clang/Basic/BuiltinsX86.def | 4 | ||||
| -rw-r--r-- | clang/lib/Headers/avxintrin.h | 8 | ||||
| -rw-r--r-- | clang/test/CodeGen/builtins-x86.c | 4 |
3 files changed, 4 insertions, 12 deletions
diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index 71f25cabc31..3e54135ab09 100644 --- a/clang/include/clang/Basic/BuiltinsX86.def +++ b/clang/include/clang/Basic/BuiltinsX86.def @@ -377,10 +377,6 @@ BUILTIN(__builtin_ia32_rsqrtps_nr256, "V8fV8f", "") 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", "") diff --git a/clang/lib/Headers/avxintrin.h b/clang/lib/Headers/avxintrin.h index 7beb5ba1c18..6c1e32d2405 100644 --- a/clang/lib/Headers/avxintrin.h +++ b/clang/lib/Headers/avxintrin.h @@ -598,25 +598,25 @@ _mm256_movedup_pd(__m256d a) 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 */ diff --git a/clang/test/CodeGen/builtins-x86.c b/clang/test/CodeGen/builtins-x86.c index 0e0a253755b..b08fc5f9ace 100644 --- a/clang/test/CodeGen/builtins-x86.c +++ b/clang/test/CodeGen/builtins-x86.c @@ -440,10 +440,6 @@ void f0() { 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); |

