[MLIR][LLVM] Mark read/write behavior of memcpy/memset/memmove

This commit adds MemWrite (and MemRead, as appropriate) to the arugments of the memset/memcpy/memmove intrinsics within the LLVM dialect

Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D122552
This commit is contained in:
William S. Moses
2022-03-27 21:59:52 -04:00
parent 39294589bf
commit cd331af06d

View File

@@ -1436,20 +1436,20 @@ def LLVM_UMaxOp : LLVM_BinarySameArgsIntrinsicOp<"umax">;
def LLVM_UMinOp : LLVM_BinarySameArgsIntrinsicOp<"umin">;
def LLVM_MemcpyOp : LLVM_ZeroResultIntrOp<"memcpy", [0, 1, 2]> {
let arguments = (ins LLVM_Type:$dst, LLVM_Type:$src, LLVM_Type:$len,
let arguments = (ins Arg<LLVM_Type,"",[MemWrite]>:$dst, Arg<LLVM_Type,"",[MemRead]>:$src, LLVM_Type:$len,
LLVM_Type:$isVolatile);
}
def LLVM_MemcpyInlineOp : LLVM_ZeroResultIntrOp<"memcpy.inline", [0, 1, 2]> {
let arguments = (ins LLVM_Type:$dst, LLVM_Type:$src, LLVM_Type:$len,
let arguments = (ins Arg<LLVM_Type,"",[MemWrite]>:$dst, Arg<LLVM_Type,"",[MemRead]>:$src, LLVM_Type:$len,
LLVM_Type:$isVolatile);
}
def LLVM_MemmoveOp : LLVM_ZeroResultIntrOp<"memmove", [0, 1, 2]> {
let arguments = (ins LLVM_Type:$dst, LLVM_Type:$src, LLVM_Type:$len,
let arguments = (ins Arg<LLVM_Type,"",[MemWrite]>:$dst, Arg<LLVM_Type,"",[MemRead]>:$src, LLVM_Type:$len,
LLVM_Type:$isVolatile);
}
def LLVM_MemsetOp : LLVM_ZeroResultIntrOp<"memset", [0, 2]> {
let arguments = (ins LLVM_Type:$dst, LLVM_Type:$val, LLVM_Type:$len,
let arguments = (ins Arg<LLVM_Type,"",[MemWrite]>:$dst, LLVM_Type:$val, LLVM_Type:$len,
LLVM_Type:$isVolatile);
}