- Oct 20, 2006
-
-
Devang Patel authored
llvm-svn: 31062
-
- 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 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
-
- Oct 01, 2006
-
-
Chris Lattner authored
the alignment when promoting allocations. This implements InstCombine/cast.ll:test32 llvm-svn: 30682
-
- Sep 29, 2006
-
-
Chris Lattner authored
Eliminate ConstantBool::True and ConstantBool::False. Instead, provide ConstantBool::getTrue() and ConstantBool::getFalse(). llvm-svn: 30665
-
- Sep 27, 2006
-
-
Chris Lattner authored
llvm-svn: 30623
-
- Sep 23, 2006
-
-
Nick Lewycky authored
llvm-svn: 30588
-
- Sep 21, 2006
-
-
Chris Lattner authored
llvm-svn: 30555
-
Nick Lewycky authored
llvm-svn: 30552
-
Nick Lewycky authored
with the right answer. llvm-svn: 30550
-
- Sep 20, 2006
-
-
Nick Lewycky authored
Fixes infinite loop in resolve(). llvm-svn: 30540
-
Andrew Lenharth authored
llvm-svn: 30535
-
Chris Lattner authored
this comparison, but never checked it. Whoops, no wonder we miscompiled 177.mesa! llvm-svn: 30511
-
Evan Cheng authored
llvm-svn: 30505
-
Evan Cheng authored
llvm-svn: 30504
-
- Sep 19, 2006
-
-
Andrew Lenharth authored
If we have an add, do it in the pointer realm, not the int realm. This is critical in the linux kernel for pointer analysis correctness llvm-svn: 30496
-
Chris Lattner authored
llvm-svn: 30482
-
- Sep 18, 2006
-
-
Nick Lewycky authored
that we can't modify the CFG any more, at least not until it's possible to update the dominator tree (PR217). llvm-svn: 30469
-
Chris Lattner authored
llvm-svn: 30465
-
Chris Lattner authored
llvm-svn: 30456
-
Chris Lattner authored
llvm-svn: 30450
-
Chris Lattner authored
Use isLogicalShift/isArithmeticShift to simplify code. llvm-svn: 30448
-
- Sep 16, 2006
-
-
Chris Lattner authored
llvm-svn: 30405
-
- Sep 13, 2006
-
-
Nick Lewycky authored
llvm-svn: 30305
-
Nick Lewycky authored
llvm-svn: 30304
-
Nick Lewycky authored
llvm-svn: 30298
-
- Sep 12, 2006
-
-
Chris Lattner authored
Handle this. This fixes PR908 and Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll llvm-svn: 30275
-
- Sep 11, 2006
-
-
Chris Lattner authored
llvm-svn: 30266
-
Nick Lewycky authored
llvm-svn: 30251
-