[llvm-commits] CVS: llvm/lib/Target/Target.td

Chris Lattner lattner at cs.uiuc.edu
Wed Jul 30 00:51:01 PDT 2003


Changes in directory llvm/lib/Target:

Target.td updated: 1.4 -> 1.5

---
Log message:

Add all of the necessary classes to describe the contents of the MRegister.h implementation
for a target. 


---
Diffs of the changes:

Index: llvm/lib/Target/Target.td
diff -u llvm/lib/Target/Target.td:1.4 llvm/lib/Target/Target.td:1.5
--- llvm/lib/Target/Target.td:1.4	Tue Jul 29 18:07:13 2003
+++ llvm/lib/Target/Target.td	Wed Jul 30 00:50:12 2003
@@ -5,9 +5,14 @@
 //
 //===----------------------------------------------------------------------===//
 
+
+//===----------------------------------------------------------------------===//
+//
 // Value types - These values correspond to the register types defined in the
 // ValueTypes.h file.
+
 class ValueType { string Namespace = "MVT"; }
+
 def i1   : ValueType;    // One bit boolean value
 def i8   : ValueType;    // 8-bit integer value
 def i16  : ValueType;    // 16-bit integer value
@@ -19,10 +24,44 @@
 def f80  : ValueType;    // 80-bit floating point value
 def f128 : ValueType;    // 128-bit floating point value
 
+
+//===----------------------------------------------------------------------===//
+// Register file description - These classes are used to fill in the target
+// description classes in llvm/Target/MRegisterInfo.h
+
+
+// Register - You should define one instance of this class for each register in
+// the target machine.
+//
 class Register {
   string Namespace = "";
-  ValueType RegType;
 }
+
+// RegisterAliases - You should define instances of this class to indicate which
+// registers in the register file are aliased together.  This allows the code
+// generator to be careful not to put two values with overlapping live ranges
+// into registers which alias.
+//
+class RegisterAliases<Register reg, list<Register> aliases> {
+  Register Reg = reg;
+  list<Register> Aliases = aliases;
+}
+
+// RegisterClass - Now that all of the registers are defined, and aliases
+// between registers are defined, specify which registers belong to which
+// register classes.  This also defines the default allocation order of
+// registers by register allocators.
+//
+class RegisterClass<ValueType regType, int alignment, list<Register> regList> {
+  ValueType RegType = regType;
+  int Alignment = alignment;
+  list<Register> MemberList = regList;
+}
+
+
+//===----------------------------------------------------------------------===//
+// Instruction set description - 
+//
 
 class Instruction {
   string Name;          // The opcode string for this instruction





More information about the llvm-commits mailing list