Rename ConstPoolVal -> Constant
[oota-llvm.git] / include / llvm / Target / TargetCacheInfo.h
1 // $Id$ -*-c++-*-
2 //***************************************************************************
3 // File:
4 //      MachineCacheInfo.h
5 // 
6 // Purpose:
7 //      Describes properties of the target cache architecture.
8 //**************************************************************************/
9
10 #ifndef LLVM_TARGET_MACHINECACHEINFO_H
11 #define LLVM_TARGET_MACHINECACHEINFO_H
12
13 #include "llvm/Target/TargetMachine.h"
14 #include "Support/DataTypes.h"
15 #include <vector>
16
17
18 //---------------------------------------------------------------------------
19 // class MachineCacheInfo 
20 // 
21 // Purpose:
22 //   Describes properties of the target cache architecture.
23 //---------------------------------------------------------------------------
24
25 class MachineCacheInfo : public NonCopyableV {
26 public:
27   const TargetMachine& target;
28   
29 protected:
30   unsigned int           numLevels;
31   vector<unsigned short> cacheLineSizes;
32   vector<unsigned int>   cacheSizes;
33   vector<unsigned short> cacheAssoc;
34   
35 public:
36   /*ctor*/          MachineCacheInfo    (const TargetMachine& tgt);
37   /*dtor*/ virtual ~MachineCacheInfo    () {}
38   
39   // Default parameters are:
40   //    NumLevels    = 2
41   //    L1: LineSize 16, Cache Size 32KB, Direct-mapped (assoc = 1)
42   //    L2: LineSize 32, Cache Size 1 MB, 4-way associative
43   // NOTE: Cache levels are numbered from 1 as above, not from 0.
44   // 
45   virtual  void     Initialize          (); // subclass to override defaults
46   
47   unsigned int      getNumCacheLevels   () const {
48     return numLevels;
49   }
50   unsigned short    getCacheLineSize    (unsigned level)  const {
51     assert(level <= cacheLineSizes.size() && "Invalid cache level");
52     return cacheLineSizes[level-1];
53   }
54   unsigned int      getCacheSize        (unsigned level)  const {
55     assert(level <= cacheSizes.size() && "Invalid cache level");
56     return cacheSizes[level-1];
57   }
58   unsigned short    getCacheAssoc       (unsigned level)  const {
59     assert(level <= cacheAssoc.size() && "Invalid cache level");
60     return cacheAssoc[level];
61   }
62 };
63
64
65 //---------------------------------------------------------------------------
66
67 #endif