ai.onnx.BitwiseNot / build /webgpu /manifest.json
Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
e3afe0f verified
Raw
History Blame
2.86 kB
{
"domain": "ai.onnx",
"name": "BitwiseNot",
"sinceVersion": 18,
"description": "Applies a bitwise NOT to each element of the input tensor, flipping every bit. The output has the same shape and integer dtype as the input.",
"inputs": [{ "role": "X", "dtype": "T", "description": "Input integer tensor." }],
"outputs": [
{
"role": "Y",
"dtype": "T",
"rank": "ranks.X",
"description": "Output tensor with each element bitwise-negated; same shape and dtype as `X`.",
"shape": "shapes.X"
}
],
"typeConstraints": { "T": ["uint32", "int32", "int16", "uint8", "int8"] },
"args": {
"x": { "kind": "tensor", "semantic": "X", "role": "input" },
"y": { "kind": "tensor", "semantic": "Y", "role": "output" }
},
"tunables": { "WORKGROUP_SIZE": 256 },
"derive": { "shapeContract": "numel(shapes.X) == numel(shapes.Y)" },
"constants": { "logicalDtype": "tensorDtypes.Y" },
"bindingSets": {
"vector": [
{ "name": "x", "arg": "x", "buffer": { "type": "read-only-storage" }, "elementType": "$vectorScalar" },
{ "name": "y", "arg": "y", "buffer": { "type": "storage" }, "elementType": "$vectorScalar" },
{
"name": "params",
"semantic": "kernel.params",
"buffer": { "type": "uniform" },
"struct": { "name": "Params", "fields": [{ "name": "count", "type": "u32", "value": "numel(shapes.y) / 4" }] }
}
],
"scalar": [
{ "name": "x", "arg": "x", "semantic": "X", "buffer": { "type": "read-only-storage" }, "elementType": "$T" },
{ "name": "y", "arg": "y", "semantic": "Y", "buffer": { "type": "storage" }, "elementType": "$T" },
{
"name": "params",
"semantic": "kernel.params",
"buffer": { "type": "uniform" },
"struct": { "name": "Params", "fields": [{ "name": "count", "type": "u32", "value": "numel(shapes.Y)" }] }
}
]
},
"variants": [
{
"id": "elementwise_vec4",
"priority": 20,
"when": ["numel(shapes.X) % 4 == 0", "shapeContract"],
"constants": { "vectorScalar": "\"vec4<\" ~ dtypes.T ~ \">\"" },
"passes": [
{
"id": "main",
"name": "BitwiseNot.vec4",
"source": { "shader": "bitwise-not.wgsl.jinja", "inputs": { "vectorized": true } },
"bindings": "vector",
"dispatch": { "threads": "numel(shapes.Y) / 4", "workgroupSize": "tunables.WORKGROUP_SIZE" }
}
]
},
{
"id": "elementwise",
"when": "shapeContract",
"passes": [
{
"id": "main",
"name": "BitwiseNot",
"source": { "shader": "bitwise-not.wgsl.jinja", "inputs": { "vectorized": false } },
"bindings": "scalar",
"dispatch": { "threads": "numel(shapes.Y)", "workgroupSize": "tunables.WORKGROUP_SIZE" }
}
]
}
]
}