52 lines · plain
1// RUN: mlir-opt -amdgpu-resolve-strided-metadata -split-input-file %s | FileCheck %s2 3!tSrc = memref<?x?xi32, strided<[?, ?], offset: ?>>4!tDst = memref<?x?xi32, strided<[?, ?], offset: ?>, #amdgpu.address_space<fat_raw_buffer>>5!tRes = memref<i32, #amdgpu.address_space<fat_raw_buffer>>6// CHECK-LABEL: @resolve_metadata_no_offset_reset7// CHECK-SAME: (%[[arg0:.*]]: memref<?x?xi32, strided<[?, ?], offset: ?>>)8// CHECK-NEXT: %[[cast:.+]] = amdgpu.fat_raw_buffer_cast %[[arg0]]9// CHECK-NEXT: %{{.+}}, %[[offset:.+]], %[[size:.+]]:2, %[[stride:.+]]:2 = memref.extract_strided_metadata %[[arg0]]10// CHECK-NEXT: %[[reinterp:.+]] = memref.reinterpret_cast %[[cast]]11// CHECK-NEXT: return %[[reinterp]], %[[offset]], %[[size]]#0, %[[size]]#1, %[[stride]]#0, %[[stride]]#112func.func @resolve_metadata_no_offset_reset(%arg0: !tSrc) -> (!tRes, index, index, index, index, index) {13 %cast = amdgpu.fat_raw_buffer_cast %arg0 : !tSrc to !tDst14 %base, %offset, %size:2, %stride:2 = memref.extract_strided_metadata %cast : !tDst -> !tRes, index, index, index, index, index15 func.return %base, %offset, %size#0, %size#1, %stride#0, %stride#1 : !tRes, index, index, index, index, index16}17 18// -----19 20!tSrc = memref<?x?xi32, strided<[?, ?], offset: ?>>21!tDst = memref<?x?xi32, strided<[?, ?]>, #amdgpu.address_space<fat_raw_buffer>>22!tRes = memref<i32, #amdgpu.address_space<fat_raw_buffer>>23// CHECK-LABEL: @resolve_metadata_offset_reset24// CHECK-SAME: (%[[arg0:.*]]: memref<?x?xi32, strided<[?, ?], offset: ?>>)25// CHECK-NEXT: %[[offset:.+]] = arith.constant 0 : index26// CHECK-NEXT: %[[cast:.+]] = amdgpu.fat_raw_buffer_cast %[[arg0]]27// CHECK-NEXT: %{{.+}}, %{{.+}}, %[[size:.+]]:2, %[[stride:.+]]:2 = memref.extract_strided_metadata %[[arg0]]28// CHECK-NEXT: %[[reinterp:.+]] = memref.reinterpret_cast %[[cast]]29// CHECK-NEXT: return %[[reinterp]], %[[offset]], %[[size]]#0, %[[size]]#1, %[[stride]]#0, %[[stride]]#130func.func @resolve_metadata_offset_reset(%arg0: !tSrc) -> (!tRes, index, index, index, index, index) {31 %cast = amdgpu.fat_raw_buffer_cast %arg0 resetOffset : !tSrc to !tDst32 %base, %offset, %size:2, %stride:2 = memref.extract_strided_metadata %cast : !tDst -> !tRes, index, index, index, index, index33 func.return %base, %offset, %size#0, %size#1, %stride#0, %stride#1 : !tRes, index, index, index, index, index34}35 36// -----37 38!tSrc = memref<?x?xi32, strided<[?, ?], offset: ?>>39!tDst = memref<?x?xi32, strided<[?, ?]>, #amdgpu.address_space<fat_raw_buffer>>40!tRes = memref<i32, #amdgpu.address_space<fat_raw_buffer>>41// CHECK-LABEL: @resolve_metadata_no_base_ptr42// CHECK-SAME: (%[[arg0:.*]]: memref<?x?xi32, strided<[?, ?], offset: ?>>)43// CHECK-NEXT: %[[offset:.+]] = arith.constant 0 : index44// CHECK-NEXT: %[[cast:.+]] = amdgpu.fat_raw_buffer_cast %[[arg0]]45// CHECK-NEXT: %{{.+}}, %{{.+}}, %[[size:.+]]:2, %[[stride:.+]]:2 = memref.extract_strided_metadata %[[arg0]]46// CHECK-NEXT: return %[[cast]], %[[offset]], %[[size]]#0, %[[size]]#1, %[[stride]]#0, %[[stride]]#147func.func @resolve_metadata_no_base_ptr(%arg0: !tSrc) -> (!tDst, index, index, index, index, index) {48 %cast = amdgpu.fat_raw_buffer_cast %arg0 resetOffset : !tSrc to !tDst49 %base, %offset, %size:2, %stride:2 = memref.extract_strided_metadata %cast : !tDst -> !tRes, index, index, index, index, index50 func.return %cast, %offset, %size#0, %size#1, %stride#0, %stride#1 : !tDst, index, index, index, index, index51}52