[llvm-commits] CVS: llvm/include/llvm/Target/TargetLowering.h

Chris Lattner lattner at cs.uiuc.edu
Tue Feb 21 16:56:13 PST 2006



Changes in directory llvm/include/llvm/Target:

TargetLowering.h updated: 1.52 -> 1.53
---
Log message:

split register class handling from explicit physreg handling.


---
Diffs of the changes:  (+16 -6)

 TargetLowering.h |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)


Index: llvm/include/llvm/Target/TargetLowering.h
diff -u llvm/include/llvm/Target/TargetLowering.h:1.52 llvm/include/llvm/Target/TargetLowering.h:1.53
--- llvm/include/llvm/Target/TargetLowering.h:1.52	Tue Feb 21 17:10:29 2006
+++ llvm/include/llvm/Target/TargetLowering.h	Tue Feb 21 18:56:01 2006
@@ -481,6 +481,7 @@
   //
   
   enum ConstraintType {
+    C_Register,            // Constraint represents a single register.
     C_RegisterClass,       // Constraint represents one or more registers.
     C_Other,               // Something else.
     C_Unknown              // Unsupported constraint.
@@ -491,13 +492,22 @@
   /// constraint it is for this target.
   virtual ConstraintType getConstraintType(char ConstraintLetter) const;
   
-  /// getRegForInlineAsmConstraint - Given a constraint letter or register
-  /// name (e.g. "r" or "edx"), return a list of registers that can be used to
-  /// satisfy the constraint.  This should only be used for physregs and 
-  /// C_RegisterClass constraints.
+  
+  /// getRegClassForInlineAsmConstraint - Given a constraint letter (e.g. "r"),
+  /// return a list of registers that can be used to satisfy the constraint.
+  /// This should only be used for C_RegisterClass constraints.
   virtual std::vector<unsigned> 
-  getRegForInlineAsmConstraint(const std::string &Constraint,
-                               MVT::ValueType VT) const;
+  getRegClassForInlineAsmConstraint(const std::string &Constraint,
+                                    MVT::ValueType VT) const;
+
+  /// getRegForInlineAsmConstraint - Given a physical register constraint (e.g.
+  /// {edx}), return the register number and the register class for the
+  /// register.  This should only be used for C_Register constraints.  On error,
+  /// this returns a register number of 0.
+  virtual std::pair<unsigned, const TargetRegisterClass*> 
+    getRegForInlineAsmConstraint(const std::string &Constraint,
+                                 MVT::ValueType VT) const;
+  
   
   /// isOperandValidForConstraint - Return true if the specified SDOperand is
   /// valid for the specified target constraint letter.






More information about the llvm-commits mailing list