Skip to content
  • Dale Johannesen's avatar
    Make the implicit inputs and outputs of target-independent · 0b8ca792
    Dale Johannesen authored
    ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
    instead of MVT::Flag.  Remove CARRY_FALSE in favor of 0; adjust
    all target-independent code to use this format.
    
    Most targets will still produce a Flag-setting target-dependent
    version when selection is done.  X86 is converted to use i32
    instead, which means TableGen needs to produce different code
    in xxxGenDAGISel.inc.  This keys off the new supportsHasI1 bit
    in xxxInstrInfo, currently set only for X86; in principle this
    is temporary and should go away when all other targets have
    been converted.  All relevant X86 instruction patterns are
    modified to represent setting and using EFLAGS explicitly.  The
    same can be done on other targets.
    
    The immediate behavior change is that an ADC/ADD pair are no
    longer tightly coupled in the X86 scheduler; they can be
    separated by instructions that don't clobber the flags (MOV).
    I will soon add some peephole optimizations based on using
    other instructions that set the flags to feed into ADC.
    
    llvm-svn: 72707
    0b8ca792
Loading