llvm-6502/lib/Target/Alpha
Chris Lattner dfab291702 split "JumpTableDirective" (an existing hack) into a PIC and nonPIC
version.  This allows TAI implementations to specify the directive to use
based on the mode being codegen'd for.

The real fix for this is to remove JumpTableDirective, but I don't feel
like diving into the jumptable snarl just now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78709 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-11 20:30:58 +00:00
..
AsmPrinter make printInstruction return void since its result is omitted. Make the 2009-08-08 01:32:19 +00:00
TargetInfo Factor commonality in triple match routines into helper template for registering 2009-07-26 05:03:33 +00:00
Alpha.h Add new helpers for registering targets. 2009-07-25 06:49:55 +00:00
Alpha.td Switch Alpha over to the new call lowering style. New code mostly 2009-07-19 01:11:32 +00:00
AlphaBranchSelector.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
AlphaCallingConv.td Switch Alpha over to the new call lowering style. New code mostly 2009-07-19 01:11:32 +00:00
AlphaCodeEmitter.cpp r76102 added the MachineCodeEmitter::processDebugLoc call and called it from 2009-07-17 18:49:39 +00:00
AlphaInstrFormats.td Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning. 2008-12-03 18:15:48 +00:00
AlphaInstrInfo.cpp Remove unused member functions. 2009-07-24 07:43:59 +00:00
AlphaInstrInfo.h Remove unused member functions. 2009-07-24 07:43:59 +00:00
AlphaInstrInfo.td move this fp select into a pattern 2009-08-08 12:49:07 +00:00
AlphaISelDAGToDAG.cpp Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type. 2009-08-10 22:56:29 +00:00
AlphaISelLowering.cpp Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type. 2009-08-10 22:56:29 +00:00
AlphaISelLowering.h Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type. 2009-08-10 22:56:29 +00:00
AlphaJITInfo.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +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 llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +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 Normalize Subtarget constructors to take a target triple string instead of 2009-08-02 22:11:08 +00:00
AlphaSubtarget.h Normalize Subtarget constructors to take a target triple string instead of 2009-08-02 22:11:08 +00:00
AlphaTargetAsmInfo.cpp split "JumpTableDirective" (an existing hack) into a PIC and nonPIC 2009-08-11 20:30:58 +00:00
AlphaTargetAsmInfo.h alpha TAI doesn't need TM. 2009-08-02 04:46:05 +00:00
AlphaTargetMachine.cpp Move most targets TargetMachine constructor to only taking a target triple. 2009-08-02 23:37:13 +00:00
AlphaTargetMachine.h Move most targets TargetMachine constructor to only taking a target triple. 2009-08-02 23:37:13 +00:00
CMakeLists.txt Unbreak build 2009-07-19 01:33:04 +00:00
Makefile Unbreak build 2009-07-19 01:33:04 +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