Skip to content
  • Jakob Stoklund Olesen's avatar
    Add a new kind of MachineOperand: MO_RegisterMask. · 374ed322
    Jakob Stoklund Olesen authored
    Register masks will be used as a compact representation of large clobber
    lists.  Currently, an x86 call instruction has some 40 operands
    representing call-clobbered registers.  That's more than 1kB of useless
    operands per call site.
    
    A register mask operand references a bit mask of call-preserved
    registers, everything else is clobbered.  The bit mask will typically
    come from TargetRegisterInfo::getCallPreservedMask().
    
    By abandoning ImplicitDefs for call-clobbered registers, it also becomes
    possible to share call instruction descriptions between calling
    conventions, and we can get rid of the WINCALL* instructions.
    
    This patch introduces the new operand kind.  Future patches will add
    RegMask support to target-independent passes before finally the fixed
    clobber lists can be removed from call instruction descriptions.
    
    llvm-svn: 148250
    374ed322
Loading