summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Generic
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix isNegatibleForFree to not return true for ConstantFP nodes Chris Lattner2008-02-261-0/+14
| | | | | | | | | after legalize. Just because a constant is legal (e.g. 0.0 in SSE) doesn't mean that its negated value is legal (-0.0). We could make this stronger by checking to see if the negated constant is actually legal post negation, but it doesn't seem like a big deal. llvm-svn: 47591
* testcase for PR1133Chris Lattner2008-02-211-0/+9
| | | | llvm-svn: 47427
* Remove llvm-upgrade and update tests.Tanya Lattner2008-02-1986-2699/+2541
| | | | llvm-svn: 47296
* Teach LegalizeTypes how to expand and promote CTLZ,Duncan Sands2008-02-131-12/+11
| | | | | | | | | | | | | | | | | | CTTZ and CTPOP. The expansion code differs from that in LegalizeDAG in that it chooses to take the CTLZ/CTTZ count from the Hi/Lo part depending on whether the Hi/Lo value is zero, not on whether CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the width of the type is) for it. I made this change because the optimizers may well know that Hi/Lo is zero and exploit it. The promotion code for CTTZ also differs from that in LegalizeDAG: it uses an "or" to get the right result when the original value is zero, rather than using a compare and select. This also means the value doesn't need to be zero extended. llvm-svn: 47075
* Crashes LegalizeTypes with "Do not know how toDuncan Sands2008-02-041-0/+22
| | | | | | expand the result of this operator!" (node: ctlz). llvm-svn: 46713
* Crashes LegalizeTypes with "Do not know how to splitDuncan Sands2008-02-041-0/+14
| | | | | | this operator's operand" (node: extract_subvector). llvm-svn: 46712
* remove target triple to make this test more "generic"Chris Lattner2008-02-041-2/+0
| | | | llvm-svn: 46711
* Crashed the new type legalizer. Not likely to catchDuncan Sands2008-02-041-0/+21
| | | | | | | | | any bugs in the future since to get the crash you also need hacked in fake libcall support (which creates odd but legal trees), but since adding it doesn't hurt... Thanks to Chris for this ultimately reduced version. llvm-svn: 46706
* Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to Chris Lattner2008-01-261-0/+31
| | | | | | | | | | delete a node even if it was not dead in some cases. Instead, just add it to the worklist. Also, make sure to use the CombineTo methods, as it was doing things that were unsafe: the top level combine loop could touch dangling memory. This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll llvm-svn: 46384
* new testcase.Chris Lattner2008-01-171-0/+8
| | | | llvm-svn: 46139
* add testcase that has been sitting in my tree for awhile.Chris Lattner2008-01-171-0/+11
| | | | llvm-svn: 46124
* new testcase for llvm.trap.Chris Lattner2008-01-151-0/+9
| | | | llvm-svn: 46020
* new testcase for PR1845Chris Lattner2008-01-101-0/+11
| | | | llvm-svn: 45795
* Setting GlobalDirective in TargetAsmInfo by default rather thanGordon Henriksen2008-01-072-0/+56
| | | | | | | providing a misleading facility. It's used once in the MIPS backend and hardcoded as "\t.globl\t" everywhere else. llvm-svn: 45676
* With this patch, the LowerGC transformation becomes theGordon Henriksen2008-01-071-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) llvm-svn: 45670
* Fix PR1833 - eh.exception and eh.selector return twoDuncan Sands2007-12-311-0/+36
| | | | | | | | values, which means doing extra legalization work. It would be easier to get this kind of thing right if there was some documentation... llvm-svn: 45472
* Tests for changes made in r45356, where IPO optimizations would dropGordon Henriksen2007-12-262-0/+35
| | | | | | collector algorithms. llvm-svn: 45357
* GC poses hazards to the inliner. Consider:Gordon Henriksen2007-12-252-0/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | define void @f() { ... call i32 @g() ... } define void @g() { ... } The hazards are: - @f and @g have GC, but they differ GC. Inlining is invalid. This may never occur. - @f has no GC, but @g does. g's GC must be propagated to @f. The other scenarios are safe: - @f and @g have the same GC. - @f and @g have no GC. - @g has no GC. This patch adds inliner checks for the former two scenarios. llvm-svn: 45351
* Noting and enforcing that GC intrinsics are valid only within aGordon Henriksen2007-12-252-1/+11
| | | | | | | | | function with GC. This will catch the error when the inliner inlines a function with GC into a caller with no GC. llvm-svn: 45350
* Adjusting verification of "llvm.gc*" intrinsic prototypes to matchGordon Henriksen2007-12-254-1/+49
| | | | | | LangRef. llvm-svn: 45349
* Make invokes of inline asm legal. Teach codegenDuncan Sands2007-12-171-0/+15
| | | | | | | | how to lower them (with no attempt made to be efficient, since they should only occur for unoptimized code). llvm-svn: 45108
* Adding a collector name attribute to Function in the IR. These Gordon Henriksen2007-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | methods are new to Function: bool hasCollector() const; const std::string &getCollector() const; void setCollector(const std::string &); void clearCollector(); The assembly representation is as such: define void @f() gc "shadow-stack" { ... The implementation uses an on-the-side table to map Functions to collector names, such that there is no overhead. A StringPool is further used to unique collector names, which are extremely likely to be unique per process. llvm-svn: 44769
* Upgrading this test to 2.0 .ll syntax.Gordon Henriksen2007-12-091-28/+27
| | | | llvm-svn: 44738
* upgrade this testChris Lattner2007-11-281-49/+63
| | | | llvm-svn: 44405
* Fix a crash on invalid code due to memcpy lowering.Chris Lattner2007-11-271-0/+19
| | | | llvm-svn: 44378
* Fix a bug in which node A is replaced by node B, but laterDuncan Sands2007-11-211-0/+161
| | | | | | | | node A gets back into the DAG again because it was hiding in one of the node maps: make sure that node replacement happens in those maps too. llvm-svn: 44263
* -pre-RA-sched=none, simple, simple-noitin are gone.Evan Cheng2007-10-011-3/+0
| | | | llvm-svn: 42505
* Fix a typo in a comment.Dan Gohman2007-09-241-1/+1
| | | | llvm-svn: 42263
* Fix for PR1633: Verifier doesn't fully verify GC intrinsicsGordon Henriksen2007-09-171-1/+2
| | | | | | | | | | | | | | LLVM now enforces the following prototypes for the write barriers: <ty>* @llvm.gcread(<ty2>*, <ty>**) void @llvm.gcwrite(<ty>*, <ty2>*, <ty>**) And for @llvm.gcroot, the first stack slot is verified to be an alloca or a bitcast of an alloca. Fixes test/CodeGen/Generic/GC/lower_gcroot.ll, which violated these. llvm-svn: 42051
* Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is ↵Anton Korobeynikov2007-09-073-88/+88
| | | | | | | | needed, because they just "mark" register liveins and we let frontend solve type issue, not lowering code :) llvm-svn: 41763
* Change all floating constants that are not exactlyDale Johannesen2007-09-055-7/+7
| | | | | | representable to use hex format. llvm-svn: 41722
* Fix a gcroot lowering bug.Evan Cheng2007-09-011-0/+10
| | | | llvm-svn: 41668
* Remove this test as it is too hard to fix after theDuncan Sands2007-08-271-1621/+0
| | | | | | | latest EH changes, and in any case it is hard to imagine how the original bug could be reintroduced. llvm-svn: 41497
* Now that we don't output cleanups by default, the actionDuncan Sands2007-08-271-1/+1
| | | | | | offset needs to be adjusted in this test. llvm-svn: 41490
* Allow target constants to be illegal types. The target shouldChris Lattner2007-08-251-0/+8
| | | | | | | know how to handle them. This fixes test/CodeGen/Generic/asm-large-immediate.ll llvm-svn: 41388
* Convert tests using "grep -c ... | grep ..." to use the count script.Dan Gohman2007-08-151-1/+1
| | | | llvm-svn: 41100
* Convert tests using "| wc -l | grep ..." to use the count script.Dan Gohman2007-08-155-17/+17
| | | | llvm-svn: 41097
* This is the patch to provide clean intrinsic function overloading support in ↵Chandler Carruth2007-08-041-8/+8
| | | | | | | | LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future. This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported. llvm-svn: 40807
* Change the x86 assembly output to use tab characters to separate theDan Gohman2007-07-312-2/+2
| | | | | | | | | mnemonics from their operands instead of single spaces. This makes the assembly output a little more consistent with various other compilers (f.e. GCC), and slightly easier to read. Also, update the regression tests accordingly. llvm-svn: 40648
* Don't use * in XFAIL line unless you want it to XFAIL on everything. I don't ↵Tanya Lattner2007-07-173-3/+3
| | | | | | believe you can use true regular expressions here. It will just look for those keywords. Please test this on sparc and see if they still are xfailed. llvm-svn: 39975
* XFAIL these on sparc-solarisGabor Greif2007-07-173-2/+8
| | | | llvm-svn: 39969
* For PR1558:Reid Spencer2007-07-171-26/+0
| | | | | | | | Move tests that have C/C++ sources into the appropriate directory. This allows them to be selected for testing based on whether llvm-gcc is present or not. llvm-svn: 39963
* Remove the trailing semicolon from function declarations in LLVM,Dan Gohman2007-07-161-1/+1
| | | | | | where it's interpreted as a comment, not part of the syntax. llvm-svn: 39920
* Skeleton of post-RA scheduler; doesn't do anything yet.Dale Johannesen2007-07-131-7/+7
| | | | | | | Change name of -sched option and DEBUG_TYPE to pre-RA-sched; adjust testcases. llvm-svn: 39816
* remove this bogus t-tChris Lattner2007-07-091-1/+0
| | | | llvm-svn: 38464
* Test that byte offsets are used to index into the listDuncan Sands2007-07-061-0/+1621
| | | | | | | of filter ids, and not simply the id index. Testing this requires at least 128 type infos! llvm-svn: 37941
* avoid ambiguity in target selectionChris Lattner2007-07-051-2/+0
| | | | llvm-svn: 37927
* Convert .cvsignore filesJohn Criswell2007-06-292-6/+0
| | | | llvm-svn: 37801
* Workaround for PR1508.Duncan Sands2007-06-152-1/+5
| | | | llvm-svn: 37597
* "Simplified" testcase for PR1422.Duncan Sands2007-06-061-0/+2864
| | | | llvm-svn: 37462
OpenPOWER on IntegriCloud