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: 2018-10-20 13:21:21 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        2051 : LLT::LLT(MVT VT) {
      20        4102 :   if (VT.isVector()) {
      21         136 :     init(/*isPointer=*/false, VT.getVectorNumElements() > 1,
      22         272 :          VT.getVectorNumElements(), VT.getVectorElementType().getSizeInBits(),
      23             :          /*AddressSpace=*/0);
      24        1915 :   } 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        1915 :     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        2051 : }
      36             : 
      37       19200 : void LLT::print(raw_ostream &OS) const {
      38       18203 :   if (isVector())
      39        1994 :     OS << "<" << getNumElements() << " x " << getElementType() << ">";
      40       15665 :   else if (isPointer())
      41        2538 :     OS << "p" << getAddressSpace();
      42       15665 :   else if (isValid()) {
      43             :     assert(isScalar() && "unexpected type");
      44       15665 :     OS << "s" << getScalarSizeInBits();
      45             :   } else
      46           0 :     OS << "LLT_invalid";
      47       19200 : }
      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