mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same as the MC layer API. For properties like mayLoad / mayStore, look into the bundle and if any of the bundled instructions has the property it would return true. For properties like isPredicable, only return true if *all* of the bundled instructions have the property. For properties like canFoldAsLoad, isCompare, conservatively return false for bundles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -495,7 +495,7 @@ void ARMConstantIslands::JumpTableFunctionScan(MachineFunction &MF) {
|
||||
|
||||
for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end();
|
||||
I != E; ++I)
|
||||
if (I->getDesc().isBranch() && I->getOpcode() == ARM::t2BR_JT)
|
||||
if (I->isBranch() && I->getOpcode() == ARM::t2BR_JT)
|
||||
T2JumpTables.push_back(I);
|
||||
}
|
||||
}
|
||||
@@ -547,7 +547,7 @@ void ARMConstantIslands::InitialFunctionScan(MachineFunction &MF,
|
||||
BBI.Unalign = isThumb ? 1 : 2;
|
||||
|
||||
int Opc = I->getOpcode();
|
||||
if (I->getDesc().isBranch()) {
|
||||
if (I->isBranch()) {
|
||||
bool isCond = false;
|
||||
unsigned Bits = 0;
|
||||
unsigned Scale = 1;
|
||||
@@ -1738,7 +1738,7 @@ bool ARMConstantIslands::OptimizeThumb2JumpTables(MachineFunction &MF) {
|
||||
MachineInstr *MI = T2JumpTables[i];
|
||||
const MCInstrDesc &MCID = MI->getDesc();
|
||||
unsigned NumOps = MCID.getNumOperands();
|
||||
unsigned JTOpIdx = NumOps - (MCID.isPredicable() ? 3 : 2);
|
||||
unsigned JTOpIdx = NumOps - (MI->isPredicable() ? 3 : 2);
|
||||
MachineOperand JTOP = MI->getOperand(JTOpIdx);
|
||||
unsigned JTI = JTOP.getIndex();
|
||||
assert(JTI < JT.size());
|
||||
@@ -1861,7 +1861,7 @@ bool ARMConstantIslands::ReorderThumb2JumpTables(MachineFunction &MF) {
|
||||
MachineInstr *MI = T2JumpTables[i];
|
||||
const MCInstrDesc &MCID = MI->getDesc();
|
||||
unsigned NumOps = MCID.getNumOperands();
|
||||
unsigned JTOpIdx = NumOps - (MCID.isPredicable() ? 3 : 2);
|
||||
unsigned JTOpIdx = NumOps - (MI->isPredicable() ? 3 : 2);
|
||||
MachineOperand JTOP = MI->getOperand(JTOpIdx);
|
||||
unsigned JTI = JTOP.getIndex();
|
||||
assert(JTI < JT.size());
|
||||
|
||||
Reference in New Issue
Block a user