mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-03 14:21:30 +00:00
Moving Cost Tables up to share with other targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
64
include/llvm/Target/CostTable.h
Normal file
64
include/llvm/Target/CostTable.h
Normal file
@@ -0,0 +1,64 @@
|
||||
//===-- CostTable.h - Instruction Cost Table handling -----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
///
|
||||
/// \file
|
||||
/// \brief Cost tables and simple lookup functions
|
||||
///
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_TARGET_COSTTABLE_H_
|
||||
#define LLVM_TARGET_COSTTABLE_H_
|
||||
|
||||
namespace llvm {
|
||||
|
||||
/// Cost Table Entry
|
||||
template <class TypeTy>
|
||||
struct CostTblEntry {
|
||||
int ISD;
|
||||
TypeTy Type;
|
||||
unsigned Cost;
|
||||
};
|
||||
|
||||
/// Find in cost table, TypeTy must be comparable by ==
|
||||
template <class TypeTy>
|
||||
int CostTableLookup(const CostTblEntry<TypeTy> *Tbl,
|
||||
unsigned len, int ISD, TypeTy Ty) {
|
||||
for (unsigned int i = 0; i < len; ++i)
|
||||
if (Tbl[i].ISD == ISD && Tbl[i].Type == Ty)
|
||||
return i;
|
||||
|
||||
// Could not find an entry.
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// Type Conversion Cost Table
|
||||
template <class TypeTy>
|
||||
struct TypeConversionCostTblEntry {
|
||||
int ISD;
|
||||
TypeTy Dst;
|
||||
TypeTy Src;
|
||||
unsigned Cost;
|
||||
};
|
||||
|
||||
/// Find in type conversion cost table, TypeTy must be comparable by ==
|
||||
template <class TypeTy>
|
||||
int ConvertCostTableLookup(const TypeConversionCostTblEntry<TypeTy> *Tbl,
|
||||
unsigned len, int ISD, TypeTy Dst, TypeTy Src) {
|
||||
for (unsigned int i = 0; i < len; ++i)
|
||||
if (Tbl[i].ISD == ISD && Tbl[i].Src == Src && Tbl[i].Dst == Dst)
|
||||
return i;
|
||||
|
||||
// Could not find an entry.
|
||||
return -1;
|
||||
}
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
|
||||
#endif /* LLVM_TARGET_COSTTABLE_H_ */
|
||||
Reference in New Issue
Block a user