diff options
Diffstat (limited to '')
-rw-r--r-- | test/wpt/tests/interfaces/webnn.idl | 544 |
1 files changed, 544 insertions, 0 deletions
diff --git a/test/wpt/tests/interfaces/webnn.idl b/test/wpt/tests/interfaces/webnn.idl new file mode 100644 index 0000000..17e3080 --- /dev/null +++ b/test/wpt/tests/interfaces/webnn.idl @@ -0,0 +1,544 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Neural Network API (https://webmachinelearning.github.io/webnn/) + +interface mixin NavigatorML { + [SecureContext, SameObject] readonly attribute ML ml; +}; +Navigator includes NavigatorML; +WorkerNavigator includes NavigatorML; + +enum MLDeviceType { + "cpu", + "gpu" +}; + +enum MLPowerPreference { + "default", + "high-performance", + "low-power" +}; + +dictionary MLContextOptions { + MLDeviceType deviceType = "cpu"; + MLPowerPreference powerPreference = "default"; +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface ML { + Promise<MLContext> createContext(optional MLContextOptions options = {}); + Promise<MLContext> createContext(GPUDevice gpuDevice); + + [Exposed=(DedicatedWorker)] + MLContext createContextSync(optional MLContextOptions options = {}); + [Exposed=(DedicatedWorker)] + MLContext createContextSync(GPUDevice gpuDevice); +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLGraph {}; + +enum MLInputOperandLayout { + "nchw", + "nhwc" +}; + +enum MLOperandType { + "float32", + "float16", + "int32", + "uint32", + "int8", + "uint8" +}; + +dictionary MLOperandDescriptor { + // The operand type. + required MLOperandType type; + + // The dimensions field is only required for tensor operands. + sequence<unsigned long> dimensions; +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLOperand {}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLActivation {}; + +typedef record<DOMString, ArrayBufferView> MLNamedArrayBufferViews; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLContext {}; + +partial interface MLContext { + [Exposed=(DedicatedWorker)] + undefined computeSync( + MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); +}; + +dictionary MLComputeResult { + MLNamedArrayBufferViews inputs; + MLNamedArrayBufferViews outputs; +}; + +partial interface MLContext { + Promise<MLComputeResult> compute( + MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); +}; + +partial interface MLContext { + MLCommandEncoder createCommandEncoder(); +}; + +typedef (GPUBuffer or GPUTexture) MLGPUResource; + +typedef record<DOMString, MLGPUResource> MLNamedGPUResources; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLCommandEncoder {}; + +partial interface MLCommandEncoder { + undefined initializeGraph(MLGraph graph); +}; + +partial interface MLCommandEncoder { + undefined dispatch(MLGraph graph, MLNamedGPUResources inputs, MLNamedGPUResources outputs); +}; + +partial interface MLCommandEncoder { + GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {}); +}; + +typedef record<DOMString, MLOperand> MLNamedOperands; + +dictionary MLBufferResourceView { + required GPUBuffer resource; + unsigned long long offset = 0; + unsigned long long size; +}; + +typedef (ArrayBufferView or MLBufferResourceView) MLBufferView; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLGraphBuilder { + // Construct the graph builder from the context. + constructor(MLContext context); + + // Create an operand for a graph input. + MLOperand input(DOMString name, MLOperandDescriptor descriptor); + + // Create an operand for a graph constant. + MLOperand constant(MLOperandDescriptor descriptor, MLBufferView bufferView); + + // Create a single-value operand from the specified number of the specified type. + MLOperand constant(double value, optional MLOperandType type = "float32"); + + // Compile the graph up to the specified output operands asynchronously. + Promise<MLGraph> build(MLNamedOperands outputs); + + // Compile the graph up to the specified output operands synchronously. + [Exposed=(DedicatedWorker)] + MLGraph buildSync(MLNamedOperands outputs); +}; + +dictionary MLBatchNormalizationOptions { + MLOperand scale; + MLOperand bias; + unsigned long axis = 1; + float epsilon = 1e-5; + MLActivation activation; +}; + +partial interface MLGraphBuilder { + MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, + optional MLBatchNormalizationOptions options = {}); +}; + +dictionary MLClampOptions { + float minValue; + float maxValue; +}; + +partial interface MLGraphBuilder { + MLOperand clamp(MLOperand x, optional MLClampOptions options = {}); + MLActivation clamp(optional MLClampOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand concat(sequence<MLOperand> inputs, unsigned long axis); +}; + +enum MLConv2dFilterOperandLayout { + "oihw", + "hwio", + "ohwi", + "ihwo" +}; + +enum MLAutoPad { + "explicit", + "same-upper", + "same-lower" +}; + +dictionary MLConv2dOptions { + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + MLAutoPad autoPad = "explicit"; + unsigned long groups = 1; + MLInputOperandLayout inputLayout = "nchw"; + MLConv2dFilterOperandLayout filterLayout = "oihw"; + MLOperand bias; + MLActivation activation; +}; + +partial interface MLGraphBuilder { + MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); +}; + +enum MLConvTranspose2dFilterOperandLayout { + "iohw", + "hwoi", + "ohwi" +}; + +dictionary MLConvTranspose2dOptions { + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + sequence<unsigned long> outputPadding; + sequence<unsigned long> outputSizes; + MLAutoPad autoPad = "explicit"; + unsigned long groups = 1; + MLInputOperandLayout inputLayout = "nchw"; + MLConvTranspose2dFilterOperandLayout filterLayout = "iohw"; + MLOperand bias; + MLActivation activation; +}; + +partial interface MLGraphBuilder { + MLOperand convTranspose2d(MLOperand input, MLOperand filter, + optional MLConvTranspose2dOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand add(MLOperand a, MLOperand b); + MLOperand sub(MLOperand a, MLOperand b); + MLOperand mul(MLOperand a, MLOperand b); + MLOperand div(MLOperand a, MLOperand b); + MLOperand max(MLOperand a, MLOperand b); + MLOperand min(MLOperand a, MLOperand b); + MLOperand pow(MLOperand a, MLOperand b); +}; + +partial interface MLGraphBuilder { + MLOperand abs(MLOperand x); + MLOperand ceil(MLOperand x); + MLOperand cos(MLOperand x); + MLOperand exp(MLOperand x); + MLOperand floor(MLOperand x); + MLOperand log(MLOperand x); + MLOperand neg(MLOperand x); + MLOperand sin(MLOperand x); + MLOperand tan(MLOperand x); +}; + +dictionary MLEluOptions { + float alpha = 1; +}; + +partial interface MLGraphBuilder { + MLOperand elu(MLOperand x, optional MLEluOptions options = {}); + MLActivation elu(optional MLEluOptions options = {}); +}; + +dictionary MLGemmOptions { + MLOperand c; + float alpha = 1.0; + float beta = 1.0; + boolean aTranspose = false; + boolean bTranspose = false; +}; + +partial interface MLGraphBuilder { + MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); +}; + +enum MLGruWeightLayout { + "zrn", // update-reset-new gate ordering + "rzn" // reset-update-new gate ordering +}; + +enum MLRecurrentNetworkDirection { + "forward", + "backward", + "both" +}; + +dictionary MLGruOptions { + MLOperand bias; + MLOperand recurrentBias; + MLOperand initialHiddenState; + boolean resetAfter = true; + boolean returnSequence = false; + MLRecurrentNetworkDirection direction = "forward"; + MLGruWeightLayout layout = "zrn"; + sequence<MLActivation> activations; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> gru(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + unsigned long steps, unsigned long hiddenSize, + optional MLGruOptions options = {}); +}; + +dictionary MLGruCellOptions { + MLOperand bias; + MLOperand recurrentBias; + boolean resetAfter = true; + MLGruWeightLayout layout = "zrn"; + sequence<MLActivation> activations; +}; + +partial interface MLGraphBuilder { + MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + MLOperand hiddenState, unsigned long hiddenSize, + optional MLGruCellOptions options = {}); +}; + +dictionary MLHardSigmoidOptions { + float alpha = 0.2; + float beta = 0.5; +}; + +partial interface MLGraphBuilder { + MLOperand hardSigmoid(MLOperand x, optional MLHardSigmoidOptions options = {}); + MLActivation hardSigmoid(optional MLHardSigmoidOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand hardSwish(MLOperand x); + MLActivation hardSwish(); +}; + +dictionary MLInstanceNormalizationOptions { + MLOperand scale; + MLOperand bias; + float epsilon = 1e-5; + MLInputOperandLayout layout = "nchw"; +}; + +partial interface MLGraphBuilder { + MLOperand instanceNormalization(MLOperand input, + optional MLInstanceNormalizationOptions options = {}); +}; + +dictionary MLLeakyReluOptions { + float alpha = 0.01; +}; + +partial interface MLGraphBuilder { + MLOperand leakyRelu(MLOperand x, optional MLLeakyReluOptions options = {}); + MLActivation leakyRelu(optional MLLeakyReluOptions options = {}); +}; + +dictionary MLLinearOptions { + float alpha = 1; + float beta = 0; +}; + +partial interface MLGraphBuilder { + MLOperand linear(MLOperand x, optional MLLinearOptions options = {}); + MLActivation linear(optional MLLinearOptions options = {}); +}; + +enum MLLstmWeightLayout { + "iofg", // input-output-forget-cell gate ordering + "ifgo" // input-forget-cell-output gate ordering +}; + +dictionary MLLstmOptions { + MLOperand bias; + MLOperand recurrentBias; + MLOperand peepholeWeight; + MLOperand initialHiddenState; + MLOperand initialCellState; + boolean returnSequence = false; + MLRecurrentNetworkDirection direction = "forward"; + MLLstmWeightLayout layout = "iofg"; + sequence<MLActivation> activations; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> lstm(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + unsigned long steps, unsigned long hiddenSize, + optional MLLstmOptions options = {}); +}; + +dictionary MLLstmCellOptions { + MLOperand bias; + MLOperand recurrentBias; + MLOperand peepholeWeight; + MLLstmWeightLayout layout = "iofg"; + sequence<MLActivation> activations; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> lstmCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + MLOperand hiddenState, MLOperand cellState, unsigned long hiddenSize, + optional MLLstmCellOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand matmul(MLOperand a, MLOperand b); +}; + +enum MLPaddingMode { + "constant", + "edge", + "reflection", + "symmetric" +}; + +dictionary MLPadOptions { + MLPaddingMode mode = "constant"; + float value = 0; +}; + +partial interface MLGraphBuilder { + MLOperand pad(MLOperand input, + sequence<unsigned long> beginningPadding, + sequence<unsigned long> endingPadding, + optional MLPadOptions options = {}); +}; + +enum MLRoundingType { + "floor", + "ceil" +}; + +dictionary MLPool2dOptions { + sequence<unsigned long> windowDimensions; + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + MLAutoPad autoPad = "explicit"; + MLInputOperandLayout layout = "nchw"; + MLRoundingType roundingType = "floor"; + sequence<unsigned long> outputSizes; +}; + +partial interface MLGraphBuilder { + MLOperand averagePool2d(MLOperand input, optional MLPool2dOptions options = {}); + MLOperand l2Pool2d(MLOperand input, optional MLPool2dOptions options = {}); + MLOperand maxPool2d(MLOperand input, optional MLPool2dOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand prelu(MLOperand x, MLOperand slope); +}; + +dictionary MLReduceOptions { + sequence<unsigned long> axes = null; + boolean keepDimensions = false; +}; + +partial interface MLGraphBuilder { + MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceLogSumExp(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMax(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMean(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMin(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceProduct(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand relu(MLOperand x); + MLActivation relu(); +}; + +enum MLInterpolationMode { + "nearest-neighbor", + "linear" +}; + +dictionary MLResample2dOptions { + MLInterpolationMode mode = "nearest-neighbor"; + sequence<float> scales; + sequence<unsigned long> sizes; + sequence<unsigned long> axes; +}; + +partial interface MLGraphBuilder { + MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand reshape(MLOperand input, sequence<unsigned long?> newShape); +}; + +partial interface MLGraphBuilder { + MLOperand sigmoid(MLOperand x); + MLActivation sigmoid(); +}; + +partial interface MLGraphBuilder { + MLOperand slice(MLOperand input, sequence<unsigned long> starts, sequence<unsigned long> sizes); +}; + +partial interface MLGraphBuilder { + MLOperand softmax(MLOperand x); + MLActivation softmax(); +}; + +dictionary MLSoftplusOptions { + float steepness = 1; +}; + +partial interface MLGraphBuilder { + MLOperand softplus(MLOperand x, optional MLSoftplusOptions options = {}); + MLActivation softplus(optional MLSoftplusOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand softsign(MLOperand x); + MLActivation softsign(); +}; + +dictionary MLSplitOptions { + unsigned long axis = 0; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> split(MLOperand input, + (unsigned long or sequence<unsigned long>) splits, + optional MLSplitOptions options = {}); +}; + +dictionary MLSqueezeOptions { + sequence<unsigned long> axes; +}; + +partial interface MLGraphBuilder { + MLOperand squeeze(MLOperand input, optional MLSqueezeOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand tanh(MLOperand x); + MLActivation tanh(); +}; + +dictionary MLTransposeOptions { + sequence<unsigned long> permutation; +}; + +partial interface MLGraphBuilder { + MLOperand transpose(MLOperand input, optional MLTransposeOptions options = {}); +}; |