summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Doh. Alignment is in bytes, not in bits.Evan Cheng2008-05-141-2/+2
| | | | llvm-svn: 51092
* Change target-specific classes to use more precise static types.Dan Gohman2008-05-1424-52/+49
| | | | | | | This eliminates the need for several awkward casts, including the last dynamic_cast under lib/Target. llvm-svn: 51091
* add a noteChris Lattner2008-05-131-0/+18
| | | | llvm-svn: 51062
* - Fix the pasto in the fix for a previous pasto.Evan Cheng2008-05-131-4/+4
| | | | | | - Incorporate Chris' comment suggestion. llvm-svn: 51061
* add a noteChris Lattner2008-05-131-0/+24
| | | | llvm-svn: 51060
* Fix one more encoding bug.Nate Begeman2008-05-131-1/+1
| | | | llvm-svn: 51057
* - Don't treat anyext 16-bit load as a 32-bit load if it's volatile.Evan Cheng2008-05-131-2/+2
| | | | | | - Correct a pasto. llvm-svn: 51054
* Adding files for Microchip's PIC16 target.Sanjiv Gupta2008-05-1323-0/+3323
| | | | | | | | | | | | | | | | | A brief description about PIC16: =============================== PIC16 is an 8-bit microcontroller with only one 8-bit register which is the accumulator. All arithmetic/load/store operations are 8-bit only. The architecture has two address spaces: program and data. The program memory is divided into 2K pages and the data memory is divided into banks of 128 byte, with only 80 usable bytes, resulting in an non-contiguous data memory. It supports direct data memory access (by specifying the address as part of the instruction) and indirect data and program memory access (in an unorthodox fashion which utilize a 16 bit pointer register). Two classes of registers exist: (8-bit class which is only one accumulator) (16-bit class, which contains one or more 16 bit pointer(s)) llvm-svn: 51027
* Instead of a vector load, shuffle and then extract an element. Load the ↵Evan Cheng2008-05-132-50/+1
| | | | | | | | | | | element from address with an offset. pshufd $1, (%rdi), %xmm0 movd %xmm0, %eax => movl 4(%rdi), %eax llvm-svn: 51026
* Fix and encoding error in the psrad xmm, imm8 instruction.Nate Begeman2008-05-131-1/+1
| | | | llvm-svn: 51020
* On x86, it's safe to treat i32 load anyext as a normal i32 load. Ditto for ↵Evan Cheng2008-05-132-27/+28
| | | | | | i8 anyext load to i16. llvm-svn: 51019
* Clean up the use of static and anonymous namespaces. This turned upDan Gohman2008-05-1315-159/+155
| | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
* Teach Legalize how to scalarize VSETCCNate Begeman2008-05-121-0/+27
| | | | | | Teach X86 a few more vsetcc patterns. Custom lowering for unsupported ones is next. llvm-svn: 51009
* Xform bitconvert(build_pair(load a, load b)) to a single load if the load ↵Evan Cheng2008-05-122-73/+5
| | | | | | locations are at the right offset from each other. llvm-svn: 51008
* Constify the machine instruction passed into theBill Wendling2008-05-122-2/+3
| | | | | | "is{Trivially,Really}ReMaterializable" methods. llvm-svn: 51001
* Initial X86 codegen support for VSETCC.Nate Begeman2008-05-123-11/+44
| | | | llvm-svn: 51000
* Fix a copy+paste bug; pseudo-instructions shouldn't haveDan Gohman2008-05-121-21/+14
| | | | | | encoding information. llvm-svn: 50997
* Refactor isConsecutiveLoad from X86 to TargetLowering so DAG combiner can ↵Evan Cheng2008-05-122-67/+27
| | | | | | make use of it. llvm-svn: 50991
* Add support for vicmp/vfcmp codegen, more legalize support coming.Nate Begeman2008-05-121-0/+1
| | | | | | This is necessary to unbreak the build. llvm-svn: 50988
* Fix a compile error on compilers that still want a return valueDan Gohman2008-05-121-0/+1
| | | | | | in a non-void function that calls abort. llvm-svn: 50969
* Add noteAnton Korobeynikov2008-05-111-0/+38
| | | | llvm-svn: 50959
* When transforming a vector_shuffle to a load, the base address must not be ↵Evan Cheng2008-05-101-0/+2
| | | | | | an undef. llvm-svn: 50940
* For now, abort when an ISD::VAARG is encountered on x86-64, ratherDan Gohman2008-05-102-3/+18
| | | | | | | | | than silently generate invalid code. llvm-gcc does not currently use VAArgInst; it lowers va_arg in the front-end. llvm-svn: 50930
* Some clean up.Evan Cheng2008-05-101-16/+18
| | | | llvm-svn: 50929
* If movl top bits are undef, let it be selected to movlps, etc.Evan Cheng2008-05-101-2/+1
| | | | llvm-svn: 50928
* Add a pattern to do move the low element of a v4f32 and zero extend the rest.Evan Cheng2008-05-091-0/+2
| | | | llvm-svn: 50922
* Handle a few more cases of folding load i64 into xmm and zero top bits.Evan Cheng2008-05-095-29/+90
| | | | | | Note, some of the code will be moved into target independent part of DAG combiner in a subsequent patch. llvm-svn: 50918
* Use movq to move low half of XMM register and zero-extend the rest.Evan Cheng2008-05-081-1/+2
| | | | llvm-svn: 50874
* Handle vector move / load which zero the destination register top bits (i.e. ↵Evan Cheng2008-05-085-144/+158
| | | | | | movd, movq, movss (addr), movsd (addr)) with X86 specific dag combine. llvm-svn: 50838
* Output correct exception handling and frame infoDuncan Sands2008-05-072-3/+0
| | | | | | | | | | | | | | | | | | on x86-64 linux. This causes no regressions on 32 bit linux and 32 bit ppc. More tests pass on 64 bit ppc with no regressions. I didn't turn on eh on 64 bit linux because the intrinsics needed to compile the eh runtime aren't done yet. But if you turn it on and link with the mainline runtime then eh seems to work fine on x86-64 linux with this patch. Thanks to Dale for testing. The main point of the patch is that if you output that some object is encoded using 4 bytes you had better not output 8 bytes for it: the patch makes everything consistent. llvm-svn: 50825
* Match things like 'armv5tejl-unknown-linux-gnu' for PR2290Chris Lattner2008-05-061-1/+2
| | | | llvm-svn: 50698
* Make several variable declarations static.Dan Gohman2008-05-061-2/+2
| | | | llvm-svn: 50696
* add a micro optzn.Chris Lattner2008-05-051-0/+18
| | | | llvm-svn: 50681
* Improved generated code for atomic operatorsMon P Wang2008-05-051-16/+16
| | | | llvm-svn: 50677
* Code clean up. No functionality change.Evan Cheng2008-05-051-20/+21
| | | | llvm-svn: 50675
* Added addition atomic instrinsics and, or, xor, min, and max.Mon P Wang2008-05-055-10/+308
| | | | llvm-svn: 50663
* Fix IsLinux being uninitialized on non-Linux targets.Dan Gohman2008-05-051-0/+1
| | | | llvm-svn: 50660
* Fix 80col violationAnton Korobeynikov2008-05-051-1/+1
| | | | llvm-svn: 50654
* Use a dedicated IsLinux flag instead of an ELFLinux TargetType.Dan Gohman2008-05-053-10/+15
| | | | llvm-svn: 50649
* Add AsmPrinter support for emitting a directive to declare thatDan Gohman2008-05-054-2/+18
| | | | | | | | | the code being generated does not require an executable stack. Also, add target-specific code to make use of this on Linux on x86. llvm-svn: 50634
* Add General Dynamic TLS model for X86-64. Some parts looks really ugly (look ↵Anton Korobeynikov2008-05-044-16/+62
| | | | | | | | for tlsaddr pattern), but should work. Work is in progress, more models will follow llvm-svn: 50630
* Select vector shift with non-immediate i32 shift amount operand by first ↵Evan Cheng2008-05-041-1/+90
| | | | | | moving the operand into the right register. llvm-svn: 50619
* Add separate intrinsics for MMX / SSE shifts with i32 integer operands. This ↵Evan Cheng2008-05-032-72/+44
| | | | | | allow us to simplify the horribly complicated matching code. llvm-svn: 50601
* Undo r50574. We are already ensuring the folded load address is 16-byte aligned.Evan Cheng2008-05-021-0/+8
| | | | llvm-svn: 50578
* 80 column violation.Evan Cheng2008-05-021-6/+12
| | | | llvm-svn: 50575
* Not safe folding a load + FsXORPSrr into FsXORPSrm. It's loading a FR64 ↵Evan Cheng2008-05-021-8/+0
| | | | | | value but the load folding variant expects a 16-byte aligned address. llvm-svn: 50574
* Tail call optimization improvements:Arnold Schwaighofer2008-04-3011-288/+847
| | | | | | | | | | | | | | | | | | | | | | | | | | | Move platform independent code (lowering of possibly overwritten arguments, check for tail call optimization eligibility) from target X86ISelectionLowering.cpp to TargetLowering.h and SelectionDAGISel.cpp. Initial PowerPC tail call implementation: Support ppc32 implemented and tested (passes my tests and test-suite llvm-test). Support ppc64 implemented and half tested (passes my tests). On ppc tail call optimization is performed if caller and callee are fastcc call is a tail call (in tail call position, call followed by ret) no variable argument lists or byval arguments option -tailcallopt is enabled Supported: * non pic tail calls on linux/darwin * module-local tail calls on linux(PIC/GOT)/darwin(PIC) * inter-module tail calls on darwin(PIC) If constraints are not met a normal call will be emitted. A test checking the argument lowering behaviour on x86-64 was added. llvm-svn: 50477
* Bug fixes and updates for CellSPU, syncing up with trunk. Most notableScott Michel2008-04-307-53/+133
| | | | | | | | fixes are target-specific lowering of frame indices, fix constants generated for the FSMBI instruction, and fixing SPUTargetLowering::computeMaskedBitsFor- TargetNode(). llvm-svn: 50462
* Don't do stupid things: doInitialization(Module&) is not applicable to ↵Anton Korobeynikov2008-04-291-17/+2
| | | | | | ModulePass :) llvm-svn: 50433
* Fix the SVOffset values for loads and stores produced byDan Gohman2008-04-284-16/+18
| | | | | | | memcpy/memset expansion. It was a bug for the SVOffset value to be used in the actual address calculations. llvm-svn: 50359
OpenPOWER on IntegriCloud