llvm-6502/lib
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
..
Analysis Revert commit 122654 at the request of Chris, who reckons that instsimplify 2011-01-01 20:08:02 +00:00
Archive MemoryBuffer now return an error_code and returns a OwningPtr<MemoryBuffer> via an out parm. 2010-12-16 03:29:14 +00:00
AsmParser Add missing standard headers. Patch by Joerg Sonnenberger! 2010-12-19 20:43:38 +00:00
Bitcode Add missing standard headers. Patch by Joerg Sonnenberger! 2010-12-19 20:43:38 +00:00
CodeGen 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
CompilerDriver Support/PathV1: Deprecate get{Basename,Dirname,Suffix}. 2010-12-18 22:23:07 +00:00
ExecutionEngine
Linker include the module identifier when emitting this warning, PR8865. 2010-12-30 02:49:45 +00:00
MC Fix PR8878. 2011-01-01 19:05:35 +00:00
Object Fix mismatched new[]/delete. 2010-12-17 09:56:50 +00:00
Support Fix a signed/unsigned comparison warning. 2010-12-28 13:05:13 +00:00
Target A workaround for a bug in cmake 2.8.3 diagnosed on PR 8885. 2011-01-02 19:32:31 +00:00
Transforms Also remove functions that use complex constant expressions in terms of 2011-01-02 19:16:44 +00:00
VMCore fix PR8867: a crash handling fp128. Thanks to Nick for the testcase. 2010-12-29 01:33:36 +00:00
Makefile