|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 51092 | 
| | 
| 
| 
| 
| 
| 
| | This eliminates the need for several awkward casts, including
the last dynamic_cast under lib/Target.
llvm-svn: 51091 | 
| | 
| 
| 
| | llvm-svn: 51062 | 
| | 
| 
| 
| 
| 
| | - Incorporate Chris' comment suggestion.
llvm-svn: 51061 | 
| | 
| 
| 
| | llvm-svn: 51060 | 
| | 
| 
| 
| | llvm-svn: 51057 | 
| | 
| 
| 
| 
| 
| | - Correct a pasto.
llvm-svn: 51054 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | element from address with an offset.
        pshufd $1, (%rdi), %xmm0
        movd %xmm0, %eax
=>
        movl 4(%rdi), %eax
llvm-svn: 51026 | 
| | 
| 
| 
| | llvm-svn: 51020 | 
| | 
| 
| 
| 
| 
| | i8 anyext load to i16.
llvm-svn: 51019 | 
| | 
| 
| 
| 
| 
| 
| | several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 | 
| | 
| 
| 
| 
| 
| | Teach X86 a few more vsetcc patterns.  Custom lowering for unsupported ones is next.
llvm-svn: 51009 | 
| | 
| 
| 
| 
| 
| | locations are at the right offset from each other.
llvm-svn: 51008 | 
| | 
| 
| 
| 
| 
| | "is{Trivially,Really}ReMaterializable" methods.
llvm-svn: 51001 | 
| | 
| 
| 
| | llvm-svn: 51000 | 
| | 
| 
| 
| 
| 
| | encoding information.
llvm-svn: 50997 | 
| | 
| 
| 
| 
| 
| | make use of it.
llvm-svn: 50991 | 
| | 
| 
| 
| 
| 
| | This is necessary to unbreak the build.
llvm-svn: 50988 | 
| | 
| 
| 
| 
| 
| | in a non-void function that calls abort.
llvm-svn: 50969 | 
| | 
| 
| 
| | llvm-svn: 50959 | 
| | 
| 
| 
| 
| 
| | an undef.
llvm-svn: 50940 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | than silently generate invalid code.
llvm-gcc does not currently use VAArgInst; it lowers va_arg in the
front-end.
llvm-svn: 50930 | 
| | 
| 
| 
| | llvm-svn: 50929 | 
| | 
| 
| 
| | llvm-svn: 50928 | 
| | 
| 
| 
| | llvm-svn: 50922 | 
| | 
| 
| 
| 
| 
| | Note, some of the code will be moved into target independent part of DAG combiner in a subsequent patch.
llvm-svn: 50918 | 
| | 
| 
| 
| | llvm-svn: 50874 | 
| | 
| 
| 
| 
| 
| | movd, movq, movss (addr), movsd (addr)) with X86 specific dag combine.
llvm-svn: 50838 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 50698 | 
| | 
| 
| 
| | llvm-svn: 50696 | 
| | 
| 
| 
| | llvm-svn: 50681 | 
| | 
| 
| 
| | llvm-svn: 50677 | 
| | 
| 
| 
| | llvm-svn: 50675 | 
| | 
| 
| 
| | llvm-svn: 50663 | 
| | 
| 
| 
| | llvm-svn: 50660 | 
| | 
| 
| 
| | llvm-svn: 50654 | 
| | 
| 
| 
| | llvm-svn: 50649 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| | for tlsaddr pattern),
but should work. Work is in progress, more models will follow
llvm-svn: 50630 | 
| | 
| 
| 
| 
| 
| | moving the operand into the right register.
llvm-svn: 50619 | 
| | 
| 
| 
| 
| 
| | allow us to simplify the horribly complicated matching code.
llvm-svn: 50601 | 
| | 
| 
| 
| | llvm-svn: 50578 | 
| | 
| 
| 
| | llvm-svn: 50575 | 
| | 
| 
| 
| 
| 
| | value but the load folding variant expects a 16-byte aligned address.
llvm-svn: 50574 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| | fixes are target-specific lowering of frame indices, fix constants generated
for the FSMBI instruction, and fixing SPUTargetLowering::computeMaskedBitsFor-
TargetNode().
llvm-svn: 50462 | 
| | 
| 
| 
| 
| 
| | ModulePass :)
llvm-svn: 50433 | 
| | 
| 
| 
| 
| 
| 
| | memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.
llvm-svn: 50359 |