OSDN Git Service

[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)
commitd455726cf4f0d427786ad1a407d0b3059b7794c3
tree6d85cafb8ed0e57922567b5fbd3210bae120d9c4
parent47362da96793e3fe1804883bf80c10d9319c85c9
[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336728 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrAVX512.td
lib/Target/X86/X86InstrFragmentsSIMD.td
lib/Target/X86/X86InstrSSE.td