llvm-project/mlir/test/Dialect/OpenACC/pointer-like-interface-load.mlir
Razvan Lupusoru b50a590984
[acc][flang] Add genLoad and genStore to PointerLikeType (#170348)
This patch extends the OpenACC PointerLikeType interface with two new
methods for generating load and store operations, enabling
dialect-agnostic memory access patterns.

New Interface Methods:
- genLoad(builder, loc, srcPtr, valueType): Generates a load operation
from a pointer-like value. Returns the loaded value.

- genStore(builder, loc, valueToStore, destPtr): Generates a store
operation to a pointer-like value.

Implementations provided for FIR pointer-like types, memref type (rank-0
only), and LLVM pointer types.

Extended TestPointerLikeTypeInterface.cpp with 'load' and 'store' test
modes.
2025-12-02 12:09:32 -08:00

30 lines
1.0 KiB
MLIR

// RUN: mlir-opt %s --split-input-file --pass-pipeline="builtin.module(func.func(test-acc-pointer-like-interface{test-mode=load}))" 2>&1 | FileCheck %s
func.func @test_memref_load_scalar() {
%ptr = memref.alloca() {test.ptr} : memref<f32>
// CHECK: Successfully generated load for operation: %[[PTR:.*]] = memref.alloca() {test.ptr} : memref<f32>
// CHECK: Loaded value type: f32
// CHECK: Generated: %{{.*}} = memref.load %[[PTR]][] : memref<f32>
return
}
// -----
func.func @test_memref_load_int() {
%ptr = memref.alloca() {test.ptr} : memref<i64>
// CHECK: Successfully generated load for operation: %[[PTR:.*]] = memref.alloca() {test.ptr} : memref<i64>
// CHECK: Loaded value type: i64
// CHECK: Generated: %{{.*}} = memref.load %[[PTR]][] : memref<i64>
return
}
// -----
func.func @test_memref_load_dynamic() {
%c10 = arith.constant 10 : index
%ptr = memref.alloc(%c10) {test.ptr} : memref<?xf32>
// CHECK: Failed to generate load for operation: %[[PTR:.*]] = memref.alloc(%{{.*}}) {test.ptr} : memref<?xf32>
return
}