This is an archive of the discontinued LLVM Phabricator instance.

[AVX-512] Support spills of XMM16-31 and YMM16-31 when VLX isn't available.
ClosedPublic

Authored by craig.topper on Sep 27 2016, 11:21 PM.

Details

Reviewers
delena
igorb
Summary

This adds new pseudo instructions that can be selected during register allocation to represent loads and stores of XMM/YMM registers when AVX512F is available, but VLX isn't. They will be expanded after register allocation to either VEX encoded moves if the register turns out to be XMM0-15/YMM0-15. Otherwise either an EVEX VEXTRACT or VBROADCAST will be used.

Should fix PR29112.

Diff Detail

Event Timeline

craig.topper retitled this revision from to [AVX-512] Support spills of XMM16-31 and YMM16-31 when VLX isn't available..
craig.topper updated this object.
craig.topper added a reviewer: delena.
craig.topper added a subscriber: llvm-commits.
delena edited edge metadata.Sep 27 2016, 11:35 PM

Thanks you. Do you have any test to add?

lib/Target/X86/X86InstrInfo.cpp
5975

32x4

craig.topper edited edge metadata.

Fixed the copy and paste mistake spotted by Elena.

craig.topper marked an inline comment as done.Sep 28 2016, 12:06 AM

I don't have a testcase right now. The bug report came from the testsuite but I don't have the testsuite downloaded. Do you have testcase?

Add Elena's testcase.

delena accepted this revision.Sep 28 2016, 10:58 PM
delena edited edge metadata.
This revision is now accepted and ready to land.Sep 28 2016, 10:58 PM
craig.topper closed this revision.Sep 28 2016, 11:46 PM

Fixed in r282690.