1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
llvm-mirror/lib/Transforms
Sanjay Patel 4d045a2e91 [x86, InstCombine] transform x86 AVX masked loads to LLVM intrinsics
The intended effect of this patch in conjunction with:
http://reviews.llvm.org/rL259392
http://reviews.llvm.org/rL260145

is that customers using the AVX intrinsics in C will benefit from combines when
the load mask is constant:

__m128 mload_zeros(float *f) {
  return _mm_maskload_ps(f, _mm_set1_epi32(0));
}

__m128 mload_fakeones(float *f) {
  return _mm_maskload_ps(f, _mm_set1_epi32(1));
}

__m128 mload_ones(float *f) {
  return _mm_maskload_ps(f, _mm_set1_epi32(0x80000000));
}

__m128 mload_oneset(float *f) {
  return _mm_maskload_ps(f, _mm_set_epi32(0x80000000, 0, 0, 0));
}

...so none of the above will actually generate a masked load for optimized code.

This is the masked load counterpart to:
http://reviews.llvm.org/rL262064

llvm-svn: 262269
2016-02-29 23:16:48 +00:00
..
Hello Remove autoconf support 2016-01-26 21:29:08 +00:00
InstCombine [x86, InstCombine] transform x86 AVX masked loads to LLVM intrinsics 2016-02-29 23:16:48 +00:00
Instrumentation Minor code cleanup. NFC 2016-02-29 19:16:04 +00:00
IPO Enable LoopLoadElimination by default 2016-02-29 20:35:11 +00:00
ObjCARC ADT: Remove == and != comparisons between ilist iterators and pointers 2016-02-21 20:39:50 +00:00
Scalar [LLE] Fix SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper with Polly 2016-02-29 22:53:59 +00:00
Utils Move discriminator assignment to the right place. 2016-02-29 18:59:48 +00:00
Vectorize ADT: Remove == and != comparisons between ilist iterators and pointers 2016-02-21 20:39:50 +00:00
CMakeLists.txt
LLVMBuild.txt