diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/binary/u32_arithmetic.cache.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/binary/u32_arithmetic.cache.ts | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/binary/u32_arithmetic.cache.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/binary/u32_arithmetic.cache.ts new file mode 100644 index 0000000000..91be35a1ee --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/binary/u32_arithmetic.cache.ts @@ -0,0 +1,293 @@ +import { sparseU32Range, vectorU32Range } from '../../../../util/math.js'; +import { + generateBinaryToU32Cases, + generateU32VectorBinaryToVectorCases, + generateVectorU32BinaryToVectorCases, +} from '../case.js'; +import { makeCaseCache } from '../case_cache.js'; + +function u32_add(x: number, y: number): number | undefined { + return x + y; +} + +function u32_subtract(x: number, y: number): number | undefined { + return x - y; +} + +function u32_multiply(x: number, y: number): number | undefined { + return Math.imul(x, y); +} + +function u32_divide_non_const(x: number, y: number): number | undefined { + if (y === 0) { + return x; + } + return x / y; +} + +function u32_divide_const(x: number, y: number): number | undefined { + if (y === 0) { + return undefined; + } + return x / y; +} + +function u32_remainder_non_const(x: number, y: number): number | undefined { + if (y === 0) { + return 0; + } + return x % y; +} + +function u32_remainder_const(x: number, y: number): number | undefined { + if (y === 0) { + return undefined; + } + return x % y; +} + +export const d = makeCaseCache('binary/u32_arithmetic', { + addition: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_add); + }, + subtraction: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_subtract); + }, + multiplication: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_multiply); + }, + division_non_const: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_divide_non_const); + }, + division_const: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_divide_const); + }, + remainder_non_const: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_remainder_non_const); + }, + remainder_const: () => { + return generateBinaryToU32Cases(sparseU32Range(), sparseU32Range(), u32_remainder_const); + }, + addition_scalar_vector2: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(2), u32_add); + }, + addition_scalar_vector3: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(3), u32_add); + }, + addition_scalar_vector4: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(4), u32_add); + }, + addition_vector2_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(2), sparseU32Range(), u32_add); + }, + addition_vector3_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(3), sparseU32Range(), u32_add); + }, + addition_vector4_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(4), sparseU32Range(), u32_add); + }, + subtraction_scalar_vector2: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(2), u32_subtract); + }, + subtraction_scalar_vector3: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(3), u32_subtract); + }, + subtraction_scalar_vector4: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(4), u32_subtract); + }, + subtraction_vector2_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(2), sparseU32Range(), u32_subtract); + }, + subtraction_vector3_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(3), sparseU32Range(), u32_subtract); + }, + subtraction_vector4_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(4), sparseU32Range(), u32_subtract); + }, + multiplication_scalar_vector2: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(2), u32_multiply); + }, + multiplication_scalar_vector3: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(3), u32_multiply); + }, + multiplication_scalar_vector4: () => { + return generateU32VectorBinaryToVectorCases(sparseU32Range(), vectorU32Range(4), u32_multiply); + }, + multiplication_vector2_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(2), sparseU32Range(), u32_multiply); + }, + multiplication_vector3_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(3), sparseU32Range(), u32_multiply); + }, + multiplication_vector4_scalar: () => { + return generateVectorU32BinaryToVectorCases(vectorU32Range(4), sparseU32Range(), u32_multiply); + }, + division_scalar_vector2_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(2), + u32_divide_non_const + ); + }, + division_scalar_vector3_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(3), + u32_divide_non_const + ); + }, + division_scalar_vector4_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(4), + u32_divide_non_const + ); + }, + division_vector2_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(2), + sparseU32Range(), + u32_divide_non_const + ); + }, + division_vector3_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(3), + sparseU32Range(), + u32_divide_non_const + ); + }, + division_vector4_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(4), + sparseU32Range(), + u32_divide_non_const + ); + }, + division_scalar_vector2_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(2), + u32_divide_const + ); + }, + division_scalar_vector3_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(3), + u32_divide_const + ); + }, + division_scalar_vector4_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(4), + u32_divide_const + ); + }, + division_vector2_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(2), + sparseU32Range(), + u32_divide_const + ); + }, + division_vector3_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(3), + sparseU32Range(), + u32_divide_const + ); + }, + division_vector4_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(4), + sparseU32Range(), + u32_divide_const + ); + }, + remainder_scalar_vector2_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(2), + u32_remainder_non_const + ); + }, + remainder_scalar_vector3_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(3), + u32_remainder_non_const + ); + }, + remainder_scalar_vector4_non_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(4), + u32_remainder_non_const + ); + }, + remainder_vector2_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(2), + sparseU32Range(), + u32_remainder_non_const + ); + }, + remainder_vector3_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(3), + sparseU32Range(), + u32_remainder_non_const + ); + }, + remainder_vector4_scalar_non_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(4), + sparseU32Range(), + u32_remainder_non_const + ); + }, + remainder_scalar_vector2_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(2), + u32_remainder_const + ); + }, + remainder_scalar_vector3_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(3), + u32_remainder_const + ); + }, + remainder_scalar_vector4_const: () => { + return generateU32VectorBinaryToVectorCases( + sparseU32Range(), + vectorU32Range(4), + u32_remainder_const + ); + }, + remainder_vector2_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(2), + sparseU32Range(), + u32_remainder_const + ); + }, + remainder_vector3_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(3), + sparseU32Range(), + u32_remainder_const + ); + }, + remainder_vector4_scalar_const: () => { + return generateVectorU32BinaryToVectorCases( + vectorU32Range(4), + sparseU32Range(), + u32_remainder_const + ); + }, +}); |