Let me introduce you to the early stages of the llvm backend for the alpha processor
[oota-llvm.git] / lib / Target / Alpha / Alpha.td
1 //===- Alpha.td - Describe the Alpha Target Machine ----*- tablegen -*-===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 //
11 //===----------------------------------------------------------------------===//
12
13 // Get the target-independent interfaces which we are implementing...
14 //
15 include "../Target.td"
16
17 //Alpha is little endian
18
19 //===----------------------------------------------------------------------===//
20 // Register File Description
21 //===----------------------------------------------------------------------===//
22
23 include "AlphaRegisterInfo.td"
24
25 //===----------------------------------------------------------------------===//
26 // Instruction Descriptions
27 //===----------------------------------------------------------------------===//
28
29 include "AlphaInstrInfo.td"
30
31 def AlphaInstrInfo : InstrInfo {
32   let PHIInst = PHI;
33
34   // Define how we want to layout our target-specific information field.
35  // let TSFlagsFields = [];
36  // let TSFlagsShifts = [];
37 }
38
39 def Alpha : Target {
40   // Pointers on Alpha are 64-bits in size.
41   let PointerType = i64;
42
43   let CalleeSavedRegisters = 
44         //saved regs
45         [R9, R10, R11, R12, R13, R14, 
46         //Frame pointer
47         R15, 
48         //return address
49         R26, 
50         //Stack Pointer
51         R30,
52          F2, F3, F4, F5, F6, F7, F8, F9];
53
54   // Pull in Instruction Info:
55   let InstructionSet = AlphaInstrInfo;
56 }