mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[X86] In combineStore, don't convert v2f32 load/store pairs to f64 loads/stores.
Type legalization can take care of this. This gives DAG combine a little more time with the original types. llvm-svn: 366182
This commit is contained in:
parent
acb19e35a6
commit
31bbc011c8
@ -40093,7 +40093,7 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
|
||||
bool NoImplicitFloatOps = F.hasFnAttribute(Attribute::NoImplicitFloat);
|
||||
bool F64IsLegal =
|
||||
!Subtarget.useSoftFloat() && !NoImplicitFloatOps && Subtarget.hasSSE2();
|
||||
if ((VT.isVector() ||
|
||||
if (((VT.isVector() && !VT.isFloatingPoint()) ||
|
||||
(VT == MVT::i64 && F64IsLegal && !Subtarget.is64Bit())) &&
|
||||
isa<LoadSDNode>(St->getValue()) &&
|
||||
!cast<LoadSDNode>(St->getValue())->isVolatile() &&
|
||||
@ -40116,8 +40116,7 @@ static SDValue combineStore(SDNode *N, SelectionDAG &DAG,
|
||||
// Otherwise, if it's legal to use f64 SSE instructions, use f64 load/store
|
||||
// pair instead.
|
||||
if (Subtarget.is64Bit() || F64IsLegal) {
|
||||
MVT LdVT = (Subtarget.is64Bit() &&
|
||||
(!VT.isFloatingPoint() || !F64IsLegal)) ? MVT::i64 : MVT::f64;
|
||||
MVT LdVT = Subtarget.is64Bit() ? MVT::i64 : MVT::f64;
|
||||
SDValue NewLd = DAG.getLoad(LdVT, LdDL, Ld->getChain(), Ld->getBasePtr(),
|
||||
Ld->getMemOperand());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user