Representing aliasd memref in MLIR

I am not sure how this works. Assuming that I have a function like this:

func test_mul(%a:memref<10x10xf32>, %b:memref<10x10xf32>){
... ... ...

How to represent the cases that %a and %b might point to the same location on caller side; or they are never aliased from the caller.

This can be done via block argument attributes. The LLVM dialect for example has a noalias. I’m not aware of a well-defined encoding in mid-level dialects but attributes are a way to easily encode this information.