aboutsummaryrefslogtreecommitdiffstats
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Be more careful with insert_subreg and extract_subreg where either source or ↵Evan Cheng2008-04-171-0/+171
| | | | | | destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49843 91177308-0d34-0410-b5e6-96231b3b80d8
* Make GVN able to remove unnecessary calls to read-only functions again.Owen Anderson2008-04-171-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49842 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a sub-register indice propagation bug.Evan Cheng2008-04-171-0/+33
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49832 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't forget about sub-register indices when rematting instructions.Evan Cheng2008-04-161-0/+46
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49830 91177308-0d34-0410-b5e6-96231b3b80d8
* After reading memory that's already freed.Evan Cheng2008-04-161-0/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49810 91177308-0d34-0410-b5e6-96231b3b80d8
* Really test what's intended.Evan Cheng2008-04-161-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49802 91177308-0d34-0410-b5e6-96231b3b80d8
* Rewrite LiveVariable liveness computation. The new implementation is much ↵Evan Cheng2008-04-161-0/+48
| | | | | | | | | simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme. This patch also fixed a couple of nasty corner cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49784 91177308-0d34-0410-b5e6-96231b3b80d8
* XFAIL this test for the moment. The real solution is to prevent ADCEOwen Anderson2008-04-161-0/+1
| | | | | | | | from transforming loops and adding a separate loop pass for removing loops with know trip counts. Until that happens, ADCE is miscompiling this code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49769 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for the form of the SSE41 extractps instruction thatDan Gohman2008-04-162-0/+31
| | | | | | | puts its result in a 32-bit GPR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49762 91177308-0d34-0410-b5e6-96231b3b80d8
* Recreate the size SDNode instead of reusing the old one in the x86Dan Gohman2008-04-161-0/+13
| | | | | | | | | memcpy lowering code; this ensures that the size node has the desired result type. This fixes a regression from r49572 with @llvm.memcpy.i64 on x86-32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49761 91177308-0d34-0410-b5e6-96231b3b80d8
* Add movd instructions to move from MMX registersDan Gohman2008-04-151-0/+26
| | | | | | | to 64-bit GPR registers on x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49757 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't assume a tail call can't reference a byvalDale Johannesen2008-04-151-0/+18
| | | | | | | | argument to the outer function, this isn't correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49731 91177308-0d34-0410-b5e6-96231b3b80d8
* Treat EntryToken nodes as "passive" so that they aren't added to theDan Gohman2008-04-151-2/+2
| | | | | | | | | | | | | | | | | | ScheduleDAG; they don't correspond to any actual instructions so they don't need to be scheduled. This fixes a bug where the EntryToken was being scheduled multiple times in some cases, though it ended up not causing any trouble because EntryToken doesn't expand into anything. With this fixed the schedulers reliably schedule the expected number of units, so we can check this with an assertion. This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it ends up getting scheduled differently in a trivial way, though it was enough to fool the prcontext+grep that the test does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49701 91177308-0d34-0410-b5e6-96231b3b80d8
* Upgrade these tests for the current intrinsic prototypes.Dan Gohman2008-04-142-24/+24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49669 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove -unwind-tables-optional everywhere, sinceDale Johannesen2008-04-1416-21/+21
| | | | | | | | this is now the default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49667 91177308-0d34-0410-b5e6-96231b3b80d8
* The functionality being tested was removed because it was horribly unsafe.Owen Anderson2008-04-131-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49610 91177308-0d34-0410-b5e6-96231b3b80d8
* This patch corrects the handling of byval arguments for tailcallArnold Schwaighofer2008-04-122-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | optimized x86-64 (and x86) calls so that they work (... at least for my test cases). Should fix the following problems: Problem 1: When i introduced the optimized handling of arguments for tail called functions (using a sequence of copyto/copyfrom virtual registers instead of always lowering to top of the stack) i did not handle byval arguments correctly e.g they did not work at all :). Problem 2: On x86-64 after the arguments of the tail called function are moved to their registers (which include ESI/RSI etc), tail call optimization performs byval lowering which causes xSI,xDI, xCX registers to be overwritten. This is handled in this patch by moving the arguments to virtual registers first and after the byval lowering the arguments are moved from those virtual registers back to RSI/RDI/RCX. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49584 91177308-0d34-0410-b5e6-96231b3b80d8
* Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not LegalDan Gohman2008-04-128-7/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | on any current target and aren't optimized in DAGCombiner. Instead of using intermediate nodes, expand the operations, choosing between simple loads/stores, target-specific code, and library calls, immediately. Previously, the code to emit optimized code for these operations was only used at initial SelectionDAG construction time; now it is used at all times. This fixes some cases where rep;movs was being used for small copies where simple loads/stores would be better. This also cleans up code that checks for alignments less than 4; let the targets make that decision instead of doing it in target-independent code. This allows x86 to use rep;movs in low-alignment cases. Also, this fixes a bug that resulted in the use of rep;stos for memsets of 0 with non-constant memory size when the alignment was at least 4. It's better to use the library in this case, which can be significantly faster when the size is large. This also preserves more SourceValue information when memory intrinsics are lowered into simple loads/stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bug that prevented x86-64 from using rep.movsq forDan Gohman2008-04-121-1/+1
| | | | | | | 8-byte-aligned data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49571 91177308-0d34-0410-b5e6-96231b3b80d8
* If a PHI node has a single implicit_def source, replace it with an ↵Evan Cheng2008-04-111-0/+3544
| | | | | | implicit_def instead of a copy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49543 91177308-0d34-0410-b5e6-96231b3b80d8
* Add testcase for PR2213.Owen Anderson2008-04-111-0/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49517 91177308-0d34-0410-b5e6-96231b3b80d8
* New test.Evan Cheng2008-04-102-1/+259
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49514 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach InstCombine's ComputeMaskedBits to handle pointer expressionsDan Gohman2008-04-102-0/+73
| | | | | | | | | | | | | | | | in addition to integer expressions. Rewrite GetOrEnforceKnownAlignment as a ComputeMaskedBits problem, moving all of its special alignment knowledge to ComputeMaskedBits as low-zero-bits knowledge. Also, teach ComputeMaskedBits a few basic things about Mul and PHI instructions. This improves ComputeMaskedBits-based simplifications in a few cases, but more noticeably it significantly improves instcombine's alignment detection for loads, stores, and memory intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49492 91177308-0d34-0410-b5e6-96231b3b80d8
* A copy instruction may use a register multiple times on some targets. Change ↵Evan Cheng2008-04-101-0/+100
| | | | | | them all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49491 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the x86-64 side of PR2108 by adding a v2f64 version ofChris Lattner2008-04-101-0/+13
| | | | | | | | | MOVZQI2PQIrr. This would be better handled as a dag combine (with the goal of eliminating the bitconvert) but I don't know how to do that safely. Thoughts welcome. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49463 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach branch folding pass about implicit_def instructions. Unfortunately we ↵Evan Cheng2008-04-102-3/+49
| | | | | | can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461 91177308-0d34-0410-b5e6-96231b3b80d8
* - More aggressively coalescing away copies whose source is defined by an ↵Evan Cheng2008-04-093-0/+124
| | | | | | | | | implicit_def. - Added insert_subreg coalescing support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
* Generalize getUnaryFloatFunction to handle any FP unary function, automaticallyChris Lattner2008-04-091-0/+5
| | | | | | | figuring out the suffix to use. implement pow(2,x) -> exp2(x). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49437 91177308-0d34-0410-b5e6-96231b3b80d8
* remove capital letter from test name.Chris Lattner2008-04-091-0/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49436 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor a bunch of functionality related to memcpy and memset transforms out of Owen Anderson2008-04-097-8/+11
| | | | | | | GVN and into its own pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49419 91177308-0d34-0410-b5e6-96231b3b80d8
* Missed a hasInterval check.Evan Cheng2008-04-091-0/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49415 91177308-0d34-0410-b5e6-96231b3b80d8
* many cleanups to the pow optimizer. Allow it to handle powf,Chris Lattner2008-04-091-4/+12
| | | | | | | add support for pow(x, 2.0) -> x*x. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49411 91177308-0d34-0410-b5e6-96231b3b80d8
* Check that bodies and calls but not declarationsDuncan Sands2008-04-081-0/+7
| | | | | | | | are marked nounwind when compiling without -fexceptions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49393 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename -disable-required-unwind-tables to -unwind-tables-optional.Dale Johannesen2008-04-0816-21/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49391 91177308-0d34-0410-b5e6-96231b3b80d8
* merge r48768 from branches/ggreif/parallelized-testGabor Greif2008-04-081-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49382 91177308-0d34-0410-b5e6-96231b3b80d8
* Missed one.Dale Johannesen2008-04-081-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49365 91177308-0d34-0410-b5e6-96231b3b80d8
* Add -disable-required-unwind-tables to testsDale Johannesen2008-04-0816-21/+21
| | | | | | | | | that need it (usually, grepping for some string found in unwind info) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49364 91177308-0d34-0410-b5e6-96231b3b80d8
* Testcase for pr2169.Duncan Sands2008-04-071-0/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49344 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix test.Evan Cheng2008-04-071-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49343 91177308-0d34-0410-b5e6-96231b3b80d8
* fix this testcase to pass and remove a duplicate instance of itself.Chris Lattner2008-04-061-75/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49281 91177308-0d34-0410-b5e6-96231b3b80d8
* Prefer to expand mask for xor to -1, so we have a chance to turn it into a not.Torok Edwin2008-04-061-0/+146
| | | | | | | | If it cannot be expanded, it will keep the old behaviour and try to shrink the constant. Part of enhancement for PR2191. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49280 91177308-0d34-0410-b5e6-96231b3b80d8
* 1. IMPLICIT_DEF can *re-define* any register.Evan Cheng2008-04-051-0/+60
| | | | | | | | 2. Coalescer can now create an interesting situation where a register def can reaches itself without being killed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49246 91177308-0d34-0410-b5e6-96231b3b80d8
* Favors pshufd over shufps when shuffling elements from one vector. pshufd is ↵Evan Cheng2008-04-0510-19/+43
| | | | | | faster than shufps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49244 91177308-0d34-0410-b5e6-96231b3b80d8
* New test case.Evan Cheng2008-04-031-0/+29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49190 91177308-0d34-0410-b5e6-96231b3b80d8
* Testcase for EH with functions whose names are stripped.Dale Johannesen2008-04-021-0/+27
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49111 91177308-0d34-0410-b5e6-96231b3b80d8
* Speculatively micro-optimize memory-zeroing calls on Darwin 10.Dan Gohman2008-04-011-0/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49048 91177308-0d34-0410-b5e6-96231b3b80d8
* More soft fp fixes.Evan Cheng2008-04-011-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49016 91177308-0d34-0410-b5e6-96231b3b80d8
* Unbreak ARM / Thumb soft FP support.Evan Cheng2008-04-011-0/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
* Mark functions in some tests as 'nounwind'. GeneratingDale Johannesen2008-03-3114-31/+31
| | | | | | | | | | EH info for these functions causes the tests to fail for random reasons (e.g. looking for 'or' or counting lines with asm-printer; labels count as lines.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49003 91177308-0d34-0410-b5e6-96231b3b80d8
* It's not safe to fold a load from GV stub or constantpool into a two-address ↵Evan Cheng2008-03-311-0/+40
| | | | | | use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002 91177308-0d34-0410-b5e6-96231b3b80d8