brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 92b7fad Raw
57 lines · cpp
1//===-- llvm/CodeGenTypes/LowLevelType.cpp2//---------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9//10/// \file This file implements the more header-heavy bits of the LLT class to11/// avoid polluting users' namespaces.12//13//===----------------------------------------------------------------------===//14 15#include "llvm/CodeGenTypes/LowLevelType.h"16#include "llvm/Support/raw_ostream.h"17using namespace llvm;18 19LLT::LLT(MVT VT) {20  if (VT.isVector()) {21    bool asVector = VT.getVectorMinNumElements() > 1 || VT.isScalableVector();22    init(/*IsPointer=*/false, asVector, /*IsScalar=*/!asVector,23         VT.getVectorElementCount(), VT.getVectorElementType().getSizeInBits(),24         /*AddressSpace=*/0);25  } else if (VT.isValid() && !VT.isScalableTargetExtVT()) {26    // Aggregates are no different from real scalars as far as GlobalISel is27    // concerned.28    init(/*IsPointer=*/false, /*IsVector=*/false, /*IsScalar=*/true,29         ElementCount::getFixed(0), VT.getSizeInBits(), /*AddressSpace=*/0);30  } else {31    IsScalar = false;32    IsPointer = false;33    IsVector = false;34    RawData = 0;35  }36}37 38void LLT::print(raw_ostream &OS) const {39  if (isVector()) {40    OS << "<";41    OS << getElementCount() << " x " << getElementType() << ">";42  } else if (isPointer())43    OS << "p" << getAddressSpace();44  else if (isValid()) {45    assert(isScalar() && "unexpected type");46    OS << "s" << getScalarSizeInBits();47  } else48    OS << "LLT_invalid";49}50 51#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)52LLVM_DUMP_METHOD void LLT::dump() const {53  print(dbgs());54  dbgs() << '\n';55}56#endif57