This is an archive of the discontinued LLVM Phabricator instance.

AVX512: Fix TRUNCATE lowering vector to vector i1.
ClosedPublic

Authored by igorb on Dec 20 2015, 2:16 AM.

Details

Summary

AVX512: Change VPMOVB2M DAG lowering , use CVT2MASK node instead TRUNCATE.
Fix TRUNCATE lowering vector to vector i1, use LSB and not MSB.
Implement VPMOVB/W/D/Q2M intrinsic.

Diff Detail

Repository
rL LLVM

Event Timeline

igorb updated this revision to Diff 43319.Dec 20 2015, 2:16 AM
igorb retitled this revision from to AVX512: VPMOVB2M intrinsic implementation. .
igorb updated this object.
igorb added reviewers: delena, AsafBadouh.
igorb set the repository for this revision to rL LLVM.
igorb added a subscriber: llvm-commits.
delena edited edge metadata.Dec 20 2015, 5:03 AM

Please take the shifts patch separately.

lib/Target/X86/X86ISelLowering.cpp
13226 ↗(On Diff #43319)

32i8?

igorb updated this revision to Diff 43512.Dec 23 2015, 12:56 AM
igorb retitled this revision from AVX512: VPMOVB2M intrinsic implementation. to AVX512: Fix TRUNCATE lowering vector to vector i1..
igorb edited edge metadata.

Shifts patch committed separately.
Thanks for review

lib/Target/X86/X86ISelLowering.cpp
13226 ↗(On Diff #43319)

32i8/16i8 can be implememnted by extending to 32i16/32i32 to avoid memory access

igorb updated this revision to Diff 43660.Dec 27 2015, 4:33 AM
delena accepted this revision.Dec 27 2015, 5:38 AM
delena edited edge metadata.

LGTM

lib/Target/X86/X86ISelLowering.cpp
13412 ↗(On Diff #43660)

Please add comments that you need SIGN_EXTEND from i8 to i16 because there is no SHIFT operation on byte level

This revision is now accepted and ready to land.Dec 27 2015, 5:38 AM
This revision was automatically updated to reflect the committed changes.