1 //===-- TargetMachine.cpp - General Target Information ---------------------==//
2 //
3 // This file describes the general parts of a Target machine.
4 // This file also implements TargetCacheInfo.
5 //
6 //===----------------------------------------------------------------------===//
7 
8 #include "llvm/Target/TargetMachine.h"
9 #include "llvm/Target/TargetCacheInfo.h"
10 #include "llvm/Type.h"
11 
12 //---------------------------------------------------------------------------
13 // class TargetMachine
14 //
15 // Purpose:
16 //   Machine description.
17 //
18 //---------------------------------------------------------------------------
19 
20 
21 // function TargetMachine::findOptimalStorageSize
22 //
23 // Purpose:
24 //   This default implementation assumes that all sub-word data items use
25 //   space equal to optSizeForSubWordData, and all other primitive data
26 //   items use space according to the type.
27 //
28 unsigned TargetMachine::findOptimalStorageSize(const Type *Ty) const {
29   // Round integral values smaller than SubWordDataSize up to SubWordDataSize
30   if (Ty->isIntegral() &&
31       Ty->getPrimitiveSize() < DataLayout.getSubWordDataSize())
32     return DataLayout.getSubWordDataSize();
33 
34   return DataLayout.getTypeSize(Ty);
35 }
36 
37 
38 //---------------------------------------------------------------------------
39 // class TargetCacheInfo
40 //
41 // Purpose:
42 //   Describes properties of the target cache architecture.
43 //---------------------------------------------------------------------------
44 
45 void TargetCacheInfo::Initialize() {
46   numLevels = 2;
47   cacheLineSizes.push_back(16);  cacheLineSizes.push_back(32);
48   cacheSizes.push_back(1 << 15); cacheSizes.push_back(1 << 20);
49   cacheAssoc.push_back(1);       cacheAssoc.push_back(4);
50 }
51