LCOV - code coverage report
Current view: top level - lib/CodeGen/GlobalISel - LegalizeMutations.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 9 9 100.0 %
Date: 2018-10-20 13:21:21 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- lib/CodeGen/GlobalISel/LegalizerMutations.cpp - Mutations ----------===//
       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             : // A library of mutation factories to use for LegalityMutation.
      11             : //
      12             : //===----------------------------------------------------------------------===//
      13             : 
      14             : #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
      15             : 
      16             : using namespace llvm;
      17             : 
      18      380812 : LegalizeMutation LegalizeMutations::changeTo(unsigned TypeIdx, LLT Ty) {
      19             :   return
      20      762274 :       [=](const LegalityQuery &Query) { return std::make_pair(TypeIdx, Ty); };
      21             : }
      22             : 
      23        3140 : LegalizeMutation LegalizeMutations::changeTo(unsigned TypeIdx,
      24             :                                              unsigned FromTypeIdx) {
      25             :   return [=](const LegalityQuery &Query) {
      26          15 :     return std::make_pair(TypeIdx, Query.Types[FromTypeIdx]);
      27        3140 :   };
      28             : }
      29             : 
      30      123153 : LegalizeMutation LegalizeMutations::widenScalarToNextPow2(unsigned TypeIdx,
      31             :                                                           unsigned Min) {
      32             :   return [=](const LegalityQuery &Query) {
      33             :     unsigned NewSizeInBits =
      34             :         1 << Log2_32_Ceil(Query.Types[TypeIdx].getSizeInBits());
      35             :     if (NewSizeInBits < Min)
      36             :       NewSizeInBits = Min;
      37             :     return std::make_pair(TypeIdx, LLT::scalar(NewSizeInBits));
      38      123153 :   };
      39             : }
      40             : 
      41        1570 : LegalizeMutation LegalizeMutations::moreElementsToNextPow2(unsigned TypeIdx,
      42             :                                                            unsigned Min) {
      43             :   return [=](const LegalityQuery &Query) {
      44             :     const LLT &VecTy = Query.Types[TypeIdx];
      45             :     unsigned NewNumElements = 1 << Log2_32_Ceil(VecTy.getNumElements());
      46             :     if (NewNumElements < Min)
      47             :       NewNumElements = Min;
      48             :     return std::make_pair(
      49             :         TypeIdx, LLT::vector(NewNumElements, VecTy.getScalarSizeInBits()));
      50        1570 :   };
      51             : }

Generated by: LCOV version 1.13