[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:invalid:*]
  implementation-status: backlog
  [:op="add";rhs="ai";test="af"]
    expected: FAIL

  [:op="add";rhs="ai";test="ai"]
    expected: FAIL

  [:op="add";rhs="ai";test="array"]

  [:op="add";rhs="ai";test="atomic"]

  [:op="add";rhs="ai";test="bool"]

  [:op="add";rhs="ai";test="f16"]
    expected:
      if os == "mac": FAIL

  [:op="add";rhs="ai";test="f32"]
    expected: FAIL

  [:op="add";rhs="ai";test="i32"]

  [:op="add";rhs="ai";test="matf_ai_matching"]
    expected: FAIL

  [:op="add";rhs="ai";test="matf_ai_no_matching"]

  [:op="add";rhs="ai";test="matf_size_matching"]

  [:op="add";rhs="ai";test="matf_size_no_match"]

  [:op="add";rhs="ai";test="math_size_matching"]

  [:op="add";rhs="ai";test="math_size_no_matching"]

  [:op="add";rhs="ai";test="sampler"]

  [:op="add";rhs="ai";test="struct"]

  [:op="add";rhs="ai";test="texture"]

  [:op="add";rhs="ai";test="u32"]

  [:op="add";rhs="ai";test="vec"]

  [:op="add";rhs="mat2x3f()";test="af"]
    expected: FAIL

  [:op="add";rhs="mat2x3f()";test="ai"]
    expected: FAIL

  [:op="add";rhs="mat2x3f()";test="array"]

  [:op="add";rhs="mat2x3f()";test="atomic"]

  [:op="add";rhs="mat2x3f()";test="bool"]

  [:op="add";rhs="mat2x3f()";test="f16"]

  [:op="add";rhs="mat2x3f()";test="f32"]
    expected: FAIL

  [:op="add";rhs="mat2x3f()";test="i32"]

  [:op="add";rhs="mat2x3f()";test="matf_ai_matching"]

  [:op="add";rhs="mat2x3f()";test="matf_ai_no_matching"]

  [:op="add";rhs="mat2x3f()";test="matf_size_matching"]

  [:op="add";rhs="mat2x3f()";test="matf_size_no_match"]

  [:op="add";rhs="mat2x3f()";test="math_size_matching"]

  [:op="add";rhs="mat2x3f()";test="math_size_no_matching"]

  [:op="add";rhs="mat2x3f()";test="sampler"]

  [:op="add";rhs="mat2x3f()";test="struct"]

  [:op="add";rhs="mat2x3f()";test="texture"]

  [:op="add";rhs="mat2x3f()";test="u32"]

  [:op="add";rhs="mat2x3f()";test="vec"]

  [:op="add";rhs="mat2x3h()";test="af"]

  [:op="add";rhs="mat2x3h()";test="ai"]

  [:op="add";rhs="mat2x3h()";test="array"]

  [:op="add";rhs="mat2x3h()";test="atomic"]

  [:op="add";rhs="mat2x3h()";test="bool"]

  [:op="add";rhs="mat2x3h()";test="f16"]

  [:op="add";rhs="mat2x3h()";test="f32"]

  [:op="add";rhs="mat2x3h()";test="i32"]

  [:op="add";rhs="mat2x3h()";test="matf_ai_matching"]

  [:op="add";rhs="mat2x3h()";test="matf_ai_no_matching"]

  [:op="add";rhs="mat2x3h()";test="matf_size_matching"]

  [:op="add";rhs="mat2x3h()";test="matf_size_no_match"]

  [:op="add";rhs="mat2x3h()";test="math_size_matching"]
    expected:
      if os == "mac": FAIL

  [:op="add";rhs="mat2x3h()";test="math_size_no_matching"]

  [:op="add";rhs="mat2x3h()";test="sampler"]

  [:op="add";rhs="mat2x3h()";test="struct"]

  [:op="add";rhs="mat2x3h()";test="texture"]

  [:op="add";rhs="mat2x3h()";test="u32"]

  [:op="add";rhs="mat2x3h()";test="vec"]

  [:op="sub";rhs="ai";test="af"]
    expected: FAIL

  [:op="sub";rhs="ai";test="ai"]
    expected: FAIL

  [:op="sub";rhs="ai";test="array"]

  [:op="sub";rhs="ai";test="atomic"]

  [:op="sub";rhs="ai";test="bool"]

  [:op="sub";rhs="ai";test="f16"]
    expected:
      if os == "mac": FAIL

  [:op="sub";rhs="ai";test="f32"]
    expected: FAIL

  [:op="sub";rhs="ai";test="i32"]

  [:op="sub";rhs="ai";test="matf_ai_matching"]
    expected: FAIL

  [:op="sub";rhs="ai";test="matf_ai_no_matching"]

  [:op="sub";rhs="ai";test="matf_size_matching"]

  [:op="sub";rhs="ai";test="matf_size_no_match"]

  [:op="sub";rhs="ai";test="math_size_matching"]

  [:op="sub";rhs="ai";test="math_size_no_matching"]

  [:op="sub";rhs="ai";test="sampler"]

  [:op="sub";rhs="ai";test="struct"]

  [:op="sub";rhs="ai";test="texture"]

  [:op="sub";rhs="ai";test="u32"]

  [:op="sub";rhs="ai";test="vec"]

  [:op="sub";rhs="mat2x3f()";test="af"]
    expected: FAIL

  [:op="sub";rhs="mat2x3f()";test="ai"]
    expected: FAIL

  [:op="sub";rhs="mat2x3f()";test="array"]

  [:op="sub";rhs="mat2x3f()";test="atomic"]

  [:op="sub";rhs="mat2x3f()";test="bool"]

  [:op="sub";rhs="mat2x3f()";test="f16"]

  [:op="sub";rhs="mat2x3f()";test="f32"]
    expected: FAIL

  [:op="sub";rhs="mat2x3f()";test="i32"]

  [:op="sub";rhs="mat2x3f()";test="matf_ai_matching"]

  [:op="sub";rhs="mat2x3f()";test="matf_ai_no_matching"]

  [:op="sub";rhs="mat2x3f()";test="matf_size_matching"]

  [:op="sub";rhs="mat2x3f()";test="matf_size_no_match"]

  [:op="sub";rhs="mat2x3f()";test="math_size_matching"]

  [:op="sub";rhs="mat2x3f()";test="math_size_no_matching"]

  [:op="sub";rhs="mat2x3f()";test="sampler"]

  [:op="sub";rhs="mat2x3f()";test="struct"]

  [:op="sub";rhs="mat2x3f()";test="texture"]

  [:op="sub";rhs="mat2x3f()";test="u32"]

  [:op="sub";rhs="mat2x3f()";test="vec"]

  [:op="sub";rhs="mat2x3h()";test="af"]

  [:op="sub";rhs="mat2x3h()";test="ai"]

  [:op="sub";rhs="mat2x3h()";test="array"]

  [:op="sub";rhs="mat2x3h()";test="atomic"]

  [:op="sub";rhs="mat2x3h()";test="bool"]

  [:op="sub";rhs="mat2x3h()";test="f16"]

  [:op="sub";rhs="mat2x3h()";test="f32"]

  [:op="sub";rhs="mat2x3h()";test="i32"]

  [:op="sub";rhs="mat2x3h()";test="matf_ai_matching"]

  [:op="sub";rhs="mat2x3h()";test="matf_ai_no_matching"]

  [:op="sub";rhs="mat2x3h()";test="matf_size_matching"]

  [:op="sub";rhs="mat2x3h()";test="matf_size_no_match"]

  [:op="sub";rhs="mat2x3h()";test="math_size_matching"]
    expected:
      if os == "mac": FAIL

  [:op="sub";rhs="mat2x3h()";test="math_size_no_matching"]

  [:op="sub";rhs="mat2x3h()";test="sampler"]

  [:op="sub";rhs="mat2x3h()";test="struct"]

  [:op="sub";rhs="mat2x3h()";test="texture"]

  [:op="sub";rhs="mat2x3h()";test="u32"]

  [:op="sub";rhs="mat2x3h()";test="vec"]


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:overflow_abstract:*]
  implementation-status: backlog
  [:rhs=1.7976931348623157e%2B308;c=2;r=2]

  [:rhs=1.7976931348623157e%2B308;c=2;r=3]

  [:rhs=1.7976931348623157e%2B308;c=2;r=4]

  [:rhs=1.7976931348623157e%2B308;c=3;r=2]

  [:rhs=1.7976931348623157e%2B308;c=3;r=3]

  [:rhs=1.7976931348623157e%2B308;c=3;r=4]

  [:rhs=1.7976931348623157e%2B308;c=4;r=2]

  [:rhs=1.7976931348623157e%2B308;c=4;r=3]

  [:rhs=1.7976931348623157e%2B308;c=4;r=4]

  [:rhs=1;c=2;r=2]
    expected: FAIL

  [:rhs=1;c=2;r=3]
    expected: FAIL

  [:rhs=1;c=2;r=4]
    expected: FAIL

  [:rhs=1;c=3;r=2]
    expected: FAIL

  [:rhs=1;c=3;r=3]
    expected: FAIL

  [:rhs=1;c=3;r=4]
    expected: FAIL

  [:rhs=1;c=4;r=2]
    expected: FAIL

  [:rhs=1;c=4;r=3]
    expected: FAIL

  [:rhs=1;c=4;r=4]
    expected: FAIL


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:overflow_f16:*]
  implementation-status:
    if os == "mac": backlog
  [:rhs=1;c=2;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=2;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=2;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=65504;c=2;r=2]

  [:rhs=65504;c=2;r=3]

  [:rhs=65504;c=2;r=4]

  [:rhs=65504;c=3;r=2]

  [:rhs=65504;c=3;r=3]

  [:rhs=65504;c=3;r=4]

  [:rhs=65504;c=4;r=2]

  [:rhs=65504;c=4;r=3]

  [:rhs=65504;c=4;r=4]


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:overflow_f32:*]
  implementation-status: backlog
  [:rhs=1;c=2;r=2]
    expected: FAIL

  [:rhs=1;c=2;r=3]
    expected: FAIL

  [:rhs=1;c=2;r=4]
    expected: FAIL

  [:rhs=1;c=3;r=2]
    expected: FAIL

  [:rhs=1;c=3;r=3]
    expected: FAIL

  [:rhs=1;c=3;r=4]
    expected: FAIL

  [:rhs=1;c=4;r=2]
    expected: FAIL

  [:rhs=1;c=4;r=3]
    expected: FAIL

  [:rhs=1;c=4;r=4]
    expected: FAIL

  [:rhs=3.4028234663852886e%2B38;c=2;r=2]

  [:rhs=3.4028234663852886e%2B38;c=2;r=3]

  [:rhs=3.4028234663852886e%2B38;c=2;r=4]

  [:rhs=3.4028234663852886e%2B38;c=3;r=2]

  [:rhs=3.4028234663852886e%2B38;c=3;r=3]

  [:rhs=3.4028234663852886e%2B38;c=3;r=4]

  [:rhs=3.4028234663852886e%2B38;c=4;r=2]

  [:rhs=3.4028234663852886e%2B38;c=4;r=3]

  [:rhs=3.4028234663852886e%2B38;c=4;r=4]


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:underflow_abstract:*]
  implementation-status: backlog
  [:rhs=1.7976931348623157e%2B308;c=2;r=2]

  [:rhs=1.7976931348623157e%2B308;c=2;r=3]

  [:rhs=1.7976931348623157e%2B308;c=2;r=4]

  [:rhs=1.7976931348623157e%2B308;c=3;r=2]

  [:rhs=1.7976931348623157e%2B308;c=3;r=3]

  [:rhs=1.7976931348623157e%2B308;c=3;r=4]

  [:rhs=1.7976931348623157e%2B308;c=4;r=2]

  [:rhs=1.7976931348623157e%2B308;c=4;r=3]

  [:rhs=1.7976931348623157e%2B308;c=4;r=4]

  [:rhs=1;c=2;r=2]
    expected: FAIL

  [:rhs=1;c=2;r=3]
    expected: FAIL

  [:rhs=1;c=2;r=4]
    expected: FAIL

  [:rhs=1;c=3;r=2]
    expected: FAIL

  [:rhs=1;c=3;r=3]
    expected: FAIL

  [:rhs=1;c=3;r=4]
    expected: FAIL

  [:rhs=1;c=4;r=2]
    expected: FAIL

  [:rhs=1;c=4;r=3]
    expected: FAIL

  [:rhs=1;c=4;r=4]
    expected: FAIL


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:underflow_f16:*]
  implementation-status:
    if os == "mac": backlog
  [:rhs=1;c=2;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=2;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=2;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=3;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=2]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=3]
    expected:
      if os == "mac": FAIL

  [:rhs=1;c=4;r=4]
    expected:
      if os == "mac": FAIL

  [:rhs=65504;c=2;r=2]

  [:rhs=65504;c=2;r=3]

  [:rhs=65504;c=2;r=4]

  [:rhs=65504;c=3;r=2]

  [:rhs=65504;c=3;r=3]

  [:rhs=65504;c=3;r=4]

  [:rhs=65504;c=4;r=2]

  [:rhs=65504;c=4;r=3]

  [:rhs=65504;c=4;r=4]


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:underflow_f32:*]
  implementation-status: backlog
  [:rhs=1;c=2;r=2]
    expected: FAIL

  [:rhs=1;c=2;r=3]
    expected: FAIL

  [:rhs=1;c=2;r=4]
    expected: FAIL

  [:rhs=1;c=3;r=2]
    expected: FAIL

  [:rhs=1;c=3;r=3]
    expected: FAIL

  [:rhs=1;c=3;r=4]
    expected: FAIL

  [:rhs=1;c=4;r=2]
    expected: FAIL

  [:rhs=1;c=4;r=3]
    expected: FAIL

  [:rhs=1;c=4;r=4]
    expected: FAIL

  [:rhs=3.4028234663852886e%2B38;c=2;r=2]

  [:rhs=3.4028234663852886e%2B38;c=2;r=3]

  [:rhs=3.4028234663852886e%2B38;c=2;r=4]

  [:rhs=3.4028234663852886e%2B38;c=3;r=2]

  [:rhs=3.4028234663852886e%2B38;c=3;r=3]

  [:rhs=3.4028234663852886e%2B38;c=3;r=4]

  [:rhs=3.4028234663852886e%2B38;c=4;r=2]

  [:rhs=3.4028234663852886e%2B38;c=4;r=3]

  [:rhs=3.4028234663852886e%2B38;c=4;r=4]


[cts.https.html?q=webgpu:shader,validation,expression,matrix,add_sub:with_abstract:*]
  implementation-status:
    if os == "mac": backlog
  [:op="add";rhs="mat2x3f()";swap=false]

  [:op="add";rhs="mat2x3f()";swap=true]

  [:op="add";rhs="mat2x3h()";swap=false]
    expected:
      if os == "mac": FAIL

  [:op="add";rhs="mat2x3h()";swap=true]
    expected:
      if os == "mac": FAIL

  [:op="sub";rhs="mat2x3f()";swap=false]

  [:op="sub";rhs="mat2x3f()";swap=true]

  [:op="sub";rhs="mat2x3h()";swap=false]
    expected:
      if os == "mac": FAIL

  [:op="sub";rhs="mat2x3h()";swap=true]
    expected:
      if os == "mac": FAIL
