Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
wgsl: Implement AbstractFloat addition execution tests
Browse files Browse the repository at this point in the history
There is no compound tests, since += is not defined for consts, and AbstractFloats are always const.

Lots of little tweaks in the PR wrt to renaming things to distinguish
between AbstractFloat and AbstractInt, and threading generics through
to allow reusing the same code for number and bigint.

Issue #3390
zoddicus committed Feb 12, 2024
1 parent b73e8cc commit 1acdb0d
Showing 16 changed files with 436 additions and 200 deletions.
211 changes: 106 additions & 105 deletions src/resources/cache/hashes.json
Original file line number Diff line number Diff line change
@@ -1,107 +1,108 @@
{
"webgpu/shader/execution/binary/af_addition.bin": "d2a94254",
"webgpu/shader/execution/binary/af_logical.bin": "e32bdae7",
"webgpu/shader/execution/binary/af_division.bin": "998cb6fc",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "496bd4ec",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "dd4e9a4f",
"webgpu/shader/execution/binary/af_multiplication.bin": "e81deb2c",
"webgpu/shader/execution/binary/af_remainder.bin": "5aeed2e",
"webgpu/shader/execution/binary/af_subtraction.bin": "dc69ddc1",
"webgpu/shader/execution/binary/f16_addition.bin": "18815537",
"webgpu/shader/execution/binary/f16_logical.bin": "62ffb51f",
"webgpu/shader/execution/binary/f16_division.bin": "e4bf7770",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "ca4752e2",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "fec02413",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "1a7e0d08",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "8044743e",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "ffb049e3",
"webgpu/shader/execution/binary/f16_multiplication.bin": "321b90f1",
"webgpu/shader/execution/binary/f16_remainder.bin": "bafa853",
"webgpu/shader/execution/binary/f16_subtraction.bin": "95a6af75",
"webgpu/shader/execution/binary/f32_addition.bin": "84b9178a",
"webgpu/shader/execution/binary/f32_logical.bin": "bc43ddfb",
"webgpu/shader/execution/binary/f32_division.bin": "2a526e73",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "23f30d9c",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "955042e6",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "61829041",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "2f60e0a",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "3d6aba5e",
"webgpu/shader/execution/binary/f32_multiplication.bin": "2b4ddfb",
"webgpu/shader/execution/binary/f32_remainder.bin": "a3162fbe",
"webgpu/shader/execution/binary/f32_subtraction.bin": "5844472c",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "77bd762d",
"webgpu/shader/execution/binary/i32_comparison.bin": "deaf3d06",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "91ddc813",
"webgpu/shader/execution/binary/u32_comparison.bin": "82d7e10a",
"webgpu/shader/execution/abs.bin": "c2a08da0",
"webgpu/shader/execution/acos.bin": "ecb8f6e4",
"webgpu/shader/execution/acosh.bin": "e908c085",
"webgpu/shader/execution/asin.bin": "db1956dd",
"webgpu/shader/execution/asinh.bin": "d1c4370e",
"webgpu/shader/execution/atan.bin": "d32f84de",
"webgpu/shader/execution/atan2.bin": "c82ce2a9",
"webgpu/shader/execution/atanh.bin": "1d7fa05e",
"webgpu/shader/execution/bitcast.bin": "e6af5117",
"webgpu/shader/execution/ceil.bin": "6822702d",
"webgpu/shader/execution/clamp.bin": "2dcc8e33",
"webgpu/shader/execution/cos.bin": "1e4b5876",
"webgpu/shader/execution/cosh.bin": "88b43457",
"webgpu/shader/execution/cross.bin": "64b251e3",
"webgpu/shader/execution/degrees.bin": "ff5755de",
"webgpu/shader/execution/determinant.bin": "89ce1093",
"webgpu/shader/execution/distance.bin": "5694ecf1",
"webgpu/shader/execution/dot.bin": "60da4277",
"webgpu/shader/execution/exp.bin": "5ae18fc8",
"webgpu/shader/execution/exp2.bin": "ff8f009b",
"webgpu/shader/execution/faceForward.bin": "6ce196c1",
"webgpu/shader/execution/floor.bin": "addfc3d9",
"webgpu/shader/execution/fma.bin": "668f05ee",
"webgpu/shader/execution/fract.bin": "6d036c34",
"webgpu/shader/execution/frexp.bin": "3609ccd2",
"webgpu/shader/execution/inverseSqrt.bin": "b65957cd",
"webgpu/shader/execution/ldexp.bin": "99dcba57",
"webgpu/shader/execution/length.bin": "48edc788",
"webgpu/shader/execution/log.bin": "59d405b3",
"webgpu/shader/execution/log2.bin": "b897533e",
"webgpu/shader/execution/max.bin": "bb46b974",
"webgpu/shader/execution/min.bin": "e4e95641",
"webgpu/shader/execution/mix.bin": "4b781b3b",
"webgpu/shader/execution/modf.bin": "dda61537",
"webgpu/shader/execution/normalize.bin": "73a2bb69",
"webgpu/shader/execution/pack2x16float.bin": "d4a1d8f6",
"webgpu/shader/execution/pow.bin": "f4b1f7c6",
"webgpu/shader/execution/quantizeToF16.bin": "9632b1a3",
"webgpu/shader/execution/radians.bin": "838c408e",
"webgpu/shader/execution/reflect.bin": "401123c3",
"webgpu/shader/execution/refract.bin": "cf86546c",
"webgpu/shader/execution/round.bin": "d1cf1ebb",
"webgpu/shader/execution/saturate.bin": "6ecf8d76",
"webgpu/shader/execution/sign.bin": "f7757f54",
"webgpu/shader/execution/sin.bin": "aff5ff89",
"webgpu/shader/execution/sinh.bin": "10264f6",
"webgpu/shader/execution/smoothstep.bin": "cc165c8d",
"webgpu/shader/execution/sqrt.bin": "9288e28",
"webgpu/shader/execution/step.bin": "3e730ebc",
"webgpu/shader/execution/tan.bin": "b249b4ca",
"webgpu/shader/execution/tanh.bin": "add851dd",
"webgpu/shader/execution/transpose.bin": "ee64fd10",
"webgpu/shader/execution/trunc.bin": "b6c5fdcc",
"webgpu/shader/execution/unpack2x16float.bin": "46be8a57",
"webgpu/shader/execution/unpack2x16snorm.bin": "f2a50142",
"webgpu/shader/execution/unpack2x16unorm.bin": "6db99ed6",
"webgpu/shader/execution/unpack4x8snorm.bin": "4e88f425",
"webgpu/shader/execution/unpack4x8unorm.bin": "b818c7b",
"webgpu/shader/execution/unary/af_arithmetic.bin": "69e5897a",
"webgpu/shader/execution/unary/af_assignment.bin": "588f3b94",
"webgpu/shader/execution/unary/bool_conversion.bin": "7b22a4bf",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "88bfdf25",
"webgpu/shader/execution/unary/f16_conversion.bin": "257326e2",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "54315cef",
"webgpu/shader/execution/unary/f32_conversion.bin": "15bdedd7",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "d8556f43",
"webgpu/shader/execution/unary/i32_complement.bin": "d044f52",
"webgpu/shader/execution/unary/i32_conversion.bin": "d1d94808",
"webgpu/shader/execution/unary/u32_complement.bin": "5458ccb1",
"webgpu/shader/execution/unary/u32_conversion.bin": "a7b4272e",
"webgpu/shader/execution/unary/ai_assignment.bin": "b15b5af8"
"webgpu/shader/execution/binary/af_addition.bin": "6295ae8d",
"webgpu/shader/execution/binary/af_logical.bin": "7b3b4609",
"webgpu/shader/execution/binary/af_division.bin": "6d08dc82",
"webgpu/shader/execution/binary/af_matrix_addition.bin": "fcb63375",
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "84a55db0",
"webgpu/shader/execution/binary/af_multiplication.bin": "6973ad39",
"webgpu/shader/execution/binary/af_remainder.bin": "64ce8104",
"webgpu/shader/execution/binary/af_subtraction.bin": "b2c3bacd",
"webgpu/shader/execution/binary/f16_addition.bin": "ec50b194",
"webgpu/shader/execution/binary/f16_logical.bin": "478641c",
"webgpu/shader/execution/binary/f16_division.bin": "b244992c",
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "fe01bbc0",
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "648ea38f",
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "88f5f34d",
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "d318acba",
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "a87759",
"webgpu/shader/execution/binary/f16_multiplication.bin": "37b44670",
"webgpu/shader/execution/binary/f16_remainder.bin": "27952a40",
"webgpu/shader/execution/binary/f16_subtraction.bin": "bebbb384",
"webgpu/shader/execution/binary/f32_addition.bin": "edfc25b3",
"webgpu/shader/execution/binary/f32_logical.bin": "68a96b19",
"webgpu/shader/execution/binary/f32_division.bin": "55a5ad13",
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "95ab5a76",
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "c58c207b",
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "996185c6",
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "4bb82fdf",
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "3c1824d",
"webgpu/shader/execution/binary/f32_multiplication.bin": "59d49dd9",
"webgpu/shader/execution/binary/f32_remainder.bin": "29fda04c",
"webgpu/shader/execution/binary/f32_subtraction.bin": "73fbf5dc",
"webgpu/shader/execution/binary/i32_arithmetic.bin": "646a8885",
"webgpu/shader/execution/binary/i32_comparison.bin": "d7b785fd",
"webgpu/shader/execution/binary/u32_arithmetic.bin": "567c4904",
"webgpu/shader/execution/binary/u32_comparison.bin": "edd2c4d",
"webgpu/shader/execution/abs.bin": "75cfc247",
"webgpu/shader/execution/acos.bin": "a9f2fa11",
"webgpu/shader/execution/acosh.bin": "14c2c311",
"webgpu/shader/execution/asin.bin": "99dcf943",
"webgpu/shader/execution/asinh.bin": "1db7a683",
"webgpu/shader/execution/atan.bin": "76983868",
"webgpu/shader/execution/atan2.bin": "45dcaeaa",
"webgpu/shader/execution/atanh.bin": "5514ca60",
"webgpu/shader/execution/bitcast.bin": "befdc87",
"webgpu/shader/execution/ceil.bin": "5d6cafdf",
"webgpu/shader/execution/clamp.bin": "b6146dbf",
"webgpu/shader/execution/cos.bin": "711b4fd4",
"webgpu/shader/execution/cosh.bin": "d9897d30",
"webgpu/shader/execution/cross.bin": "2a359c16",
"webgpu/shader/execution/degrees.bin": "d4ed9a44",
"webgpu/shader/execution/determinant.bin": "367920d5",
"webgpu/shader/execution/distance.bin": "5425926a",
"webgpu/shader/execution/dot.bin": "47f600ab",
"webgpu/shader/execution/exp.bin": "422bde4c",
"webgpu/shader/execution/exp2.bin": "ed8f1603",
"webgpu/shader/execution/faceForward.bin": "a8fe4a20",
"webgpu/shader/execution/floor.bin": "b4f14f3b",
"webgpu/shader/execution/fma.bin": "f60736ee",
"webgpu/shader/execution/fract.bin": "6b208a6d",
"webgpu/shader/execution/frexp.bin": "a10c6804",
"webgpu/shader/execution/inverseSqrt.bin": "22d094d6",
"webgpu/shader/execution/ldexp.bin": "85904868",
"webgpu/shader/execution/length.bin": "70b32f6",
"webgpu/shader/execution/log.bin": "4521ed5d",
"webgpu/shader/execution/log2.bin": "9a123e7",
"webgpu/shader/execution/max.bin": "ade14b73",
"webgpu/shader/execution/min.bin": "759505c4",
"webgpu/shader/execution/mix.bin": "1ad590ad",
"webgpu/shader/execution/modf.bin": "e78708e1",
"webgpu/shader/execution/normalize.bin": "21415be9",
"webgpu/shader/execution/pack2x16float.bin": "d07f345b",
"webgpu/shader/execution/pow.bin": "ae217c82",
"webgpu/shader/execution/quantizeToF16.bin": "3f8977d5",
"webgpu/shader/execution/radians.bin": "109797b3",
"webgpu/shader/execution/reflect.bin": "d6d70976",
"webgpu/shader/execution/refract.bin": "2f0a69bb",
"webgpu/shader/execution/round.bin": "4b744389",
"webgpu/shader/execution/saturate.bin": "15f37d3c",
"webgpu/shader/execution/sign.bin": "509816ea",
"webgpu/shader/execution/sin.bin": "e7d03236",
"webgpu/shader/execution/sinh.bin": "ca4fbb5",
"webgpu/shader/execution/smoothstep.bin": "6f3c506a",
"webgpu/shader/execution/sqrt.bin": "64c67887",
"webgpu/shader/execution/step.bin": "62dcbffb",
"webgpu/shader/execution/tan.bin": "de5a76d4",
"webgpu/shader/execution/tanh.bin": "36000b2f",
"webgpu/shader/execution/transpose.bin": "36d83e3c",
"webgpu/shader/execution/trunc.bin": "1aad5e1c",
"webgpu/shader/execution/unpack2x16float.bin": "41fbf466",
"webgpu/shader/execution/unpack2x16snorm.bin": "b2fde57",
"webgpu/shader/execution/unpack2x16unorm.bin": "9531a4f4",
"webgpu/shader/execution/unpack4x8snorm.bin": "39b662f2",
"webgpu/shader/execution/unpack4x8unorm.bin": "a7cd2c93",
"webgpu/shader/execution/unary/af_arithmetic.bin": "55c1671e",
"webgpu/shader/execution/unary/af_assignment.bin": "60be3db0",
"webgpu/shader/execution/unary/bool_conversion.bin": "f6dac757",
"webgpu/shader/execution/unary/f16_arithmetic.bin": "e762e795",
"webgpu/shader/execution/unary/f16_conversion.bin": "c568fe21",
"webgpu/shader/execution/unary/f32_arithmetic.bin": "7210a687",
"webgpu/shader/execution/unary/f32_conversion.bin": "1cc5f3cd",
"webgpu/shader/execution/unary/i32_arithmetic.bin": "9dfd1efe",
"webgpu/shader/execution/unary/i32_complement.bin": "405dfffa",
"webgpu/shader/execution/unary/i32_conversion.bin": "f2003321",
"webgpu/shader/execution/unary/u32_complement.bin": "987add5f",
"webgpu/shader/execution/unary/u32_conversion.bin": "3b3c5860",
"webgpu/shader/execution/unary/ai_assignment.bin": "bb95bb75",
"webgpu/shader/execution/binary/ai_arithmetic.bin": "ea3dd3e1"
}
Binary file not shown.
3 changes: 3 additions & 0 deletions src/webgpu/listing_meta.json
Original file line number Diff line number Diff line change
@@ -896,6 +896,9 @@
"webgpu:idl,constructable:gpu_errors:*": { "subcaseMS": 0.101 },
"webgpu:idl,constructable:pipeline_errors:*": { "subcaseMS": 0.101 },
"webgpu:idl,constructable:uncaptured_error_event:*": { "subcaseMS": 0.101 },
"webgpu:shader,execution,expression,binary,ai_arithmetic:addition:*": { "subcaseMS": 0 },
"webgpu:shader,execution,expression,binary,ai_arithmetic:addition_scalar_vector:*": { "subcaseMS": 0 },
"webgpu:shader,execution,expression,binary,ai_arithmetic:addition_vector_scalar:*": { "subcaseMS": 0 },
"webgpu:shader,execution,expression,binary,af_addition:scalar:*": { "subcaseMS": 815.300 },
"webgpu:shader,execution,expression,binary,af_addition:scalar_vector:*": { "subcaseMS": 1803.434 },
"webgpu:shader,execution,expression,binary,af_addition:vector:*": { "subcaseMS": 719.600 },
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js';
import { onlyConstInputSource, run } from '../expression.js';

import { d } from './af_addition.cache.js';
import { abstractBinary } from './binary.js';
import { abstractFloatBinary } from './binary.js';

export const g = makeTestGroup(GPUTest);

@@ -25,7 +25,7 @@ Accuracy: Correctly rounded
const cases = await d.get('scalar');
await run(
t,
abstractBinary('+'),
abstractFloatBinary('+'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -48,7 +48,7 @@ Accuracy: Correctly rounded
const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases
await run(
t,
abstractBinary('+'),
abstractFloatBinary('+'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -70,7 +70,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`vec${dim}_scalar`);
await run(
t,
abstractBinary('+'),
abstractFloatBinary('+'),
[TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat],
TypeVec(dim, TypeAbstractFloat),
t.params,
@@ -92,7 +92,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`scalar_vec${dim}`);
await run(
t,
abstractBinary('+'),
abstractFloatBinary('+'),
[TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)],
TypeVec(dim, TypeAbstractFloat),
t.params,
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js';
import { onlyConstInputSource, run } from '../expression.js';

import { d } from './af_division.cache.js';
import { abstractBinary } from './binary.js';
import { abstractFloatBinary } from './binary.js';

export const g = makeTestGroup(GPUTest);

@@ -25,7 +25,7 @@ Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126]
const cases = await d.get('scalar');
await run(
t,
abstractBinary('/'),
abstractFloatBinary('/'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -48,7 +48,7 @@ Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126]
const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases
await run(
t,
abstractBinary('/'),
abstractFloatBinary('/'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -70,7 +70,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`vec${dim}_scalar`);
await run(
t,
abstractBinary('/'),
abstractFloatBinary('/'),
[TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat],
TypeVec(dim, TypeAbstractFloat),
t.params,
@@ -92,7 +92,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`scalar_vec${dim}`);
await run(
t,
abstractBinary('/'),
abstractFloatBinary('/'),
[TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)],
TypeVec(dim, TypeAbstractFloat),
t.params,
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import { TypeAbstractFloat, TypeMat } from '../../../../util/conversion.js';
import { onlyConstInputSource, run } from '../expression.js';

import { d } from './af_matrix_addition.cache.js';
import { abstractBinary } from './binary.js';
import { abstractFloatBinary } from './binary.js';

export const g = makeTestGroup(GPUTest);

@@ -32,7 +32,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`mat${cols}x${rows}`);
await run(
t,
abstractBinary('+'),
abstractFloatBinary('+'),
[TypeMat(cols, rows, TypeAbstractFloat), TypeMat(cols, rows, TypeAbstractFloat)],
TypeMat(cols, rows, TypeAbstractFloat),
t.params,
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import { TypeAbstractFloat, TypeMat } from '../../../../util/conversion.js';
import { onlyConstInputSource, run } from '../expression.js';

import { d } from './af_matrix_subtraction.cache.js';
import { abstractBinary } from './binary.js';
import { abstractFloatBinary } from './binary.js';

export const g = makeTestGroup(GPUTest);

@@ -32,7 +32,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`mat${cols}x${rows}`);
await run(
t,
abstractBinary('-'),
abstractFloatBinary('-'),
[TypeMat(cols, rows, TypeAbstractFloat), TypeMat(cols, rows, TypeAbstractFloat)],
TypeMat(cols, rows, TypeAbstractFloat),
t.params,
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js';
import { onlyConstInputSource, run } from '../expression.js';

import { d } from './af_multiplication.cache.js';
import { abstractBinary } from './binary.js';
import { abstractFloatBinary } from './binary.js';

export const g = makeTestGroup(GPUTest);

@@ -25,7 +25,7 @@ Accuracy: Correctly rounded
const cases = await d.get('scalar');
await run(
t,
abstractBinary('*'),
abstractFloatBinary('*'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -48,7 +48,7 @@ Accuracy: Correctly rounded
const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases
await run(
t,
abstractBinary('*'),
abstractFloatBinary('*'),
[TypeAbstractFloat, TypeAbstractFloat],
TypeAbstractFloat,
t.params,
@@ -70,7 +70,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`vec${dim}_scalar`);
await run(
t,
abstractBinary('*'),
abstractFloatBinary('*'),
[TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat],
TypeVec(dim, TypeAbstractFloat),
t.params,
@@ -92,7 +92,7 @@ Accuracy: Correctly rounded
const cases = await d.get(`scalar_vec${dim}`);
await run(
t,
abstractBinary('*'),
abstractFloatBinary('*'),
[TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)],
TypeVec(dim, TypeAbstractFloat),
t.params,
Loading

0 comments on commit 1acdb0d

Please sign in to comment.