- Dec 12, 2008
-
-
Evan Cheng authored
Fix add/sub expansion: don't create ADD / SUB with two results (seems like everyone is doing this these days :-). Patch by Daniel M Gessel! llvm-svn: 60958
-
Nick Lewycky authored
llvm-svn: 60951
-
Duncan Sands authored
do an extending load of the 4 bytes rather than a potentially illegal (type) i32 load followed by a sign extend. llvm-svn: 60945
-
Duncan Sands authored
lowering f64 function arguments. llvm-svn: 60944
-
Mon P Wang authored
Added support for TRUNC v8i16 to v8i8 for X86 (MMX) llvm-svn: 60916
-
Bill Wendling authored
ISD::ADD to emit an implicit EFLAGS. This was horribly broken. Instead, replace the intrinsic with an ISD::SADDO node. Then custom lower that into an X86ISD::ADD node with a associated SETCC that checks the correct condition code (overflow or carry). Then that gets lowered into the correct X86::ADDOvf instruction. Similar for SUB and MUL instructions. llvm-svn: 60915
-
- Dec 11, 2008
-
-
Evan Cheng authored
llvm-svn: 60901
-
Nick Lewycky authored
optimization of SGE/SLE with unit stride, now that it works properly. llvm-svn: 60881
-
Torok Edwin authored
llvm-svn: 60875
-
Torok Edwin authored
llvm-svn: 60872
-
Mon P Wang authored
llvm-svn: 60869
-
Bill Wendling authored
llvm-svn: 60867
-
Mon P Wang authored
llvm-svn: 60866
-
Mon P Wang authored
vec_extract-sse4.ll. llvm-svn: 60865
-
Bill Wendling authored
llvm-svn: 60861
-
- Dec 10, 2008
-
-
Bill Wendling authored
them. The DAG combiner expects that nodes that are transformed have one value result. llvm-svn: 60857
-
Evan Cheng authored
llvm-svn: 60851
-
Evan Cheng authored
llvm-svn: 60850
-
Bill Wendling authored
Only perform SETO/SETC to JO/JC conversion if extractvalue is coming from an arithmetic with overflow instruction. llvm-svn: 60844
-
Duncan Sands authored
for promoted integer types, eg: i16 on ppc-32, or i24 on any platform. Complete support for arbitrary precision integers would require handling expanded integer types, eg: i128, but I couldn't be bothered. llvm-svn: 60834
-
Duncan Sands authored
causing a bunch of failures when running "make ENABLE_EXPENSIVE_CHECKS=1 check". llvm-svn: 60832
-
Mon P Wang authored
bit convert that changes the number of elements of a shuffle. llvm-svn: 60829
-
Evan Cheng authored
Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin. llvm-svn: 60828
-
Bill Wendling authored
llvm-svn: 60826
-
Evan Cheng authored
Fix a bug introduced by r59265. If lazy compilation is disabled, return actual function ptr instead of ptr to stub if function is already compiled. llvm-svn: 60822
-
Chris Lattner authored
llvm-svn: 60821
-
Chris Lattner authored
parallel, allowing it to decide that P/Q must alias if A/B must alias in things like: P = gep A, 0, i, 1 Q = gep B, 0, i, 1 This allows GVN to delete 62 more instructions out of 403.gcc. llvm-svn: 60820
-
Bill Wendling authored
llvm-svn: 60818
-
Dan Gohman authored
node latencies. Use CalcLatency instead of manual code in CalculatePriorities to keep it consistent. Previously it computed slightly different results. llvm-svn: 60817
-
Evan Cheng authored
- Emit DW_AT_byte_size for struct and union of size zero. - Emit DW_AT_declaration for forward type declaration. llvm-svn: 60812
-
Scott Michel authored
- Fix bug 3185, with misc other cleanups. - Needed to implement SPUInstrInfo::InsertBranch(). CAUTION: Not sure what gets or needs to get passed to InsertBranch() to insert a conditional branch. This will abort for now until a good test case shows up. llvm-svn: 60811
-
Bill Wendling authored
overflow/carry from the "arithmetic with overflow" intrinsics. It searches the machine basic block from bottom to top to find the SETO/SETC instruction that is its conditional. If an instruction modifies EFLAGS before it reaches the SETO/SETC instruction, then it defaults to the normal instruction emission. llvm-svn: 60807
-
- Dec 09, 2008
-
-
Dan Gohman authored
The Cost field is removed. It was only being used in a very limited way, to indicate when the scheduler should attempt to protect a live register, and it isn't really needed to do that. If we ever want the scheduler to start inserting copies in non-prohibitive situations, we'll have to rethink some things anyway. A Latency field is added. Instead of giving each node a single fixed latency, each edge can have its own latency. This will eventually be used to model various micro-architecture properties more accurately. The PointerIntPair class and an internal union are now used, which reduce the overall size. llvm-svn: 60806
-
Chris Lattner authored
invalidateCachedPointerInfo. Thanks to Bill for sending me a testcase. llvm-svn: 60805
-
Dan Gohman authored
llvm-svn: 60804
-
Bill Wendling authored
target-independent way of determining overflow on multiplication. It's very tricky. Patch by Zoltan Varga! llvm-svn: 60800
-
Chris Lattner authored
of a pointer. This allows is to catch more equivalencies. For example, the type_lists_compatible_p function used to require two iterations of the gvn pass (!) to delete its 18 redundant loads because the first pass would CSE all the addressing computation cruft, which would unblock the second memdep/gvn passes from recognizing them. This change allows memdep/gvn to catch all 18 when run just once on the function (as is typical :) instead of just 3. On all of 403.gcc, this bumps up the # reundandancies found from: 63 gvn - Number of instructions PRE'd 153991 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted to: 63 gvn - Number of instructions PRE'd 154137 gvn - Number of instructions deleted 50185 gvn - Number of loads deleted +120 loads deleted isn't bad. llvm-svn: 60799
-
Duncan Sands authored
essential problem was that the DAG can contain random unused nodes which were never analyzed. When remapping a value of a node being processed, such a node may become used and need to be analyzed; however due to operands being transformed during analysis the node may morph into a different one. Users of the morphing node need to be updated, and this wasn't happening. While there I added a bunch of documentation and sanity checks, so I (or some other poor soul) won't have to scratch their head over this stuff so long trying to remember how it was all supposed to work next time some obscure problem pops up! The extra sanity checking exposed a few places where invariants weren't being preserved, so those are fixed too. Since some of the sanity checking is expensive, I added a flag to turn it on. It is also turned on when building with ENABLE_EXPENSIVE_CHECKS=1. llvm-svn: 60797
-
Chris Lattner authored
tricks based on readnone/readonly functions. Teach memdep to look past readonly calls when analyzing deps for a readonly call. This allows elimination of a few more calls from 403.gcc: before: 63 gvn - Number of instructions PRE'd 153986 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted after: 63 gvn - Number of instructions PRE'd 153991 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted 5 calls isn't much, but this adds plumbing for the next change. llvm-svn: 60794
-
Chris Lattner authored
load dependence queries. This allows GVN to eliminate a few more instructions on 403.gcc: 152598 gvn - Number of instructions deleted 49240 gvn - Number of loads deleted after: 153986 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted llvm-svn: 60786
-