forked from OSchip/llvm-project
parent
1ba406c9fc
commit
64feec7977
|
@ -2850,10 +2850,12 @@ void BoUpSLP::reorderAltShuffleOperands(const InstructionsState &S,
|
|||
// The vectorizer is trying to either have all elements one side being
|
||||
// instruction with the same opcode to enable further vectorization, or having
|
||||
// a splat to lower the vectorizing cost.
|
||||
static bool shouldReorderOperands(
|
||||
int i, unsigned Opcode, Instruction &I, ArrayRef<Value *> Left,
|
||||
ArrayRef<Value *> Right, bool AllSameOpcodeLeft, bool AllSameOpcodeRight,
|
||||
bool SplatLeft, bool SplatRight, Value *&VLeft, Value *&VRight) {
|
||||
static bool shouldReorderOperands(int i, Instruction &I, ArrayRef<Value *> Left,
|
||||
ArrayRef<Value *> Right,
|
||||
bool AllSameOpcodeLeft,
|
||||
bool AllSameOpcodeRight, bool SplatLeft,
|
||||
bool SplatRight, Value *&VLeft,
|
||||
Value *&VRight) {
|
||||
VLeft = I.getOperand(0);
|
||||
VRight = I.getOperand(1);
|
||||
// If we have "SplatRight", try to see if commuting is needed to preserve it.
|
||||
|
@ -2946,7 +2948,7 @@ void BoUpSLP::reorderInputsAccordingToOpcode(const InstructionsState &S,
|
|||
// one side.
|
||||
Value *VLeft;
|
||||
Value *VRight;
|
||||
if (shouldReorderOperands(i, Opcode, *I, Left, Right, AllSameOpcodeLeft,
|
||||
if (shouldReorderOperands(i, *I, Left, Right, AllSameOpcodeLeft,
|
||||
AllSameOpcodeRight, SplatLeft, SplatRight, VLeft,
|
||||
VRight)) {
|
||||
Left.push_back(VRight);
|
||||
|
|
Loading…
Reference in New Issue