-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[mlir][vector] Update reduction kind docs. NFC. #70673
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Update the documentation surrounding reduction kinds. Highlight different min/max reduction kinds for signed/unsigned integers and floats. Update IR examples.
@llvm/pr-subscribers-mlir @llvm/pr-subscribers-mlir-vector Author: Jakub Kuderski (kuhar) ChangesUpdate the documentation surrounding reduction kinds. Highlight different min/max reduction kinds for signed/unsigned integers and floats. Update IR examples. Full diff: https://github.com/llvm/llvm-project/pull/70673.diff 1 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
index 168ff45ca61542d..62ae300b3cdc8da 100644
--- a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
+++ b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
@@ -86,8 +86,9 @@ def Vector_ContractionOp :
An optional kind attribute may be used to specify the combining function
between the intermediate result and accumulator argument of rank K. This
- attribute can take the values add/mul/min/max for int/fp, and/or/xor for
- int only. The default is "add".
+ attribute can take the values `add`/`mul`/`minsi`/`minui`/`maxsi`/`maxui`
+ /`and`/`or`/`xor` for integers, and `add`/`mul`/`minf`/`maxf`/`minimumf`
+ /`maximumf` for floats. The default is `add`.
Example:
@@ -149,7 +150,7 @@ def Vector_ContractionOp :
#contraction_trait = {
indexing_maps = #contraction_accesses,
iterator_types = ["reduction"],
- kind = #vector.kind<max>
+ kind = #vector.kind<maxf>
}
%6 = vector.contract #contraction_trait %0, %1, %2
: vector<10xf32>, vector<10xf32> into f32
@@ -232,7 +233,8 @@ def Vector_ReductionOp :
let summary = "reduction operation";
let description = [{
Reduces an 1-D vector "horizontally" into a scalar using the given
- operation (add/mul/min/max for int/fp and and/or/xor for int only).
+ operation: `add`/`mul`/`minsi`/`minui`/`maxsi`/`maxui`/`and`/`or`/`xor` for
+ integers, and `add`/`mul`/`minf`/`maxf`/`minimumf`/`maximumf` for floats.
Reductions also allow an optional fused accumulator.
Note that these operations are restricted to 1-D vectors to remain
@@ -289,8 +291,9 @@ def Vector_MultiDimReductionOp :
let summary = "Multi-dimensional reduction operation";
let description = [{
Reduces an n-D vector into an (n-k)-D vector (or a scalar when k == n)
- using the given operation (add/mul/min/max for int/fp and and/or/xor for
- int only).
+ using the given operation: `add`/`mul`/`minsi`/`minui`/`maxsi`/`maxui`
+ /`and`/`or`/`xor` for integers, and `add`/`mul`/`minf`/`maxf`/`minimumf`
+ /`maximumf` for floats.
Takes an initial accumulator operand.
Example:
@@ -937,11 +940,12 @@ def Vector_OuterProductOp :
lowered to the LLVMIR dialect, this form emits `llvm.intr.fma`, which
is guaranteed to lower to actual `fma` instructions on x86.
- An optional kind attribute may be specified to be add/mul/min/max
- for int/fp, and and/or/xor for int only. The default is "add", in which
- case the operation returns a fused multiply-add. In other cases it returns
- a multiply followed by the appropriate operation (for example, a compare and
- select for "max").
+ An optional kind attribute may be specified to be: `add`/`mul`/`minsi`
+ /`minui`/`maxsi`/`maxui`/`and`/`or`/`xor` for integers, and `add`/`mul`
+ /`minf`/`maxf`/`minimumf`/`maximumf` for floats.
+ The default is `add`, in which case the operation returns a fused
+ multiply-add. In other cases it returns a multiply followed by the
+ appropriate operation (for example, a compare and select for `maxf`).
Example:
@@ -953,7 +957,7 @@ def Vector_OuterProductOp :
vector<4xf32>, vector<8xf32>, vector<4x8xf32>
return %3: vector<4x8xf32>
- %4 = vector.outerproduct %0, %1, %2 {kind = #vector.kind<max>}:
+ %4 = vector.outerproduct %0, %1, %2 {kind = #vector.kind<maxf>}:
vector<4xf32>, vector<8xf32>, vector<4x8xf32>
return %3: vector<4x8xf32>
@@ -2764,10 +2768,10 @@ def Vector_ScanOp :
let description = [{
Performs an inclusive/exclusive scan on an n-D vector along a single
dimension returning an n-D result vector using the given
- operation (add/mul/min/max for int/fp and and/or/xor for
- int only) and a specified value for the initial value. The operator
- returns the result of scan as well as the result of the last
- reduction in the scan.
+ operation (`add`/`mul`/`minsi`/`minui`/`maxsi`/`maxui`/`and`/`or`/`xor` for
+ integers, and `add`/`mul`/`minf`/`maxf`/`minimumf`/`maximumf` for floats),
+ and a specified value for the initial value. The operator returns the
+ result of scan as well as the result of the last reduction in the scan.
Example:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Just one comment
Remove outdated content. Suggested by @dcaballe in llvm#70673.
Update the documentation surrounding reduction kinds. Highlight different min/max reduction kinds for signed/unsigned integers and floats. Update IR examples.