Is there any way to determine if a Register-type MachineOperand represents a fixed machine register? For example, call arguments must end up in specific machine register but I don't see any way to ascertain this from the information in MachineOperand. Basically, I need to know if I am allowed to rename a MachineOperand or not after register allocation. Thanks! -David
On May 16, 2013, at 2:23 PM, dag at cray.com wrote:> Is there any way to determine if a Register-type MachineOperand > represents a fixed machine register? For example, call arguments must > end up in specific machine register but I don't see any way to ascertain > this from the information in MachineOperand. Basically, I need to know > if I am allowed to rename a MachineOperand or not after register > allocation.I think the anti-dependency breakers in the post-RA scheduler can do that. /jakob
Jakob Stoklund Olesen <stoklund at 2pi.dk> writes:> On May 16, 2013, at 2:23 PM, dag at cray.com wrote: > >> Is there any way to determine if a Register-type MachineOperand >> represents a fixed machine register? For example, call arguments must >> end up in specific machine register but I don't see any way to ascertain >> this from the information in MachineOperand. Basically, I need to know >> if I am allowed to rename a MachineOperand or not after register >> allocation. > > I think the anti-dependency breakers in the post-RA scheduler can do that.Ok, will take a look, thanks! I think I've cobbled something together that works by not allowing manipulation of call operands, implicit defs/uses (which could be "wired" registers) and any operand of "hasExtraSrcRegAllocReq()" instructions. Seems to cover it for now, anyway, though it may be too restrictive. -David
Maybe Matching Threads
- [LLVMdev] MachineOperand Fixed Register
- [LLVMdev] [llvm-commits] [llvm] r162770 - in /llvm/trunk: include/llvm/CodeGen/MachineOperand.h lib/CodeGen/MachineInstr.cpp
- [LLVMdev] [llvm-commits] [llvm] r162770 - in /llvm/trunk: include/llvm/CodeGen/MachineOperand.h lib/CodeGen/MachineInstr.cpp
- [LLVMdev] MachineOperand::TargetFlags question
- [LLVMdev] MachineOperand SubReg