//===- TestGPUMemoryPromotionPass.cpp - Test pass for GPU promotion -------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements the pass testing the utilities for moving data across // different levels of the GPU memory hierarchy. // //===----------------------------------------------------------------------===// #include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/GPU/IR/GPUDialect.h" #include "mlir/Dialect/GPU/Transforms/MemoryPromotion.h" #include "mlir/Dialect/MemRef/IR/MemRef.h" #include "mlir/Dialect/SCF/IR/SCF.h" #include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h" #include "mlir/IR/Attributes.h" #include "mlir/Pass/Pass.h" usingnamespacemlir; namespace { /// Simple pass for testing the promotion to workgroup memory in GPU functions. /// Promotes all arguments with "gpu.test_promote_workgroup" attribute. This /// does not check whether the promotion is legal (e.g., amount of memory used) /// or beneficial (e.g., makes previously uncoalesced loads coalesced). struct TestGpuMemoryPromotionPass : public PassWrapper<TestGpuMemoryPromotionPass, OperationPass<gpu::GPUFuncOp>> { … }; } // namespace namespace mlir { void registerTestGpuMemoryPromotionPass() { … } } // namespace mlir