- Apr 03, 2007
-
-
Bill Wendling authored
llvm-svn: 35616
-
- Mar 28, 2007
-
-
Chris Lattner authored
_test3: leaq (,%rdi,4), %rax orq %rdi, %rax ret instead of: _test2: movq %rdi, %rax shlq $2, %rax orq %rdi, %rax ret llvm-svn: 35434
-
Chris Lattner authored
system assembler not groking legal instructions like "leal (,%esi,8), %ecx". llvm-svn: 35393
-
- Mar 20, 2007
-
-
Chris Lattner authored
1) codegen a shift of a register as a shift, not an LEA. 2) teach the RA to convert a shift to an LEA instruction if it wants something in three-address form. This gives us asm diffs like: - leal (,%eax,4), %eax + shll $2, %eax which is faster on some processors and smaller on all of them. and, more interestingly: - movl 24(%esi), %eax - leal (,%eax,4), %edi + movl 24(%esi), %edi + shll $2, %edi Without #2, #1 was a significant pessimization in some cases. This implements CodeGen/X86/shift-codegen.ll llvm-svn: 35204
-
- Mar 08, 2007
-
-
Bill Wendling authored
moves, loads, etc. are recognized. llvm-svn: 35031
-
- Jan 26, 2007
-
-
Jim Laskey authored
llvm-svn: 33537
-
- Dec 01, 2006
-
-
Evan Cheng authored
convertToThreeAddress() is now responsible for updating live info as well as inserting the new MI's. llvm-svn: 32097
-
- Nov 28, 2006
-
-
Evan Cheng authored
of opcode and number of operands. llvm-svn: 31947
-
- Nov 17, 2006
-
-
Evan Cheng authored
llvm-svn: 31794
-
- Nov 15, 2006
-
-
Evan Cheng authored
llvm-svn: 31765
-
- Nov 14, 2006
-
-
Evan Cheng authored
llvm-svn: 31712
-
- Oct 30, 2006
-
-
Chris Lattner authored
llvm-svn: 31298
-
- Oct 28, 2006
-
-
Chris Lattner authored
llvm-svn: 31262
-
- Oct 21, 2006
-
-
Chris Lattner authored
llvm-svn: 31099
-
Chris Lattner authored
llvm-svn: 31097
-
Chris Lattner authored
llvm-svn: 31095
-
Chris Lattner authored
llvm-svn: 31093
-
- Oct 20, 2006
-
-
Chris Lattner authored
llvm-svn: 31074
-
Chris Lattner authored
llvm-svn: 31065
-
- Oct 18, 2006
-
-
Chris Lattner authored
llvm-svn: 31024
-
- Oct 13, 2006
-
-
Chris Lattner authored
llvm-svn: 30938
-
- Sep 29, 2006
-
-
Chris Lattner authored
llvm-svn: 30663
-
- Sep 08, 2006
-
-
Evan Cheng authored
llvm-svn: 30177
-
- Sep 05, 2006
-
-
Chris Lattner authored
actually *removes* one of the operands, instead of just assigning both operands the same register. This make reasoning about instructions unnecessarily complex, because you need to know if you are before or after register allocation to match up operand #'s with the target description file. Changing this also gets rid of a bunch of hacky code in various places. This patch also includes changes to fold loads into cmp/test instructions in the X86 backend, along with a significant simplification to the X86 spill folding code. llvm-svn: 30108
-
- Jul 25, 2006
-
-
Evan Cheng authored
llvm-svn: 29275
-
- May 31, 2006
-
-
Evan Cheng authored
llvm-svn: 28577
-
Evan Cheng authored
only transform a shufps to pshufd when the first two operands are the same. llvm-svn: 28575
-
- May 30, 2006
-
-
Evan Cheng authored
llvm-svn: 28574
-
Evan Cheng authored
llvm-svn: 28573
-
Evan Cheng authored
llvm-svn: 28565
-
- May 19, 2006
-
-
Evan Cheng authored
currently... llvm-svn: 28393
-
- May 11, 2006
-
-
Evan Cheng authored
llvm-svn: 28223
-
- May 08, 2006
-
-
Evan Cheng authored
movw. That is we promote the destination operand to r16. So %CH = TRUNC_R16_R8 %BP is emitted as movw %bp, %cx. This is incorrect. If %cl is live, it would be clobbered. Ideally we want to do the opposite, that is emitted it as movb ??, %ch But this is not possible since %bp does not have a r8 sub-register. We are now defining a new register class R16_ which is a subclass of R16 containing only those 16-bit registers that have r8 sub-registers (i.e. AX - DX). We isel the truncate to two instructions, a MOV16to16_ to copy the value to the R16_ class, followed by a TRUNC_R16_R8. Due to bug 770, the register colaescer is not going to coalesce between R16 and R16_. That will be fixed later so we can eliminate the MOV16to16_. Right now, it can only be eliminated if we are lucky that source and destination registers are the same. llvm-svn: 28164
-
- Apr 18, 2006
-
-
Chris Lattner authored
to optimize cases where it has to spill a lot llvm-svn: 27801
-
- Apr 03, 2006
-
-
Evan Cheng authored
- Some bug fixes and naming inconsistency fixes. llvm-svn: 27377
-
- Mar 25, 2006
-
-
Evan Cheng authored
llvm-svn: 27091
-
- Mar 21, 2006
-
-
Evan Cheng authored
- Handle FR32 to VR128:v4f32 and FR64 to VR128:v2f64 with aliases of MOVAPS and MOVAPD. Mark them as move instructions and *hope* they will be deleted. llvm-svn: 26919
-
- Feb 16, 2006
-
-
Evan Cheng authored
proves to be worth 20% on Ptrdist/ks. Might be related to dependency breaking support. 2. Added FsMOVAPSrr and FsMOVAPDrr as aliases to MOVAPSrr and MOVAPDrr. These are used for FR32 / FR64 reg-to-reg copies. 3. Tell reg-allocator to generate MOVSSrm / MOVSDrm and MOVSSmr / MOVSDmr to spill / restore FsMOVAPSrr and FsMOVAPDrr. llvm-svn: 26241
-
- Feb 02, 2006
-
-
Chris Lattner authored
llvm-svn: 25915
-
Chris Lattner authored
Move isLoadFrom/StoreToStackSlot from MRegisterInfo to TargetInstrInfo,a far more logical place. Other methods should also be moved if anyoneis interested. :) llvm-svn: 25913
-