llvm-6502/lib
Manman Ren 9236362a64 X86: optimize generated code for integer ABS
This patch will generate the following for integer ABS:
      movl    %edi, %eax
      negl    %eax
      cmovll  %edi, %eax
INSTEAD OF
      movl    %edi, %ecx
      sarl    $31, %ecx
      leal    (%rdi,%rcx), %eax
      xorl    %ecx, %eax

There exists a target-independent DAG combine for integer ABS, which converts
integer ABS to sar+add+xor. For X86, we match this pattern back to neg+cmov. 
This is implemented in PerformXorCombine.

rdar://10695237


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158175 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-07 22:39:10 +00:00
..
Analysis Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
Archive
AsmParser switch AttrListPtr::get to take an ArrayRef, simplifying a lot of clients. 2012-05-28 01:47:44 +00:00
Bitcode PR1255: case ranges. 2012-06-02 09:42:43 +00:00
CodeGen Move terminator machine verification to check MachineBasicBlock::instr_iterator instead of MBB::iterator 2012-06-07 17:41:39 +00:00
DebugInfo
ExecutionEngine Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
Linker Supply a C interface to the "LinkModules" method. 2012-05-09 08:55:40 +00:00
MC Add accessors for all private members of DisasmContext. 2012-06-06 20:45:10 +00:00
Object Mark some static arrays as const. 2012-05-24 06:35:32 +00:00
Support Use access(2) instead of stat(2) to check if a file exists. 2012-06-02 16:28:09 +00:00
TableGen Fix 80 columns. 2012-06-01 00:58:41 +00:00
Target X86: optimize generated code for integer ABS 2012-06-07 22:39:10 +00:00
Transforms Fix a bug in FoldSelectOpOp. Bitcast ops may change the number of vector elements, which may disagree with the select condition type. 2012-06-07 20:28:57 +00:00
VMCore Simplify the fma4 renaming code. 2012-06-03 16:48:52 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile