mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-05 10:39:21 +00:00
R600/SI: swap operands if it helps folding
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 176103
This commit is contained in:
parent
2c9a510876
commit
32f29baf4e
@ -545,8 +545,22 @@ SDNode *SITargetLowering::PostISelFolding(MachineSDNode *Node,
|
||||
|
||||
// Is this a VSrc or SSrc operand ?
|
||||
unsigned RegClass = Desc->OpInfo[Op].RegClass;
|
||||
if (!isVSrc(RegClass) && !isSSrc(RegClass))
|
||||
if (!isVSrc(RegClass) && !isSSrc(RegClass)) {
|
||||
|
||||
if (i == 1 && Desc->isCommutable() &&
|
||||
fitsRegClass(DAG, Ops[0], RegClass) &&
|
||||
foldImm(Ops[1], Immediate, ScalarSlotUsed)) {
|
||||
|
||||
assert(isVSrc(Desc->OpInfo[NumDefs].RegClass) ||
|
||||
isSSrc(Desc->OpInfo[NumDefs].RegClass));
|
||||
|
||||
// Swap commutable operands
|
||||
SDValue Tmp = Ops[1];
|
||||
Ops[1] = Ops[0];
|
||||
Ops[0] = Tmp;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try to fold the immediates
|
||||
if (!foldImm(Ops[i], Immediate, ScalarSlotUsed)) {
|
||||
|
Loading…
Reference in New Issue
Block a user