LCOV - code coverage report
Current view: top level - lib/Support - LowLevelType.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 15 19 78.9 %
Date: 2017-09-14 15:23:50 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- llvm/Support/LowLevelType.cpp -------------------------------------===//
       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 This file implements the more header-heavy bits of the LLT class to
      11             : /// avoid polluting users' namespaces.
      12             : //
      13             : //===----------------------------------------------------------------------===//
      14             : 
      15             : #include "llvm/Support/LowLevelTypeImpl.h"
      16             : #include "llvm/Support/raw_ostream.h"
      17             : using namespace llvm;
      18             : 
      19        1480 : LLT::LLT(MVT VT) {
      20        1480 :   if (VT.isVector()) {
      21         405 :     init(/*isPointer=*/false, VT.getVectorNumElements() > 1,
      22         405 :          VT.getVectorNumElements(), VT.getVectorElementType().getSizeInBits(),
      23             :          /*AddressSpace=*/0);
      24        1345 :   } else if (VT.isValid()) {
      25             :     // Aggregates are no different from real scalars as far as GlobalISel is
      26             :     // concerned.
      27             :     assert(VT.getSizeInBits() != 0 && "invalid zero-sized type");
      28        1345 :     init(/*isPointer=*/false, /*isVector=*/false, /*NumElements=*/0,
      29             :          VT.getSizeInBits(), /*AddressSpace=*/0);
      30             :   } else {
      31           0 :     IsPointer = false;
      32           0 :     IsVector = false;
      33           0 :     RawData = 0;
      34             :   }
      35        1480 : }
      36             : 
      37       10669 : void LLT::print(raw_ostream &OS) const {
      38       10669 :   if (isVector())
      39        2361 :     OS << "<" << getNumElements() << " x " << getElementType() << ">";
      40        9882 :   else if (isPointer())
      41        3102 :     OS << "p" << getAddressSpace();
      42        8331 :   else if (isValid()) {
      43             :     assert(isScalar() && "unexpected type");
      44       16662 :     OS << "s" << getScalarSizeInBits();
      45             :   } else
      46           0 :     llvm_unreachable("trying to print an invalid type");
      47       10669 : }
      48             : 
      49             : const constexpr LLT::BitFieldInfo LLT::ScalarSizeFieldInfo;
      50             : const constexpr LLT::BitFieldInfo LLT::PointerSizeFieldInfo;
      51             : const constexpr LLT::BitFieldInfo LLT::PointerAddressSpaceFieldInfo;
      52             : const constexpr LLT::BitFieldInfo LLT::VectorElementsFieldInfo;
      53             : const constexpr LLT::BitFieldInfo LLT::VectorSizeFieldInfo;
      54             : const constexpr LLT::BitFieldInfo LLT::PointerVectorElementsFieldInfo;
      55             : const constexpr LLT::BitFieldInfo LLT::PointerVectorSizeFieldInfo;
      56             : const constexpr LLT::BitFieldInfo LLT::PointerVectorAddressSpaceFieldInfo;

Generated by: LCOV version 1.13