Changeset View
Changeset View
Standalone View
Standalone View
mlir/test/IR/core-ops.mlir
Show First 20 Lines • Show All 745 Lines • ▼ Show 20 Lines | func @tensor_load_store(%0 : memref<4x4xi32>) { | ||||
// CHECK: %[[TENSOR:.*]] = tensor_load %[[MEMREF:.*]] : memref<4x4xi32> | // CHECK: %[[TENSOR:.*]] = tensor_load %[[MEMREF:.*]] : memref<4x4xi32> | ||||
%1 = tensor_load %0 : memref<4x4xi32> | %1 = tensor_load %0 : memref<4x4xi32> | ||||
// CHECK: tensor_store %[[TENSOR]], %[[MEMREF]] : memref<4x4xi32> | // CHECK: tensor_store %[[TENSOR]], %[[MEMREF]] : memref<4x4xi32> | ||||
tensor_store %1, %0 : memref<4x4xi32> | tensor_store %1, %0 : memref<4x4xi32> | ||||
return | return | ||||
} | } | ||||
// CHECK-LABEL: func @atomic_rmw | // CHECK-LABEL: func @atomic_rmw | ||||
// CHECK-SAME: ([[BUF:%.*]]: memref<10xf32>, [[VAL:%.*]]: f32, [[I:%.*]]: index) | |||||
func @atomic_rmw(%I: memref<10xf32>, %val: f32, %i : index) { | func @atomic_rmw(%I: memref<10xf32>, %val: f32, %i : index) { | ||||
// CHECK: %{{.*}} = atomic_rmw "addf" %{{.*}}, %{{.*}}[%{{.*}}] | |||||
%x = atomic_rmw "addf" %val, %I[%i] : (f32, memref<10xf32>) -> f32 | %x = atomic_rmw "addf" %val, %I[%i] : (f32, memref<10xf32>) -> f32 | ||||
// CHECK: atomic_rmw "addf" [[VAL]], [[BUF]]{{\[}}[[I]]] | |||||
return | |||||
} | |||||
// CHECK-LABEL: func @generic_atomic_rmw | |||||
// CHECK-SAME: ([[BUF:%.*]]: memref<1x2xf32>, [[I:%.*]]: index, [[J:%.*]]: index) | |||||
func @generic_atomic_rmw(%I: memref<1x2xf32>, %i : index, %j : index) { | |||||
%x = generic_atomic_rmw %I[%i, %j] : memref<1x2xf32> { | |||||
// CHECK-NEXT: generic_atomic_rmw [[BUF]]{{\[}}[[I]], [[J]]] : memref | |||||
^bb0(%old_value : f32): | |||||
%c1 = constant 1.0 : f32 | |||||
%out = addf %c1, %old_value : f32 | |||||
atomic_yield %out : f32 | |||||
} | |||||
return | return | ||||
} | } | ||||
// CHECK-LABEL: func @assume_alignment | // CHECK-LABEL: func @assume_alignment | ||||
// CHECK-SAME: %[[MEMREF:.*]]: memref<4x4xf16> | // CHECK-SAME: %[[MEMREF:.*]]: memref<4x4xf16> | ||||
func @assume_alignment(%0: memref<4x4xf16>) { | func @assume_alignment(%0: memref<4x4xf16>) { | ||||
// CHECK: assume_alignment %[[MEMREF]], 16 : memref<4x4xf16> | // CHECK: assume_alignment %[[MEMREF]], 16 : memref<4x4xf16> | ||||
assume_alignment %0, 16 : memref<4x4xf16> | assume_alignment %0, 16 : memref<4x4xf16> | ||||
return | return | ||||
} | } |