Skip to content
  • Chris Lattner's avatar
    Implement negation of longs efficiently. For this testcase: · 37ba31f7
    Chris Lattner authored
    long %test(long %X) {
            %Y = sub long 0, %X
            ret long %Y
    }
    
    We used to generate:
    
    test:
            sub %ESP, 4
            mov DWORD PTR [%ESP], %ESI
            mov %ECX, DWORD PTR [%ESP + 8]
            mov %ESI, DWORD PTR [%ESP + 12]
            mov %EAX, 0
            mov %EDX, 0
            sub %EAX, %ECX
            sbb %EDX, %ESI
            mov %ESI, DWORD PTR [%ESP]
            add %ESP, 4
            ret
    
    Now we generate:
    
    test:
            mov %EAX, DWORD PTR [%ESP + 4]
            mov %EDX, DWORD PTR [%ESP + 8]
            neg %EAX
            adc %EDX, 0
            neg %EDX
            ret
    
    llvm-svn: 12681
    37ba31f7
Loading