llvm-6502/lib/Target/Alpha
Tilmann Scheller 6b61cd185e Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.
With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put 
into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.

The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-03 06:44:53 +00:00
..
AsmPrinter Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
Alpha.h Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
Alpha.td Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files. 2008-11-24 07:34:46 +00:00
AlphaBranchSelector.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
AlphaCodeEmitter.cpp Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron Gray 2009-06-01 19:57:37 +00:00
AlphaInstrFormats.td Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning. 2008-12-03 18:15:48 +00:00
AlphaInstrInfo.cpp Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details. 2009-07-01 01:59:31 +00:00
AlphaInstrInfo.h Convert Alpha and Mips to use a MachineFunctionInfo subclass to 2009-06-03 20:30:14 +00:00
AlphaInstrInfo.td Add an int64_t variant of abs, for host environments 2009-05-13 00:24:22 +00:00
AlphaISelDAGToDAG.cpp Convert Alpha and Mips to use a MachineFunctionInfo subclass to 2009-06-03 20:30:14 +00:00
AlphaISelLowering.cpp Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call. 2009-07-03 06:44:53 +00:00
AlphaISelLowering.h Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call. 2009-07-03 06:44:53 +00:00
AlphaJITInfo.cpp Privatize this map. 2009-06-25 18:13:04 +00:00
AlphaJITInfo.h Privatize this map. 2009-06-25 18:13:04 +00:00
AlphaLLRP.cpp Remove non-DebugLoc versions of BuildMI from Alpha and Cell. 2009-02-13 02:30:42 +00:00
AlphaMachineFunctionInfo.h Add explicit keywords. 2009-06-05 23:05:51 +00:00
AlphaRegisterInfo.cpp Committed the wrong version in my last commit. 2009-06-26 00:17:05 +00:00
AlphaRegisterInfo.h Committed the wrong version in my last commit. 2009-06-26 00:17:05 +00:00
AlphaRegisterInfo.td Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
AlphaRelocations.h Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
AlphaSchedule.td Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
AlphaSubtarget.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
AlphaSubtarget.h Propagate CPU string out of SubtargetFeatures 2009-05-23 19:50:50 +00:00
AlphaTargetAsmInfo.cpp Alpha always requires global relocations to be r/w regardless of PIC. 2009-03-29 17:14:14 +00:00
AlphaTargetAsmInfo.h Alpha always requires global relocations to be r/w regardless of PIC. 2009-03-29 17:14:14 +00:00
AlphaTargetMachine.cpp Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
AlphaTargetMachine.h Remove unused AsmPrinter OptLevel argument, and propogate. 2009-07-01 01:48:54 +00:00
CMakeLists.txt CMake build fixes, from Xerxes Ranby 2009-07-02 18:53:52 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
README.txt Readme 2007-03-31 15:05:44 +00:00

***

add gcc builtins for alpha instructions


***

custom expand byteswap into nifty 
extract/insert/mask byte/word/longword/quadword low/high
sequences

***

see if any of the extract/insert/mask operations can be added

***

match more interesting things for cmovlbc cmovlbs (move if low bit clear/set)

***

lower srem and urem

remq(i,j):  i - (j * divq(i,j)) if j != 0
remqu(i,j): i - (j * divqu(i,j)) if j != 0
reml(i,j):  i - (j * divl(i,j)) if j != 0
remlu(i,j): i - (j * divlu(i,j)) if j != 0

***

add crazy vector instructions (MVI):

(MIN|MAX)(U|S)(B8|W4) min and max, signed and unsigned, byte and word
PKWB, UNPKBW pack/unpack word to byte
PKLB UNPKBL pack/unpack long to byte
PERR pixel error (sum accross bytes of bytewise abs(i8v8 a - i8v8 b))

cmpbytes bytewise cmpeq of i8v8 a and i8v8 b (not part of MVI extentions)

this has some good examples for other operations that can be synthesised well 
from these rather meager vector ops (such as saturating add).
http://www.alphalinux.org/docs/MVI-full.html