summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Infrastructure for getting the machine code size of a function and an ↵Nicolas Geoffray2008-04-1612-208/+612
| | | | | | instruction. X86, PowerPC and ARM are implemented llvm-svn: 49809
* Initialize X863DNowLevel.Evan Cheng2008-04-161-0/+1
| | | | llvm-svn: 49808
* Ongoing work on improving the instruction selection infrastructure:Roman Levenstein2008-04-161-6/+6
| | | | | | | | | | Rename SDOperandImpl back to SDOperand. Introduce the SDUse class that represents a use of the SDNode referred by an SDOperand. Now it is more similar to Use/Value classes. Patch is approved by Dan Gohman. llvm-svn: 49795
* Add support for the form of the SSE41 extractps instruction thatDan Gohman2008-04-162-5/+6
| | | | | | puts its result in a 32-bit GPR. llvm-svn: 49762
* Recreate the size SDNode instead of reusing the old one in the x86Dan Gohman2008-04-161-2/+2
| | | | | | | | 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. llvm-svn: 49761
* Remove X86_64SRet; it isn't used anymore.Dan Gohman2008-04-161-11/+0
| | | | llvm-svn: 49759
* Add movd instructions to move from MMX registersDan Gohman2008-04-151-0/+12
| | | | | | to 64-bit GPR registers on x86-64. llvm-svn: 49757
* Change Divided flag to Split, as suggested by EvanNicolas Geoffray2008-04-151-2/+2
| | | | llvm-svn: 49715
* Remove unnecessary <sstream> includes.Dan Gohman2008-04-141-1/+0
| | | | llvm-svn: 49681
* Fix const-correctness issues with the SrcValue handling in theDan Gohman2008-04-144-10/+10
| | | | | | memory intrinsic expansion code. llvm-svn: 49666
* Reverse sense of unwind-tables option. This meansDale Johannesen2008-04-143-6/+6
| | | | | | | stack tracebacks on Darwin x86-64 won't work by default; nevertheless, everybody but me thinks this is a good idea. llvm-svn: 49663
* Add a divided flag for the first piece of an argument divided into mulitple ↵Nicolas Geoffray2008-04-131-12/+12
| | | | | | parts. Fixes PR1643 llvm-svn: 49611
* Provide option for stack alignment overrideAnton Korobeynikov2008-04-121-0/+7
| | | | llvm-svn: 49593
* This patch corrects the handling of byval arguments for tailcallArnold Schwaighofer2008-04-122-29/+148
| | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 49584
* Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not LegalDan Gohman2008-04-1211-221/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 49572
* Fix a bug that prevented x86-64 from using rep.movsq forDan Gohman2008-04-121-2/+2
| | | | | | 8-byte-aligned data. llvm-svn: 49571
* 80 col fixNate Begeman2008-04-121-1/+1
| | | | llvm-svn: 49569
* add a note, this is actually not too bad to implement.Chris Lattner2008-04-101-1/+7
| | | | llvm-svn: 49466
* move the x86-32 part of PR2108 here.Chris Lattner2008-04-101-0/+48
| | | | llvm-svn: 49465
* Fix the x86-64 side of PR2108 by adding a v2f64 version ofChris Lattner2008-04-101-0/+10
| | | | | | | | 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. llvm-svn: 49463
* Make isVectorClearMaskLegal's operand list const.Dan Gohman2008-04-092-4/+5
| | | | llvm-svn: 49446
* Add XMM1 as a second return value register for f32 and f64 on x86-64. ThisDan Gohman2008-04-091-4/+4
| | | | | | | is needed for the x86-64-ABI handling of structs that contain floating-point members that are returned by value. llvm-svn: 49441
* Add DX as a second return value register for i16 on x86.Dan Gohman2008-04-091-1/+1
| | | | llvm-svn: 49440
* Rename -disable-required-unwind-tables to unwind-tables-optional.Dale Johannesen2008-04-081-2/+2
| | | | llvm-svn: 49389
* Handle the situation in 2008-01-25-EmptyFunction.llDale Johannesen2008-04-081-10/+11
| | | | | | correctly when unwind info is being generated. llvm-svn: 49366
* Implement new llc flag -disable-required-unwind-tables.Dale Johannesen2008-04-083-3/+12
| | | | | | Corresponds to -fno-unwind-tables (usually default in gcc). llvm-svn: 49361
* Rename MemOperand to MachineMemOperand. This was suggested byDan Gohman2008-04-072-3/+3
| | | | | | | review feedback from Chris quite a while ago. No functionality change. llvm-svn: 49348
* Re-commit of the r48822, where the infinite looping problem discoveredRoman Levenstein2008-04-073-8/+8
| | | | | | by Dan Gohman is fixed. llvm-svn: 49330
* API changes for class Use size reduction, wave 1.Gabor Greif2008-04-061-1/+1
| | | | | | | | Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
* Favors pshufd over shufps when shuffling elements from one vector. pshufd is ↵Evan Cheng2008-04-052-48/+52
| | | | | | faster than shufps. llvm-svn: 49244
* strdup needs <cstring>. This fixes a build error with g++-4.3.Torok Edwin2008-04-041-0/+1
| | | | llvm-svn: 49218
* Re-enable SSE4.Evan Cheng2008-04-031-3/+2
| | | | llvm-svn: 49158
* Fix x86-64 encoding bug. REX prefix must always follow 0x0F prefix. For ↵Evan Cheng2008-04-031-10/+13
| | | | | | example, extractps in 64bit mode: 66 REX 0F 3A 17, not 66 0F 3A REX 17. llvm-svn: 49157
* CosmeticEvan Cheng2008-04-031-2/+2
| | | | llvm-svn: 49156
* Temporarily disabling SSE4 until we fix the encoding issues.Evan Cheng2008-04-031-2/+3
| | | | llvm-svn: 49129
* Backing out 48222 temporarily.Evan Cheng2008-04-033-8/+8
| | | | llvm-svn: 49124
* Suppress the 128-bit integer typedef on 32-bit targets, becauseDan Gohman2008-04-021-6/+12
| | | | | | it causes compile errors. llvm-svn: 49122
* Partial CBackend support for 128-bit integers. This is neededDan Gohman2008-04-021-2/+9
| | | | | | | now that llvm-gcc is lowering appropriately-sized struct returns to i128 on x86-64. llvm-svn: 49109
* Cosmetic changes per EH patch review feedback.Dale Johannesen2008-04-022-7/+7
| | | | llvm-svn: 49096
* Add new CC lowering rule: provide a list of registers, which can be 'shadowed',Anton Korobeynikov2008-04-022-6/+21
| | | | | | | when some another register is used for argument passing. Currently is used on Win64. llvm-svn: 49079
* Recommitting EH patch; this should answer most of theDale Johannesen2008-04-025-10/+16
| | | | | | | | | | | | | | | review feedback. -enable-eh is still accepted but doesn't do anything. EH intrinsics use Dwarf EH if the target supports that, and are handled by LowerInvoke otherwise. The separation of the EH table and frame move data is, I think, logically figured out, but either one still causes full EH info to be generated (not sure how to split the metadata correctly). MachineModuleInfo::needsFrameInfo is no longer used and is removed. llvm-svn: 49064
* ReMat of load from stub in pic mode extends the life of pic base. Currently ↵Evan Cheng2008-04-011-0/+6
| | | | | | spiller doesn't do a good job of estimating the impact. Disable for now. llvm-svn: 49059
* Remove unnecessary and non-deterministic checking code. Re-enable remat of ↵Evan Cheng2008-04-011-11/+0
| | | | | | load from gv stub. llvm-svn: 49054
* Don't use __bzero for memset if the second argument isn't zero.Dan Gohman2008-04-011-1/+2
| | | | llvm-svn: 49050
* Speculatively micro-optimize memory-zeroing calls on Darwin 10.Dan Gohman2008-04-013-5/+35
| | | | llvm-svn: 49048
* Revert 49006 for the moment.Dale Johannesen2008-04-014-14/+8
| | | | llvm-svn: 49046
* Disabling remat of load from gv stub (temporarily) again to fix llvmgcc ↵Evan Cheng2008-04-011-0/+3
| | | | | | bootstrap miscompare. llvm-svn: 49037
* Unbreak ARM / Thumb soft FP support.Evan Cheng2008-04-011-6/+10
| | | | llvm-svn: 49012
* Accept 'y' constraint (MMX) in inline asm.Dale Johannesen2008-04-011-0/+1
| | | | llvm-svn: 49011
* Emit exception handling info for functions which areDale Johannesen2008-03-314-8/+14
| | | | | | | | | | | not marked nounwind, or for all functions when -enable-eh is set, provided the target supports Dwarf EH. llvm-gcc generates nounwind in the right places; other FEs will need to do so also. Given such a FE, -enable-eh should no longer be needed. llvm-svn: 49006
OpenPOWER on IntegriCloud