This is an archive of the discontinued LLVM Phabricator instance.

[X86][TD][vpmovm2 ] New TD pattern for the vpmovm2 instruction
ClosedPublic

Authored by m_zuckerman on Mar 6 2017, 7:55 AM.

Details

Summary

Up until now, vpmovm2 instruction described its destination operand size
by the source operand size. This patch adds new node for the vpmovm2
instruction. The node describes new expansion of the destination (from
{128|256} to 512).

Diff Detail

Repository
rL LLVM

Event Timeline

m_zuckerman created this revision.Mar 6 2017, 7:55 AM
m_zuckerman retitled this revision from [X86][TD][vpmovm2 ] to [X86][TD][vpmovm2 ] New TD pattern for the vpmovm2 instruction.
m_zuckerman edited the summary of this revision. (Show Details)
m_zuckerman updated this revision to Diff 90708.Mar 6 2017, 8:07 AM
craig.topper added inline comments.Mar 6 2017, 9:49 AM
Target/X86/X86ISelLowering.cpp
17463 ↗(On Diff #90708)

Can we merge this with the 512-bit one below?

17469 ↗(On Diff #90708)

Can we remove this VLX qualifier on DQI too?

m_zuckerman updated this revision to Diff 90836.Mar 7 2017, 5:35 AM
m_zuckerman marked 2 inline comments as done.
craig.topper added inline comments.Mar 8 2017, 8:28 AM
Target/X86/X86ISelLowering.cpp
17707 ↗(On Diff #90836)

The original line of this if looks really suspicious. In fact the load_64i1 test case from avx512-mask-op.ll fails if only avx512bw is enabled without vlx. Can you enhance that test file to do combinations of feature flags instead of just testing skx and knl cpus? And scrub this if statement.

m_zuckerman updated this revision to Diff 91498.EditedMar 12 2017, 8:55 AM

I think that this line is unnecessary.

This revision is now accepted and ready to land.Mar 15 2017, 10:31 AM
This revision was automatically updated to reflect the committed changes.