forked from OSchip/llvm-project
Fix langref code snippet - NFC
Closes tensorflow/mlir#294 PiperOrigin-RevId: 284281172
This commit is contained in:
parent
6500b7e0c0
commit
fcc215e399
|
@ -811,17 +811,25 @@ exposed to codegen but one may query the rank of an unranked memref (a special
|
|||
op will be needed for this purpose) and perform a switch and cast to a ranked
|
||||
memref as a prerequisite to codegen.
|
||||
|
||||
Example ```mlir {.mlir} // With static ranks, we need a function for each
|
||||
possible argument type %A = alloc() : memref<16x32xf32> %B = alloc() :
|
||||
memref<16x32x64xf32> call @helper_2D(%A) : (memref<16x32xf32>)->() call
|
||||
@helper_3D(%B) : (memref<16x32x64xf32>)->()
|
||||
Example
|
||||
```mlir {.mlir}
|
||||
// With static ranks, we need a function for each
|
||||
// possible argument type
|
||||
%A = alloc() : memref<16x32xf32>
|
||||
%B = alloc() : memref<16x32x64xf32>
|
||||
call @helper_2D(%A) : (memref<16x32xf32>)->()
|
||||
call @helper_3D(%B) : (memref<16x32x64xf32>)->()
|
||||
|
||||
// With unknown rank, the functions can be unified under one unranked type %A =
|
||||
alloc() : memref<16x32xf32> %B = alloc() : memref<16x32x64xf32> // Remove rank
|
||||
info %A_u = memref_cast %A : memref<16x32xf32> -> memref<*xf32> %B_u =
|
||||
memref_cast %B : memref<16x32x64xf32> -> memref<*xf32> // call same function
|
||||
with dynamic ranks call @helper(%A_u) : (memref<*xf32>)->() call @helper(%B_u) :
|
||||
(memref<*xf32>)->() ```
|
||||
// With unknown rank, the functions can be unified under one unranked type
|
||||
%A = alloc() : memref<16x32xf32>
|
||||
%B = alloc() : memref<16x32x64xf32>
|
||||
// Remove rank info
|
||||
%A_u = memref_cast %A : memref<16x32xf32> -> memref<*xf32>
|
||||
%B_u = memref_cast %B : memref<16x32x64xf32> -> memref<*xf32>
|
||||
// call same function with dynamic ranks
|
||||
call @helper(%A_u) : (memref<*xf32>)->()
|
||||
call @helper(%B_u) : (memref<*xf32>)->()
|
||||
```
|
||||
|
||||
The core syntax and representation of a layout specification is a
|
||||
[semi-affine map](Dialects/Affine.md#semi-affine-maps). Additionally, syntactic
|
||||
|
|
Loading…
Reference in New Issue