23 :
public mlir::acc::PointerLikeType::ExternalModel<
24 OpenACCPointerLikeModel<T>, T> {
25 mlir::Type getElementType(mlir::Type pointer)
const {
26 return mlir::cast<T>(pointer).getElementType();
28 mlir::acc::VariableTypeCategory
29 getPointeeTypeCategory(mlir::Type pointer,
30 mlir::TypedValue<mlir::acc::PointerLikeType> varPtr,
31 mlir::Type varType)
const;
36 :
public mlir::acc::MappableType::ExternalModel<OpenACCMappableModel<T>,
38 mlir::TypedValue<mlir::acc::PointerLikeType> getVarPtr(::mlir::Type type,
39 mlir::Value var)
const;
41 std::optional<llvm::TypeSize>
42 getSizeInBytes(mlir::Type type, mlir::Value var, mlir::ValueRange accBounds,
43 const mlir::DataLayout &dataLayout)
const;
45 std::optional<int64_t>
46 getOffsetInBytes(mlir::Type type, mlir::Value var, mlir::ValueRange accBounds,
47 const mlir::DataLayout &dataLayout)
const;
50 generateAccBounds(mlir::Type type, mlir::Value var,
51 mlir::OpBuilder &builder)
const;
53 mlir::acc::VariableTypeCategory getTypeCategory(mlir::Type type,
54 mlir::Value var)
const;
56 mlir::Value generatePrivateInit(mlir::Type type, mlir::OpBuilder &builder,
58 mlir::TypedValue<mlir::acc::MappableType> var,
59 llvm::StringRef varName,
60 mlir::ValueRange extents,
61 mlir::Value initVal)
const;