Skip to content

Backend Operator Support Report

This file is generated from the converter sources by scripts/generate_backend_operator_report.py. Do not edit it manually. Run make docs-backend-ops after backend changes; CI fails on drift (make docs-backend-ops-check).

Operation names are the WebNN builder names returned by Operation::op_type() in src/operators.rs. "Supported" means the converter emits a lowering for the operation. Data type restrictions, dynamic shape limits and known failing cases are tracked per backend in tests/wpt_conformance/*_expected_failures.txt and on the WPT conformance dashboard.

Summary

Backend Converter source Detection rule Supported
ONNX Runtime src/converters/onnx.rs Operation variants referenced by the converter 100 of 100
CoreML src/converters/coreml_mlprogram.rs Operation variants referenced by the converter, plus names in its op-type dispatch 100 of 100
TensorRT src/converters/trtx.rs keys of the match op_type dispatch table 99 of 100
LiteRT src/converters/litert.rs Operation variants referenced by the converter 92 of 100

Operation matrix

Operation ONNX Runtime CoreML TensorRT LiteRT
abs yes yes yes yes
add yes yes yes yes
argMax yes yes yes yes
argMin yes yes yes yes
averagePool2d yes yes yes yes
batchNormalization yes yes yes yes
cast yes yes yes yes
ceil yes yes yes yes
clamp yes yes yes yes
concat yes yes yes yes
conv2d yes yes yes yes
convTranspose2d yes yes yes yes
cos yes yes yes yes
cumulativeSum yes yes yes yes
dequantizeLinear yes yes yes yes
div yes yes yes yes
elu yes yes yes yes
equal yes yes yes yes
erf yes yes yes yes
exp yes yes yes yes
expand yes yes yes yes
floor yes yes yes yes
gather yes yes yes yes
gatherElements yes yes yes yes
gatherND yes yes yes yes
gelu yes yes yes yes
gemm yes yes yes yes
globalAveragePool yes yes yes -
globalMaxPool yes yes yes -
greater yes yes yes yes
greaterOrEqual yes yes yes yes
gru yes yes yes -
gruCell yes yes yes -
hardSigmoid yes yes yes yes
hardSwish yes yes yes yes
identity yes yes yes yes
instanceNormalization yes yes yes yes
isInfinite yes yes yes yes
isNaN yes yes yes yes
l2Pool2d yes yes yes yes
layerNormalization yes yes yes yes
leakyRelu yes yes yes yes
lesser yes yes yes yes
lesserOrEqual yes yes yes yes
linear yes yes yes yes
log yes yes yes yes
logicalAnd yes yes yes yes
logicalNot yes yes yes yes
logicalOr yes yes yes yes
logicalXor yes yes yes yes
lstm yes yes yes -
lstmCell yes yes yes -
matmul yes yes yes yes
max yes yes yes yes
maxPool2d yes yes yes yes
min yes yes yes yes
mul yes yes yes yes
neg yes yes yes yes
notEqual yes yes yes yes
pad yes yes yes yes
pow yes yes yes yes
prelu yes yes yes yes
quantizeLinear yes yes yes yes
reciprocal yes yes yes yes
reduceL1 yes yes yes yes
reduceL2 yes yes yes yes
reduceLogSum yes yes yes yes
reduceLogSumExp yes yes yes yes
reduceMax yes yes yes yes
reduceMean yes yes yes yes
reduceMin yes yes yes yes
reduceProduct yes yes yes yes
reduceSum yes yes yes yes
reduceSumSquare yes yes yes yes
relu yes yes yes yes
resample2d yes yes yes yes
reshape yes yes yes yes
reverse yes yes yes yes
roundEven yes yes yes yes
scatterElements yes yes yes yes
scatterND yes yes yes yes
shape yes yes - -
sigmoid yes yes yes yes
sign yes yes yes yes
sin yes yes yes yes
slice yes yes yes yes
softmax yes yes yes yes
softplus yes yes yes yes
softsign yes yes yes yes
split yes yes yes yes
sqrt yes yes yes yes
squeeze yes yes yes yes
sub yes yes yes yes
tan yes yes yes yes
tanh yes yes yes yes
tile yes yes yes yes
transpose yes yes yes yes
triangular yes yes yes yes
unsqueeze yes yes yes -
where yes yes yes yes

Unsupported operations per backend

  • ONNX Runtime: none
  • CoreML: none
  • TensorRT: shape
  • LiteRT: globalAveragePool, globalMaxPool, gru, gruCell, lstm, lstmCell, shape, unsqueeze

Notes

  • shape: rustnn extension used by onnx2webnn exports.
  • squeeze: removed from the WebNN spec (emulation appendix), kept for onnx2webnn.
  • unsqueeze: removed from the WebNN spec (emulation appendix), kept for onnx2webnn.