mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
R600/SI: Rough first implementation of shouldClusterLoads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217968 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8df2caebe2
commit
3143460f91
@ -260,6 +260,28 @@ bool SIInstrInfo::getLdStBaseRegImmOfs(MachineInstr *LdSt,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SIInstrInfo::shouldClusterLoads(MachineInstr *FirstLdSt,
|
||||
MachineInstr *SecondLdSt,
|
||||
unsigned NumLoads) const {
|
||||
unsigned Opc0 = FirstLdSt->getOpcode();
|
||||
unsigned Opc1 = SecondLdSt->getOpcode();
|
||||
|
||||
// TODO: This needs finer tuning
|
||||
if (NumLoads > 4)
|
||||
return false;
|
||||
|
||||
if (isDS(Opc0) && isDS(Opc1))
|
||||
return true;
|
||||
|
||||
if (isSMRD(Opc0) && isSMRD(Opc1))
|
||||
return true;
|
||||
|
||||
if ((isMUBUF(Opc0) || isMTBUF(Opc0)) && (isMUBUF(Opc1) || isMTBUF(Opc1)))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI, DebugLoc DL,
|
||||
|
@ -70,6 +70,10 @@ public:
|
||||
unsigned &BaseReg, unsigned &Offset,
|
||||
const TargetRegisterInfo *TRI) const final;
|
||||
|
||||
bool shouldClusterLoads(MachineInstr *FirstLdSt,
|
||||
MachineInstr *SecondLdSt,
|
||||
unsigned NumLoads) const final;
|
||||
|
||||
void copyPhysReg(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI, DebugLoc DL,
|
||||
unsigned DestReg, unsigned SrcReg,
|
||||
|
Loading…
Reference in New Issue
Block a user