Coverage Report

Created: 2018-11-12 17:33

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/CodeGen/CostTable.h
Line
Count
Source
1
//===-- CostTable.h - Instruction Cost Table handling -----------*- C++ -*-===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
///
10
/// \file
11
/// Cost tables and simple lookup functions
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CODEGEN_COSTTABLE_H_
16
#define LLVM_CODEGEN_COSTTABLE_H_
17
18
#include "llvm/ADT/ArrayRef.h"
19
#include "llvm/ADT/STLExtras.h"
20
#include "llvm/Support/MachineValueType.h"
21
22
namespace llvm {
23
24
/// Cost Table Entry
25
struct CostTblEntry {
26
  int ISD;
27
  MVT::SimpleValueType Type;
28
  unsigned Cost;
29
};
30
31
/// Find in cost table, TypeTy must be comparable to CompareTy by ==
32
inline const CostTblEntry *CostTableLookup(ArrayRef<CostTblEntry> Tbl,
33
774k
                                           int ISD, MVT Ty) {
34
10.8M
  auto I = find_if(Tbl, [=](const CostTblEntry &Entry) {
35
10.8M
    return ISD == Entry.ISD && 
Ty == Entry.Type1.18M
;
36
10.8M
  });
37
774k
  if (I != Tbl.end())
38
190k
    return I;
39
583k
40
583k
  // Could not find an entry.
41
583k
  return nullptr;
42
583k
}
43
44
/// Type Conversion Cost Table
45
struct TypeConversionCostTblEntry {
46
  int ISD;
47
  MVT::SimpleValueType Dst;
48
  MVT::SimpleValueType Src;
49
  unsigned Cost;
50
};
51
52
/// Find in type conversion cost table, TypeTy must be comparable to CompareTy
53
/// by ==
54
inline const TypeConversionCostTblEntry *
55
ConvertCostTableLookup(ArrayRef<TypeConversionCostTblEntry> Tbl,
56
188k
                       int ISD, MVT Dst, MVT Src) {
57
9.38M
  auto I = find_if(Tbl, [=](const TypeConversionCostTblEntry &Entry) {
58
9.38M
    return ISD == Entry.ISD && 
Src == Entry.Src1.02M
&&
Dst == Entry.Dst43.7k
;
59
9.38M
  });
60
188k
  if (I != Tbl.end())
61
31.3k
    return I;
62
156k
63
156k
  // Could not find an entry.
64
156k
  return nullptr;
65
156k
}
66
67
} // namespace llvm
68
69
#endif /* LLVM_CODEGEN_COSTTABLE_H_ */