This is an archive of the discontinued LLVM Phabricator instance.

[X86][AVX512][Clang] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2int intrinsics.
ClosedPublic

Authored by aymanmus on Oct 27 2016, 12:35 AM.

Details

Summary

Lower _mm_mask{|z}_move_{ss|sd} to generic llvm IR instead of x86 intrinsics.
Add support for missing intrinsics:

  • _mm_mask{|z}_load_{ss|sd}
  • _mm_mask_store_{ss|sd}
  • _mm512_int2mask
  • _mm512_mask2int

Clarification:

In the load and store intrinsics the vectors are widened to 512 vectors to stay in legal types for AVX512F (Otherwise illegal types are generated - e.g. v2i2).
  • A llvm patch with the patterns for these intrinsics is attached as a son (D26022).

Diff Detail

Repository
rL LLVM

Event Timeline

aymanmus updated this revision to Diff 75985.Oct 27 2016, 12:35 AM
aymanmus retitled this revision from to [X86][AVX512] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2int intrinsics..
aymanmus updated this object.
aymanmus added reviewers: igorb, zvi, delena, m_zuckerman.
aymanmus retitled this revision from [X86][AVX512] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2int intrinsics. to [X86][AVX512][Clang] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2int intrinsics..Oct 27 2016, 12:57 AM
aymanmus added a subscriber: cfe-commits.
aymanmus updated this revision to Diff 77158.Nov 8 2016, 12:49 AM
aymanmus updated this object.

Fix spaces and indentations.

aymanmus updated this object.Nov 8 2016, 12:50 AM
igorb accepted this revision.Nov 8 2016, 3:35 AM
igorb edited edge metadata.

LGTM

lib/Headers/avx512fintrin.h
9123 ↗(On Diff #75985)

.

9155 ↗(On Diff #75985)

.

This revision is now accepted and ready to land.Nov 8 2016, 3:35 AM
This revision was automatically updated to reflect the committed changes.