[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,derivatives:invalid_argument_types:*]
  implementation-status:
    if os == "mac": backlog
  [:type="f16";call=""]

  [:type="f16";call="dpdx"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="dpdxCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="dpdxFine"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="dpdy"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="dpdyCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="dpdyFine"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="fwidth"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="fwidthCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="f16";call="fwidthFine"]
    expected:
      if os == "mac": FAIL

  [:type="f32";call=""]

  [:type="f32";call="dpdx"]

  [:type="f32";call="dpdxCoarse"]

  [:type="f32";call="dpdxFine"]

  [:type="f32";call="dpdy"]

  [:type="f32";call="dpdyCoarse"]

  [:type="f32";call="dpdyFine"]

  [:type="f32";call="fwidth"]

  [:type="f32";call="fwidthCoarse"]

  [:type="f32";call="fwidthFine"]

  [:type="i32";call=""]

  [:type="i32";call="dpdx"]

  [:type="i32";call="dpdxCoarse"]

  [:type="i32";call="dpdxFine"]

  [:type="i32";call="dpdy"]

  [:type="i32";call="dpdyCoarse"]

  [:type="i32";call="dpdyFine"]

  [:type="i32";call="fwidth"]

  [:type="i32";call="fwidthCoarse"]

  [:type="i32";call="fwidthFine"]

  [:type="mat2x2%3Cf32%3E";call=""]

  [:type="mat2x2%3Cf32%3E";call="dpdx"]

  [:type="mat2x2%3Cf32%3E";call="dpdxCoarse"]

  [:type="mat2x2%3Cf32%3E";call="dpdxFine"]

  [:type="mat2x2%3Cf32%3E";call="dpdy"]

  [:type="mat2x2%3Cf32%3E";call="dpdyCoarse"]

  [:type="mat2x2%3Cf32%3E";call="dpdyFine"]

  [:type="mat2x2%3Cf32%3E";call="fwidth"]

  [:type="mat2x2%3Cf32%3E";call="fwidthCoarse"]

  [:type="mat2x2%3Cf32%3E";call="fwidthFine"]

  [:type="u32";call=""]

  [:type="u32";call="dpdx"]

  [:type="u32";call="dpdxCoarse"]

  [:type="u32";call="dpdxFine"]

  [:type="u32";call="dpdy"]

  [:type="u32";call="dpdyCoarse"]

  [:type="u32";call="dpdyFine"]

  [:type="u32";call="fwidth"]

  [:type="u32";call="fwidthCoarse"]

  [:type="u32";call="fwidthFine"]

  [:type="vec2%3Cf16%3E";call=""]

  [:type="vec2%3Cf16%3E";call="dpdx"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="dpdxCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="dpdxFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="dpdy"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="dpdyCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="dpdyFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="fwidth"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="fwidthCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Cf16%3E";call="fwidthFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec2%3Ci32%3E";call=""]

  [:type="vec2%3Ci32%3E";call="dpdx"]

  [:type="vec2%3Ci32%3E";call="dpdxCoarse"]

  [:type="vec2%3Ci32%3E";call="dpdxFine"]

  [:type="vec2%3Ci32%3E";call="dpdy"]

  [:type="vec2%3Ci32%3E";call="dpdyCoarse"]

  [:type="vec2%3Ci32%3E";call="dpdyFine"]

  [:type="vec2%3Ci32%3E";call="fwidth"]

  [:type="vec2%3Ci32%3E";call="fwidthCoarse"]

  [:type="vec2%3Ci32%3E";call="fwidthFine"]

  [:type="vec2%3Cu32%3E";call=""]

  [:type="vec2%3Cu32%3E";call="dpdx"]

  [:type="vec2%3Cu32%3E";call="dpdxCoarse"]

  [:type="vec2%3Cu32%3E";call="dpdxFine"]

  [:type="vec2%3Cu32%3E";call="dpdy"]

  [:type="vec2%3Cu32%3E";call="dpdyCoarse"]

  [:type="vec2%3Cu32%3E";call="dpdyFine"]

  [:type="vec2%3Cu32%3E";call="fwidth"]

  [:type="vec2%3Cu32%3E";call="fwidthCoarse"]

  [:type="vec2%3Cu32%3E";call="fwidthFine"]

  [:type="vec3%3Cf16%3E";call=""]

  [:type="vec3%3Cf16%3E";call="dpdx"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="dpdxCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="dpdxFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="dpdy"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="dpdyCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="dpdyFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="fwidth"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="fwidthCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Cf16%3E";call="fwidthFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec3%3Ci32%3E";call=""]

  [:type="vec3%3Ci32%3E";call="dpdx"]

  [:type="vec3%3Ci32%3E";call="dpdxCoarse"]

  [:type="vec3%3Ci32%3E";call="dpdxFine"]

  [:type="vec3%3Ci32%3E";call="dpdy"]

  [:type="vec3%3Ci32%3E";call="dpdyCoarse"]

  [:type="vec3%3Ci32%3E";call="dpdyFine"]

  [:type="vec3%3Ci32%3E";call="fwidth"]

  [:type="vec3%3Ci32%3E";call="fwidthCoarse"]

  [:type="vec3%3Ci32%3E";call="fwidthFine"]

  [:type="vec3%3Cu32%3E";call=""]

  [:type="vec3%3Cu32%3E";call="dpdx"]

  [:type="vec3%3Cu32%3E";call="dpdxCoarse"]

  [:type="vec3%3Cu32%3E";call="dpdxFine"]

  [:type="vec3%3Cu32%3E";call="dpdy"]

  [:type="vec3%3Cu32%3E";call="dpdyCoarse"]

  [:type="vec3%3Cu32%3E";call="dpdyFine"]

  [:type="vec3%3Cu32%3E";call="fwidth"]

  [:type="vec3%3Cu32%3E";call="fwidthCoarse"]

  [:type="vec3%3Cu32%3E";call="fwidthFine"]

  [:type="vec4%3Cf16%3E";call=""]

  [:type="vec4%3Cf16%3E";call="dpdx"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="dpdxCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="dpdxFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="dpdy"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="dpdyCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="dpdyFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="fwidth"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="fwidthCoarse"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Cf16%3E";call="fwidthFine"]
    expected:
      if os == "mac": FAIL

  [:type="vec4%3Ci32%3E";call=""]

  [:type="vec4%3Ci32%3E";call="dpdx"]

  [:type="vec4%3Ci32%3E";call="dpdxCoarse"]

  [:type="vec4%3Ci32%3E";call="dpdxFine"]

  [:type="vec4%3Ci32%3E";call="dpdy"]

  [:type="vec4%3Ci32%3E";call="dpdyCoarse"]

  [:type="vec4%3Ci32%3E";call="dpdyFine"]

  [:type="vec4%3Ci32%3E";call="fwidth"]

  [:type="vec4%3Ci32%3E";call="fwidthCoarse"]

  [:type="vec4%3Ci32%3E";call="fwidthFine"]

  [:type="vec4%3Cu32%3E";call=""]

  [:type="vec4%3Cu32%3E";call="dpdx"]

  [:type="vec4%3Cu32%3E";call="dpdxCoarse"]

  [:type="vec4%3Cu32%3E";call="dpdxFine"]

  [:type="vec4%3Cu32%3E";call="dpdy"]

  [:type="vec4%3Cu32%3E";call="dpdyCoarse"]

  [:type="vec4%3Cu32%3E";call="dpdyFine"]

  [:type="vec4%3Cu32%3E";call="fwidth"]

  [:type="vec4%3Cu32%3E";call="fwidthCoarse"]

  [:type="vec4%3Cu32%3E";call="fwidthFine"]


[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,derivatives:must_use:*]
  implementation-status: backlog
  [:use=false;func="dpdx"]
    expected: FAIL

  [:use=false;func="dpdxCoarse"]
    expected: FAIL

  [:use=false;func="dpdxFine"]
    expected: FAIL

  [:use=false;func="dpdy"]
    expected: FAIL

  [:use=false;func="dpdyCoarse"]
    expected: FAIL

  [:use=false;func="dpdyFine"]
    expected: FAIL

  [:use=false;func="fwidth"]
    expected: FAIL

  [:use=false;func="fwidthCoarse"]
    expected: FAIL

  [:use=false;func="fwidthFine"]
    expected: FAIL

  [:use=true;func="dpdx"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="dpdxCoarse"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="dpdxFine"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="dpdy"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="dpdyCoarse"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="dpdyFine"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="fwidth"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="fwidthCoarse"]
    expected:
      if os == "win" and debug: [PASS, FAIL]

  [:use=true;func="fwidthFine"]
    expected:
      if os == "win" and debug: [PASS, FAIL]


[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,derivatives:only_in_fragment:*]
  [:entry_point="compute";call="bar"]

  [:entry_point="compute";call="dpdx"]

  [:entry_point="compute";call="dpdxCoarse"]

  [:entry_point="compute";call="dpdxFine"]

  [:entry_point="compute";call="dpdy"]

  [:entry_point="compute";call="dpdyCoarse"]

  [:entry_point="compute";call="dpdyFine"]

  [:entry_point="compute";call="fwidth"]

  [:entry_point="compute";call="fwidthCoarse"]

  [:entry_point="compute";call="fwidthFine"]

  [:entry_point="compute_without_call";call="bar"]

  [:entry_point="compute_without_call";call="dpdx"]

  [:entry_point="compute_without_call";call="dpdxCoarse"]

  [:entry_point="compute_without_call";call="dpdxFine"]

  [:entry_point="compute_without_call";call="dpdy"]

  [:entry_point="compute_without_call";call="dpdyCoarse"]

  [:entry_point="compute_without_call";call="dpdyFine"]

  [:entry_point="compute_without_call";call="fwidth"]

  [:entry_point="compute_without_call";call="fwidthCoarse"]

  [:entry_point="compute_without_call";call="fwidthFine"]

  [:entry_point="fragment";call="bar"]

  [:entry_point="fragment";call="dpdx"]

  [:entry_point="fragment";call="dpdxCoarse"]

  [:entry_point="fragment";call="dpdxFine"]

  [:entry_point="fragment";call="dpdy"]

  [:entry_point="fragment";call="dpdyCoarse"]

  [:entry_point="fragment";call="dpdyFine"]

  [:entry_point="fragment";call="fwidth"]

  [:entry_point="fragment";call="fwidthCoarse"]

  [:entry_point="fragment";call="fwidthFine"]

  [:entry_point="fragment_and_compute";call="bar"]

  [:entry_point="fragment_and_compute";call="dpdx"]

  [:entry_point="fragment_and_compute";call="dpdxCoarse"]

  [:entry_point="fragment_and_compute";call="dpdxFine"]

  [:entry_point="fragment_and_compute";call="dpdy"]

  [:entry_point="fragment_and_compute";call="dpdyCoarse"]

  [:entry_point="fragment_and_compute";call="dpdyFine"]

  [:entry_point="fragment_and_compute";call="fwidth"]

  [:entry_point="fragment_and_compute";call="fwidthCoarse"]

  [:entry_point="fragment_and_compute";call="fwidthFine"]

  [:entry_point="none";call="bar"]

  [:entry_point="none";call="dpdx"]

  [:entry_point="none";call="dpdxCoarse"]

  [:entry_point="none";call="dpdxFine"]

  [:entry_point="none";call="dpdy"]

  [:entry_point="none";call="dpdyCoarse"]

  [:entry_point="none";call="dpdyFine"]

  [:entry_point="none";call="fwidth"]

  [:entry_point="none";call="fwidthCoarse"]

  [:entry_point="none";call="fwidthFine"]

  [:entry_point="vertex";call="bar"]

  [:entry_point="vertex";call="dpdx"]

  [:entry_point="vertex";call="dpdxCoarse"]

  [:entry_point="vertex";call="dpdxFine"]

  [:entry_point="vertex";call="dpdy"]

  [:entry_point="vertex";call="dpdyCoarse"]

  [:entry_point="vertex";call="dpdyFine"]

  [:entry_point="vertex";call="fwidth"]

  [:entry_point="vertex";call="fwidthCoarse"]

  [:entry_point="vertex";call="fwidthFine"]
