Added LLVM project notice to the top of every C++ source file.
[oota-llvm.git] / lib / Target / TargetMachine.cpp
index 2d0d330d8db38c4e0259ea7a3ee11ab6264ae4e3..b7c1b342e1263c1c3f5f8d5073279dba5c6a607c 100644 (file)
@@ -1,12 +1,19 @@
 //===-- TargetMachine.cpp - General Target Information ---------------------==//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 // This file describes the general parts of a Target machine.
-// This file also implements MachineCacheInfo.
+// This file also implements TargetCacheInfo.
 //
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/MachineCacheInfo.h"
+#include "llvm/Target/TargetCacheInfo.h"
 #include "llvm/Type.h"
 
 //---------------------------------------------------------------------------
 
 // function TargetMachine::findOptimalStorageSize 
 // 
-// Purpose:
-//   This default implementation assumes that all sub-word data items use
-//   space equal to optSizeForSubWordData, and all other primitive data
-//   items use space according to the type.
-//   
-unsigned int
-TargetMachine::findOptimalStorageSize(const Type* ty) const
-{
-  switch(ty->getPrimitiveID())
-    {
-    case Type::BoolTyID:
-    case Type::UByteTyID:
-    case Type::SByteTyID:     
-    case Type::UShortTyID:
-    case Type::ShortTyID:     
-      return optSizeForSubWordData;
-    
-    default:
-      return DataLayout.getTypeSize(ty);
-    }
+unsigned TargetMachine::findOptimalStorageSize(const Type *Ty) const {
+  // All integer types smaller than ints promote to 4 byte integers.
+  if (Ty->isIntegral() && Ty->getPrimitiveSize() < 4)
+    return 4;
+
+  return DataLayout.getTypeSize(Ty);
 }
 
 
 //---------------------------------------------------------------------------
-// class MachineCacheInfo 
+// class TargetCacheInfo 
 // 
 // Purpose:
 //   Describes properties of the target cache architecture.
 //---------------------------------------------------------------------------
 
-void MachineCacheInfo::Initialize() {
+void TargetCacheInfo::Initialize() {
   numLevels = 2;
   cacheLineSizes.push_back(16);  cacheLineSizes.push_back(32); 
   cacheSizes.push_back(1 << 15); cacheSizes.push_back(1 << 20);