33 isa<ComplexType, VectorType, DataLayoutTypeInterface>(ty))
41 if (
auto memrefTy = dyn_cast<MemRefType>(ty)) {
42 if (!memrefTy.hasStaticShape())
45 memrefTy.getElementType(), module, dl, support);
46 if (!elemSizeAndAlignment)
48 int64_t totalSize = elemSizeAndAlignment->first.getFixedValue();
49 int64_t alignment = elemSizeAndAlignment->second.getFixedValue();
50 for (
int64_t dim : memrefTy.getShape())
53 llvm::TypeSize::getFixed(alignment)};
58 if (
auto tupleTy = dyn_cast<TupleType>(ty)) {
59 if (tupleTy.size() == 0)
61 auto sizeAndAlignment =
63 if (!sizeAndAlignment)
65 llvm::TypeSize size = sizeAndAlignment->first;
66 for (
unsigned i = 1, e = tupleTy.size(); i < e; ++i) {
76 if (isa<FunctionType>(ty))
78 LLVM::LLVMPointerType::get(ty.
getContext()), module, dl, support);
std::optional< TypeSizeAndAlignment > getTypeSizeAndAlignment(Type ty, ModuleOp module, const DataLayout &dl, OpenACCSupport *support=nullptr)
Returns the size and ABI alignment in bytes.