diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2016-02-26 21:04:14 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2016-02-26 21:04:14 +0000 |
| commit | 1ace99351fdf034af94bf6a67aee8b3bb5d96083 (patch) | |
| tree | ad21397b20f5e2752d1450e9fcb994f56358298a /llvm/utils/FileCheck/FileCheck.cpp | |
| parent | 2eff7f788a9e4d71044fcd73c6b391ca31689361 (diff) | |
| download | llvm-1ace99351fdf034af94bf6a67aee8b3bb5d96083.zip llvm-1ace99351fdf034af94bf6a67aee8b3bb5d96083.tar.gz llvm-1ace99351fdf034af94bf6a67aee8b3bb5d96083.tar.bz2 | |
[x86, InstCombine] transform x86 AVX masked stores 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 store mask is constant:
void mstore_zero_mask(float *f, __m128 v) {
_mm_maskstore_ps(f, _mm_set1_epi32(0), v);
}
void mstore_fake_ones_mask(float *f, __m128 v) {
_mm_maskstore_ps(f, _mm_set1_epi32(1), v);
}
void mstore_ones_mask(float *f, __m128 v) {
_mm_maskstore_ps(f, _mm_set1_epi32(0x80000000), v);
}
void mstore_one_set_elt_mask(float *f, __m128 v) {
_mm_maskstore_ps(f, _mm_set_epi32(0x80000000, 0, 0, 0), v);
}
...so none of the above will actually generate a masked store for optimized code.
Differential Revision: http://reviews.llvm.org/D17485
llvm-svn: 262064
Diffstat (limited to 'llvm/utils/FileCheck/FileCheck.cpp')
0 files changed, 0 insertions, 0 deletions
