[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:after_other_directives:*]
  [:directive="enable%20f16"]

  [:directive="requires%20readonly_and_readwrite_storage_textures"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_attribute_different_location:*]
  implementation-status: backlog
  [:loc="compound";s1="error";s2="info"]
    expected: FAIL

  [:loc="compound";s1="error";s2="off"]
    expected: FAIL

  [:loc="compound";s1="error";s2="warning"]
    expected: FAIL

  [:loc="compound";s1="info";s2="error"]
    expected: FAIL

  [:loc="compound";s1="info";s2="off"]
    expected: FAIL

  [:loc="compound";s1="info";s2="warning"]
    expected: FAIL

  [:loc="compound";s1="off";s2="error"]
    expected: FAIL

  [:loc="compound";s1="off";s2="info"]
    expected: FAIL

  [:loc="compound";s1="off";s2="warning"]
    expected: FAIL

  [:loc="compound";s1="warning";s2="error"]
    expected: FAIL

  [:loc="compound";s1="warning";s2="info"]
    expected: FAIL

  [:loc="compound";s1="warning";s2="off"]
    expected: FAIL

  [:loc="for_stmt";s1="error";s2="info"]
    expected: FAIL

  [:loc="for_stmt";s1="error";s2="off"]
    expected: FAIL

  [:loc="for_stmt";s1="error";s2="warning"]
    expected: FAIL

  [:loc="for_stmt";s1="info";s2="error"]
    expected: FAIL

  [:loc="for_stmt";s1="info";s2="off"]
    expected: FAIL

  [:loc="for_stmt";s1="info";s2="warning"]
    expected: FAIL

  [:loc="for_stmt";s1="off";s2="error"]
    expected: FAIL

  [:loc="for_stmt";s1="off";s2="info"]
    expected: FAIL

  [:loc="for_stmt";s1="off";s2="warning"]
    expected: FAIL

  [:loc="for_stmt";s1="warning";s2="error"]
    expected: FAIL

  [:loc="for_stmt";s1="warning";s2="info"]
    expected: FAIL

  [:loc="for_stmt";s1="warning";s2="off"]
    expected: FAIL

  [:loc="if_stmt";s1="error";s2="info"]
    expected: FAIL

  [:loc="if_stmt";s1="error";s2="off"]
    expected: FAIL

  [:loc="if_stmt";s1="error";s2="warning"]
    expected: FAIL

  [:loc="if_stmt";s1="info";s2="error"]
    expected: FAIL

  [:loc="if_stmt";s1="info";s2="off"]
    expected: FAIL

  [:loc="if_stmt";s1="info";s2="warning"]
    expected: FAIL

  [:loc="if_stmt";s1="off";s2="error"]
    expected: FAIL

  [:loc="if_stmt";s1="off";s2="info"]
    expected: FAIL

  [:loc="if_stmt";s1="off";s2="warning"]
    expected: FAIL

  [:loc="if_stmt";s1="warning";s2="error"]
    expected: FAIL

  [:loc="if_stmt";s1="warning";s2="info"]
    expected: FAIL

  [:loc="if_stmt";s1="warning";s2="off"]
    expected: FAIL

  [:loc="loop_stmt";s1="error";s2="info"]
    expected: FAIL

  [:loc="loop_stmt";s1="error";s2="off"]
    expected: FAIL

  [:loc="loop_stmt";s1="error";s2="warning"]
    expected: FAIL

  [:loc="loop_stmt";s1="info";s2="error"]
    expected: FAIL

  [:loc="loop_stmt";s1="info";s2="off"]
    expected: FAIL

  [:loc="loop_stmt";s1="info";s2="warning"]
    expected: FAIL

  [:loc="loop_stmt";s1="off";s2="error"]
    expected: FAIL

  [:loc="loop_stmt";s1="off";s2="info"]
    expected: FAIL

  [:loc="loop_stmt";s1="off";s2="warning"]
    expected: FAIL

  [:loc="loop_stmt";s1="warning";s2="error"]
    expected: FAIL

  [:loc="loop_stmt";s1="warning";s2="info"]
    expected: FAIL

  [:loc="loop_stmt";s1="warning";s2="off"]
    expected: FAIL

  [:loc="switch_body";s1="error";s2="info"]
    expected: FAIL

  [:loc="switch_body";s1="error";s2="off"]
    expected: FAIL

  [:loc="switch_body";s1="error";s2="warning"]
    expected: FAIL

  [:loc="switch_body";s1="info";s2="error"]
    expected: FAIL

  [:loc="switch_body";s1="info";s2="off"]
    expected: FAIL

  [:loc="switch_body";s1="info";s2="warning"]
    expected: FAIL

  [:loc="switch_body";s1="off";s2="error"]
    expected: FAIL

  [:loc="switch_body";s1="off";s2="info"]
    expected: FAIL

  [:loc="switch_body";s1="off";s2="warning"]
    expected: FAIL

  [:loc="switch_body";s1="warning";s2="error"]
    expected: FAIL

  [:loc="switch_body";s1="warning";s2="info"]
    expected: FAIL

  [:loc="switch_body";s1="warning";s2="off"]
    expected: FAIL

  [:loc="switch_case";s1="error";s2="info"]
    expected: FAIL

  [:loc="switch_case";s1="error";s2="off"]
    expected: FAIL

  [:loc="switch_case";s1="error";s2="warning"]
    expected: FAIL

  [:loc="switch_case";s1="info";s2="error"]
    expected: FAIL

  [:loc="switch_case";s1="info";s2="off"]
    expected: FAIL

  [:loc="switch_case";s1="info";s2="warning"]
    expected: FAIL

  [:loc="switch_case";s1="off";s2="error"]
    expected: FAIL

  [:loc="switch_case";s1="off";s2="info"]
    expected: FAIL

  [:loc="switch_case";s1="off";s2="warning"]
    expected: FAIL

  [:loc="switch_case";s1="warning";s2="error"]
    expected: FAIL

  [:loc="switch_case";s1="warning";s2="info"]
    expected: FAIL

  [:loc="switch_case";s1="warning";s2="off"]
    expected: FAIL

  [:loc="switch_stmt";s1="error";s2="info"]
    expected: FAIL

  [:loc="switch_stmt";s1="error";s2="off"]
    expected: FAIL

  [:loc="switch_stmt";s1="error";s2="warning"]
    expected: FAIL

  [:loc="switch_stmt";s1="info";s2="error"]
    expected: FAIL

  [:loc="switch_stmt";s1="info";s2="off"]
    expected: FAIL

  [:loc="switch_stmt";s1="info";s2="warning"]
    expected: FAIL

  [:loc="switch_stmt";s1="off";s2="error"]
    expected: FAIL

  [:loc="switch_stmt";s1="off";s2="info"]
    expected: FAIL

  [:loc="switch_stmt";s1="off";s2="warning"]
    expected: FAIL

  [:loc="switch_stmt";s1="warning";s2="error"]
    expected: FAIL

  [:loc="switch_stmt";s1="warning";s2="info"]
    expected: FAIL

  [:loc="switch_stmt";s1="warning";s2="off"]
    expected: FAIL

  [:loc="while_stmt";s1="error";s2="info"]
    expected: FAIL

  [:loc="while_stmt";s1="error";s2="off"]
    expected: FAIL

  [:loc="while_stmt";s1="error";s2="warning"]
    expected: FAIL

  [:loc="while_stmt";s1="info";s2="error"]
    expected: FAIL

  [:loc="while_stmt";s1="info";s2="off"]
    expected: FAIL

  [:loc="while_stmt";s1="info";s2="warning"]
    expected: FAIL

  [:loc="while_stmt";s1="off";s2="error"]
    expected: FAIL

  [:loc="while_stmt";s1="off";s2="info"]
    expected: FAIL

  [:loc="while_stmt";s1="off";s2="warning"]
    expected: FAIL

  [:loc="while_stmt";s1="warning";s2="error"]
    expected: FAIL

  [:loc="while_stmt";s1="warning";s2="info"]
    expected: FAIL

  [:loc="while_stmt";s1="warning";s2="off"]
    expected: FAIL


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_directive:*]
  [:s1="error";s2="error"]

  [:s1="error";s2="info"]

  [:s1="error";s2="off"]

  [:s1="error";s2="warning"]

  [:s1="info";s2="error"]

  [:s1="info";s2="info"]

  [:s1="info";s2="off"]

  [:s1="info";s2="warning"]

  [:s1="off";s2="error"]

  [:s1="off";s2="info"]

  [:s1="off";s2="off"]

  [:s1="off";s2="warning"]

  [:s1="warning";s2="error"]

  [:s1="warning";s2="info"]

  [:s1="warning";s2="off"]

  [:s1="warning";s2="warning"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:diagnostic_scoping:*]
  implementation-status: backlog
  [:case="call_unaffected_error"]

  [:case="call_unaffected_off"]
    expected: FAIL

  [:case="call_unaffected_warn"]
    expected: FAIL

  [:case="deeper_nest_no_effect"]

  [:case="deepest_nesting_error"]

  [:case="deepest_nesting_off"]
    expected: FAIL

  [:case="deepest_nesting_warn"]
    expected: FAIL

  [:case="global_if_nothing_else_warn"]
    expected: FAIL

  [:case="if_condition_error"]

  [:case="if_condition_off"]
    expected: FAIL

  [:case="if_condition_warn"]
    expected: FAIL

  [:case="other_nest_unaffected"]
    expected: FAIL

  [:case="override_global_off"]
    expected: FAIL

  [:case="override_global_on"]

  [:case="override_global_warn"]
    expected: FAIL

  [:case="switch_error"]

  [:case="switch_off"]
    expected: FAIL

  [:case="switch_warn"]
    expected: FAIL


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:duplicate_attribute_same_location:*]
  implementation-status: backlog
  [:loc="compound";same_rule=false]
    expected: FAIL

  [:loc="compound";same_rule=true]

  [:loc="for_body";same_rule=false]
    expected: FAIL

  [:loc="for_body";same_rule=true]

  [:loc="for_stmt";same_rule=false]
    expected: FAIL

  [:loc="for_stmt";same_rule=true]

  [:loc="function";same_rule=false]

  [:loc="function";same_rule=true]

  [:loc="if_else";same_rule=false]
    expected: FAIL

  [:loc="if_else";same_rule=true]

  [:loc="if_stmt";same_rule=false]
    expected: FAIL

  [:loc="if_stmt";same_rule=true]

  [:loc="if_then";same_rule=false]
    expected: FAIL

  [:loc="if_then";same_rule=true]

  [:loc="loop_body";same_rule=false]
    expected: FAIL

  [:loc="loop_body";same_rule=true]

  [:loc="loop_continuing";same_rule=false]
    expected: FAIL

  [:loc="loop_continuing";same_rule=true]

  [:loc="loop_stmt";same_rule=false]
    expected: FAIL

  [:loc="loop_stmt";same_rule=true]

  [:loc="switch_body";same_rule=false]
    expected: FAIL

  [:loc="switch_body";same_rule=true]

  [:loc="switch_case";same_rule=false]
    expected: FAIL

  [:loc="switch_case";same_rule=true]

  [:loc="switch_default";same_rule=false]
    expected: FAIL

  [:loc="switch_default";same_rule=true]

  [:loc="switch_stmt";same_rule=false]
    expected: FAIL

  [:loc="switch_stmt";same_rule=true]

  [:loc="while_body";same_rule=false]
    expected: FAIL

  [:loc="while_body";same_rule=true]

  [:loc="while_stmt";same_rule=false]
    expected: FAIL

  [:loc="while_stmt";same_rule=true]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_locations:*]
  [:type="attribute";location="function_const";rule="derivative_uniformity"]

  [:type="attribute";location="function_const";rule="subgroup_uniformity"]

  [:type="attribute";location="function_let";rule="derivative_uniformity"]

  [:type="attribute";location="function_let";rule="subgroup_uniformity"]

  [:type="attribute";location="function_params";rule="derivative_uniformity"]

  [:type="attribute";location="function_params";rule="subgroup_uniformity"]

  [:type="attribute";location="function_var";rule="derivative_uniformity"]

  [:type="attribute";location="function_var";rule="subgroup_uniformity"]

  [:type="attribute";location="module_const";rule="derivative_uniformity"]

  [:type="attribute";location="module_const";rule="subgroup_uniformity"]

  [:type="attribute";location="module_override";rule="derivative_uniformity"]

  [:type="attribute";location="module_override";rule="subgroup_uniformity"]

  [:type="attribute";location="module_var";rule="derivative_uniformity"]

  [:type="attribute";location="module_var";rule="subgroup_uniformity"]

  [:type="attribute";location="pre_case";rule="derivative_uniformity"]

  [:type="attribute";location="pre_case";rule="subgroup_uniformity"]

  [:type="attribute";location="pre_continuing";rule="derivative_uniformity"]

  [:type="attribute";location="pre_continuing";rule="subgroup_uniformity"]

  [:type="attribute";location="pre_default";rule="derivative_uniformity"]

  [:type="attribute";location="pre_default";rule="subgroup_uniformity"]

  [:type="attribute";location="pre_else";rule="derivative_uniformity"]

  [:type="attribute";location="pre_else";rule="subgroup_uniformity"]

  [:type="attribute";location="pre_for_params";rule="derivative_uniformity"]

  [:type="attribute";location="pre_for_params";rule="subgroup_uniformity"]

  [:type="attribute";location="struct";rule="derivative_uniformity"]

  [:type="attribute";location="struct";rule="subgroup_uniformity"]

  [:type="attribute";location="struct_member";rule="derivative_uniformity"]

  [:type="attribute";location="struct_member";rule="subgroup_uniformity"]

  [:type="directive";location="function_const";rule="derivative_uniformity"]

  [:type="directive";location="function_const";rule="subgroup_uniformity"]

  [:type="directive";location="function_let";rule="derivative_uniformity"]

  [:type="directive";location="function_let";rule="subgroup_uniformity"]

  [:type="directive";location="function_params";rule="derivative_uniformity"]

  [:type="directive";location="function_params";rule="subgroup_uniformity"]

  [:type="directive";location="function_var";rule="derivative_uniformity"]

  [:type="directive";location="function_var";rule="subgroup_uniformity"]

  [:type="directive";location="module_const";rule="derivative_uniformity"]

  [:type="directive";location="module_const";rule="subgroup_uniformity"]

  [:type="directive";location="module_override";rule="derivative_uniformity"]

  [:type="directive";location="module_override";rule="subgroup_uniformity"]

  [:type="directive";location="module_var";rule="derivative_uniformity"]

  [:type="directive";location="module_var";rule="subgroup_uniformity"]

  [:type="directive";location="pre_case";rule="derivative_uniformity"]

  [:type="directive";location="pre_case";rule="subgroup_uniformity"]

  [:type="directive";location="pre_continuing";rule="derivative_uniformity"]

  [:type="directive";location="pre_continuing";rule="subgroup_uniformity"]

  [:type="directive";location="pre_default";rule="derivative_uniformity"]

  [:type="directive";location="pre_default";rule="subgroup_uniformity"]

  [:type="directive";location="pre_else";rule="derivative_uniformity"]

  [:type="directive";location="pre_else";rule="subgroup_uniformity"]

  [:type="directive";location="pre_for_params";rule="derivative_uniformity"]

  [:type="directive";location="pre_for_params";rule="subgroup_uniformity"]

  [:type="directive";location="struct";rule="derivative_uniformity"]

  [:type="directive";location="struct";rule="subgroup_uniformity"]

  [:type="directive";location="struct_member";rule="derivative_uniformity"]

  [:type="directive";location="struct_member";rule="subgroup_uniformity"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_severity:*]
  [:severity="fatal";type="attribute"]

  [:severity="fatal";type="directive"]

  [:severity="goose";type="attribute"]

  [:severity="goose";type="directive"]

  [:severity="none";type="attribute"]

  [:severity="none";type="directive"]

  [:severity="severe";type="attribute"]

  [:severity="severe";type="directive"]

  [:severity="warn";type="attribute"]

  [:severity="warn";type="directive"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_locations:*]
  implementation-status: backlog
  [:type="attribute";location="compound";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="compound";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="for_body";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="for_body";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="for_stmt";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="for_stmt";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="function";rule="derivative_uniformity"]

  [:type="attribute";location="function";rule="subgroup_uniformity"]

  [:type="attribute";location="if_else";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="if_else";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="if_stmt";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="if_stmt";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="if_then";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="if_then";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_body";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_body";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_continuing";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_continuing";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_stmt";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="loop_stmt";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="module";rule="derivative_uniformity"]

  [:type="attribute";location="module";rule="subgroup_uniformity"]

  [:type="attribute";location="switch_body";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_body";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_case";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_case";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_default";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_default";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_stmt";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="switch_stmt";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="while_body";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="while_body";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="attribute";location="while_stmt";rule="derivative_uniformity"]
    expected: FAIL

  [:type="attribute";location="while_stmt";rule="subgroup_uniformity"]
    expected: FAIL

  [:type="directive";location="compound";rule="derivative_uniformity"]

  [:type="directive";location="compound";rule="subgroup_uniformity"]

  [:type="directive";location="for_body";rule="derivative_uniformity"]

  [:type="directive";location="for_body";rule="subgroup_uniformity"]

  [:type="directive";location="for_stmt";rule="derivative_uniformity"]

  [:type="directive";location="for_stmt";rule="subgroup_uniformity"]

  [:type="directive";location="function";rule="derivative_uniformity"]

  [:type="directive";location="function";rule="subgroup_uniformity"]

  [:type="directive";location="if_else";rule="derivative_uniformity"]

  [:type="directive";location="if_else";rule="subgroup_uniformity"]

  [:type="directive";location="if_stmt";rule="derivative_uniformity"]

  [:type="directive";location="if_stmt";rule="subgroup_uniformity"]

  [:type="directive";location="if_then";rule="derivative_uniformity"]

  [:type="directive";location="if_then";rule="subgroup_uniformity"]

  [:type="directive";location="loop_body";rule="derivative_uniformity"]

  [:type="directive";location="loop_body";rule="subgroup_uniformity"]

  [:type="directive";location="loop_continuing";rule="derivative_uniformity"]

  [:type="directive";location="loop_continuing";rule="subgroup_uniformity"]

  [:type="directive";location="loop_stmt";rule="derivative_uniformity"]

  [:type="directive";location="loop_stmt";rule="subgroup_uniformity"]

  [:type="directive";location="module";rule="derivative_uniformity"]

  [:type="directive";location="module";rule="subgroup_uniformity"]

  [:type="directive";location="switch_body";rule="derivative_uniformity"]

  [:type="directive";location="switch_body";rule="subgroup_uniformity"]

  [:type="directive";location="switch_case";rule="derivative_uniformity"]

  [:type="directive";location="switch_case";rule="subgroup_uniformity"]

  [:type="directive";location="switch_default";rule="derivative_uniformity"]

  [:type="directive";location="switch_default";rule="subgroup_uniformity"]

  [:type="directive";location="switch_stmt";rule="derivative_uniformity"]

  [:type="directive";location="switch_stmt";rule="subgroup_uniformity"]

  [:type="directive";location="while_body";rule="derivative_uniformity"]

  [:type="directive";location="while_body";rule="subgroup_uniformity"]

  [:type="directive";location="while_stmt";rule="derivative_uniformity"]

  [:type="directive";location="while_stmt";rule="subgroup_uniformity"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_params:*]
  [:severity="error";rule="derivative_uniformity";type="attribute"]

  [:severity="error";rule="derivative_uniformity";type="directive"]

  [:severity="error";rule="subgroup_uniformity";type="attribute"]

  [:severity="error";rule="subgroup_uniformity";type="directive"]

  [:severity="info";rule="derivative_uniformity";type="attribute"]

  [:severity="info";rule="derivative_uniformity";type="directive"]

  [:severity="info";rule="subgroup_uniformity";type="attribute"]

  [:severity="info";rule="subgroup_uniformity";type="directive"]

  [:severity="off";rule="derivative_uniformity";type="attribute"]

  [:severity="off";rule="derivative_uniformity";type="directive"]

  [:severity="off";rule="subgroup_uniformity";type="attribute"]

  [:severity="off";rule="subgroup_uniformity";type="directive"]

  [:severity="warning";rule="derivative_uniformity";type="attribute"]

  [:severity="warning";rule="derivative_uniformity";type="directive"]

  [:severity="warning";rule="subgroup_uniformity";type="attribute"]

  [:severity="warning";rule="subgroup_uniformity";type="directive"]


[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:warning_unknown_rule:*]
  implementation-status: backlog
  [:type="attribute";rule="blahblahblah"]
    expected: FAIL

  [:type="attribute";rule="derivative_uniform"]
    expected: FAIL

  [:type="attribute";rule="unknown"]
    expected: FAIL

  [:type="directive";rule="blahblahblah"]
    expected: FAIL

  [:type="directive";rule="derivative_uniform"]
    expected: FAIL

  [:type="directive";rule="unknown"]
    expected: FAIL
