mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-02 10:21:54 +00:00
[X86] Don't check for VBROADCAST_LOAD being a user of the source of a VBROADCAST when trying to share broadcasts.
The only things VBROADCAST_LOAD uses is an address and a chain node. It has no vector inputs. So if its a user of the source of another broadcast that could only mean one of two things. The other broadcast is broadcasting the address of the broadcast_load. Or the source is a load and the use we're seeing is the chain result from that load. Neither of these cases make sense to combine here. This issue was reported post-commit r373871. Test case has not been reduced yet. llvm-svn: 374862
This commit is contained in:
parent
c5b70bd1fb
commit
a28f178132
@ -33450,9 +33450,7 @@ static SDValue combineTargetShuffle(SDValue N, SelectionDAG &DAG,
|
||||
|
||||
// Share broadcast with the longest vector and extract low subvector (free).
|
||||
for (SDNode *User : Src->uses())
|
||||
if (User != N.getNode() &&
|
||||
(User->getOpcode() == X86ISD::VBROADCAST ||
|
||||
User->getOpcode() == X86ISD::VBROADCAST_LOAD) &&
|
||||
if (User != N.getNode() && User->getOpcode() == X86ISD::VBROADCAST &&
|
||||
User->getValueSizeInBits(0) > VT.getSizeInBits()) {
|
||||
return extractSubVector(SDValue(User, 0), 0, DAG, DL,
|
||||
VT.getSizeInBits());
|
||||
|
Loading…
x
Reference in New Issue
Block a user