fix FP selects
[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 // Subtarget Features
21 //===----------------------------------------------------------------------===//
22
23 def FeatureCIX : SubtargetFeature<"CIX", "bool", "HasCT",
24                                   "Enable CIX extentions">;
25 def FeatureFIX : SubtargetFeature<"FIX", "bool", "HasF2I",
26                                   "Enable FIX extentions">;
27
28 //===----------------------------------------------------------------------===//
29 // Register File Description
30 //===----------------------------------------------------------------------===//
31
32 include "AlphaRegisterInfo.td"
33
34 //===----------------------------------------------------------------------===//
35 // Instruction Descriptions
36 //===----------------------------------------------------------------------===//
37
38 include "AlphaInstrInfo.td"
39
40 def AlphaInstrInfo : InstrInfo {
41   let PHIInst = PHI;
42
43   // Define how we want to layout our target-specific information field.
44  // let TSFlagsFields = [];
45  // let TSFlagsShifts = [];
46 }
47
48 //===----------------------------------------------------------------------===//
49 // Alpha Processor Definitions
50 //===----------------------------------------------------------------------===//
51
52 def : Processor<"generic", NoItineraries, []>;
53 def : Processor<"pca56"  , NoItineraries, []>;
54 def : Processor<"ev56"   , NoItineraries, []>;
55 def : Processor<"ev6"    , NoItineraries, [FeatureFIX]>;
56 def : Processor<"ev67"   , NoItineraries, [FeatureFIX, FeatureCIX]>;
57
58 //===----------------------------------------------------------------------===//
59 // The Alpha Target
60 //===----------------------------------------------------------------------===//
61
62
63 def Alpha : Target {
64   // Pointers on Alpha are 64-bits in size.
65   let PointerType = i64;
66
67   let CalleeSavedRegisters = 
68         //saved regs
69         [R9, R10, R11, R12, R13, R14, 
70         //Frame pointer
71 //      R15, 
72         //return address
73 //      R26, 
74         //Stack Pointer
75 //      R30,
76          F2, F3, F4, F5, F6, F7, F8, F9];
77
78   // Pull in Instruction Info:
79   let InstructionSet = AlphaInstrInfo;
80 }