Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
96cf7f5 verified
Raw
History Blame
49.1 kB
{
"op": "ai.onnx.DequantizeLinear",
"fixtureArrays": {
"uint8_axis1_rank4_onnx_backend_input_x": [3, 89, 34, 200, 74, 59, 5, 24, 24, 87, 32, 13, 245, 99, 4, 142, 121, 102],
"blocked_no_zero_point_rank4_axis1_symmetric_input_x": [-8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 48, -16, -32, -48, -64]
},
"cases": [
{
"name": "int16_per_axis_vec4_boundaries",
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "int16",
"shape": [2, 4],
"data": { "kind": "values", "values": [-32768, -1, 0, 32767, 32767, 0, -1, -32768] }
},
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.5, 1.0, 2.0, 0.25] } },
"x_zero_point": {
"dtype": "int16",
"shape": [4],
"data": { "kind": "values", "values": [-32768, -2, 1, 32767] }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 4],
"tolerance": 0.000001,
"data": { "kind": "values", "values": [0.0, 1.0, -2.0, 0.0, 32767.5, 2.0, -4.0, -16383.75] }
}
}
},
{
"name": "dispatch_cliff_scalar_scale_67M",
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [67108864], "data": { "kind": "cycle", "values": [0, 1, 2, 3, 4, 5, 6, 7] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "constant", "value": 0.5 } }
},
"outputs": { "y": { "dtype": "float32", "shape": [67108864], "tolerance": 0.0001 } }
},
{
"name": "uint8_scalar_zero",
"inputs": {
"x": { "dtype": "uint8", "shape": [2, 3], "data": { "kind": "values", "values": [0, 127, 128, 129, 255, 4] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.5] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 3] } }
},
{
"name": "uint8_subnormal_scale_vec4_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8",
"notes": "Valid positive subnormal scale: dequantized tiny values should not be flushed to zero."
},
"inputs": {
"x": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [0, 1, 2, 3] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1e-40] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0 } }
},
{
"name": "uint8_subnormal_scale_nonzero_zero_point_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8",
"notes": "Subnormal scale with a nonzero zero point should preserve tiny signed dequantized offsets around zero."
},
"inputs": {
"x": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [126, 127, 128, 129] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1e-40] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0 } }
},
{
"name": "int8_subnormal_scale_preserves_signed_steps_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8",
"notes": "Signed-output companion: subnormal scale should preserve tiny signed dequantized offsets around zero."
},
"inputs": {
"x": { "dtype": "int8", "shape": [5], "data": { "kind": "values", "values": [-2, -1, 0, 1, 2] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1e-40] } },
"x_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [5], "tolerance": 0 } }
},
{
"name": "int8_subnormal_scale_vec4_preserves_signed_steps_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8",
"notes": "Vec4 signed-output companion for subnormal DequantizeLinear scale handling."
},
"inputs": {
"x": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [-1, 0, 1, 2] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1e-40] } },
"x_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0 } }
},
{
"name": "uint8_axis1_per_channel_subnormal_scale_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_Default",
"notes": "Per-axis companion for subnormal DequantizeLinear scale handling: each channel uses a valid subnormal scale and nonzero zero point."
},
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [2, 4],
"data": { "kind": "values", "values": [10, 21, 29, 42, 12, 18, 30, 41] }
},
"x_scale": {
"dtype": "float32",
"shape": [4],
"data": { "kind": "values", "values": [1e-40, 1e-40, 1e-40, 1e-40] }
},
"x_zero_point": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [10, 20, 30, 40] } }
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 4],
"tolerance": 0,
"data": { "kind": "values", "values": [0.0, 1e-40, -1e-40, 2e-40, 2e-40, -2e-40, 0.0, 1e-40] }
}
}
},
{
"name": "uint8_axis0_per_channel_subnormal_scale_vec4_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_0",
"notes": "Vec4 per-axis companion for subnormal DequantizeLinear scale handling: axis=0 has inner size 4, so the vectorized channel path must preserve tiny one-LSB steps."
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [2, 4],
"data": { "kind": "values", "values": [10, 11, 12, 13, 22, 18, 20, 21] }
},
"x_scale": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [1e-40, 1e-40] } },
"x_zero_point": { "dtype": "uint8", "shape": [2], "data": { "kind": "values", "values": [10, 20] } }
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 4],
"tolerance": 0,
"data": { "kind": "values", "values": [0.0, 1e-40, 2e-40, 3e-40, 2e-40, -2e-40, 0.0, 1e-40] }
}
}
},
{
"name": "uint8_axis1_per_channel_subnormal_scale_no_zero_point_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Without_Zero_Point",
"notes": "Per-axis extension of omitted-zero-point coverage: default uint8 zero point is zero, but each channel still uses a valid subnormal scale."
},
"attrs": { "axis": 1 },
"inputs": {
"x": { "dtype": "uint8", "shape": [2, 4], "data": { "kind": "values", "values": [0, 1, 2, 3, 2, 0, 1, 0] } },
"x_scale": {
"dtype": "float32",
"shape": [4],
"data": { "kind": "values", "values": [1e-40, 1e-40, 1e-40, 1e-40] }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 4],
"tolerance": 0,
"data": { "kind": "values", "values": [0.0, 1e-40, 2e-40, 3e-40, 2e-40, 0.0, 1e-40, 0.0] }
}
}
},
{
"name": "uint8_axis0_per_channel_subnormal_scale_no_zero_point_vec4_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Without_Zero_Point",
"notes": "Vec4 per-axis extension of omitted-zero-point coverage with valid subnormal scales."
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [2, 4], "data": { "kind": "values", "values": [0, 1, 2, 3, 2, 0, 0, 1] } },
"x_scale": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [1e-40, 1e-40] } }
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 4],
"tolerance": 0,
"data": { "kind": "values", "values": [0.0, 1e-40, 2e-40, 3e-40, 2e-40, 0.0, 0.0, 1e-40] }
}
}
},
{
"name": "int32_subnormal_scale_no_zero_point_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes denormal results of floating-point multiplication (e.g. 2 * 1e-40 -> 0); ORT computes (x - zp) * subnormal_scale on CPU with denormal support, so subnormal x_scale cases remain CPU-reference-only."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int32",
"notes": "Valid int32 dequantization with a subnormal scale and omitted zero point; outputs should remain finite subnormal values."
},
"inputs": {
"x": { "dtype": "int32", "shape": [4], "data": { "kind": "values", "values": [-2, -1, 0, 1] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1e-40] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0 } }
},
{
"name": "int8_axis1_f16",
"attrs": { "axis": 1 },
"inputs": {
"x": { "dtype": "int8", "shape": [2, 3], "data": { "kind": "values", "values": [-128, -1, 0, 1, 2, 127] } },
"x_scale": { "dtype": "float16", "shape": [3], "data": { "kind": "values", "values": [0.25, 0.5, 2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [0, -1, 1] } }
},
"outputs": { "y": { "dtype": "float16", "shape": [2, 3] } },
"tolerance": 0.002
},
{
"name": "uint8_no_zero_negative_axis",
"attrs": { "axis": -1 },
"inputs": {
"x": { "dtype": "uint8", "shape": [2, 2], "data": { "kind": "values", "values": [10, 20, 30, 40] } },
"x_scale": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.1, 0.25] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2] } }
},
{
"name": "ort_int16_negative_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int16"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int16", "shape": [4], "data": { "kind": "values", "values": [-300, -30, -1025, 1270] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int16", "shape": [], "data": { "kind": "values", "values": [-1024] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "uint8_scalar_onnx_backend",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [0, 3, 128, 255] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_rank0_scale_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [0, 3, 128, 255] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "uint8_axis1_rank4_onnx_backend",
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [1, 3, 3, 2],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/uint8_axis1_rank4_onnx_backend_input_x" } }
},
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [2.0, 4.0, 5.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [84, 24, 196] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 3, 3, 2], "tolerance": 0.000001 } }
},
{
"name": "int8_scalar_zero_point_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [-30, -3, 100, 127] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [-10] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_rank0_scale_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [-30, -3, 100, 127] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-10] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_large_tail_1039",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8_Large"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [1, 1039], "data": { "kind": "constant", "value": 1 } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [1.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 1039], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_large_tail_1039",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8_Large"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [1, 1039], "data": { "kind": "constant", "value": 1 } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [1.0] } },
"x_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 1039], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_2d_scalar_scale_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.2D"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [3, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 0, 1, 2, 3, 0, 10, 20, 30] }
},
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [1.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_scalar_input_rank0_with_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Scalar"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [100] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-10] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [], "tolerance": 0.000001 } }
},
{
"name": "ort_scalar_input_rank0_no_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Without_Zero_Point"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [100] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [], "tolerance": 0.000001 } }
},
{
"name": "ort_scalar_input_rank0_f16_with_zero_point",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpMLFloat16Test.Scalar"
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [100] } },
"x_scale": { "dtype": "float16", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-10] } }
},
"outputs": { "y": { "dtype": "float16", "shape": [], "tolerance": 0.002 } }
},
{
"name": "ort_opset25_f16_int8_axis1",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpMLFloat16Test.Opset25_PerAxisInt8_Cuda"
},
"attrs": { "axis": 1 },
"inputs": {
"x": { "dtype": "int8", "shape": [2, 4], "data": { "kind": "values", "values": [-2, -1, 0, 1, 2, 3, 4, 5] } },
"x_scale": { "dtype": "float16", "shape": [4], "data": { "kind": "values", "values": [2.0, 2.0, 4.0, 4.0] } },
"x_zero_point": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [0, 0, 0, 0] } }
},
"outputs": { "y": { "dtype": "float16", "shape": [2, 4], "tolerance": 0.002 } }
},
{
"name": "ort_no_zero_point_int8_1x8",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.No_Zero_Point_int8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [1, 8],
"data": { "kind": "values", "values": [-10, 50, 100, 120, -9, 49, 99, 119] }
},
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 8], "tolerance": 0.000001 } }
},
{
"name": "ort_no_zero_point_uint8_1x8",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.No_Zero_Point_uint8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [1, 8],
"data": { "kind": "values", "values": [10, 50, 100, 180, 9, 49, 99, 179] }
},
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 8], "tolerance": 0.000001 } }
},
{
"name": "ort_zero_point_int8_1x8",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Zero_Point_int8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [1, 8],
"data": { "kind": "values", "values": [-10, 50, 100, 120, -9, 49, 99, 119] }
},
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [], "data": { "kind": "values", "values": [-10] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 8], "tolerance": 0.000001 } }
},
{
"name": "ort_zero_point_uint8_1x8",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Zero_Point_uint8"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [1, 8],
"data": { "kind": "values", "values": [10, 50, 100, 180, 9, 49, 99, 119] }
},
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [10] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 8], "tolerance": 0.000001 } }
},
{
"name": "int8_no_zero_scalar_explicit_float32_output_dtype",
"provenance": {
"notes": "Explicit output_dtype=FLOAT is the non-default spelling of the same float32 route selected from x_scale when output_dtype is omitted."
},
"attrs": { "axis": 0, "output_dtype": 1 },
"inputs": {
"x": { "dtype": "int8", "shape": [5], "data": { "kind": "values", "values": [-128, -1, 0, 1, 127] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.25] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [5], "tolerance": 0.000001 } }
},
{
"name": "scalar_x4_int8_no_zero_tail",
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [17],
"data": { "kind": "values", "values": [-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 48, 64, 96] }
},
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.125] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [17], "tolerance": 0.000001 } }
},
{
"name": "vec4_tail_int8_no_zero_4097",
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [4097], "data": { "kind": "constant", "value": -4 } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.5] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4097], "tolerance": 0.000001 } },
"provenance": { "notes": "Covers the packed bulk plus scalar tail without a zero point." }
},
{
"name": "scalar_x4_uint8_with_zero_point_tail",
"attrs": { "axis": 0 },
"provenance": {
"notes": "Compact sibling of the large uint8 tail benchmark: scalar scale and scalar uint8 zero point with numel % 4 != 0 selects the scalar_x4_with_zero_point path and exercises tail handling."
},
"inputs": {
"x": {
"dtype": "uint8",
"shape": [17],
"data": {
"kind": "values",
"values": [0, 3, 7, 11, 15, 31, 63, 95, 127, 128, 129, 160, 192, 224, 240, 252, 255]
}
},
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.125] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [17], "tolerance": 0.000001 } }
},
{
"name": "vec4_tail_uint8_with_zero_point_4097",
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [4097], "data": { "kind": "constant", "value": 7 } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.25] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [3] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4097], "tolerance": 0.000001 } },
"provenance": { "notes": "Covers the packed bulk plus scalar tail with a scalar zero point." }
},
{
"name": "uint8_axis0_rank2_per_row",
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "uint8", "shape": [3, 2], "data": { "kind": "values", "values": [6, 14, 40, 42, 20, 130] } },
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [0.5, 1.0, 2.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [10, 20, 30] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 2], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_per_channel_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_0"
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [3, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 0, 1, 2, 3, 0, 10, 20, 30] }
},
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [1.0, 2.0, 4.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [0, 0, 0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_per_channel_axis1_nonzero_zero_points",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_1_int8"
},
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [3, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 0, 2, 4, 6, 0, 10, 20, 30] }
},
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [1.0, 2.0, 4.0, 8.0] } },
"x_zero_point": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [0, -10, -20, -30] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.000001 } }
},
{
"name": "int32_scalar_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int32",
"notes": "Uses a length-1 scale tensor for the framework's scalar-style fixture encoding."
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int32", "shape": [4], "data": { "kind": "values", "values": [-30, -3, 100, 127] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "int32_nonzero_zero_point_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int32_Non_Zero_Zero_Point",
"notes": "Uses length-1 scale and zero-point tensors for the framework's scalar-style fixture encoding."
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int32", "shape": [4], "data": { "kind": "values", "values": [-30, -3, 100, 127] } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "int32", "shape": [1], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_per_channel_default_axis_rank4",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_Default"
},
"inputs": {
"x": {
"dtype": "int8",
"shape": [2, 3, 2, 4],
"data": {
"kind": "values",
"values": [7, 9, 10, 10, 5, 8, 9, 1, 8, 6, 7, 9, 10, 0, 7, 10, 8, 2, 6, 0, 5, 9, 8, 1, 2, 7, 5, 3, 2, 4, 1, 3, 8, 7, 4, 8, 10, 1, 5, 5, 7, 7, 0, 2, 4, 4, 0, 5]
}
},
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [1.0, 10.0, 7.0] } },
"x_zero_point": { "dtype": "int8", "shape": [3], "data": { "kind": "values", "values": [10, 2, 1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 3, 2, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_int32_per_channel_axis1",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Axis_1_int32"
},
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "int32",
"shape": [3, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 0, 2, 4, 6, 0, 10, 20, 30] }
},
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [1.0, 2.0, 4.0, 8.0] } },
"x_zero_point": { "dtype": "int32", "shape": [4], "data": { "kind": "values", "values": [0, 0, 0, 0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_per_channel_negative_axis_minus2",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Per_Channel_Neg_2"
},
"attrs": { "axis": -2 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [3, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 0, 1, 2, 3, 0, 10, 20, 30] }
},
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [1.0, 2.0, 4.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [0, 0, 0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_uint8_large_vectorized_zero",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Uint8_Large",
"notes": "Same non-vector-aligned element count as ORT, flattened from [1, 1039] to [1039]."
},
"inputs": {
"x": { "dtype": "uint8", "shape": [1039], "data": { "kind": "constant", "value": 1 } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [1], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1039], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_large_vectorized_zero",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8_Large",
"notes": "Same non-vector-aligned element count as ORT, flattened from [1, 1039] to [1039]."
},
"inputs": {
"x": { "dtype": "int8", "shape": [1039], "data": { "kind": "constant", "value": 1 } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1.0] } },
"x_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1039], "tolerance": 0.000001 } }
},
{
"name": "ort_int8_non_aligned_size_135",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOpTest.Int8_NonAlignedSize_Initializer",
"notes": "Same non-aligned length; constant data keeps the fixture compact."
},
"inputs": {
"x": { "dtype": "int8", "shape": [135], "data": { "kind": "constant", "value": 7 } },
"x_scale": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.25] } },
"x_zero_point": { "dtype": "int8", "shape": [1], "data": { "kind": "values", "values": [0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [135], "tolerance": 0.000001 } }
},
{
"name": "onnx_backend_dequantizelinear",
"provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_dequantizelinear" },
"inputs": {
"x": { "dtype": "uint8", "shape": [4], "data": { "kind": "values", "values": [0, 3, 128, 255] } },
"x_scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [2.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4], "tolerance": 0.00001 } }
},
{
"name": "onnx_backend_dequantizelinear_axis",
"provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_dequantizelinear_axis" },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [1, 3, 3, 2],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/uint8_axis1_rank4_onnx_backend_input_x" } }
},
"x_scale": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [2.0, 4.0, 5.0] } },
"x_zero_point": { "dtype": "uint8", "shape": [3], "data": { "kind": "values", "values": [84, 24, 196] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 3, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "onnx_backend_dequantizelinear_blocked",
"provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_dequantizelinear_blocked" },
"attrs": { "axis": 1, "block_size": 2 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [1, 4, 3, 2],
"data": {
"kind": "values",
"values": [3, 89, 34, 200, 74, 59, 5, 24, 24, 87, 32, 13, 5, 12, 12, 33, 65, 42, 245, 99, 4, 142, 121, 102]
}
},
"x_scale": {
"dtype": "float32",
"shape": [1, 2, 3, 2],
"data": { "kind": "values", "values": [3.0, 2.0, 4.0, 1.0, 2.0, 2.0, 5.0, 2.0, 4.0, 3.0, 5.0, 2.0] }
},
"x_zero_point": {
"dtype": "uint8",
"shape": [1, 2, 3, 2],
"data": { "kind": "values", "values": [1, 0, 0, 1, 2, 20, 3, 2, 4, 3, 15, 2] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 4, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "ort_blocked_uint8_with_zero_point_rank3_axis2",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOp21BlockedTest.UnsignedInt_UseZeroPoint_LastAxis",
"notes": "Valid blocked dequantization with per-block zero-points on the last axis."
},
"attrs": { "axis": 2, "block_size": 2 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [2, 2, 4],
"data": { "kind": "values", "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] }
},
"x_scale": {
"dtype": "float32",
"shape": [2, 2, 2],
"data": { "kind": "values", "values": [-2.0, -4.0, 3.5, 1.0, 2.0, 4.0, -3.5, -1.0] }
},
"x_zero_point": {
"dtype": "uint8",
"shape": [2, 2, 2],
"data": { "kind": "values", "values": [2, 0, 1, 9, 13, 5, 11, 6] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.000001 } }
},
{
"name": "ort_blocked_uint8_no_zero_point_rank3_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc",
"test": "DequantizeLinearOp21BlockedTest.UnsignedInt_NoZeroPoint_FirstAxis"
},
"attrs": { "axis": 0, "block_size": 2 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [4, 2, 2],
"data": { "kind": "values", "values": [1, 2, 3, 4, 5, 6, 7, 8, 20, 22, 24, 26, 40, 42, 44, 46] }
},
"x_scale": {
"dtype": "float32",
"shape": [2, 2, 2],
"data": { "kind": "values", "values": [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [4, 2, 2], "tolerance": 0.000001 } }
},
{
"name": "empty_input_zero_dim",
"inputs": {
"x": { "dtype": "uint8", "shape": [2, 0], "data": { "kind": "values", "values": [] } },
"x_scale": { "dtype": "float32", "shape": [0], "data": { "kind": "values", "values": [] } },
"x_zero_point": { "dtype": "uint8", "shape": [0], "data": { "kind": "values", "values": [] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 0], "tolerance": 0 } }
},
{
"name": "int8_blocked_rank4_axis1_nonzero_zp",
"attrs": { "axis": 1, "block_size": 2 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [1, 4, 3, 2],
"data": {
"kind": "values",
"values": [-50, 12, -7, 88, 30, -41, 5, -24, 24, 87, -32, 13, 5, -12, 12, -33, 65, 42, -120, 99, 4, -100, 121, -102]
}
},
"x_scale": {
"dtype": "float32",
"shape": [1, 2, 3, 2],
"data": { "kind": "values", "values": [3.0, 2.0, 4.0, 1.0, 2.0, 2.0, 5.0, 2.0, 4.0, 3.0, 5.0, 2.0] }
},
"x_zero_point": {
"dtype": "int8",
"shape": [1, 2, 3, 2],
"data": { "kind": "values", "values": [1, 0, -2, 1, 2, -20, 3, 2, -4, 3, 15, 2] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 4, 3, 2], "tolerance": 0.000001 } }
},
{
"name": "blocked_no_zero_point_rank4_axis1_symmetric",
"attrs": { "axis": 1, "block_size": 2 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [1, 4, 2, 2],
"data": {
"kind": "values",
"values": { "$ref": "#/fixtureArrays/blocked_no_zero_point_rank4_axis1_symmetric_input_x" }
}
},
"x_scale": {
"dtype": "float32",
"shape": [1, 2, 2, 2],
"data": { "kind": "values", "values": [0.5, 1.0, 1.5, 2.0, 0.25, 0.75, 1.25, 1.75] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 4, 2, 2], "tolerance": 0.000001 } }
},
{
"name": "empty_blocked_rank4_axis1_zero_channel",
"attrs": { "axis": 1, "block_size": 2 },
"inputs": {
"x": { "dtype": "int8", "shape": [1, 0, 2, 2], "data": { "kind": "values", "values": [] } },
"x_scale": { "dtype": "float32", "shape": [1, 0, 2, 2], "data": { "kind": "values", "values": [] } },
"x_zero_point": { "dtype": "int8", "shape": [1, 0, 2, 2], "data": { "kind": "values", "values": [] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 0, 2, 2], "tolerance": 0 } }
},
{
"name": "per_axis0_dispatch_fold_17M_last_rows",
"requires": { "limits": { "maxBufferSize": 281018368, "maxStorageBufferBindingSize": 281018368 } },
"provenance": {
"notes": "Its largest tensor is 281018368 bytes, so the case needs an adapter whose maxBufferSize and maxStorageBufferBindingSize both reach it — declared, because the WebGPU guaranteed minimums (256 MiB / 128 MiB) do not, and a device at them must report the case inapplicable rather than fail allocating it."
},
"attrs": { "axis": 0 },
"inputs": {
"x": {
"dtype": "uint8",
"shape": [67, 1048576],
"data": { "kind": "cycle", "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }
},
"x_scale": {
"dtype": "float32",
"shape": [67],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.05, "scale": 0.01, "offset": 0.02 }
},
"x_zero_point": { "dtype": "uint8", "shape": [67], "data": { "kind": "constant", "value": 5 } }
},
"outputs": { "y": { "dtype": "float32", "shape": [67, 1048576], "tolerance": 0.0001 } }
},
{
"name": "innermost_axis_vec4_no_zero_two_rows",
"provenance": {
"notes": "Exercises vec4-bound innermost per-axis scales without a zero point. Expected values come from the TypeScript dequantization reference."
},
"attrs": { "axis": 1 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [2, 4],
"data": { "kind": "values", "values": [-8, -4, 2, 7, 10, -12, 20, -24] }
},
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.25, 0.5, 1.5, 2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.000001 } }
},
{
"name": "vec4_cross_axis_rows_width6_with_zero_point",
"provenance": {
"notes": "A vec4 crosses each six-element row boundary, so its four lanes may use two different per-axis scale and zero-point entries. Locks the lane-specific parameter-index path."
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [4, 6], "data": { "kind": "cycle", "values": [-42, -8, 0, 7, 31, 63] } },
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.25, 0.5, 1.0, 2.0] } },
"x_zero_point": { "dtype": "int8", "shape": [4], "data": { "kind": "values", "values": [-3, 2, 5, -7] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4, 6], "tolerance": 0.000001 } }
},
{
"name": "vec4_cross_axis_rows_width6_no_zero_point",
"provenance": {
"notes": "Symmetric per-channel dequantization over six-element rows with x_zero_point omitted (ONNX makes it optional and defaults it to 0), so a four-lane vector still crosses each row boundary and may need two different per-axis scale entries while no zero-point binding exists. Twin of vec4_cross_axis_rows_width6_with_zero_point; the seven-value input cycle is coprime with the six-wide row so no two rows repeat the same lane pattern. Expected values come from the TypeScript dequantization reference."
},
"attrs": { "axis": 0 },
"inputs": {
"x": { "dtype": "int8", "shape": [4, 6], "data": { "kind": "cycle", "values": [-42, -8, 0, 7, 31, 63, -19] } },
"x_scale": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.25, 0.5, 1.0, 2.0] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [4, 6], "tolerance": 0.000001 } }
},
{
"name": "blocked_no_zero_point_rank4_axis1_symmetric_f16",
"provenance": {
"notes": "float16 output exercises half-precision storage on the blocked-axis route without a zero point."
},
"attrs": { "axis": 1, "block_size": 2 },
"inputs": {
"x": {
"dtype": "int8",
"shape": [1, 4, 2, 2],
"data": {
"kind": "values",
"values": { "$ref": "#/fixtureArrays/blocked_no_zero_point_rank4_axis1_symmetric_input_x" }
}
},
"x_scale": {
"dtype": "float16",
"shape": [1, 2, 2, 2],
"data": { "kind": "values", "values": [0.5, 1.0, 1.5, 2.0, 0.25, 0.75, 1.25, 1.75] }
}
},
"outputs": { "y": { "dtype": "float16", "shape": [1, 4, 2, 2], "tolerance": 0 } }
}
]
}