[PATCH] Lower _mm256_broadcastsi128_si256 to a vector shuffle

Juergen Ributzka juergen at apple.com
Tue Mar 3 09:05:39 PST 2015


Hi Andrea,

that approach is great. I will do that instead.

Thanks

Cheers,
Juergen

> On Mar 3, 2015, at 3:46 AM, Andrea Di Biagio <andrea.dibiagio at gmail.com> wrote:
> 
> Hi Juergen,
> 
> Your patch looks OK but I think that a better approach would be to
> change the definition of _mm256_broadcastsi128_si256 in avx2intrin.h
> to something like:
> 
> ////
> static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
> _mm256_broadcastsi128_si256(__m128i __X)
> {
>  return (__m256i) __builtin_shufflevector( __X, __X, 0, 1, 0, 1);
> }
> ////
> 
> If you change the definition of '_mm256_broadcastsi128_si256' in
> avx2intrin.h, then you don't need to change 'CGBuiltin.cpp'.
> This would still allow you to get rid of the gcc builtin on a later patch.
> 
> Thanks,
> Andrea
> 
> On Mon, Mar 2, 2015 at 10:57 PM, Juergen Ributzka <juergen at apple.com> wrote:
>> Hi @ll,
>> 
>> this little patch lowers the AVX2 intrinsic _mm256_broadcastsi128_si256 (which calls __builtin_ia32_vbroadcastsi256) to a vector shuffle instead of another LLVM intrinsic (llvm.x86.avx2.vbroadcasti128).
>> 
>> This change would allow LLVM to generate better code and we could remove the LLVM intrinsic, because it isn’t used anymore.
>> 
>> Cheers,
>> Juergen
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 





More information about the cfe-commits mailing list