diff --git a/include/llvm/Target/MachineInstrInfo.h b/include/llvm/Target/MachineInstrInfo.h index abe6a81362a..465776b0158 100644 --- a/include/llvm/Target/MachineInstrInfo.h +++ b/include/llvm/Target/MachineInstrInfo.h @@ -236,9 +236,9 @@ public: vector& minstrVec, vector& 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. + // Create an instruction sequence to copy an integer value `val' + // to a floating point value `dest' by copying to memory and back. + // 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'. // @@ -248,6 +248,17 @@ public: vector& minstrVec, vector& tempVec, TargetMachine& target) const = 0; + + // Similarly, create an instruction sequence to copy an FP value + // `val' to an integer value `dest' by copying to memory and back. + // See the previous function for information about return values. + // + virtual void CreateCodeToCopyFloatToInt(Method* method, + Value* val, + Instruction* dest, + vector& minstrVec, + vector& tempVec, + TargetMachine& target) const = 0; }; #endif diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h index abe6a81362a..465776b0158 100644 --- a/include/llvm/Target/TargetInstrInfo.h +++ b/include/llvm/Target/TargetInstrInfo.h @@ -236,9 +236,9 @@ public: vector& minstrVec, vector& 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. + // Create an instruction sequence to copy an integer value `val' + // to a floating point value `dest' by copying to memory and back. + // 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'. // @@ -248,6 +248,17 @@ public: vector& minstrVec, vector& tempVec, TargetMachine& target) const = 0; + + // Similarly, create an instruction sequence to copy an FP value + // `val' to an integer value `dest' by copying to memory and back. + // See the previous function for information about return values. + // + virtual void CreateCodeToCopyFloatToInt(Method* method, + Value* val, + Instruction* dest, + vector& minstrVec, + vector& tempVec, + TargetMachine& target) const = 0; }; #endif diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h index ee3effa280f..4f0b934bb92 100644 --- a/include/llvm/Target/TargetMachine.h +++ b/include/llvm/Target/TargetMachine.h @@ -16,6 +16,7 @@ class MachineInstrDescriptor; class MachineSchedInfo; class MachineRegInfo; class MachineFrameInfo; +class MachineCacheInfo; //--------------------------------------------------------------------------- // Data types used to define information about a single machine instruction @@ -65,6 +66,7 @@ public: virtual const MachineSchedInfo& getSchedInfo() const = 0; virtual const MachineRegInfo& getRegInfo() const = 0; virtual const MachineFrameInfo& getFrameInfo() const = 0; + virtual const MachineCacheInfo& getCacheInfo() const = 0; // // Data storage information