Skip to content
  • Chris Lattner's avatar
    Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))" · 4147f08e
    Chris Lattner authored
    related transformations out of target-specific dag combine into the
    ARM backend.  These were added by Evan in r37685 with no testcases
    and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).
    
    Add some simple X86-specific (for now) DAG combines that turn things
    like cond ? 8 : 0  -> (zext(cond) << 3).  This happens frequently
    with the recently added cp constant select optimization, but is a
    very general xform.  For example, we now compile the second example
    in const-select.ll to:
    
    _test:
            movsd   LCPI2_0, %xmm0
            ucomisd 8(%esp), %xmm0
            seta    %al
            movzbl  %al, %eax
            movl    4(%esp), %ecx
            movsbl  (%ecx,%eax,4), %eax
            ret
    
    instead of:
    
    _test:
            movl    4(%esp), %eax
            leal    4(%eax), %ecx
            movsd   LCPI2_0, %xmm0
            ucomisd 8(%esp), %xmm0
            cmovbe  %eax, %ecx
            movsbl  (%ecx), %eax
            ret
    
    This passes multisource and dejagnu.
    
    llvm-svn: 66779
    4147f08e
Loading