blob: 68fdc36ba326845fdb62a5f49eeb9d8b637057a2 [file] [log] [blame]
Misha Brukmanbb053ce2003-05-29 18:48:17 +00001//===- Sparc.td - Target Description for Sparc V9 Target --------*- C++ -*-===//
2// vim:ft=cpp
3//===----------------------------------------------------------------------===//
4
5//===----------------------------------------------------------------------===//
6// Target-Independent interface
7//===----------------------------------------------------------------------===//
8
Chris Lattner845ed842003-07-28 04:24:59 +00009
10// Value types - These values correspond to the register types defined in the
Chris Lattner6a561be2003-07-29 23:02:49 +000011// ValueTypes.h file.
12class ValueType { string Namespace = "MVT"; }
Chris Lattner845ed842003-07-28 04:24:59 +000013def i1 : ValueType; // One bit boolean value
14def i8 : ValueType; // 8-bit integer value
15def i16 : ValueType; // 16-bit integer value
16def i32 : ValueType; // 32-bit integer value
17def i64 : ValueType; // 64-bit integer value
18def i128 : ValueType; // 128-bit integer value
19def f32 : ValueType; // 32-bit floating point value
20def f64 : ValueType; // 64-bit floating point value
21def f80 : ValueType; // 80-bit floating point value
22def f128 : ValueType; // 128-bit floating point value
23
Misha Brukmanbb053ce2003-05-29 18:48:17 +000024class Register {
25 string Namespace = "";
Chris Lattner845ed842003-07-28 04:24:59 +000026 ValueType RegType;
Misha Brukmanbb053ce2003-05-29 18:48:17 +000027}
28
29class Instruction {
30 string Name; // The opcode string for this instruction
31 string Namespace = "";
32
33 list<Register> Uses = []; // Default to using no non-operand registers
34 list<Register> Defs = []; // Default to modifying no non-operand registers
35
36 // These bits capture information about the high-level semantics of the
37 // instruction.
Chris Lattner6a561be2003-07-29 23:02:49 +000038 bit isReturn = 0; // Is this instruction a return instruction?
39 bit isBranch = 0; // Is this instruction a branch instruction?
40 bit isCall = 0; // Is this instruction a call instruction?
41 bit isTwoAddress = 0; // Is this a two address instruction?
42 bit isTerminator = 0; // Is this part of the terminator for a basic block?
Misha Brukmanbb053ce2003-05-29 18:48:17 +000043}