diff options
Diffstat (limited to 'testing/web-platform/tests/webnn/idlharness.https.any.js')
-rw-r--r-- | testing/web-platform/tests/webnn/idlharness.https.any.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webnn/idlharness.https.any.js b/testing/web-platform/tests/webnn/idlharness.https.any.js new file mode 100644 index 0000000000..016422f3a3 --- /dev/null +++ b/testing/web-platform/tests/webnn/idlharness.https.any.js @@ -0,0 +1,56 @@ +// META: global=window,dedicatedworker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: script=./resources/utils.js +// META: timeout=long + +// https://webmachinelearning.github.io/webnn/ + +'use strict'; + +idl_test( + ['webnn'], + ['html', 'webidl', 'webgpu'], + async (idl_array) => { + if (self.GLOBAL.isWindow()) { + idl_array.add_objects({ Navigator: ['navigator'] }); + } else if (self.GLOBAL.isWorker()) { + idl_array.add_objects({ WorkerNavigator: ['navigator'] }); + } + + idl_array.add_objects({ + NavigatorML: ['navigator'], + ML: ['navigator.ml'], + MLContext: ['context'], + MLOperand: ['input', 'filter', 'output'], + MLActivation: ['relu'], + MLGraphBuilder: ['builder'], + MLGraph: ['graph'] + }); + + for (const executionType of ExecutionArray) { + const isSync = executionType === 'sync'; + if (self.GLOBAL.isWindow() && isSync) { + continue; + } + + if (isSync) { + self.context = navigator.ml.createContextSync(); + } else { + self.context = await navigator.ml.createContext(); + } + + self.builder = new MLGraphBuilder(self.context); + self.input = builder.input('input', {type: 'float32', dimensions: [1, 1, 5, 5]}); + self.filter = builder.constant({type: 'float32', dimensions: [1, 1, 3, 3]}, new Float32Array(9).fill(1)); + self.relu = builder.relu(); + self.output = builder.conv2d(input, filter, {activation: relu, inputLayout: "nchw"}); + + if (isSync) { + self.graph = builder.buildSync({output}); + } else { + self.graph = await builder.build({output}); + } + } + } +); |