summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't block basic block with only SwitchInst to fold into predecessors.Zhou Sheng2009-02-251-1/+5
| | | | llvm-svn: 65456
* Clean up dwarf writer, part 1. This eliminated the horrible recursive ↵Evan Cheng2009-02-254-335/+414
| | | | | | | | getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior. This is a very minor compile time win. llvm-svn: 65438
* Add a totally synthetic situation I came up with while looking at a bug inNick Lewycky2009-02-251-0/+17
| | | | | | related code. llvm-svn: 65437
* Expand tabs to spaces (overlooked in previous commit)Scott Michel2009-02-251-12/+12
| | | | llvm-svn: 65427
* Remove all "cached" data from BuildVectorSDNode, preferring to retrieveScott Michel2009-02-252-19/+14
| | | | | | | | | results via reference parameters. This patch also appears to fix Evan's reported problem supplied as a reduced bugpoint test case. llvm-svn: 65426
* Added support to have TableGen provide information if an intrinsic (coreMon P Wang2009-02-241-0/+10
| | | | | | or target) can be overloaded or not. llvm-svn: 65404
* If compile unit's language is not set then don't crash while dump'ing ↵Devang Patel2009-02-241-1/+2
| | | | | | compile unit. llvm-svn: 65402
* Extension of GEP in constant folder was broken (apparently this codeDaniel Dunbar2009-02-241-1/+1
| | | | | | | has never been run!). - Sorry, don't know how to make an LLVM test case for this. llvm-svn: 65383
* Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount,Dan Gohman2009-02-245-122/+144
| | | | | | | | | to more accurately describe what it does. Expand its doxygen comment to describe what the backedge-taken count is and how it differs from the actual iteration count of the loop. Adjust names and comments in associated code accordingly. llvm-svn: 65382
* Overhaul my earlier submission due to feedback. It's a large patch, but most ofBill Wendling2009-02-2440-129/+166
| | | | | | | | | | | | them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
* Add a debugging option for SSC DCE.Owen Anderson2009-02-241-0/+5
| | | | llvm-svn: 65375
* - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emitBill Wendling2009-02-244-14/+15
| | | | | | | | | | a DBG_LABEL or not. We want to fall back to the original way of emitting debug info when we're in -O0/-fast mode. - Add plumbing in to pass the "Fast" flag to places that need it. - XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I need to investigate still. llvm-svn: 65367
* Fix a ValueTracking rule: RHS means operand 1, not 0. Add a simpleDan Gohman2009-02-243-3/+8
| | | | | | | ashr instcombine to help expose this code. And apply the fix to SelectionDAG's copy of this code too. llvm-svn: 65364
* Generalize the ChangeCompareStride code, in preparation forDan Gohman2009-02-241-94/+96
| | | | | | handling non-constant strides. No functionality change. llvm-svn: 65363
* Preserve the DominanceFrontier analysis in the LoopDeletion pass.Dan Gohman2009-02-241-2/+7
| | | | llvm-svn: 65359
* gdb uses DW_AT_prototyped to identify K&R style in C based languages.Devang Patel2009-02-241-0/+5
| | | | | | This fixes objc.dg/dwarf-prototypes.m scan-assembler DW_AT_prototyped from llvmgcc42 test suite. llvm-svn: 65357
* While folding unconditional return move DbgRegionEndInst into the ↵Devang Patel2009-02-242-23/+10
| | | | | | | | | | | predecessor, instead of removing it. This fixes following tests from llvmgcc42 testsuite. gcc.c-torture/execute/20000605-3.c gcc.c-torture/execute/20020619-1.c gcc.c-torture/execute/20030920-1.c gcc.c-torture/execute/loop-ivopts-1.c llvm-svn: 65353
* If there is not any debug info available for any global variables and any ↵Devang Patel2009-02-241-13/+26
| | | | | | subprograms then there is not any debug info to emit. llvm-svn: 65352
* Back out the change in 64918 that used sign-extensions when promotingDan Gohman2009-02-231-34/+12
| | | | | | | | | trip counts that use signed comparisons. It's not obviously the best approach for preserving trip count information, and at any rate there isn't anything in the tree right now that makes use of that, so for now always using zero-extensions is preferable. llvm-svn: 65347
* Fast-isel can't do TLS yet, so it should fall back to SDISelDan Gohman2009-02-231-0/+6
| | | | | | if it sees TLS addresses. llvm-svn: 65341
* LoopDeletion needs to inform ScalarEvolution when a loop is deleted,Dan Gohman2009-02-231-1/+4
| | | | | | | | so that ScalarEvolution doesn't hang onto a dangling Loop*, which could be a problem if another Loop happens to get allocated at the same address. llvm-svn: 65323
* IndVarSimplify preserves ScalarEvolution. In theDan Gohman2009-02-231-0/+1
| | | | | | | -std-compile-opts sequence, this avoids the need for ScalarEvolution to be rerun before LoopDeletion. llvm-svn: 65318
* Should reset DBI_Prev if DBI_Next == 0.Zhou Sheng2009-02-231-0/+2
| | | | llvm-svn: 65314
* Only v1i16 (i.e. _m64) is returned via RAX / RDX.Evan Cheng2009-02-233-19/+50
| | | | llvm-svn: 65313
* Generate better code for v8i16 shuffles on SSE2Nate Begeman2009-02-233-249/+360
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generate better code for v16i8 shuffles on SSE2 (avoids stack) Generate pshufb for v8i16 and v16i8 shuffles on SSSE3 where it is fewer uops. Document the shuffle matching logic and add some FIXMEs for later further cleanups. New tests that test the above. Examples: New: _shuf2: pextrw $7, %xmm0, %eax punpcklqdq %xmm1, %xmm0 pshuflw $128, %xmm0, %xmm0 pinsrw $2, %eax, %xmm0 Old: _shuf2: pextrw $2, %xmm0, %eax pextrw $7, %xmm0, %ecx pinsrw $2, %ecx, %xmm0 pinsrw $3, %eax, %xmm0 movd %xmm1, %eax pinsrw $4, %eax, %xmm0 ret ========= New: _shuf4: punpcklqdq %xmm1, %xmm0 pshufb LCPI1_0, %xmm0 Old: _shuf4: pextrw $3, %xmm0, %eax movsd %xmm1, %xmm0 pextrw $3, %xmm1, %ecx pinsrw $4, %ecx, %xmm0 pinsrw $5, %eax, %xmm0 ======== New: _shuf1: pushl %ebx pushl %edi pushl %esi pextrw $1, %xmm0, %eax rolw $8, %ax movd %xmm0, %ecx rolw $8, %cx pextrw $5, %xmm0, %edx pextrw $4, %xmm0, %esi pextrw $3, %xmm0, %edi pextrw $2, %xmm0, %ebx movaps %xmm0, %xmm1 pinsrw $0, %ecx, %xmm1 pinsrw $1, %eax, %xmm1 rolw $8, %bx pinsrw $2, %ebx, %xmm1 rolw $8, %di pinsrw $3, %edi, %xmm1 rolw $8, %si pinsrw $4, %esi, %xmm1 rolw $8, %dx pinsrw $5, %edx, %xmm1 pextrw $7, %xmm0, %eax rolw $8, %ax movaps %xmm1, %xmm0 pinsrw $7, %eax, %xmm0 popl %esi popl %edi popl %ebx ret Old: _shuf1: subl $252, %esp movaps %xmm0, (%esp) movaps %xmm0, 16(%esp) movaps %xmm0, 32(%esp) movaps %xmm0, 48(%esp) movaps %xmm0, 64(%esp) movaps %xmm0, 80(%esp) movaps %xmm0, 96(%esp) movaps %xmm0, 224(%esp) movaps %xmm0, 208(%esp) movaps %xmm0, 192(%esp) movaps %xmm0, 176(%esp) movaps %xmm0, 160(%esp) movaps %xmm0, 144(%esp) movaps %xmm0, 128(%esp) movaps %xmm0, 112(%esp) movzbl 14(%esp), %eax movd %eax, %xmm1 movzbl 22(%esp), %eax movd %eax, %xmm2 punpcklbw %xmm1, %xmm2 movzbl 42(%esp), %eax movd %eax, %xmm1 movzbl 50(%esp), %eax movd %eax, %xmm3 punpcklbw %xmm1, %xmm3 punpcklbw %xmm2, %xmm3 movzbl 77(%esp), %eax movd %eax, %xmm1 movzbl 84(%esp), %eax movd %eax, %xmm2 punpcklbw %xmm1, %xmm2 movzbl 104(%esp), %eax movd %eax, %xmm1 punpcklbw %xmm1, %xmm0 punpcklbw %xmm2, %xmm0 movaps %xmm0, %xmm1 punpcklbw %xmm3, %xmm1 movzbl 127(%esp), %eax movd %eax, %xmm0 movzbl 135(%esp), %eax movd %eax, %xmm2 punpcklbw %xmm0, %xmm2 movzbl 155(%esp), %eax movd %eax, %xmm0 movzbl 163(%esp), %eax movd %eax, %xmm3 punpcklbw %xmm0, %xmm3 punpcklbw %xmm2, %xmm3 movzbl 188(%esp), %eax movd %eax, %xmm0 movzbl 197(%esp), %eax movd %eax, %xmm2 punpcklbw %xmm0, %xmm2 movzbl 217(%esp), %eax movd %eax, %xmm4 movzbl 225(%esp), %eax movd %eax, %xmm0 punpcklbw %xmm4, %xmm0 punpcklbw %xmm2, %xmm0 punpcklbw %xmm3, %xmm0 punpcklbw %xmm1, %xmm0 addl $252, %esp ret llvm-svn: 65311
* Changed option name from inline-threshold to basic-inline-threshold becauseMon P Wang2009-02-231-1/+1
| | | | | | inline-threshold option is used by the inliner. llvm-svn: 65309
* fix some typos that Duncan noticedChris Lattner2009-02-231-3/+3
| | | | llvm-svn: 65306
* Propagate debug loc info through prologue/epilogue.Bill Wendling2009-02-237-28/+39
| | | | llvm-svn: 65298
* Introduce the BuildVectorSDNode class that encapsulates the ISD::BUILD_VECTORScott Michel2009-02-2211-316/+320
| | | | | | | | | instruction. The class also consolidates the code for detecting constant splats that's shared across PowerPC and the CellSPU backends (and might be useful for other backends.) Also introduces SelectionDAG::getBUID_VECTOR() for generating new BUILD_VECTOR nodes. llvm-svn: 65296
* Revert the part of 64623 that attempted to align the source in aDan Gohman2009-02-221-1/+1
| | | | | | | | | | | | | | | memcpy to match the alignment of the destination. It isn't necessary for making loads and stores handled like the SSE loadu/storeu intrinsics, and it was causing a performance regression in MultiSource/Applications/JM/lencod. The problem appears to have been a memcpy that copies from some highly aligned array into an alloca; the alloca was then being assigned a large alignment, which required codegen to perform dynamic stack-pointer re-alignment, which forced the enclosing function to have a frame pointer, which led to increased spilling. llvm-svn: 65289
* Properly parenthesize this expression, fixing a real bug in the newDan Gohman2009-02-221-1/+1
| | | | | | -full-lsr code, as well as a GCC warning. llvm-svn: 65288
* If a use operand is marked isKill, don't forget to add kill to its live ↵Evan Cheng2009-02-221-4/+6
| | | | | | interval as well. llvm-svn: 65279
* Add a note.Evan Cheng2009-02-221-0/+28
| | | | llvm-svn: 65275
* Be bug compatible with gcc by returning MMX values in RAX.Evan Cheng2009-02-222-7/+13
| | | | llvm-svn: 65274
* Do not consider MMX_MOVD64rr a move instructions. The source register is in ↵Evan Cheng2009-02-221-1/+0
| | | | | | GR32, the destination is VR64. They are not compatible. llvm-svn: 65273
* Only try to sink immediate when TLI is not null. It needs to check if ↵Evan Cheng2009-02-221-1/+1
| | | | | | immediate would fit in target addressing field. llvm-svn: 65268
* Don't sign extend the char when expanding char -> int duringNick Lewycky2009-02-211-2/+2
| | | | | | load(bitcast(char[4] to i32*)) evaluation. llvm-svn: 65246
* bug 3610: Floating point vaarg not softened.Richard Pennington2009-02-212-0/+18
| | | | llvm-svn: 65239
* Drop bunch of half-working stuff in the ext_weak linkage support.Anton Korobeynikov2009-02-212-16/+19
| | | | | | | | | | | Now we're using one gross, but quite robust hack :) (previous ones did not work, for example, when ext_weak symbol was used deep inside constant expression in the initializer). The proper fix of this problem will require some quite huge asmprinter changes and that's why was postponed. This fixes PR3629 by the way :) llvm-svn: 65230
* Add AddrModeMatcher.cppEvan Cheng2009-02-211-0/+1
| | | | llvm-svn: 65228
* If two-address def is dead and the instruction does not define other ↵Evan Cheng2009-02-211-0/+30
| | | | | | registers, and it doesn't produce side effects, just delete the instruction. llvm-svn: 65218
* Teach LSR sink to sink the immediate portion of the common expression back ↵Evan Cheng2009-02-211-17/+82
| | | | | | into uses if they fit in address modes of all the uses. llvm-svn: 65215
* Make sure this doesn't access .end() too.Bill Wendling2009-02-211-3/+4
| | | | llvm-svn: 65213
* Make sure we don't dereference the .end() of the container.Bill Wendling2009-02-211-1/+2
| | | | llvm-svn: 65211
* rename a function to indicate that it checks for profitability as wellChris Lattner2009-02-211-9/+36
| | | | | | | | as legality. Make load sinking and gep sinking more careful: we only do it when it won't pessimize loads from the stack. This has the added benefit of not producing code that is unanalyzable to SROA. llvm-svn: 65209
* Propagate more debug loc infos. This also includes some code cleaning.Bill Wendling2009-02-211-6/+18
| | | | llvm-svn: 65207
* We need to propagate the debug location information even when dealing with theBill Wendling2009-02-211-4/+4
| | | | | | prologue/epilogue. llvm-svn: 65206
* Fix a bug that David Greene found in the DAGCombiner's logicDan Gohman2009-02-201-2/+2
| | | | | | | that checks whether it's safe to transform a store of a bitcast value into a store of the original value. llvm-svn: 65201
* Fix strange logic in CollectIVUsers used to determine whether all uses areEvan Cheng2009-02-201-1/+8
| | | | | | | addresses, part 1. This fixes an obvious logic bug. Previously if the only in-loop use is a PHI, it would return AllUsesAreAddresses as true. llvm-svn: 65178
* Simplify code and reduce indentation. No functionality change.Dan Gohman2009-02-201-80/+70
| | | | llvm-svn: 65167
OpenPOWER on IntegriCloud