- Oct 28, 2006
-
-
Chris Lattner authored
llvm-svn: 31257
-
Chris Lattner authored
llvm-svn: 31256
-
Chris Lattner authored
llvm-svn: 31255
-
Chris Lattner authored
llvm-svn: 31248
-
- Oct 26, 2006
-
-
Reid Spencer authored
InsertNewInstBefore(new CastInst(Val, ValTy, Val->GetName()), I) into: InsertCastBefore(Val, ValTy, I) llvm-svn: 31204
-
Reid Spencer authored
Make necessary changes to support DIV -> [SUF]Div. This changes llvm to have three division instructions: signed, unsigned, floating point. The bytecode and assembler are bacwards compatible, however. llvm-svn: 31195
-
Nick Lewycky authored
produce an EQ property. llvm-svn: 31193
-
Nick Lewycky authored
Fix and comment the "or", "and" and "xor" transformations. llvm-svn: 31189
-
- Oct 25, 2006
-
-
Chris Lattner authored
llvm-svn: 31184
-
- Oct 24, 2006
-
-
Chris Lattner authored
llvm-svn: 31151
-
Chris Lattner authored
passes llvm-gcc bootstrap. llvm-svn: 31146
-
- Oct 23, 2006
-
-
Chris Lattner authored
Prolangs-C/agrep and SCCP/2006-10-23-IPSCCP-Crash.ll llvm-svn: 31132
-
Nick Lewycky authored
property is added by running through the list of uses of the value and adding resolved properties to the property set. llvm-svn: 31126
-
Nick Lewycky authored
llvm-svn: 31123
-
- Oct 22, 2006
-
-
Nick Lewycky authored
llvm-svn: 31121
-
Nick Lewycky authored
optimization opportunity pointed out by Chris Lattner. llvm-svn: 31118
-
Nick Lewycky authored
opportunity pointed out by Andrew Lewycky. llvm-svn: 31115
-
Chris Lattner authored
transformation. This speeds up a C++ app 2.25x. llvm-svn: 31113
-
Chris Lattner authored
1. Better document what is going on here. 2. Only hack on one branch per iteration, making the results less conservative. 3. Handle the problematic case by marking edges executable instead of by playing with value lattice states. This is far less pessimistic, and fixes SCCP/ipsccp-gvar.ll. llvm-svn: 31106
-
- Oct 20, 2006
-
-
Chris Lattner authored
llvm-svn: 31086
-
Chris Lattner authored
llvm-svn: 31073
-
Chris Lattner authored
but apparently didn't make it into the final patch. llvm-svn: 31070
-
Reid Spencer authored
This patch implements the first increment for the Signless Types feature. All changes pertain to removing the ConstantSInt and ConstantUInt classes in favor of just using ConstantInt. llvm-svn: 31063
-
Devang Patel authored
llvm-svn: 31062
-
Chris Lattner authored
llvm-svn: 31061
-
- Oct 19, 2006
-
-
Devang Patel authored
and destination sign may not match but other conditions are met. llvm-svn: 31056
-
Devang Patel authored
llvm-svn: 31055
-
Devang Patel authored
llvm-svn: 31054
-
Devang Patel authored
This fixes llvmAsmParser.cpp miscompile by llvm on PowerPC Darwin. llvm-svn: 31053
-
- Oct 17, 2006
-
-
Reid Spencer authored
llvm-svn: 30991
-
- Oct 16, 2006
-
-
Chris Lattner authored
llvm-svn: 30967
-
- Oct 12, 2006
-
-
Nick Lewycky authored
compile-time performance. llvm-svn: 30896
-
- Oct 09, 2006
-
-
Chris Lattner authored
PR892 and Transforms/ScalarRepl/union-pointer.ll:test2 llvm-svn: 30825
-
Chris Lattner authored
llvm-svn: 30823
-
- Oct 05, 2006
-
-
Chris Lattner authored
SimplifyDemandedBits. The idea is that some operations can be simplified if not all of the computed elements are needed. Some targets (like x86) have a large number of intrinsics that operate on a single element, but pass other elts through unmodified. If those other elements are not needed, the intrinsics can be simplified to scalar operations, and insertelement ops can be removed. This turns (f.e.): ushort %Convert_sse(float %f) { %tmp = insertelement <4 x float> undef, float %f, uint 0 ; <<4 x float>> [#uses=1] %tmp10 = insertelement <4 x float> %tmp, float 0.000000e+00, uint 1 ; <<4 x float>> [#uses=1] %tmp11 = insertelement <4 x float> %tmp10, float 0.000000e+00, uint 2 ; <<4 x float>> [#uses=1] %tmp12 = insertelement <4 x float> %tmp11, float 0.000000e+00, uint 3 ; <<4 x float>> [#uses=1] %tmp28 = tail call <4 x float> %llvm.x86.sse.sub.ss( <4 x float> %tmp12, <4 x float> < float 1.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00 > ) ; <<4 x float>> [#uses=1] %tmp37 = tail call <4 x float> %llvm.x86.sse.mul.ss( <4 x float> %tmp28, <4 x float> < float 5.000000e-01, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00 > ) ; <<4 x float>> [#uses=1] %tmp48 = tail call <4 x float> %llvm.x86.sse.min.ss( <4 x float> %tmp37, <4 x float> < float 6.553500e+04, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00 > ) ; <<4 x float>> [#uses=1] %tmp59 = tail call <4 x float> %llvm.x86.sse.max.ss( <4 x float> %tmp48, <4 x float> zeroinitializer ) ; <<4 x float>> [#uses=1] %tmp = tail call int %llvm.x86.sse.cvttss2si( <4 x float> %tmp59 ) ; <int> [#uses=1] %tmp69 = cast int %tmp to ushort ; <ushort> [#uses=1] ret ushort %tmp69 } into: ushort %Convert_sse(float %f) { entry: %tmp28 = sub float %f, 1.000000e+00 ; <float> [#uses=1] %tmp37 = mul float %tmp28, 5.000000e-01 ; <float> [#uses=1] %tmp375 = insertelement <4 x float> undef, float %tmp37, uint 0 ; <<4 x float>> [#uses=1] %tmp48 = tail call <4 x float> %llvm.x86.sse.min.ss( <4 x float> %tmp375, <4 x float> < float 6.553500e+04, float undef, float undef, float undef > ) ; <<4 x float>> [#uses=1] %tmp59 = tail call <4 x float> %llvm.x86.sse.max.ss( <4 x float> %tmp48, <4 x float> < float 0.000000e+00, float undef, float undef, float undef > ) ; <<4 x float>> [#uses=1] %tmp = tail call int %llvm.x86.sse.cvttss2si( <4 x float> %tmp59 ) ; <int> [#uses=1] %tmp69 = cast int %tmp to ushort ; <ushort> [#uses=1] ret ushort %tmp69 } which improves codegen from: _Convert_sse: movss LCPI1_0, %xmm0 movss 4(%esp), %xmm1 subss %xmm0, %xmm1 movss LCPI1_1, %xmm0 mulss %xmm0, %xmm1 movss LCPI1_2, %xmm0 minss %xmm0, %xmm1 xorps %xmm0, %xmm0 maxss %xmm0, %xmm1 cvttss2si %xmm1, %eax andl $65535, %eax ret to: _Convert_sse: movss 4(%esp), %xmm0 subss LCPI1_0, %xmm0 mulss LCPI1_1, %xmm0 movss LCPI1_2, %xmm1 minss %xmm1, %xmm0 xorps %xmm1, %xmm1 maxss %xmm1, %xmm0 cvttss2si %xmm0, %eax andl $65535, %eax ret This is just a first step, it can be extended in many ways. Testcase here: Transforms/InstCombine/vec_demanded_elts.ll llvm-svn: 30752
-
- Oct 04, 2006
-
-
Chris Lattner authored
ever is, we want to get an assert instead of silent bad codegen. llvm-svn: 30716
-
- Oct 03, 2006
-
-
Nick Lewycky authored
Ensure that we copy KnownProperties before calling visitBasicBlock, else we may leak properties into blocks where they don't belong. llvm-svn: 30705
-
Nick Lewycky authored
Fix SwitchInst where dest-block is the same as one of the cases. llvm-svn: 30700
-
Nick Lewycky authored
optimize in more cases. llvm-svn: 30699
-
Evan Cheng authored
llvm-svn: 30698
-