aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Add XCore intrinsics for getid (returns thread id) and bitrev (reversesRichard Osborne2008-11-142-0/+16
| | | | | | | bits in a word). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59296 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnitDan Gohman2008-11-131-1/+1
| | | | | | | | | | | to carry a SmallVector of flagged nodes, just calculate the flagged nodes dynamically when they are needed. The local-liveness change is due to a trivial scheduling change where the scheduler arbitrary decision differently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59273 91177308-0d34-0410-b5e6-96231b3b80d8
* testcase for PR 1779.Dale Johannesen2008-11-131-0/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59268 91177308-0d34-0410-b5e6-96231b3b80d8
* Correct some thinkos in the expansion of ADD/SUBDuncan Sands2008-11-121-0/+14
| | | | | | | | when the target does not support ADDC/SUBC. This fixes PR3044. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59120 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the testb optimization so x86 also bootstraps.Dale Johannesen2008-11-121-1/+0
| | | | | | | | Reenable test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59101 91177308-0d34-0410-b5e6-96231b3b80d8
* fix another libgcc blockerAndrew Lenharth2008-11-111-0/+22
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59026 91177308-0d34-0410-b5e6-96231b3b80d8
* Un-XFAIL tests now that they're fixed.Bill Wendling2008-11-112-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59023 91177308-0d34-0410-b5e6-96231b3b80d8
* r59009 broke these tests. XFAIL for now.Bill Wendling2008-11-112-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59010 91177308-0d34-0410-b5e6-96231b3b80d8
* Temporarily revert r58979 and related patch. It's causing a failure in X86 ↵Bill Wendling2008-11-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | bootstrap: Comparing stages 2 and 3 warning: ./cc1-checksum.o differs warning: ./cc1obj-checksum.o differs warning: ./cc1objplus-checksum.o differs warning: ./cc1plus-checksum.o differs Bootstrap comparison failure! ./alias.o differs ./alloc-pool.o differs ./attribs.o differs ./bb-reorder.o differs ./bitmap.o differs ./build/errors.o differs ./build/genattrtab.o differs ./build/genautomata.o differs ./build/genemit.o differs ./build/genextract.o differs ... -bw git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59003 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR2667: add soft float support for sint_to_fp/uint_to_fpDuncan Sands2008-11-101-0/+55
| | | | | | | | where the argument is an apint, or smaller than the minimum size for which there is a libcall (i32). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58994 91177308-0d34-0410-b5e6-96231b3b80d8
* When promoting the result of fp_to_uint/fp_to_sint,Duncan Sands2008-11-101-10/+1
| | | | | | | | | | | | | | | | | | | inform the optimizers that the result must be zero/ sign extended from the smaller type. For example, if a fp to unsigned i16 is promoted to fp to i32, then we are allowed to assume that the extra 16 bits are zero (because the result of fp to i16 is undefined if the result does not fit in an i16). This is quite aggressive, but should help the optimizers produce better code. This requires correcting a test which thought that fp_to_uint is some kind of truncation, which it is not: in the testcase (which does fp to i1), either the fp value converts to 0 or 1 or the result is undefined, which is quite different to truncation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58991 91177308-0d34-0410-b5e6-96231b3b80d8
* Reenable test.Dale Johannesen2008-11-101-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58980 91177308-0d34-0410-b5e6-96231b3b80d8
* XFAIL this while waiting for a fix.Duncan Sands2008-11-091-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58934 91177308-0d34-0410-b5e6-96231b3b80d8
* CellSPU: Update expected counts on expected patternsScott Michel2008-11-091-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58927 91177308-0d34-0410-b5e6-96231b3b80d8
* Generated code for generic expansion of SETUGT etc.Dale Johannesen2008-11-081-0/+1
| | | | | | | | | | | is noticeably worse than previous PPC-specific code. Since the latter was also wrong in some cases and correctness is more important than efficiency, I'm disabling this test temporarily while I fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58876 91177308-0d34-0410-b5e6-96231b3b80d8
* Xfail an incorrect test.Dale Johannesen2008-11-081-0/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58875 91177308-0d34-0410-b5e6-96231b3b80d8
* Add basic test for XCore backendRichard Osborne2008-11-072-0/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58841 91177308-0d34-0410-b5e6-96231b3b80d8
* Testcase for testb optimization.Dale Johannesen2008-11-071-0/+25
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58827 91177308-0d34-0410-b5e6-96231b3b80d8
* Make ISel ignore dead nodes. The DAGCombiner normally eliminatesDan Gohman2008-11-051-0/+22
| | | | | | | | dead nodes, but in this case its missing one. Fixing the DAGCombiner is desirable, but it's somewhat involved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58777 91177308-0d34-0410-b5e6-96231b3b80d8
* Add more vector move low and zero-extend patterns.Evan Cheng2008-11-051-0/+15
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58752 91177308-0d34-0410-b5e6-96231b3b80d8
* Actually ARM / Mac OS X does have UINTTOFP_I64_F{64|32} libcalls.Evan Cheng2008-11-041-0/+17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58725 91177308-0d34-0410-b5e6-96231b3b80d8
* Custom lower bit_convert i64 -> f64 into FMDRR. This is now happening with ↵Evan Cheng2008-11-041-0/+29
| | | | | | legalizetypes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58714 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR3011: LegalizeTypes support for scalarizingDuncan Sands2008-11-041-0/+9
| | | | | | | SELECT_CC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58706 91177308-0d34-0410-b5e6-96231b3b80d8
* The ANDMask node folds to a constant, and isn't the node that needs toDan Gohman2008-11-031-0/+26
| | | | | | | | have its node id set. The new and and shift nodes are the nodes that need the IDs. This fixes PR2982. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58655 91177308-0d34-0410-b5e6-96231b3b80d8
* Change how extended types are represented in MVTs. Instead of fiddlingDan Gohman2008-11-031-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | bits, use a union of a SimpleValueType enum and a regular Type*. This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits. In most cases, this doesn't add significant overhead. There are places in codegen that use arrays of MVTs, so these are now larger, but they're small in common cases. This eliminates restrictions on the size of integer types and vector types that can be represented in codegen. As the included testcase demonstrates, it's now possible to codegen very large add operations. There are still some complications with using very large types. PR2880 is still open so they can't be used as return values on normal targets, there are no libcalls defined for very large integers so operations like multiply and divide aren't supported. This also introduces a minimal tablgen Type library, capable of handling IntegerType and VectorType. This will allow parts of TableGen that don't depend on using SimpleValueType values to handle arbitrary integer and vector types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58623 91177308-0d34-0410-b5e6-96231b3b80d8
* Make VAARG work with x86 long double (which isDuncan Sands2008-11-031-0/+17
| | | | | | | 10 bytes long, but is passed in 12/16 bytes). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58608 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a bunch of libcalls for ppcf128 that were somehowDuncan Sands2008-10-311-0/+37
| | | | | | | completely forgotten about when writing LegalizeTypes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58508 91177308-0d34-0410-b5e6-96231b3b80d8
* Use MOVSSmr instead of EXTRACTPSmr in the case of extractingDan Gohman2008-10-311-2/+10
| | | | | | | vector element 0 for a store, as it's smaller and faster. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58483 91177308-0d34-0410-b5e6-96231b3b80d8
* Testcase for PR2986.Duncan Sands2008-10-301-0/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58456 91177308-0d34-0410-b5e6-96231b3b80d8
* Resolve bug 2947: vararg-marked functions must spill registers R3-R79 to stackScott Michel2008-10-301-0/+8
| | | | | | | | | | so that va_start/va_arg/et.al. will walk arguments correctly for Cell SPU. N.B.: Because neither clang nor llvm-gcc-4.2 can be built for CellSPU, this is still unexorcised code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58415 91177308-0d34-0410-b5e6-96231b3b80d8
* add testcase for PR2964Chris Lattner2008-10-291-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58393 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR2977: LegalizeTypes support for expandingDuncan Sands2008-10-291-0/+10
| | | | | | | VAARG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58379 91177308-0d34-0410-b5e6-96231b3b80d8
* - More pre-split fixes: spill slot live interval computation bug; restore ↵Evan Cheng2008-10-292-1/+52
| | | | | | | | | point bug. - If a def is spilt, remember its spill index to allow its reuse. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58375 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix darwin ppc llvm-gcc build breakage: interceptDuncan Sands2008-10-281-0/+33
| | | | | | | | | | | ppcf128 to i32 conversion and expand it into a code sequence like in LegalizeDAG. This needs custom ppc lowering of FP_ROUND_INREG, so turn that on and make it work with LegalizeTypes. Probably PPC should simply custom lower the original conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58329 91177308-0d34-0410-b5e6-96231b3b80d8
* Turn off LegalizeTypes for this test for theDuncan Sands2008-10-281-1/+1
| | | | | | | moment, while waiting for a proper solution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58324 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a testcase provided by Bill in which the nodeDuncan Sands2008-10-281-0/+11
| | | | | | | | | id could end up being wrong mostly because of forgetting to remap new nodes that morphed into processed nodes through CSE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58323 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a nasty miscompilation of 176.gcc on linux/x86 where we synthesizedChris Lattner2008-10-281-0/+22
| | | | | | | | | | | | | a memset using 16-byte XMM stores, but where the stack realignment code didn't work. Until it does (PR2962) disable use of xmm regs in memcpy and memset formation for linux and other targets with insufficiently aligned stacks. This is part of PR2888 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58317 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid putting a split past the end of the live range; always shrink wrap ↵Evan Cheng2008-10-282-0/+73
| | | | | | live interval in the barrier mbb. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58309 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove val# defined by a remat'ed def that is now dead.Evan Cheng2008-10-271-0/+44
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58294 91177308-0d34-0410-b5e6-96231b3b80d8
* rename vec_spat -> vec_splat, pointed out by duncanChris Lattner2008-10-271-0/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58260 91177308-0d34-0410-b5e6-96231b3b80d8
* Turn on LegalizeTypes, the new type legalizationDuncan Sands2008-10-2725-33/+25
| | | | | | | | codegen infrastructure, by default. Please report any breakage to the mailing lists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58232 91177308-0d34-0410-b5e6-96231b3b80d8
* For now, don't split live intervals around x87 stack register barriers. ↵Evan Cheng2008-10-271-0/+34
| | | | | | FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58230 91177308-0d34-0410-b5e6-96231b3b80d8
* remove eh output from this test.Chris Lattner2008-10-261-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58196 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not shrink wrap live interval in a mbb if it's livein any of its ↵Evan Cheng2008-10-261-0/+36
| | | | | | successor blocks. The mbb can be revisited again after all of the successors are processed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58184 91177308-0d34-0410-b5e6-96231b3b80d8
* Handle cases where there aren't uses in the barrier mbb.Evan Cheng2008-10-251-0/+56
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58174 91177308-0d34-0410-b5e6-96231b3b80d8
* Related to PR2911, reject as invalid non-pointer GC roots.Gordon Henriksen2008-10-251-0/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58143 91177308-0d34-0410-b5e6-96231b3b80d8
* If val# def is ~0U, meaning it's defined by a PHI, and it's previously ↵Evan Cheng2008-10-251-0/+24
| | | | | | split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58129 91177308-0d34-0410-b5e6-96231b3b80d8
* Be kind to non-x86 hosts.Dale Johannesen2008-10-242-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58113 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix translateX86CC: if SetCCOpcode is SETULE andDuncan Sands2008-10-241-0/+17
| | | | | | | | | | | | | | | LHS is a foldable load, then LHS and RHS are swapped and SetCCOpcode is changed to SETUGT. But the later code is expecting operands to be the wrong way round for SETUGT, but they are not in this case, resulting in an inverted compare. The solution is to move the load normalization before the correction for SETUGT. This bug was tickled by LegalizeTypes which happened to legalize the testcase slightly differently to LegalizeDAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58092 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid splitting an interval multiple times; avoid splitting ↵Evan Cheng2008-10-243-0/+75
| | | | | | re-materializable val# (for now). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58068 91177308-0d34-0410-b5e6-96231b3b80d8