Commit 8c681f5e authored by Florian Hahn's avatar Florian Hahn
Browse files

[Matrix] Mark matrix memory intrinsics as argmemonly/write|read mem.

matrix.columnwise.load and matrix.columnwise.store only access memory
through the argument pointers. Also matrix.columnwise.store only writes
memory.
parent bec54e46
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1302,8 +1302,8 @@ def int_matrix_columnwise_load : Intrinsic<[llvm_anyvector_ty],
                                            llvm_i32_ty,
                                            llvm_i32_ty,
                                            llvm_i32_ty],
                                           [IntrReadMem, IntrWillReturn,
                                            ImmArg<2>, ImmArg<3>]>;
                                           [IntrArgMemOnly, IntrReadMem,
                                            IntrWillReturn, ImmArg<2>, ImmArg<3>]>;

def int_matrix_columnwise_store : Intrinsic<[],
                                            [llvm_anyvector_ty,
@@ -1311,7 +1311,8 @@ def int_matrix_columnwise_store : Intrinsic<[],
                                             llvm_i32_ty,
                                             llvm_i32_ty,
                                             llvm_i32_ty],
                                            [WriteOnly<1>, IntrWillReturn,
                                            [IntrArgMemOnly, IntrWillReturn,
                                             IntrWriteMem, WriteOnly<1>,
                                             ImmArg<3>, ImmArg<4>]>;

//===---------- Intrinsics to control hardware supported loops ----------===//
+6 −0
Original line number Diff line number Diff line
@@ -66,3 +66,9 @@ entry:
  %load = call <8 x double> @llvm.matrix.columnwise.load.v8f64(<8 x double>* %in, i32 %stride, i32 4, i32 2)
  ret <8 x double> %load
}

; CHECK: declare <9 x double> @llvm.matrix.columnwise.load.v9f64.p0v9f64(<9 x double>*, i32, i32 immarg, i32 immarg) [[READONLY:#[0-9]]]

; CHECK: declare <8 x double> @llvm.matrix.columnwise.load.v8f64.p0v8f64(<8 x double>*, i32, i32 immarg, i32 immarg) [[READONLY]]

; CHECK: attributes [[READONLY]] = { argmemonly nounwind readonly willreturn }
+6 −0
Original line number Diff line number Diff line
@@ -66,3 +66,9 @@ define void @strided_store_2x3(<10 x double> %in, double* %out) {
}

declare void @llvm.matrix.columnwise.store.v10f64(<10 x double>, double*, i32, i32, i32)

; CHECK: declare void @llvm.matrix.columnwise.store.v6f64.p0f64(<6 x double>, double* writeonly, i32, i32 immarg, i32 immarg) [[WRITEONLY:#[0-9]]]

; CHECK: declare void @llvm.matrix.columnwise.store.v10f64.p0f64(<10 x double>, double* writeonly, i32, i32 immarg, i32 immarg) [[WRITEONLY]]

; CHECK: attributes [[WRITEONLY]] = { argmemonly nounwind willreturn writeonly }