Add method CreateCodeToCopyIntToFloat.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 8 Nov 2001 05:22:15 +0000 (05:22 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 8 Nov 2001 05:22:15 +0000 (05:22 +0000)
Include handle to TargetMachine in each Machine...Info object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1200 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/MachineInstrInfo.h
include/llvm/Target/TargetInstrInfo.h

index 696738a15157b64356969b2e11c4d6a5e2c3f716..abe6a81362aa1372b90490e7e3054b0ecb4bd807 100644 (file)
@@ -72,13 +72,17 @@ struct MachineInstrDescriptor {
 
 
 class MachineInstrInfo : public NonCopyableV {
+public:
+  const TargetMachine& target;
+
 protected:
   const MachineInstrDescriptor* desc;  // raw array to allow static init'n
   unsigned int descSize;               // number of entries in the desc array
   unsigned int numRealOpCodes;         // number of non-dummy op codes
   
 public:
-  MachineInstrInfo(const MachineInstrDescriptor *desc, unsigned descSize,
+  MachineInstrInfo(const TargetMachine& tgt,
+                   const MachineInstrDescriptor *desc, unsigned descSize,
                   unsigned numRealOpCodes);
   virtual ~MachineInstrInfo();
   
@@ -231,6 +235,19 @@ public:
                                       Instruction* dest,
                                       vector<MachineInstr*>& minstrVec,
                                       vector<TmpInstruction*>& temps) const =0;
+
+  // Create an instruction sequence to copy an integer value `val' from an
+  // integer to a floating point register `dest'.  val must be an integral
+  // type.  dest must be a Float or Double.
+  // The generated instructions are returned in `minstrVec'.
+  // Any temp. registers (TmpInstruction) created are returned in `tempVec'.
+  // 
+  virtual void  CreateCodeToCopyIntToFloat(Method* method,
+                                           Value* val,
+                                           Instruction* dest,
+                                           vector<MachineInstr*>& minstrVec,
+                                           vector<TmpInstruction*>& tempVec,
+                                           TargetMachine& target) const = 0;
 };
 
 #endif
index 696738a15157b64356969b2e11c4d6a5e2c3f716..abe6a81362aa1372b90490e7e3054b0ecb4bd807 100644 (file)
@@ -72,13 +72,17 @@ struct MachineInstrDescriptor {
 
 
 class MachineInstrInfo : public NonCopyableV {
+public:
+  const TargetMachine& target;
+
 protected:
   const MachineInstrDescriptor* desc;  // raw array to allow static init'n
   unsigned int descSize;               // number of entries in the desc array
   unsigned int numRealOpCodes;         // number of non-dummy op codes
   
 public:
-  MachineInstrInfo(const MachineInstrDescriptor *desc, unsigned descSize,
+  MachineInstrInfo(const TargetMachine& tgt,
+                   const MachineInstrDescriptor *desc, unsigned descSize,
                   unsigned numRealOpCodes);
   virtual ~MachineInstrInfo();
   
@@ -231,6 +235,19 @@ public:
                                       Instruction* dest,
                                       vector<MachineInstr*>& minstrVec,
                                       vector<TmpInstruction*>& temps) const =0;
+
+  // Create an instruction sequence to copy an integer value `val' from an
+  // integer to a floating point register `dest'.  val must be an integral
+  // type.  dest must be a Float or Double.
+  // The generated instructions are returned in `minstrVec'.
+  // Any temp. registers (TmpInstruction) created are returned in `tempVec'.
+  // 
+  virtual void  CreateCodeToCopyIntToFloat(Method* method,
+                                           Value* val,
+                                           Instruction* dest,
+                                           vector<MachineInstr*>& minstrVec,
+                                           vector<TmpInstruction*>& tempVec,
+                                           TargetMachine& target) const = 0;
 };
 
 #endif