From 7977a283e6e238ca9d4c958d2a2401cbd1b544d5 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Fri, 9 Nov 2001 02:11:03 +0000 Subject: [PATCH] Added class MachineCacheInfo. Also added function to convert float to int by copying via memory. llvm-svn: 1221 --- llvm/include/llvm/Target/MachineInstrInfo.h | 17 ++++++++++++++--- llvm/include/llvm/Target/TargetInstrInfo.h | 17 ++++++++++++++--- llvm/include/llvm/Target/TargetMachine.h | 2 ++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/llvm/include/llvm/Target/MachineInstrInfo.h b/llvm/include/llvm/Target/MachineInstrInfo.h index abe6a81362aa..465776b01582 100644 --- a/llvm/include/llvm/Target/MachineInstrInfo.h +++ b/llvm/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/llvm/include/llvm/Target/TargetInstrInfo.h b/llvm/include/llvm/Target/TargetInstrInfo.h index abe6a81362aa..465776b01582 100644 --- a/llvm/include/llvm/Target/TargetInstrInfo.h +++ b/llvm/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/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h index ee3effa280f7..4f0b934bb925 100644 --- a/llvm/include/llvm/Target/TargetMachine.h +++ b/llvm/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