- Feb 27, 2008
-
-
Bill Wendling authored
llvm-svn: 47663
-
- Jan 17, 2008
-
-
Chris Lattner authored
1. Legalize now always promotes truncstore of i1 to i8. 2. Remove patterns and gunk related to truncstore i1 from targets. 3. Rename the StoreXAction stuff to TruncStoreAction in TLI. 4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions. 5. Mark a wide variety of invalid truncstores as such in various targets, e.g. X86 currently doesn't support truncstore of any of its integer types. 6. Add legalize support for truncstores with invalid value input types. 7. Add a dag combine transform to turn store(truncate) into truncstore when safe. The later allows us to compile CodeGen/X86/storetrunc-fp.ll to: _foo: fldt 20(%esp) fldt 4(%esp) faddp %st(1) movl 36(%esp), %eax fstps (%eax) ret instead of: _foo: subl $4, %esp fldt 24(%esp) fldt 8(%esp) faddp %st(1) fstps (%esp) movl 40(%esp), %eax movss (%esp), %xmm0 movss %xmm0, (%eax) addl $4, %esp ret llvm-svn: 46140
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Dec 13, 2007
-
-
Evan Cheng authored
Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled. llvm-svn: 44960
-
- Nov 13, 2007
-
-
Bill Wendling authored
llvm-svn: 44045
-
Bill Wendling authored
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If not, then there is the potential for the stack to be changed while the stack's being used by another instruction (like a call). This can only result in tears... llvm-svn: 44037
-
- Sep 11, 2007
-
-
Evan Cheng authored
llvm-svn: 41863
-
- Jul 21, 2007
-
-
Evan Cheng authored
llvm-svn: 40132
-
- Jul 19, 2007
-
-
Evan Cheng authored
InOperandList. This gives one piece of important information: # of results produced by an instruction. An example of the change: def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; => def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; llvm-svn: 40033
-
- Nov 04, 2006
-
-
Chris Lattner authored
llvm-svn: 31434
-
- Oct 13, 2006
-
-
Evan Cheng authored
llvm-svn: 30945
-
- Oct 12, 2006
-
-
Chris Lattner authored
llvm-svn: 30909
-
- Oct 11, 2006
-
-
Evan Cheng authored
llvm-svn: 30891
-
- Oct 09, 2006
-
-
Evan Cheng authored
llvm-svn: 30844
-
- Sep 02, 2006
-
-
Chris Lattner authored
llvm-svn: 30039
-
Chris Lattner authored
llvm-svn: 30038
-
- Aug 11, 2006
-
-
Evan Cheng authored
llvm-svn: 29603
-
- May 09, 2006
-
-
Chris Lattner authored
llvm-svn: 28182
-
- Feb 21, 2006
-
-
Chris Lattner authored
instructions are expensive. llvm-svn: 26298
-
- Feb 17, 2006
-
-
Nate Begeman authored
and SUBE nodes that actually expose what's going on and allow for significant simplifications in the targets. llvm-svn: 26255
-
- Feb 10, 2006
-
-
Chris Lattner authored
intrinsics. Autogen frameindex matcher llvm-svn: 26107
-
Chris Lattner authored
llvm-svn: 26106
-
- Feb 09, 2006
-
-
Chris Lattner authored
llvm-svn: 26080
-
- Feb 05, 2006
-
-
Chris Lattner authored
llvm-svn: 25985
-
- Feb 02, 2006
-
-
Chris Lattner authored
llvm-svn: 25906
-
Chris Lattner authored
llvm-svn: 25905
-
- Jan 31, 2006
-
-
Chris Lattner authored
llvm-svn: 25842
-
Chris Lattner authored
an operand that contains the condcode), making things significantly simpler. llvm-svn: 25840
-
Chris Lattner authored
a CC as an operand. Much smaller, much happier. llvm-svn: 25839
-
Chris Lattner authored
llvm-svn: 25838
-
Chris Lattner authored
llvm-svn: 25837
-
Chris Lattner authored
llvm-svn: 25834
-
- Jan 30, 2006
-
-
Chris Lattner authored
SPARC condition codes, not in terms of the DAG condcodes. This allows us to write nice clean patterns for cmovs/branches. llvm-svn: 25815
-
Chris Lattner authored
uint %test(uint %X) { %Y = call uint %llvm.ctpop.i32(uint %X) ret uint %Y } to: test: save -96, %o6, %o6 sll %i0, 0, %l0 popc %l0, %i0 restore %g0, %g0, %g0 retl nop instead of to 40 logical ops. Note the shift-by-zero that clears the top part of the 64-bit V9 register. Testcase here: CodeGen/SparcV8/ctpop.ll llvm-svn: 25814
-
Chris Lattner authored
llvm-svn: 25810
-
Chris Lattner authored
patterns. This allows emission of this code: t1: save -96, %o6, %o6 subcc %i0, %i1, %l0 move %icc, %i0, %i2 or %g0, %i2, %i0 restore %g0, %g0, %g0 retl nop instead of this: t1: save -96, %o6, %o6 subcc %i0, %i1, %l0 be .LBBt1_2 ! nop .LBBt1_1: ! or %g0, %i2, %i0 .LBBt1_2: ! restore %g0, %g0, %g0 retl nop for this: int %t1(int %a, int %b, int %c) { %tmp.2 = seteq int %a, %b %tmp3 = select bool %tmp.2, int %a, int %c ret int %tmp3 } llvm-svn: 25809
-
- Jan 28, 2006
-
-
Chris Lattner authored
llvm-svn: 25716
-
- Jan 27, 2006
-
-
Chris Lattner authored
llvm-svn: 25674
-
- Jan 15, 2006
-
-
Chris Lattner authored
Compile this: %_2E_str_8 = external global [75 x sbyte] implementation ; Functions: declare int %printf(sbyte*, ...) void %test() %tmp.101 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([75 x sbyte]* %_2E_str_8, int 0, int 0) ) ; <int> [#uses=0] unreachable } to this: main_endif_2E_8: save -96, %o6, %o6 sethi %hi(_2E_str_8), %l0 add %l0, %lo(_2E_str_8), %o0 call printf nop instead of this: main_endif_2E_8: save -96, %o6, %o6 sethi %hi(_2E_str_8), %l0 or %g0, %lo(_2E_str_8), %l1 ;; extra instruction add %l1, %l0, %o0 call printf nop llvm-svn: 25335
-
- Jan 12, 2006
-
-
Chris Lattner authored
llvm-svn: 25249
-