blob: 24788e3c4d9d153409cc92063ab408c36c154c0d [file] [log] [blame]
Chris Lattnerb26bcc52001-09-14 05:34:53 +00001//===-- TargetMachine.cpp - General Target Information ---------------------==//
2//
3// This file describes the general parts of a Target machine.
Chris Lattnerf27eeea2002-12-29 02:50:35 +00004// This file also implements TargetCacheInfo.
Chris Lattnerb26bcc52001-09-14 05:34:53 +00005//
6//===----------------------------------------------------------------------===//
Vikram S. Advedaae6992001-07-21 12:42:08 +00007
Vikram S. Adve4a48c332001-11-09 02:20:18 +00008#include "llvm/Target/TargetMachine.h"
Chris Lattnerf27eeea2002-12-29 02:50:35 +00009#include "llvm/Target/TargetCacheInfo.h"
Chris Lattner93fa7052002-10-28 23:55:33 +000010#include "llvm/Type.h"
Vikram S. Advee5b25652002-09-20 00:52:43 +000011
Vikram S. Advee1f72802002-09-16 15:39:26 +000012//---------------------------------------------------------------------------
Vikram S. Adve44a853c2001-07-28 04:09:37 +000013// class TargetMachine
Vikram S. Advedaae6992001-07-21 12:42:08 +000014//
15// Purpose:
Vikram S. Adve44a853c2001-07-28 04:09:37 +000016// Machine description.
17//
Vikram S. Advedaae6992001-07-21 12:42:08 +000018//---------------------------------------------------------------------------
19
Vikram S. Adve0799fc42001-09-18 12:58:33 +000020
Vikram S. Adve44a853c2001-07-28 04:09:37 +000021// function TargetMachine::findOptimalStorageSize
22//
Chris Lattner62eaf7e2002-10-29 21:47:50 +000023unsigned TargetMachine::findOptimalStorageSize(const Type *Ty) const {
Chris Lattner37ec8112003-04-26 19:47:36 +000024 // All integer types smaller than ints promote to 4 byte integers.
25 if (Ty->isIntegral() && Ty->getPrimitiveSize() < 4)
26 return 4;
Chris Lattner62eaf7e2002-10-29 21:47:50 +000027
28 return DataLayout.getTypeSize(Ty);
Vikram S. Advedaae6992001-07-21 12:42:08 +000029}
30
Vikram S. Adve44a853c2001-07-28 04:09:37 +000031
32//---------------------------------------------------------------------------
Chris Lattnerf27eeea2002-12-29 02:50:35 +000033// class TargetCacheInfo
Vikram S. Adve4a48c332001-11-09 02:20:18 +000034//
35// Purpose:
36// Describes properties of the target cache architecture.
37//---------------------------------------------------------------------------
38
Chris Lattnerf27eeea2002-12-29 02:50:35 +000039void TargetCacheInfo::Initialize() {
Vikram S. Adve4a48c332001-11-09 02:20:18 +000040 numLevels = 2;
41 cacheLineSizes.push_back(16); cacheLineSizes.push_back(32);
42 cacheSizes.push_back(1 << 15); cacheSizes.push_back(1 << 20);
43 cacheAssoc.push_back(1); cacheAssoc.push_back(4);
44}