llvm-6502/test/CodeGen
Benjamin Kramer 8c06aa1c59 Lower the i8 extension in memset to a multiply instead of a potentially long series of shifts and ors.
We could implement a DAGCombine to turn x * 0x0101 back into logic operations
on targets that doesn't support the multiply or it is slow (p4) if someone cares
enough.

Example code:
  void test(char *s, int a) {
      __builtin_memset(s, a, 4);
  }
before:
  _test:                                  ## @test
    movzbl  8(%esp), %eax
    movl  %eax, %ecx
    shll  $8, %ecx
    orl %eax, %ecx
    movl  %ecx, %eax
    shll  $16, %eax
    orl %ecx, %eax
    movl  4(%esp), %ecx
    movl  %eax, 4(%ecx)
    movl  %eax, (%ecx)
    ret
after:
  _test:                                  ## @test
    movzbl  8(%esp), %eax
    imull $16843009, %eax, %eax   ## imm = 0x1010101
    movl  4(%esp), %ecx
    movl  %eax, 4(%ecx)
    movl  %eax, (%ecx)
    ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122707 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-02 19:44:58 +00:00
..
Alpha If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
ARM Update the test 2011-01-01 20:57:26 +00:00
Blackfin
CBackend
CellSPU Don't feed 19 bit immediates to ILA. 2010-12-17 09:36:09 +00:00
CPP
Generic Fixes PR8823: add-with-overflow-128.ll 2010-12-23 03:15:51 +00:00
MBlaze Lower the MBlaze target specific calling conventions for "interrupt_handler" 2010-12-15 20:27:28 +00:00
Mips Add ROTR and ROTRV mips32 instructions. Patch by Akira Hatanaka 2010-12-09 17:32:30 +00:00
MSP430 If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
PowerPC Restore the behavior of frame lowering before my refactoring. 2010-12-18 19:53:14 +00:00
PTX ptx: remove reg-reg addressing mode and st.const 2011-01-01 11:58:58 +00:00
SPARC If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
SystemZ If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
Thumb Thumb1 had two patterns for the same load-from-constant-pool instruction. 2010-12-15 23:52:36 +00:00
Thumb2 Remove the rest of the *_sfp Neon instruction patterns. 2010-12-13 23:02:37 +00:00
X86 Lower the i8 extension in memset to a multiply instead of a potentially long series of shifts and ors. 2011-01-02 19:44:58 +00:00
XCore If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
thumb2-mul.ll