Skip to content
  • Chris Lattner's avatar
    Emit x86 instructions for: A = B op C, where A and B are 16-bit registers, · 6acb1bed
    Chris Lattner authored
    C is a constant which can be sign-extended from 8 bits without value loss,
    and op is one of: add, sub, imul, and, or, xor.
    
    This allows the JIT to emit the one byte version of the constant instead of
    the two or 4 byte version.  Because these instructions are very common, this
    can save a LOT of code space.  For example, I sampled two benchmarks, 176.gcc
    and 254.gap.
    
    BM        Old     New    Reduction
    176.gcc 2673621 2548962  4.89%
    254.gap  498261  475104  4.87%
    
    Note that while the percentage is not spectacular, this did eliminate
    124.6 _KILOBYTES_ of codespace from gcc.  Not bad.
    
    Note that this doesn't effect the llc version at all, because the assembler
    already does this optimization.
    
    llvm-svn: 9284
    6acb1bed
Loading