This is an archive of the discontinued LLVM Phabricator instance.

[X86][SSE] Add MOVHPSrm to domain tables
AbandonedPublic

Authored by RKSimon on Oct 20 2017, 12:04 PM.

Details

Summary

This is also a shorter encoding on SSE.

What should I do for the avx512 cases? Do you want me to add a fadd stage to force domain?

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon created this revision.Oct 20 2017, 12:04 PM
craig.topper added inline comments.Oct 20 2017, 6:59 PM
lib/Target/X86/X86InstrInfo.cpp
9446

Does moving from MOVHPS to UNPCKLPD cause us to potentially access unaligned memory? MOVHPS doesn't have an alignment requirement, but UNPCKLPD does.

gadi.haber added inline comments.Oct 22 2017, 2:29 AM
lib/Target/X86/X86InstrInfo.cpp
9446

Yes. 64-bit memory operand has no restrictions while 128-bit (unpcklpd) always does in SSE except for movu* instructions.

RKSimon abandoned this revision.Oct 22 2017, 1:44 PM

I'm going to abandon this and instead investigate adding custom domain switching (PR34873) - I'm concerned that MOVPS only references 64-bits on a load but PUNPCKLPD/PUNPCKLQDQ reference 128-bits.