-
Notifications
You must be signed in to change notification settings - Fork 100
shader/validation: Add compound assignment validation #3648
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
shader/validation: Add compound assignment validation #3648
Conversation
Extend the binary operator expression validation to also validate compound assignment. Also calculate the binary operator's resulting type, and use that to validate the result type is as expected.
| rhs: rhs.elementType, | ||
| canConvertScalarToVector, | ||
| }) as ScalarType | null; | ||
| return elementType !== null ? Type.vec(lhs.width, elementType) : null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if here and other places we can use the ?? operator (nullish coalescing). So it would be return elementType ?? Type.vec(lhs.width, elementType)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not quite the same thing - we're returning a vector of elementType, if elementType is not null, not elementType itself.
|
Thanks! |
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377 UltraBlame original commit: cc8e4c0d527650c82b7c8d07a4484856ea046c10
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377 UltraBlame original commit: cc8e4c0d527650c82b7c8d07a4484856ea046c10
This (non-exhaustively) adds or implements the following test paths: - `webgpu:api,validation,render_pipeline,depth_stencil_state:depth_bias:*`, introduced by [gpuweb/cts#3863](gpuweb/cts#3863). Tracked with [bug 1911312](https://bugzilla.mozilla.org/show_bug.cgi?id=1911312). - `webgpu:shader,execution,expression,access,array,index:matrix:*`, introduced by [gpuweb/cts#3738](gpuweb/cts#3738). - `webgpu:shader,execution,expression,call,builtin,atomics,atomicSub:sub_i32_min:*`, introduced by [gpuweb/cts#3728](gpuweb/cts#3728). - `webgpu:shader,execution,expression,call,builtin,fwidth{,Coarse,Fine}:f32:*`, implemented by [gpuweb/cts#3686](gpuweb/cts#3686). - `webgpu:shader,execution,expression,call,builtin,textureNumLayers:arrayed:*`, implemented by [gpuweb/cts#3853](gpuweb/cts#3853). - `webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*`, implemented by [gpuweb/cts#3855](gpuweb/cts#3855). - `webgpu:shader,execution,expression,call,builtin,textureNumSamples:sampled:*`, implemented by [gpuweb/cts#3856](gpuweb/cts#3856). - `webgpu:shader,execution,expression,call,builtin,textureLoad:*`, with: - `{arrayed,sampled_1d,sampled_3d}` implemented by [gpuweb/cts#3852](gpuweb/cts#3852) - `sampled_2d` implemented by [gpuweb/cts#3861](gpuweb/cts#3861). - `webgpu:shader,execution,expression,call,builtin,textureSample:*`, apparently changed by [gpuweb/cts#3877](gpuweb/cts#3877). - `webgpu:shader,execution,expression,call,builtin,textureStore:*` had the following tests added: - By [gpuweb/cts#3781](gpuweb/cts#3781): - `out_of_bounds` - `out_of_bounds_array` - By [gpuweb/cts#3841](gpuweb/cts#3841): - `bgra8unorm_swizzle` - `texel_formats` It's unclear why these are failing, but I suspect part 2.7. - `webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*`, introduced by [gpuweb/cts#3734](gpuweb/cts#3734). - `webgpu:shader,validation,decl,var:address_space_access_mode:*`, introduced by [`gpuweb/cts`#3695](gpuweb/cts#3695). - `webgpu:shader,validation,decl,var:shader_stage:*`, introduced by [gpuweb/cts#3736](gpuweb/cts#3736). - `webgpu:shader,validation,expression,access,vector:*` was modified in [gpuweb/cts#3708](gpuweb/cts#3708): - renamed `…:vector:*` to `concrete` - added `abstract` - `webgpu:shader,validation,expression,binary,*`: - `…,bitwise_shift:*`: - `…:partial_eval_errors:*`, introduced by [`gpuweb/cts`#3796](gpuweb/cts#3796) - `…:{shift_left_concrete,shift_right_concrete}:*` had new cases introduced in [gpuweb/cts#3726](gpuweb/cts#3726). - `…:{shift_left_abstract,shift_right_abstract}:*`, introduced by [`gpuweb/cts`#3833](gpuweb/cts#3833). - `…,{add_sub_mul:*,and_or_xor:*,bitwise_shift:scalar_vector:*,div_rem:scalar_vector:*}` modified by [`gpuweb/cts`#3648](gpuweb/cts#3648). - `webgpu:shader,validation,expression,call,builtin,*`: - `…,dot:*`, introduced in [gpuweb/cts#3579](gpuweb/cts#3579). - `…,fma:*`, introduced by [`gpuweb/cts`#3577](gpuweb/cts#3577). - `…,ldexp:*`: - `…:{args,must_use,values}:*` introduced by [gpuweb/cts#3615](gpuweb/cts#3615). - `…:partial_values:*` introduced by [gpuweb/cts#3798](gpuweb/cts#3798). - `…,mix:*`, introduced by TODO. - `…,modf:*`, introduced by TODO. - `…,pow:*`, introduced by TODO. - `…,refract:*`, introduced by TODO. - `…,saturate:*`, introduced by TODO. - `…,texture{Dimensions,Num{Layers,Levels,Samples}}:*`, introduced by [gpuweb/cts#3689](gpuweb/cts#3689). - `webgpu:shader,validation,functions,alias_analysis:swizzles:*`, introduced by [gpuweb/cts#3869](gpuweb/cts#3869). - `webgpu:shader,validation,shader_io,align:parsing:duplicate`, introduced by [gpuweb/cts#3692](gpuweb/cts#3692). - `webgpu:shader,validation,statement,{for,loop,return}:*` cases introduced by [gpuweb/cts#3645](gpuweb/cts#3645) and moved around by [gpuweb/cts#3742](gpuweb/cts#3742). - `webgpu:shader,validation,types,pointer:{access_mode,address_space,type}:*`, introduced by [`gpuweb/cts`#3649](gpuweb/cts#3649). This list is incomplete, because I _really_ needed to make this tractable. Sorry! I upkept the above for my own sanity, and think it's interesting for record-keeping, but not necessary useful for a reviewer. Differential Revision: https://phabricator.services.mozilla.com/D219377
Extend the binary operator expression validation to also validate compound assignment.
Also calculate the binary operator's resulting type, and use that to validate the result type is as expected.
Issue: #1644
Requirements for PR author:
.unimplemented()./** documented */and new helper files are found inhelper_index.txt.Requirements for reviewer sign-off:
When landing this PR, be sure to make any necessary issue status updates.