[X86] Remove X86ISD::MOVLPS and X86ISD::MOVLPD. NFCI
authorCraig Topper <craig.topper@intel.com>
Tue, 10 Jul 2018 21:00:22 +0000 (21:00 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 10 Jul 2018 21:00:22 +0000 (21:00 +0000)
commitdea0b88b04d9ee5549fe1964bb81357ac2e52be6
tree55ee7a8bb56221ded55f439693d46414692c3221
parent9960b8f13aed041cf48633a6510ad865349c0341
[X86] Remove X86ISD::MOVLPS and X86ISD::MOVLPD. NFCI

These ISD nodes try to select the MOVLPS and MOVLPD instructions which are special load only instructions. They load data and merge it into the lower 64-bits of an XMM register. They are logically equivalent to our MOVSD node plus a load.

There was only one place in X86ISelLowering that used MOVLPD and no places that selected MOVLPS. The one place that selected MOVLPD had to choose between it and MOVSD based on whether there was a load. But lowering is too early to tell if the load can really be folded. So in isel we have patterns that use MOVSD for MOVLPD if we can't find a load.

We also had patterns that select the MOVLPD instruction for a MOVSD if we can find a load, but didn't choose the MOVLPD ISD opcode for some reason.

So it seems better to just standardize on MOVSD ISD opcode and manage MOVSD vs MOVLPD instruction with isel patterns.

llvm-svn: 336728
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86ISelLowering.h
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
llvm/lib/Target/X86/X86InstrSSE.td