From: Chris Lattner Date: Sat, 2 Oct 2010 21:32:59 +0000 (+0000) Subject: the mmx intrinsic for pshufw should map to the IR intrinsic, not X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=69993392d2e9e0560a184e65bdbe64527de3046f;p=clang the mmx intrinsic for pshufw should map to the IR intrinsic, not to a shufflevector. Otherwise it doesn't turn into a pshufw. This bug was introduced in the mmx rewrite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115423 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 8a730a836b..cb14f5015e 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/include/clang/Basic/BuiltinsX86.def @@ -82,6 +82,7 @@ BUILTIN(__builtin_ia32_psradi, "V2iV2ii", "") BUILTIN(__builtin_ia32_packsswb, "V8cV4sV4s", "") BUILTIN(__builtin_ia32_packssdw, "V4sV2iV2i", "") BUILTIN(__builtin_ia32_packuswb, "V8cV4sV4s", "") +BUILTIN(__builtin_ia32_pshufw, "V4sV4sIi", "") BUILTIN(__builtin_ia32_punpckhbw, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_punpckhwd, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_punpckhdq, "V2iV2iV2i", "") diff --git a/lib/Headers/xmmintrin.h b/lib/Headers/xmmintrin.h index 8363b4594b..6f270f8e08 100644 --- a/lib/Headers/xmmintrin.h +++ b/lib/Headers/xmmintrin.h @@ -712,9 +712,7 @@ _mm_mulhi_pu16(__m64 a, __m64 b) } #define _mm_shuffle_pi16(a, n) \ - ((__m64)__builtin_shufflevector((__v4hi)(a), (__v4hi) {0}, \ - (n) & 0x3, ((n) & 0xc) >> 2, \ - ((n) & 0x30) >> 4, ((n) & 0xc0) >> 6)) + ((__m64)__builtin_ia32_pshufw(a, n)) static __inline__ void __attribute__((__always_inline__, __nodebug__)) _mm_maskmove_si64(__m64 d, __m64 n, char *p)