Skip to content

Commit

Permalink
Move builtin must_use tests to specific builtin tests
Browse files Browse the repository at this point in the history
Fixes gpuweb#3502

* Moves must_use tests for builtin functions to specific files
  • Loading branch information
alan-baker committed May 14, 2024
1 parent a4bdf9d commit 36e7570
Show file tree
Hide file tree
Showing 30 changed files with 367 additions and 190 deletions.
22 changes: 20 additions & 2 deletions src/webgpu/listing_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -1987,6 +1987,7 @@
"webgpu:shader,validation,expression,call,builtin,any:must_use:*": { "subcaseMS": 7467.652 },
"webgpu:shader,validation,expression,call,builtin,arrayLength:access_mode:*": { "subcaseMS": 0.000 },
"webgpu:shader,validation,expression,call,builtin,arrayLength:bool_type:*": { "subcaseMS": 0.000 },
"webgpu:shader,validation,expression,call,builtin,arrayLength:must_use:*": { "subcaseMS": 1.822 },
"webgpu:shader,validation,expression,call,builtin,arrayLength:type:*": { "subcaseMS": 0.000 },
"webgpu:shader,validation,expression,call,builtin,asin:integer_argument:*": { "subcaseMS": 0.878 },
"webgpu:shader,validation,expression,call,builtin,asin:parameters:*": { "subcaseMS": 20072.777 },
Expand Down Expand Up @@ -2018,6 +2019,7 @@
"webgpu:shader,validation,expression,call,builtin,bitcast:bad_to_vec3h:*": { "subcaseMS": 17.641 },
"webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_constructible:*": { "subcaseMS": 1.214 },
"webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_nonconstructible:*": { "subcaseMS": 1.425 },
"webgpu:shader,validation,expression,call,builtin,bitcast:must_use:*": { "subcaseMS": 1.715 },
"webgpu:shader,validation,expression,call,builtin,bitcast:valid_vec2h:*": { "subcaseMS": 3.405 },
"webgpu:shader,validation,expression,call,builtin,bitcast:valid_vec4h:*": { "subcaseMS": 5.610 },
"webgpu:shader,validation,expression,call,builtin,ceil:arguments:*": { "subcaseMS": 70.393 },
Expand Down Expand Up @@ -2056,6 +2058,7 @@
"webgpu:shader,validation,expression,call,builtin,degrees:must_use:*": { "subcaseMS": 1.406 },
"webgpu:shader,validation,expression,call,builtin,degrees:values:*": { "subcaseMS": 0.303 },
"webgpu:shader,validation,expression,call,builtin,derivatives:invalid_argument_types:*": { "subcaseMS": 1.000 },
"webgpu:shader,validation,expression,call,builtin,derivatives:must_use:*": { "subcaseMS": 11.328 },
"webgpu:shader,validation,expression,call,builtin,derivatives:only_in_fragment:*": { "subcaseMS": 1.000 },
"webgpu:shader,validation,expression,call,builtin,determinant:args:*": { "subcaseMS": 15.538 },
"webgpu:shader,validation,expression,call,builtin,determinant:matrix_args:*": { "subcaseMS": 193.897 },
Expand Down Expand Up @@ -2199,6 +2202,7 @@
"webgpu:shader,validation,expression,call,builtin,reflect:values:*": { "subcaseMS": 1.000 },
"webgpu:shader,validation,expression,call,builtin,refract:args:*": { "subcaseMS": 106.512 },
"webgpu:shader,validation,expression,call,builtin,refract:must_use:*": { "subcaseMS": 5.935 },
"webgpu:shader,validation,expression,call,builtin,refract:return:*": { "subcaseMS": 27.210 },
"webgpu:shader,validation,expression,call,builtin,refract:values:*": { "subcaseMS": 81326.953 },
"webgpu:shader,validation,expression,call,builtin,reverseBits:arguments:*": { "subcaseMS": 77.380 },
"webgpu:shader,validation,expression,call,builtin,reverseBits:float_argument:*": { "subcaseMS": 28.806 },
Expand Down Expand Up @@ -2243,20 +2247,23 @@
"webgpu:shader,validation,expression,call,builtin,tanh:must_use:*": { "subcaseMS": 6.270 },
"webgpu:shader,validation,expression,call,builtin,tanh:values:*": { "subcaseMS": 4590.491 },
"webgpu:shader,validation,expression,call,builtin,textureDimensions:level_argument,non_storage:*": { "subcaseMS": 1.884 },
"webgpu:shader,validation,expression,call,builtin,textureDimensions:must_use:*": { "subcaseMS": 1.777 },
"webgpu:shader,validation,expression,call,builtin,textureDimensions:return_type,non_storage:*": { "subcaseMS": 1.640 },
"webgpu:shader,validation,expression,call,builtin,textureDimensions:return_type,storage:*": { "subcaseMS": 1.064 },
"webgpu:shader,validation,expression,call,builtin,textureDimensions:texture_type,non_storage:*": { "subcaseMS": 1.275 },
"webgpu:shader,validation,expression,call,builtin,textureGather:array_index_argument:*": { "subcaseMS": 1.123 },
"webgpu:shader,validation,expression,call,builtin,textureGather:component_argument,non_const:*": { "subcaseMS": 1.731 },
"webgpu:shader,validation,expression,call,builtin,textureGather:component_argument:*": { "subcaseMS": 1.321 },
"webgpu:shader,validation,expression,call,builtin,textureGather:coords_argument:*": { "subcaseMS": 1.352 },
"webgpu:shader,validation,expression,call,builtin,textureGather:must_use:*": { "subcaseMS": 2.873 },
"webgpu:shader,validation,expression,call,builtin,textureGather:offset_argument,non_const:*": { "subcaseMS": 1.231 },
"webgpu:shader,validation,expression,call,builtin,textureGather:offset_argument:*": { "subcaseMS": 1.534 },
"webgpu:shader,validation,expression,call,builtin,textureGather:return_type:*": { "subcaseMS": 1.481 },
"webgpu:shader,validation,expression,call,builtin,textureGather:texture_type:*": { "subcaseMS": 1.956 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:array_index_argument:*": { "subcaseMS": 1.932 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:coords_argument:*": { "subcaseMS": 1.764 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:depth_ref_argument:*": { "subcaseMS": 1.753 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:must_use:*": { "subcaseMS": 2.693 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:offset_argument,non_const:*": { "subcaseMS": 1.534 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:offset_argument:*": { "subcaseMS": 1.243 },
"webgpu:shader,validation,expression,call,builtin,textureGatherCompare:return_type:*": { "subcaseMS": 49.467 },
Expand All @@ -2266,30 +2273,37 @@
"webgpu:shader,validation,expression,call,builtin,textureLoad:coords_argument,non_storage:*": { "subcaseMS": 1.717 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:coords_argument,storage:*": { "subcaseMS": 1.750 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:level_argument,non_storage:*": { "subcaseMS": 1.113 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:must_use:*": { "subcaseMS": 1.666 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:return_type,non_storage:*": { "subcaseMS": 128.581 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:sample_index_argument,non_storage:*": { "subcaseMS": 1.395 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:texture_type,non_storage:*": { "subcaseMS": 2.807 },
"webgpu:shader,validation,expression,call,builtin,textureLoad:texture_type,storage:*": { "subcaseMS": 1.690 },
"webgpu:shader,validation,expression,call,builtin,textureNumLayers:must_use:*": { "subcaseMS": 1.246 },
"webgpu:shader,validation,expression,call,builtin,textureNumLayers:return_type,non_storage:*": { "subcaseMS": 1.195 },
"webgpu:shader,validation,expression,call,builtin,textureNumLayers:return_type,storage:*": { "subcaseMS": 1.436 },
"webgpu:shader,validation,expression,call,builtin,textureNumLayers:texture_type:*": { "subcaseMS": 1.493 },
"webgpu:shader,validation,expression,call,builtin,textureNumLevels:must_use:*": { "subcaseMS": 2.351 },
"webgpu:shader,validation,expression,call,builtin,textureNumLevels:return_type:*": { "subcaseMS": 1.977 },
"webgpu:shader,validation,expression,call,builtin,textureNumLevels:texture_type:*": { "subcaseMS": 1.608 },
"webgpu:shader,validation,expression,call,builtin,textureNumSamples:must_use:*": { "subcaseMS": 1.305 },
"webgpu:shader,validation,expression,call,builtin,textureNumSamples:return_type:*": { "subcaseMS": 1.650 },
"webgpu:shader,validation,expression,call,builtin,textureNumSamples:texture_type:*": { "subcaseMS": 1.514 },
"webgpu:shader,validation,expression,call,builtin,textureSample:array_index_argument:*": { "subcaseMS": 1.888 },
"webgpu:shader,validation,expression,call,builtin,textureSample:coords_argument:*": { "subcaseMS": 1.342 },
"webgpu:shader,validation,expression,call,builtin,textureSample:must_use:*": { "subcaseMS": 2.412 },
"webgpu:shader,validation,expression,call,builtin,textureSample:offset_argument,non_const:*": { "subcaseMS": 1.604 },
"webgpu:shader,validation,expression,call,builtin,textureSample:offset_argument:*": { "subcaseMS": 1.401 },
"webgpu:shader,validation,expression,call,builtin,textureSample:only_in_fragment:*": { "subcaseMS": 1.121 },
"webgpu:shader,validation,expression,call,builtin,textureSample:return_type:*": { "subcaseMS": 1.888 },
"webgpu:shader,validation,expression,call,builtin,textureSample:texture_type:*": { "subcaseMS": 1.888 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBaseClampToEdge:coords_argument:*": { "subcaseMS": 1.356 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBaseClampToEdge:must_use:*": { "subcaseMS": 2.387 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBaseClampToEdge:return_type:*": { "subcaseMS": 1.797 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBaseClampToEdge:texture_type:*": { "subcaseMS": 1.088 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:array_index_argument:*": { "subcaseMS": 1.630 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:bias_argument:*": { "subcaseMS": 1.102 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:coords_argument:*": { "subcaseMS": 1.938 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:must_use:*": { "subcaseMS": 3.096 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:offset_argument,non_const:*": { "subcaseMS": 1.985 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:offset_argument:*": { "subcaseMS": 1.081 },
"webgpu:shader,validation,expression,call,builtin,textureSampleBias:only_in_fragment:*": { "subcaseMS": 1.181 },
Expand All @@ -2298,6 +2312,7 @@
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:array_index_argument:*": { "subcaseMS": 1.932 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:coords_argument:*": { "subcaseMS": 1.282 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:depth_ref_argument:*": { "subcaseMS": 1.563 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:must_use:*": { "subcaseMS": 1.845 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:offset_argument,non_const:*": { "subcaseMS": 1.720 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:offset_argument:*": { "subcaseMS": 1.540 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompare:only_in_fragment:*": { "subcaseMS": 1.121 },
Expand All @@ -2306,6 +2321,7 @@
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:array_index_argument:*": { "subcaseMS": 1.989 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:coords_argument:*": { "subcaseMS": 1.932 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:depth_ref_argument:*": { "subcaseMS": 1.578 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:must_use:*": { "subcaseMS": 2.807 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:offset_argument,non_const:*": { "subcaseMS": 1.347 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:offset_argument:*": { "subcaseMS": 1.619 },
"webgpu:shader,validation,expression,call,builtin,textureSampleCompareLevel:return_type:*": { "subcaseMS": 1.606 },
Expand All @@ -2314,13 +2330,15 @@
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:coords_argument:*": { "subcaseMS": 1.802 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:ddX_argument:*": { "subcaseMS": 1.882 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:ddY_argument:*": { "subcaseMS": 1.515 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:must_use:*": { "subcaseMS": 2.775 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:offset_argument,non_const:*": { "subcaseMS": 1.987 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:offset_argument:*": { "subcaseMS": 1.317 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:return_type:*": { "subcaseMS": 111.578 },
"webgpu:shader,validation,expression,call,builtin,textureSampleGrad:texture_type:*": { "subcaseMS": 138.337 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:array_index_argument:*": { "subcaseMS": 1.888 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:coords_argument:*": { "subcaseMS": 1.342 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:level_argument:*": { "subcaseMS": 1.422 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:must_use:*": { "subcaseMS": 2.686 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:offset_argument,non_const:*": { "subcaseMS": 1.604 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:offset_argument:*": { "subcaseMS": 1.401 },
"webgpu:shader,validation,expression,call,builtin,textureSampleLevel:return_type:*": { "subcaseMS": 1.666 },
Expand Down Expand Up @@ -2367,6 +2385,7 @@
"webgpu:shader,validation,expression,call,builtin,value_constructor:matrix_copy:*": { "subcaseMS": 0.056 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:matrix_elementwise:*": { "subcaseMS": 0.095 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:matrix_zero_value:*": { "subcaseMS": 26.722 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:must_use:*": { "subcaseMS": 61.112 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:scalar_value:*": { "subcaseMS": 39.728 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:scalar_zero_value:*": { "subcaseMS": 538.303 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:struct_value:*": { "subcaseMS": 5.548 },
Expand All @@ -2376,6 +2395,7 @@
"webgpu:shader,validation,expression,call,builtin,value_constructor:vector_mixed:*": { "subcaseMS": 460.069 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:vector_splat:*": { "subcaseMS": 0.116 },
"webgpu:shader,validation,expression,call,builtin,value_constructor:vector_zero_value:*": { "subcaseMS": 21.684 },
"webgpu:shader,validation,expression,call,builtin,workgroupUniformLoad:must_use:*": { "subcaseMS": 1.474 },
"webgpu:shader,validation,expression,call,builtin,workgroupUniformLoad:no_atomics:*": { "subcaseMS": 1.000 },
"webgpu:shader,validation,expression,call,builtin,workgroupUniformLoad:only_in_compute:*": { "subcaseMS": 1.000 },
"webgpu:shader,validation,expression,matrix,add_sub:invalid:*": { "subcaseMS": 59542.637 },
Expand Down Expand Up @@ -2511,8 +2531,6 @@
"webgpu:shader,validation,parse,literal:f32:*": { "subcaseMS": 1.393 },
"webgpu:shader,validation,parse,literal:i32:*": { "subcaseMS": 1.541 },
"webgpu:shader,validation,parse,literal:u32:*": { "subcaseMS": 1.379 },
"webgpu:shader,validation,parse,must_use:builtin_must_use:*": { "subcaseMS": 1.400 },
"webgpu:shader,validation,parse,must_use:builtin_no_must_use:*": { "subcaseMS": 1.206 },
"webgpu:shader,validation,parse,must_use:call:*": { "subcaseMS": 1.275 },
"webgpu:shader,validation,parse,must_use:declaration:*": { "subcaseMS": 1.523 },
"webgpu:shader,validation,parse,must_use:ignore_result_of_non_must_use_that_returns_call_of_must_use:*": { "subcaseMS": 0.000 },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ const kTests = {
src: `_ = abs(1, 2);`,
pass: false,
},
must_use: {
src: `abs(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,11 @@ const kTests = {
src: `_ = acos(-1.1f);`,
pass: false,
},

must_use: {
src: `acos(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,11 @@ const kTests = {
src: `_ = acosh(.9f);`,
pass: false,
},

must_use: {
src: `acosh(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,15 @@ fn main() {

t.expectCompileResult(t.params.mode !== 'write', code);
});

g.test('must_use')
.desc('Test that the result must be used')
.params(u => u.combine('use', [true, false] as const))
.fn(t => {
const code = `
@group(0) @binding(0) var<storage> v : array<u32>;
fn foo() {
${t.params.use ? '_ =' : ''} arrayLength(&v);
}`;
t.expectCompileResult(t.params.use, code)
});
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,11 @@ const kTests = {
src: `_ = asin(-1.1f);`,
pass: false,
},

must_use: {
src: `asin(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,11 @@ const kTests = {
src: `_ = asinh(1, 2);`,
pass: false,
},

must_use: {
src: `asinh(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ const kTests = {
src: `_ = atan(1, 2);`,
pass: false,
},

must_use: {
src: `atan(1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,12 @@ const kTests = {
pass: false,
is_f16: false,
},

must_use: {
src: `atan2(1, 2);`,
pass: false,
is_f16: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,11 @@ const kTests = {
src: `_ = atanh(-1.1f);`,
pass: false,
},

must_use: {
src: `atanh(0.1);`,
pass: false,
},
};

g.test('parameters')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -391,3 +391,23 @@ fn main() {
}`;
t.expectCompileResult(true, code);
});

g.test('must_use')
.desc('Test that bitcast result must be used')
.params(u =>
u.combine('case', [
'bitcast<u32>(1i)',
'bitcast<f32>(1u)',
'bitcast<vec2f>(vec2i())',
'bitcast<vec3u>(vec3u())',
'bitcast<vec4i>(vec4f())',
] as const)
.combine('use', [true, false] as const))
.fn(t => {
const code = `
fn foo() {
${t.params.use ? '_ =' : ''} ${t.params.case};
}`;
t.expectCompileResult(t.params.use, code);
});

Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,17 @@ fn foo() {
}`;
t.expectCompileResult(kArgumentTypes[t.params.type] === Type.f32 || t.params.call === '', code);
});

g.test('must_use')
.desc('Tests that the result must be used')
.params(u =>
u.combine('use', [true, false] as const)
.combine('func', kDerivativeBuiltins)
)
.fn(t => {
const code = `
fn foo() {
${t.params.use ? '_ =' : ''} ${t.params.func}(1.0);
}`;
t.expectCompileResult(t.params.use, code);
});
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,11 @@ const kTests = {
src: `_ = ${builtin}(1.0, 2.0, 3.0, 4.0);`,
pass: false,
},

must_use: {
src: `${builtin}(1.0,2.0,3.0);`,
pass: false,
},
};

g.test('arguments')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,3 +267,15 @@ Validates that incompatible texture types don't work with ${builtin}

t.expectCompileResult(expectSuccess, code);
});

g.test('must_use')
.desc('Tests that the result must be used')
.params(u => u.combine('use', [true, false] as const))
.fn(t => {
const code = `
@group(0) @binding(0) var t : texture_2d<f32>;
fn foo() {
${t.params.use ? '_ =' : ''} textureDimensions(t);
}`;
t.expectCompileResult(t.params.use, code)
});
Original file line number Diff line number Diff line change
Expand Up @@ -488,3 +488,16 @@ Validates that incompatible texture types don't work with ${builtin}
const expectSuccess = typesMatch;
t.expectCompileResult(expectSuccess, code);
});

g.test('must_use')
.desc('Tests that the result must be used')
.params(u => u.combine('use', [true, false] as const))
.fn(t => {
const code = `
@group(0) @binding(0) var t : texture_2d<f32>;
@group(0) @binding(1) var s : sampler;
fn foo() {
${t.params.use ? '_ =' : ''} textureGather(0, t, s, vec2(0,0));
}`;
t.expectCompileResult(t.params.use, code)
});
Loading

0 comments on commit 36e7570

Please sign in to comment.