Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/include/llvm/Target/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
/// \brief Cost tables and simple lookup functions
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_TARGET_COSTTABLE_H_
16
#define LLVM_TARGET_COSTTABLE_H_
17
18
#include "llvm/ADT/ArrayRef.h"
19
#include "llvm/ADT/STLExtras.h"
20
#include "llvm/CodeGen/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
109k
                                           int ISD, MVT Ty) {
34
1.40M
  auto I = find_if(Tbl, [=](const CostTblEntry &Entry) {
35
123k
    return ISD == Entry.ISD && Ty == Entry.Type;
36
1.40M
  });
37
109k
  if (I != Tbl.end())
38
9.67k
    return I;
39
109k
40
109k
  // Could not find an entry.
41
99.6k
  return nullptr;
42
109k
}
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
300k
                       int ISD, MVT Dst, MVT Src) {
57
15.1M
  auto I = find_if(Tbl, [=](const TypeConversionCostTblEntry &Entry) {
58
15.1M
    return ISD == Entry.ISD && 
Src == Entry.Src1.80M
&&
Dst == Entry.Dst86.5k
;
59
15.1M
  });
60
300k
  if (I != Tbl.end())
61
61.8k
    return I;
62
300k
63
300k
  // Could not find an entry.
64
239k
  return nullptr;
65
300k
}
66
67
} // namespace llvm
68
69
70
#endif /* LLVM_TARGET_COSTTABLE_H_ */