summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add support for legalization of vector trunc-store where the saved scalar ↵Nadav Rotem2011-10-111-13/+13
| | | | | | type is illegal (for example, v2i16 on systems where the smallest store size is i32) llvm-svn: 141661
* Cleanup the trunc-store legalization code and add asserts.Nadav Rotem2011-10-111-68/+87
| | | | llvm-svn: 141659
* Moved type construction out of the loop and added an assert on the legality ↵Nadav Rotem2011-10-011-10/+10
| | | | | | of the type. Formatted lines to the 80 char limit. llvm-svn: 140952
* Revert r140463; The patch assumes that <4 x i1> is saved to memory as 4 x i8,Nadav Rotem2011-09-271-10/+1
| | | | | | while the decision is to bit-pack small values. llvm-svn: 140601
* [Vector-Select] Address one of the problems in 10902.Nadav Rotem2011-09-241-1/+10
| | | | | | | | | | When generating the trunc-store of i1's, we need to use the vector type and not the scalar type. This patch fixes the assertion in CodeGen/Generic/bool-vector.ll when running with -promote-elements. llvm-svn: 140463
* Some legalization fixes for atomic load and store.Eli Friedman2011-09-151-1/+1
| | | | llvm-svn: 139851
* Split the init.trampoline intrinsic, which currently combines GCC'sDuncan Sands2011-09-061-1/+2
| | | | | | | | | | | | | | | | | | | | init.trampoline and adjust.trampoline intrinsics, into two intrinsics like in GCC. While having one combined intrinsic is tempting, it is not natural because typically the trampoline initialization needs to be done in one function, and the result of adjust trampoline is needed in a different (nested) function. To get around this llvm-gcc hacks the nested function lowering code to insert an additional parent variable holding the adjust.trampoline result that can be accessed from the child function. Dragonegg doesn't have the luxury of tweaking GCC code, so it stored the result of adjust.trampoline in the memory GCC set aside for the trampoline itself (this is always available in the child function), and set up some new memory (using an alloca) to hold the trampoline. Unfortunately this breaks Go which allocates trampoline memory on the heap and wants to use it even after the parent has exited (!). Rather than doing even more hacks to get Go working, it seemed best to just use two intrinsics like in GCC. Patch mostly by Sanjoy Das. llvm-svn: 139140
* Revert r131152, r129796, r129761. This code is currently consideredDan Gohman2011-09-011-52/+43
| | | | | | | | to be unreliable on platforms which require memcpy calls, and it is complicating broader legalize cleanups. It is hoped that these cleanups will make memcpy byval easier to implement in the future. llvm-svn: 138977
* Atomic load/store on ARM/Thumb.Eli Friedman2011-08-261-0/+26
| | | | | | | | | | | | I don't really like the patterns, but I'm having trouble coming up with a better way to handle them. I plan on making other targets use the same legalization ARM-without-memory-barriers is using... it's not especially efficient, but if anyone cares, it's not that hard to fix for a given target if there's some better lowering. llvm-svn: 138621
* Basic x86 code generation for atomic load and store instructions.Eli Friedman2011-08-241-0/+5
| | | | llvm-svn: 138478
* Code generation for 'fence' instruction.Eli Friedman2011-07-271-0/+2
| | | | llvm-svn: 136283
* Revert r136156, which broke several buildbots.Dan Gohman2011-07-271-1/+14
| | | | llvm-svn: 136206
* Delete unnecessarily cautious LastCALLSEQ code.Dan Gohman2011-07-261-14/+1
| | | | llvm-svn: 136156
* land David Blaikie's patch to de-constify Type, with a few tweaks.Chris Lattner2011-07-181-14/+14
| | | | llvm-svn: 135375
* LegalizeDAG doesn't need its own copy of this enum.Dan Gohman2011-07-151-7/+1
| | | | llvm-svn: 135320
* Delete LegalizeDAG's own version of isTypeLegal and getTypeActionDan Gohman2011-07-151-26/+16
| | | | | | and just use the ones from TargetLowering directly. llvm-svn: 135318
* Delete an unused variable and a redundant assert.Dan Gohman2011-07-151-9/+1
| | | | llvm-svn: 135311
* Modernize comments.Dan Gohman2011-07-151-7/+4
| | | | llvm-svn: 135305
* Add an intrinsic and codegen support for fused multiply-accumulate. The intentCameron Zwarich2011-07-081-0/+4
| | | | | | is to use this for architectures that have a native FMA instruction. llvm-svn: 134742
* Add a testcase for checking the integer-promotion of many different vectorNadav Rotem2011-06-141-0/+167
| | | | | | | | | | | | | types (with power of two types such as 8,16,32 .. 512). Fix a bug in the integer promotion of bitcast nodes. Enable integer expanding only if the target of the conversion is an integer (when the type action is scalarize). Add handling to the legalization of vector load/store in cases where the saved vector is integer-promoted. llvm-svn: 132985
* Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'Nadav Rotem2011-05-271-1/+1
| | | | | | code in one place. Re-apply 131534 and fix the multi-step promotion of integers. llvm-svn: 132217
* Revert commit 131534 since it seems to have broken several buildbots.Duncan Sands2011-05-181-1/+1
| | | | | | | | Original log entry: Refactor getActionType and getTypeToTransformTo ; place all of the 'decision' code in one place. llvm-svn: 131536
* Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'Nadav Rotem2011-05-181-1/+1
| | | | | | code in one place. llvm-svn: 131534
* Misc. code cleanups.Dan Gohman2011-05-171-60/+59
| | | | llvm-svn: 131497
* Delete unused variables.Dan Gohman2011-05-161-7/+5
| | | | llvm-svn: 131430
* Trim #includes.Dan Gohman2011-05-161-7/+0
| | | | llvm-svn: 131429
* Fix whitespace and 80-column violations.Dan Gohman2011-05-161-10/+10
| | | | llvm-svn: 131428
* Since I can't reproduce the failures from 131261, re-trying with aStuart Hastings2011-05-131-2/+6
| | | | | | simplified version. <rdar://problem/9298790> llvm-svn: 131274
* Revert 131266 and 131261 due to buildbot complaints.Stuart Hastings2011-05-131-9/+2
| | | | | | rdar://problem/9298790 llvm-svn: 131269
* Non-fast-isel followup to 129634; correctly handle branches controlledStuart Hastings2011-05-121-2/+9
| | | | | | | | | | | | | by non-CMP expressions. The executable test case (129821) would test this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC tester. Alas, the ARM assembly would be very difficult to check with FileCheck. The thumb2-cbnz.ll test is affected; it generates larger code (tst.w vs. cmp #0), but I believe the new version is correct. rdar://problem/9298790 llvm-svn: 131261
* Correctly walk through nested and adjacent CALLSEQ_START nodes. NoStuart Hastings2011-05-101-1/+2
| | | | | | | test case; I've only seen this on a release branch, and I can't get it to reproduce on trunk. rdar://problem/7662569 llvm-svn: 131152
* Rewrite the expander for umulo/smulo to remember to sign extend the inputEric Christopher2011-04-201-10/+58
| | | | | | | | | manually and pass all (now) 4 arguments to the mul libcall. Add a new ExpandLibCall for just this (copied gratuitously from type legalization). Fixes rdar://9292577 llvm-svn: 129842
* Delete unnecessary variable. <rdar://problem/7662569>Stuart Hastings2011-04-191-11/+4
| | | | llvm-svn: 129796
* Support nested CALLSEQ_BEGIN/END; necessary for ARM byval support. ↵Stuart Hastings2011-04-191-42/+56
| | | | | | <rdar://problem/7662569> llvm-svn: 129761
* Fix divmod libcall lowering. Convert to {S|U}DIVREM first and then expand ↵Evan Cheng2011-04-161-71/+65
| | | | | | the node to a libcall. rdar://9280991 llvm-svn: 129633
* Fix a ton of comment typos found by codespell. Patch byChris Lattner2011-04-151-1/+1
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129558
* Revert 123704; it broke threaded LLVM.Stuart Hastings2011-04-051-9/+15
| | | | llvm-svn: 128868
* Issue libcalls __udivmod*i4 / __divmod*i4 for div / rem pairs.Evan Cheng2011-04-011-19/+141
| | | | | | rdar://8911343 llvm-svn: 128696
* Use the correct LHS type when determining the legalization of a shift's RHS ↵Owen Anderson2011-03-071-2/+4
| | | | | | type. llvm-svn: 127163
* Allow targets to specify a the type of the RHS of a shift parameterized on ↵Owen Anderson2011-02-251-20/+29
| | | | | | the type of the LHS. llvm-svn: 126518
* Do not lose debug info of an inlined function argument even if the argument ↵Devang Patel2011-02-181-0/+3
| | | | | | | | is only used through GEPs. This time with a fix that avoids using invalidated DenseMap iterator. llvm-svn: 125984
* Roll out r125794 to help diagnose the llvm-gcc-i386-linux-selfhost failure.Cameron Zwarich2011-02-181-3/+0
| | | | llvm-svn: 125830
* Do not lose debug info of an inlined function argument even if the argument ↵Devang Patel2011-02-171-0/+3
| | | | | | is only used through GEPs. llvm-svn: 125794
* Swap VT and DebugLoc operands of getExtLoad() for consistency withStuart Hastings2011-02-161-18/+18
| | | | | | other getNode() methods. Radar 9002173. llvm-svn: 125665
* Speculatively revert r124380.Devang Patel2011-01-271-3/+0
| | | | llvm-svn: 124397
* While legalizing SDValues do not drop SDDbgValues, trasfer them to new legal ↵Devang Patel2011-01-271-0/+3
| | | | | | | | nodes. Take 2. This includes fix for dragonegg crash. llvm-svn: 124380
* Initialize variable to get rid of clang warning.Bill Wendling2011-01-261-1/+1
| | | | llvm-svn: 124331
* Revert r124302Devang Patel2011-01-261-3/+0
| | | | llvm-svn: 124320
* [AVX] Add INSERT_SUBVECTOR and support it on x86. This provides aDavid Greene2011-01-261-0/+48
| | | | | | | | default implementation for x86, going through the stack in a similr fashion to how the codegen implements BUILD_VECTOR. Eventually this will get matched to VINSERTF128 if AVX is available. llvm-svn: 124307
* While legalizing SDValues do not drop SDDbgValues, trasfer them to new legal ↵Devang Patel2011-01-261-0/+3
| | | | | | nodes. llvm-svn: 124302
OpenPOWER on IntegriCloud