From 908e57680695667d74e5cbc7b149ddbed8c708b1 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Mon, 8 Dec 2025 13:55:27 +0800 Subject: [PATCH 1/8] add minimum data types and rank range for operations --- index.bs | 678 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 664 insertions(+), 14 deletions(-) diff --git a/index.bs b/index.bs index 6f7cb368..ae94e3b2 100644 --- a/index.bs +++ b/index.bs @@ -2261,18 +2261,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/any rank|N=] + 1 to 5 @@ -2389,38 +2395,52 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 1 to [=/any rank|N=] + 3 to 5 {{mean}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{variance}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLBatchNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLBatchNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 3 to 5 @@ -2527,18 +2547,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 *output* [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -2668,18 +2694,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -2774,18 +2806,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{inputs}}'s [=list/items=] [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{inputs}}'s [=list/items=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{inputs}}'s [=list/items=] + 1 to 5 @@ -2939,27 +2977,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{filter}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLConv2dOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -3184,27 +3232,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{filter}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLConv2dOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -3328,18 +3386,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -3435,29 +3499,71 @@ partial dictionary MLOpSupportLimits { - *pow*: Compute the values of the values of the first input tensor to the power of the values of the second input tensor, element-wise. - - +
Tensor limits for element-wise binary options
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/add()}}/{{MLGraphBuilder/sub()}}/{{MLGraphBuilder/mul()}}/{{MLGraphBuilder/div()}}/{{MLGraphBuilder/max()}}/{{MLGraphBuilder/min()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{a}}[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
{{b}}[=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
+ + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/pow()}}
operand [=/allowed data types=][=/minimum allowed data types=] [=/allowed ranks=][=/minimum allowed ranks=]
{{a}} [=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
{{b}} [=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
*output* [=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
@@ -3622,32 +3728,127 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output tensor that contains the result of element-wise comparison of the two input tensors. - - +
Tensor limits for element-wise logical options
+ + + - + + + + + + +
Tensor limits for {{MLGraphBuilder/equal()}}/{{MLGraphBuilder/notEqual()}}/{{MLGraphBuilder/greater()}}/{{MLGraphBuilder/greaterOrEqual()}}/{{MLGraphBuilder/lesser()}}/{{MLGraphBuilder/lesserOrEqual()}}
operand [=/allowed data types=][=/minimum allowed data types=] [=/allowed ranks=][=/minimum allowed ranks=]
{{a}}specified as part of operation steps[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
{{b}} [=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
*output* {{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}} [=/any rank|N=]0 to 4
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/logicalNot()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{a}}{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 5
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/logicalAnd()}}/{{MLGraphBuilder/logicalOr()}}/{{MLGraphBuilder/logicalXor()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{a}}{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
{{b}}[=/same type as|same as=] {{a}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/isNaN()}}/{{MLGraphBuilder/isInfinite()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{a}}[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 4
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
{{MLLogicalNotSupportLimits}} has the following members:
@@ -3871,27 +4072,86 @@ partial dictionary MLOpSupportLimits { tensor is the same as the shape of input tensor. - - +
Tensor limits for element-wise unary options
+ + + + + + +
Tensor limits for {{MLGraphBuilder/abs()}}/{{MLGraphBuilder/identity()}}/{{MLGraphBuilder/neg()}}
operand [=/allowed data types=][=/minimum allowed data types=] [=/allowed ranks=][=/minimum allowed ranks=]
{{input}} specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 5
*output* [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}}0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/ceil()}}/{{MLGraphBuilder/cos()}}/{{MLGraphBuilder/erf()}}/{{MLGraphBuilder/exp()}}/{{MLGraphBuilder/floor()}}/{{MLGraphBuilder/log()}}/{{MLGraphBuilder/reciprocal()}}/{{MLGraphBuilder/roundEven()}}/{{MLGraphBuilder/sin()}}/{{MLGraphBuilder/sqrt()}}/{{MLGraphBuilder/tan()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{input}}specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/same rank as|same as=] {{input}}0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/sign()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}[=/any rank|N=]0
*output*[=/same type as|same as=] {{input}}[=/same rank as|same as=] {{input}}0
{{MLOpSupportLimits}} has the following members for element-wise unary operations:
@@ -4133,28 +4393,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 {{scale}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}} [=/same rank as|same as=] {{input}} + 0 to 5 {{zeroPoint}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 *output* [=/same type as|same as=] {{scale}} + {{MLOperandDataType/"float32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4307,28 +4577,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}} [=/any rank|N=] + 0 to 5 {{scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}} [=/same rank as|same as=] {{input}} + 0 to 5 {{zeroPoint}} {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/same rank as|same as=] {{input}} + 0 to 5 *output* [=/same type as|same as=] {{zeroPoint}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4426,18 +4706,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4511,18 +4797,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 @@ -4601,23 +4893,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} - [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} + 1 to [=/any rank|N=] + 1 to 5 @@ -4765,23 +5065,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -4928,23 +5236,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 @@ -5120,18 +5436,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -5241,27 +5563,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{a}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{b}} [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGemmOptions/c}} [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 0 to 2 0 to 2 *output* [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -5449,47 +5781,65 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLGruOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruOptions/initialHiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[1]* if {{MLGruOptions/returnSequence}} is true [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -5779,37 +6129,51 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruCellOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLGruCellOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -6026,18 +6390,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] + 0 to 5 {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6111,18 +6481,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6232,27 +6608,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLInstanceNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLInstanceNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -6385,28 +6771,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 {{MLLayerNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 {{MLLayerNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6520,18 +6916,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6618,18 +7020,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6779,62 +7187,86 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLLstmOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/peepholeWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/initialHiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLLstmOptions/initialCellState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[1]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[2]* if {{MLLstmOptions/returnSequence}} is true [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -7177,57 +7609,79 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{hiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{cellState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmCellOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLLstmCellOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLLstmCellOptions/peepholeWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 *outputs[1]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -7473,23 +7927,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{a}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 2 to [=/any rank|N=] + 2 to 5 {{b}} [=/same type as|same as=] {{a}} - 2 or [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 to [=/any rank|N=] + 2 to 5 *output* [=/same type as|same as=] {{a}} - 2 or [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 to [=/any rank|N=] + 2 to 5 @@ -7586,7 +8048,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] @@ -7776,27 +8240,60 @@ partial dictionary MLOpSupportLimits { `output size = ceil(1 + (input size - filter size + beginning padding + ending padding) / stride)` - - +
Tensor limits for pooling operations
+ + + + + + +
Tensor limits for {{MLGraphBuilder/averagePool2d()}}/{{MLGraphBuilder/maxPool2d()}}
operand [=/allowed data types=][=/minimum allowed data types=] [=/allowed ranks=][=/minimum allowed ranks=]
{{input}} specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}4 4
*output* [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}4 4
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/l2Pool2d()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{input}}specified as part of operation steps4
*output*[=/same type as|same as=] {{input}}4
+ {{MLOpSupportLimits}} has the following members for pooling operations:
: averagePool2d @@ -7957,22 +8454,30 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 {{slope}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 @@ -8088,24 +8593,57 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output N-D tensor of [=MLOperand/rank=] in the range 0 to {{MLGraphBuilder/reduceL1(input, options)/input}}'s [=MLOperand/rank=], inclusive, depending on {{MLReduceOptions/axes}} and {{MLReduceOptions/keepDimensions}}. If the input operand is a scalar, the reduction function is applied to the scalar value, and the output is also a scalar. - - +
Tensor limits for reduction-operations
+ + + + + + + + +
Tensor limits for {{MLGraphBuilder/reduceL1()}}/{{MLGraphBuilder/reduceMax()}}/{{MLGraphBuilder/reduceMin()}}/{{MLGraphBuilder/reduceSum()}}/{{MLGraphBuilder/reduceSumSquare()}}
operand [=/allowed data types=][=/minimum allowed data types=] [=/allowed ranks=][=/minimum allowed ranks=]
{{input}} specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 5
*output* [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/reduceL2()}}/{{MLGraphBuilder/reduceLogSum()}}/{{MLGraphBuilder/reduceLogSumExp()}}/{{MLGraphBuilder/reduceMean()}}/{{MLGraphBuilder/reduceProduct()}}
operand[=/allowed data types=][=/minimum allowed data types=][=/allowed ranks=][=/minimum allowed ranks=]
{{input}}specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 5
@@ -8312,18 +8850,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -8462,17 +9006,23 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -8573,18 +9123,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 @@ -8656,18 +9212,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -8746,28 +9308,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 {{updates}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -8959,28 +9531,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} 1 to [=/any rank|N=] + 1 to 5 {{updates}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 @@ -9164,18 +9745,23 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9263,18 +9849,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9353,18 +9945,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9441,18 +10039,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9534,18 +10138,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9617,18 +10227,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *outputs* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9733,18 +10349,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9819,18 +10441,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9904,18 +10532,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9987,18 +10621,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 2 to [=/any rank|N=] + 2 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 2 to 5 @@ -10127,28 +10767,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/minimum allowed data types=] [=/allowed ranks=] + [=/minimum allowed ranks=] {{condition}} {{MLOperandDataType/"uint8"}} + {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 {{trueValue}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 {{falseValue}} [=/same type as|same as=] {{trueValue}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{trueValue}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 From de75fecaff67962b670fc8ca3418573cb42e8315 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Thu, 11 Dec 2025 17:04:06 +0800 Subject: [PATCH 2/8] correct minimum details for hardSigmoid/pad/scatterND/sigmoid ops --- index.bs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/index.bs b/index.bs index ae94e3b2..7f4c961a 100644 --- a/index.bs +++ b/index.bs @@ -6393,7 +6393,6 @@ partial dictionary MLOpSupportLimits { [=/minimum allowed data types=] [=/allowed ranks=] [=/minimum allowed ranks=] - 0 to 5 @@ -6401,6 +6400,7 @@ partial dictionary MLOpSupportLimits { {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* @@ -8056,12 +8056,16 @@ partial dictionary MLOpSupportLimits { {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9546,6 +9550,7 @@ partial dictionary MLOpSupportLimits { {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] 1 to 5 @@ -9753,6 +9758,7 @@ partial dictionary MLOpSupportLimits { {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] 0 to 5 From 039ff6e1b061095c4601c7097f427ccadefdd25d Mon Sep 17 00:00:00 2001 From: BruceDai Date: Fri, 12 Dec 2025 11:49:21 +0800 Subject: [PATCH 3/8] add dfn refs --- index.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.bs b/index.bs index 7f4c961a..68c6f147 100644 --- a/index.bs +++ b/index.bs @@ -1777,13 +1777,13 @@ The shape [=getter steps=] are to return [=th Since the {{MLOperand/[[builder]]}} object is bound by the {{MLGraphBuilder/constructor()}} constructor to an {{MLContext}} object, an {{MLOperand}} is also always bound to the same {{MLContext}} object. -If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. +If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. The minimum allowed data types is an intersection data types via {{MLContext/opSupportLimits()}} method across DirectML, TFLite and CoreML backends in Chromium prototype. Implementations may support fewer data types for operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. Issue: Should we specify the subset of data types that must be supported for each operator? -If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. +If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. The minimum allowed ranks is an intersection rank range via {{MLContext/opSupportLimits()}} method across DirectML, TFLite and CoreML backends in Chromium prototype. Implementations may impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation. From 8f5806e9a6e1f15f7ab69b62e81467eaf22714b2 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Fri, 12 Dec 2025 13:47:20 +0800 Subject: [PATCH 4/8] updated for dequantizeLinear op to align with latest CL-7244911 --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index b9d943f5..e462ee46 100644 --- a/index.bs +++ b/index.bs @@ -4401,7 +4401,7 @@ partial dictionary MLOpSupportLimits { {{input}} {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int32"}} - {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/any rank|N=] 0 to 5 From 80fe48dabf2522c7b283e8770b82a8370ec028a0 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Mon, 15 Dec 2025 10:57:15 +0800 Subject: [PATCH 5/8] address Reilly's suggestions --- index.bs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index.bs b/index.bs index e462ee46..f872cac7 100644 --- a/index.bs +++ b/index.bs @@ -1777,15 +1777,19 @@ The shape [=getter steps=] are to return [=th Since the {{MLOperand/[[builder]]}} object is bound by the {{MLGraphBuilder/constructor()}} constructor to an {{MLContext}} object, an {{MLOperand}} is also always bound to the same {{MLContext}} object. -If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. The minimum allowed data types is an intersection data types via {{MLContext/opSupportLimits()}} method across DirectML, TFLite and CoreML backends in Chromium prototype. +If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. -Implementations may support fewer data types for operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. +Implementations MAY support fewer data types for operands than specified, but MUST support at least the specified minimum allowed data types. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. + +The set of [=/minimum allowed data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. Issue: Should we specify the subset of data types that must be supported for each operator? -If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. The minimum allowed ranks is an intersection rank range via {{MLContext/opSupportLimits()}} method across DirectML, TFLite and CoreML backends in Chromium prototype. +If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. + +Implementations MAY impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified, but MUST support at least the specified minimum allowed ranks. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation. -Implementations may impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation. +The set of [=/minimum allowed ranks=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to be composed of input operands with only these ranks. {{MLOperatorOptions}} has the following members:
From 655b010eb244cf6334de8a9344269e548cb809e7 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Tue, 16 Dec 2025 11:19:16 +0800 Subject: [PATCH 6/8] address Reilly's comments --- index.bs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.bs b/index.bs index f872cac7..ec5fb991 100644 --- a/index.bs +++ b/index.bs @@ -1781,9 +1781,7 @@ If an operation supports only a subset of {{MLOperandDataType}}s, the allow Implementations MAY support fewer data types for operands than specified, but MUST support at least the specified minimum allowed data types. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. -The set of [=/minimum allowed data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. - -Issue: Should we specify the subset of data types that must be supported for each operator? +The set of [=/minimum allowed data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. The Web Platform Tests for this specification use this capability detection mechanism to validate correct behavior for all [=/allowed data types=] but can be passed with only support for the [=/minimum allowed data types=]. If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. From c50681fb1ac29521bdeec9583ea48f78daa9a840 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Wed, 17 Dec 2025 17:44:55 +0800 Subject: [PATCH 7/8] update index.bs to address Dwayne's some comments --- index.bs | 256 +++++++++++++++++++++++++++---------------------------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/index.bs b/index.bs index ec5fb991..5bc9a7aa 100644 --- a/index.bs +++ b/index.bs @@ -1779,15 +1779,15 @@ Since the {{MLOperand/[[builder]]}} object is bound by the {{MLGraphBuilder/cons If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. -Implementations MAY support fewer data types for operands than specified, but MUST support at least the specified minimum allowed data types. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. +Implementations MAY support fewer data types for operands than specified, but MUST support at least the specified required data types. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation across DirectML, ONNX Runtime, LiteRT, and CoreML backends in Chromium prototype now. -The set of [=/minimum allowed data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. The Web Platform Tests for this specification use this capability detection mechanism to validate correct behavior for all [=/allowed data types=] but can be passed with only support for the [=/minimum allowed data types=]. +The set of [=/required data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. The Web Platform Tests for this specification use this capability detection mechanism to validate correct behavior for all [=/allowed data types=] but can be passed with only support for the [=/required data types=]. If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. -Implementations MAY impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified, but MUST support at least the specified minimum allowed ranks. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation. +Implementations MAY impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified, but MUST support at least the specified required ranks. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation across DirectML, ONNX Runtime, LiteRT, and CoreML backends in Chromium prototype now. -The set of [=/minimum allowed ranks=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to be composed of input operands with only these ranks. +The set of [=/required ranks=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to be composed of input operands with only these ranks. {{MLOperatorOptions}} has the following members:
@@ -2263,9 +2263,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -2397,9 +2397,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -2549,9 +2549,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -2696,9 +2696,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -2808,9 +2808,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -2979,9 +2979,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3234,9 +3234,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3388,9 +3388,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3507,9 +3507,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3541,9 +3541,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3736,9 +3736,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3770,9 +3770,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3797,9 +3797,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -3831,9 +3831,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4080,9 +4080,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4107,9 +4107,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4134,24 +4134,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}} - + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] - 0 + 0 to 5 *output* [=/same type as|same as=] {{input}} - + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} - 0 + 0 to 5 @@ -4395,9 +4395,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4579,9 +4579,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4708,9 +4708,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4799,9 +4799,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -4895,9 +4895,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -5067,9 +5067,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -5238,9 +5238,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -5438,9 +5438,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -5565,9 +5565,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -5783,9 +5783,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6131,9 +6131,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6392,9 +6392,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6483,9 +6483,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6610,9 +6610,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6773,9 +6773,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -6918,9 +6918,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -7022,9 +7022,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -7189,9 +7189,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -7611,9 +7611,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -7929,9 +7929,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8050,9 +8050,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8252,9 +8252,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8279,9 +8279,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8460,9 +8460,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8605,9 +8605,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8632,9 +8632,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -8856,9 +8856,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9013,9 +9013,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9130,9 +9130,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9219,9 +9219,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9315,9 +9315,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9538,9 +9538,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9753,9 +9753,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9858,9 +9858,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -9954,9 +9954,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10048,9 +10048,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10147,9 +10147,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10236,9 +10236,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10358,9 +10358,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10450,9 +10450,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10541,9 +10541,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10630,9 +10630,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] @@ -10776,9 +10776,9 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] - [=/minimum allowed data types=] + [=/required data types=] [=/allowed ranks=] - [=/minimum allowed ranks=] + [=/required ranks=] From 93d1bc960bc4a797769fcfd2341e1129c0198e61 Mon Sep 17 00:00:00 2001 From: BruceDai Date: Mon, 22 Dec 2025 14:16:49 +0800 Subject: [PATCH 8/8] update index.bs to address Ningxin's comments --- index.bs | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/index.bs b/index.bs index 5bc9a7aa..dbcef0b6 100644 --- a/index.bs +++ b/index.bs @@ -2280,7 +2280,7 @@ partial dictionary MLOpSupportLimits { {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int64"}} {{MLOperandDataType/"int32"}} [=/any rank|N=] - 1 to 5 + 0 to 5 @@ -3501,7 +3501,7 @@ partial dictionary MLOpSupportLimits { - *pow*: Compute the values of the values of the first input tensor to the power of the values of the second input tensor, element-wise. - +
@@ -3535,7 +3535,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/add()}}/{{MLGraphBuilder/sub()}}/{{MLGraphBuilder/mul()}}/{{MLGraphBuilder/div()}}/{{MLGraphBuilder/max()}}/{{MLGraphBuilder/min()}}
- +
@@ -3730,7 +3730,7 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output tensor that contains the result of element-wise comparison of the two input tensors. -
Tensor limits for {{MLGraphBuilder/pow()}}
+
@@ -3764,7 +3764,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/equal()}}/{{MLGraphBuilder/notEqual()}}/{{MLGraphBuilder/greater()}}/{{MLGraphBuilder/greaterOrEqual()}}/{{MLGraphBuilder/lesser()}}/{{MLGraphBuilder/lesserOrEqual()}}
- +
@@ -3791,7 +3791,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/logicalNot()}}
- +
@@ -3825,7 +3825,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/logicalAnd()}}/{{MLGraphBuilder/logicalOr()}}/{{MLGraphBuilder/logicalXor()}}
- +
@@ -4074,7 +4074,7 @@ partial dictionary MLOpSupportLimits { tensor is the same as the shape of input tensor. -
Tensor limits for {{MLGraphBuilder/isNaN()}}/{{MLGraphBuilder/isInfinite()}}
+
@@ -4101,7 +4101,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/abs()}}/{{MLGraphBuilder/identity()}}/{{MLGraphBuilder/neg()}}
- +
@@ -4128,7 +4128,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/ceil()}}/{{MLGraphBuilder/cos()}}/{{MLGraphBuilder/erf()}}/{{MLGraphBuilder/exp()}}/{{MLGraphBuilder/floor()}}/{{MLGraphBuilder/log()}}/{{MLGraphBuilder/reciprocal()}}/{{MLGraphBuilder/roundEven()}}/{{MLGraphBuilder/sin()}}/{{MLGraphBuilder/sqrt()}}/{{MLGraphBuilder/tan()}}
- +
@@ -4410,7 +4410,7 @@ partial dictionary MLOpSupportLimits { - + @@ -4424,7 +4424,7 @@ partial dictionary MLOpSupportLimits { - + @@ -4587,14 +4587,14 @@ partial dictionary MLOpSupportLimits { - + - + @@ -8060,14 +8060,14 @@ partial dictionary MLOpSupportLimits { - + - +
Tensor limits for {{MLGraphBuilder/sign()}}
{{scale}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}{{MLOperandDataType/"float32"}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} 0 to 5
*output* [=/same type as|same as=] {{scale}}{{MLOperandDataType/"float32"}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} 0 to 5
{{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}{{MLOperandDataType/"float32"}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] 0 to 5
{{scale}} [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} 0 to 5
[=/any data type|any=] {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=]1 to 50 to 5
*output* [=/same type as|same as=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}}1 to 50 to 5
@@ -8246,7 +8246,7 @@ partial dictionary MLOpSupportLimits { `output size = ceil(1 + (input size - filter size + beginning padding + ending padding) / stride)` - +
@@ -8273,7 +8273,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/averagePool2d()}}/{{MLGraphBuilder/maxPool2d()}}
- +
@@ -8599,7 +8599,7 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output N-D tensor of [=MLOperand/rank=] in the range 0 to {{MLGraphBuilder/reduceL1(input, options)/input}}'s [=MLOperand/rank=], inclusive, depending on {{MLReduceOptions/axes}} and {{MLReduceOptions/keepDimensions}}. If the input operand is a scalar, the reduction function is applied to the scalar value, and the output is also a scalar. -
Tensor limits for {{MLGraphBuilder/l2Pool2d()}}
+
@@ -8626,7 +8626,7 @@ partial dictionary MLOpSupportLimits {
Tensor limits for {{MLGraphBuilder/reduceL1()}}/{{MLGraphBuilder/reduceMax()}}/{{MLGraphBuilder/reduceMin()}}/{{MLGraphBuilder/reduceSum()}}/{{MLGraphBuilder/reduceSumSquare()}}
- +
@@ -9868,14 +9868,14 @@ partial dictionary MLOpSupportLimits { - + - +
Tensor limits for {{MLGraphBuilder/reduceL2()}}/{{MLGraphBuilder/reduceLogSum()}}/{{MLGraphBuilder/reduceLogSumExp()}}/{{MLGraphBuilder/reduceMean()}}/{{MLGraphBuilder/reduceProduct()}}
[=/any data type|any=] {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=]1 to 50 to 5
*output* [=/same type as|same as=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}}1 to 50 to 5
@@ -10638,14 +10638,14 @@ partial dictionary MLOpSupportLimits { {{input}} [=/any data type|any=] - {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 2 to [=/any rank|N=] 2 to 5 *output* [=/same type as|same as=] {{input}} - {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} 2 to 5