[cts.https.html?q=webgpu:shader,validation,expression,binary,comparison:invalid_types:*]
  implementation-status: backlog
  [:op="eq";type="array";control=false]

  [:op="eq";type="array";control=true]

  [:op="eq";type="atomic";control=false]
    expected: FAIL

  [:op="eq";type="atomic";control=true]

  [:op="eq";type="mat2x2f";control=false]

  [:op="eq";type="mat2x2f";control=true]

  [:op="eq";type="ptr";control=false]

  [:op="eq";type="ptr";control=true]

  [:op="eq";type="sampler";control=false]

  [:op="eq";type="sampler";control=true]
    expected: FAIL

  [:op="eq";type="struct";control=false]

  [:op="eq";type="struct";control=true]

  [:op="eq";type="texture";control=false]

  [:op="eq";type="texture";control=true]

  [:op="ge";type="array";control=false]

  [:op="ge";type="array";control=true]

  [:op="ge";type="atomic";control=false]
    expected: FAIL

  [:op="ge";type="atomic";control=true]

  [:op="ge";type="mat2x2f";control=false]

  [:op="ge";type="mat2x2f";control=true]

  [:op="ge";type="ptr";control=false]

  [:op="ge";type="ptr";control=true]

  [:op="ge";type="sampler";control=false]

  [:op="ge";type="sampler";control=true]
    expected: FAIL

  [:op="ge";type="struct";control=false]

  [:op="ge";type="struct";control=true]

  [:op="ge";type="texture";control=false]

  [:op="ge";type="texture";control=true]

  [:op="gt";type="array";control=false]

  [:op="gt";type="array";control=true]

  [:op="gt";type="atomic";control=false]
    expected: FAIL

  [:op="gt";type="atomic";control=true]

  [:op="gt";type="mat2x2f";control=false]

  [:op="gt";type="mat2x2f";control=true]

  [:op="gt";type="ptr";control=false]

  [:op="gt";type="ptr";control=true]

  [:op="gt";type="sampler";control=false]

  [:op="gt";type="sampler";control=true]
    expected: FAIL

  [:op="gt";type="struct";control=false]

  [:op="gt";type="struct";control=true]

  [:op="gt";type="texture";control=false]

  [:op="gt";type="texture";control=true]

  [:op="le";type="array";control=false]

  [:op="le";type="array";control=true]

  [:op="le";type="atomic";control=false]
    expected: FAIL

  [:op="le";type="atomic";control=true]

  [:op="le";type="mat2x2f";control=false]

  [:op="le";type="mat2x2f";control=true]

  [:op="le";type="ptr";control=false]

  [:op="le";type="ptr";control=true]

  [:op="le";type="sampler";control=false]

  [:op="le";type="sampler";control=true]
    expected: FAIL

  [:op="le";type="struct";control=false]

  [:op="le";type="struct";control=true]

  [:op="le";type="texture";control=false]

  [:op="le";type="texture";control=true]

  [:op="lt";type="array";control=false]

  [:op="lt";type="array";control=true]

  [:op="lt";type="atomic";control=false]
    expected: FAIL

  [:op="lt";type="atomic";control=true]

  [:op="lt";type="mat2x2f";control=false]

  [:op="lt";type="mat2x2f";control=true]

  [:op="lt";type="ptr";control=false]

  [:op="lt";type="ptr";control=true]

  [:op="lt";type="sampler";control=false]

  [:op="lt";type="sampler";control=true]
    expected: FAIL

  [:op="lt";type="struct";control=false]

  [:op="lt";type="struct";control=true]

  [:op="lt";type="texture";control=false]

  [:op="lt";type="texture";control=true]

  [:op="ne";type="array";control=false]

  [:op="ne";type="array";control=true]

  [:op="ne";type="atomic";control=false]
    expected: FAIL

  [:op="ne";type="atomic";control=true]

  [:op="ne";type="mat2x2f";control=false]

  [:op="ne";type="mat2x2f";control=true]

  [:op="ne";type="ptr";control=false]

  [:op="ne";type="ptr";control=true]

  [:op="ne";type="sampler";control=false]

  [:op="ne";type="sampler";control=true]
    expected: FAIL

  [:op="ne";type="struct";control=false]

  [:op="ne";type="struct";control=true]

  [:op="ne";type="texture";control=false]

  [:op="ne";type="texture";control=true]


[cts.https.html?q=webgpu:shader,validation,expression,binary,comparison:scalar_vector:*]
  implementation-status: backlog
  [:lhs="abstract-float";rhs="abstract-float"]

  [:lhs="abstract-float";rhs="abstract-int"]

  [:lhs="abstract-float";rhs="bool"]
    expected: FAIL

  [:lhs="abstract-float";rhs="f16"]

  [:lhs="abstract-float";rhs="f32"]

  [:lhs="abstract-float";rhs="i32"]
    expected: FAIL

  [:lhs="abstract-float";rhs="u32"]
    expected: FAIL

  [:lhs="abstract-float";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="abstract-float";rhs="vec2%3Cabstract-int%3E"]
    expected: FAIL

  [:lhs="abstract-float";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="abstract-float";rhs="vec2%3Cf16%3E"]

  [:lhs="abstract-float";rhs="vec2%3Cf32%3E"]

  [:lhs="abstract-float";rhs="vec2%3Ci32%3E"]

  [:lhs="abstract-float";rhs="vec2%3Cu32%3E"]

  [:lhs="abstract-int";rhs="abstract-float"]

  [:lhs="abstract-int";rhs="abstract-int"]

  [:lhs="abstract-int";rhs="bool"]
    expected: FAIL

  [:lhs="abstract-int";rhs="f16"]

  [:lhs="abstract-int";rhs="f32"]

  [:lhs="abstract-int";rhs="i32"]

  [:lhs="abstract-int";rhs="u32"]

  [:lhs="abstract-int";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="abstract-int";rhs="vec2%3Cabstract-int%3E"]
    expected: FAIL

  [:lhs="abstract-int";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="abstract-int";rhs="vec2%3Cf16%3E"]

  [:lhs="abstract-int";rhs="vec2%3Cf32%3E"]

  [:lhs="abstract-int";rhs="vec2%3Ci32%3E"]

  [:lhs="abstract-int";rhs="vec2%3Cu32%3E"]

  [:lhs="bool";rhs="abstract-float"]
    expected: FAIL

  [:lhs="bool";rhs="abstract-int"]
    expected: FAIL

  [:lhs="bool";rhs="bool"]
    expected: FAIL

  [:lhs="bool";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="bool";rhs="f32"]
    expected: FAIL

  [:lhs="bool";rhs="i32"]
    expected: FAIL

  [:lhs="bool";rhs="u32"]
    expected: FAIL

  [:lhs="bool";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="bool";rhs="vec2%3Cabstract-int%3E"]
    expected: FAIL

  [:lhs="bool";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="bool";rhs="vec2%3Cf16%3E"]

  [:lhs="bool";rhs="vec2%3Cf32%3E"]

  [:lhs="bool";rhs="vec2%3Ci32%3E"]

  [:lhs="bool";rhs="vec2%3Cu32%3E"]

  [:lhs="f16";rhs="abstract-float"]

  [:lhs="f16";rhs="abstract-int"]

  [:lhs="f16";rhs="bool"]
    expected:
      if os == "mac": FAIL

  [:lhs="f16";rhs="f16"]

  [:lhs="f16";rhs="f32"]
    expected:
      if os == "mac": FAIL

  [:lhs="f16";rhs="i32"]
    expected:
      if os == "mac": FAIL

  [:lhs="f16";rhs="u32"]
    expected:
      if os == "mac": FAIL

  [:lhs="f16";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="f16";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="f16";rhs="vec2%3Cbool%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="f16";rhs="vec2%3Cf16%3E"]

  [:lhs="f16";rhs="vec2%3Cf32%3E"]

  [:lhs="f16";rhs="vec2%3Ci32%3E"]

  [:lhs="f16";rhs="vec2%3Cu32%3E"]

  [:lhs="f32";rhs="abstract-float"]

  [:lhs="f32";rhs="abstract-int"]

  [:lhs="f32";rhs="bool"]
    expected: FAIL

  [:lhs="f32";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="f32";rhs="f32"]

  [:lhs="f32";rhs="i32"]
    expected: FAIL

  [:lhs="f32";rhs="u32"]
    expected: FAIL

  [:lhs="f32";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="f32";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="f32";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="f32";rhs="vec2%3Cf16%3E"]

  [:lhs="f32";rhs="vec2%3Cf32%3E"]

  [:lhs="f32";rhs="vec2%3Ci32%3E"]

  [:lhs="f32";rhs="vec2%3Cu32%3E"]

  [:lhs="i32";rhs="abstract-float"]
    expected: FAIL

  [:lhs="i32";rhs="abstract-int"]

  [:lhs="i32";rhs="bool"]
    expected: FAIL

  [:lhs="i32";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="i32";rhs="f32"]
    expected: FAIL

  [:lhs="i32";rhs="i32"]

  [:lhs="i32";rhs="u32"]
    expected: FAIL

  [:lhs="i32";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="i32";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="i32";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="i32";rhs="vec2%3Cf16%3E"]

  [:lhs="i32";rhs="vec2%3Cf32%3E"]

  [:lhs="i32";rhs="vec2%3Ci32%3E"]

  [:lhs="i32";rhs="vec2%3Cu32%3E"]

  [:lhs="u32";rhs="abstract-float"]
    expected: FAIL

  [:lhs="u32";rhs="abstract-int"]

  [:lhs="u32";rhs="bool"]
    expected: FAIL

  [:lhs="u32";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="u32";rhs="f32"]
    expected: FAIL

  [:lhs="u32";rhs="i32"]
    expected: FAIL

  [:lhs="u32";rhs="u32"]

  [:lhs="u32";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="u32";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="u32";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="u32";rhs="vec2%3Cf16%3E"]

  [:lhs="u32";rhs="vec2%3Cf32%3E"]

  [:lhs="u32";rhs="vec2%3Ci32%3E"]

  [:lhs="u32";rhs="vec2%3Cu32%3E"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="f16"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="f32"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Ci32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-float%3E";rhs="vec2%3Cu32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-int%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-int%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-int%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-int%3E";rhs="f16"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="f32"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="i32"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="u32"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec2%3Cabstract-int%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec2%3Cbool%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cbool%3E";rhs="f32"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cabstract-int%3E"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cf16%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cf32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Ci32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cbool%3E";rhs="vec2%3Cu32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cf16%3E";rhs="abstract-float"]

  [:lhs="vec2%3Cf16%3E";rhs="abstract-int"]

  [:lhs="vec2%3Cf16%3E";rhs="bool"]

  [:lhs="vec2%3Cf16%3E";rhs="f16"]

  [:lhs="vec2%3Cf16%3E";rhs="f32"]

  [:lhs="vec2%3Cf16%3E";rhs="i32"]

  [:lhs="vec2%3Cf16%3E";rhs="u32"]

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cbool%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cf32%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Ci32%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cf16%3E";rhs="vec2%3Cu32%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cf32%3E";rhs="abstract-float"]

  [:lhs="vec2%3Cf32%3E";rhs="abstract-int"]

  [:lhs="vec2%3Cf32%3E";rhs="bool"]

  [:lhs="vec2%3Cf32%3E";rhs="f16"]

  [:lhs="vec2%3Cf32%3E";rhs="f32"]

  [:lhs="vec2%3Cf32%3E";rhs="i32"]

  [:lhs="vec2%3Cf32%3E";rhs="u32"]

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cf16%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Ci32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cf32%3E";rhs="vec2%3Cu32%3E"]
    expected: FAIL

  [:lhs="vec2%3Ci32%3E";rhs="abstract-float"]

  [:lhs="vec2%3Ci32%3E";rhs="abstract-int"]

  [:lhs="vec2%3Ci32%3E";rhs="bool"]

  [:lhs="vec2%3Ci32%3E";rhs="f16"]

  [:lhs="vec2%3Ci32%3E";rhs="f32"]

  [:lhs="vec2%3Ci32%3E";rhs="i32"]

  [:lhs="vec2%3Ci32%3E";rhs="u32"]

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cf16%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cf32%3E"]
    expected: FAIL

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec2%3Ci32%3E";rhs="vec2%3Cu32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cu32%3E";rhs="abstract-float"]

  [:lhs="vec2%3Cu32%3E";rhs="abstract-int"]

  [:lhs="vec2%3Cu32%3E";rhs="bool"]

  [:lhs="vec2%3Cu32%3E";rhs="f16"]

  [:lhs="vec2%3Cu32%3E";rhs="f32"]

  [:lhs="vec2%3Cu32%3E";rhs="i32"]

  [:lhs="vec2%3Cu32%3E";rhs="u32"]

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cabstract-float%3E"]
    expected: FAIL

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cbool%3E"]
    expected: FAIL

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cf16%3E"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cf32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Ci32%3E"]
    expected: FAIL

  [:lhs="vec2%3Cu32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-float%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-float%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-float%3E";rhs="f16"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="f32"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-float%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cabstract-float%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-int%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-int%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec3%3Cabstract-int%3E";rhs="f16"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="f32"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="i32"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="u32"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cabstract-int%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec3%3Cbool%3E";rhs="f32"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cbool%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="abstract-float"]

  [:lhs="vec3%3Cf16%3E";rhs="abstract-int"]

  [:lhs="vec3%3Cf16%3E";rhs="bool"]

  [:lhs="vec3%3Cf16%3E";rhs="f16"]

  [:lhs="vec3%3Cf16%3E";rhs="f32"]

  [:lhs="vec3%3Cf16%3E";rhs="i32"]

  [:lhs="vec3%3Cf16%3E";rhs="u32"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cf16%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="abstract-float"]

  [:lhs="vec3%3Cf32%3E";rhs="abstract-int"]

  [:lhs="vec3%3Cf32%3E";rhs="bool"]

  [:lhs="vec3%3Cf32%3E";rhs="f16"]

  [:lhs="vec3%3Cf32%3E";rhs="f32"]

  [:lhs="vec3%3Cf32%3E";rhs="i32"]

  [:lhs="vec3%3Cf32%3E";rhs="u32"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cf32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="abstract-float"]

  [:lhs="vec3%3Ci32%3E";rhs="abstract-int"]

  [:lhs="vec3%3Ci32%3E";rhs="bool"]

  [:lhs="vec3%3Ci32%3E";rhs="f16"]

  [:lhs="vec3%3Ci32%3E";rhs="f32"]

  [:lhs="vec3%3Ci32%3E";rhs="i32"]

  [:lhs="vec3%3Ci32%3E";rhs="u32"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Ci32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="abstract-float"]

  [:lhs="vec3%3Cu32%3E";rhs="abstract-int"]

  [:lhs="vec3%3Cu32%3E";rhs="bool"]

  [:lhs="vec3%3Cu32%3E";rhs="f16"]

  [:lhs="vec3%3Cu32%3E";rhs="f32"]

  [:lhs="vec3%3Cu32%3E";rhs="i32"]

  [:lhs="vec3%3Cu32%3E";rhs="u32"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec3%3Cu32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-float%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-float%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-float%3E";rhs="f16"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="f32"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-float%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cabstract-float%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-int%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-int%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec4%3Cabstract-int%3E";rhs="f16"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="f32"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="i32"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="u32"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cabstract-int%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="abstract-float"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="abstract-int"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="bool"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="f16"]
    expected:
      if os == "mac": FAIL

  [:lhs="vec4%3Cbool%3E";rhs="f32"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="i32"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="u32"]
    expected: FAIL

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cbool%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="abstract-float"]

  [:lhs="vec4%3Cf16%3E";rhs="abstract-int"]

  [:lhs="vec4%3Cf16%3E";rhs="bool"]

  [:lhs="vec4%3Cf16%3E";rhs="f16"]

  [:lhs="vec4%3Cf16%3E";rhs="f32"]

  [:lhs="vec4%3Cf16%3E";rhs="i32"]

  [:lhs="vec4%3Cf16%3E";rhs="u32"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cf16%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="abstract-float"]

  [:lhs="vec4%3Cf32%3E";rhs="abstract-int"]

  [:lhs="vec4%3Cf32%3E";rhs="bool"]

  [:lhs="vec4%3Cf32%3E";rhs="f16"]

  [:lhs="vec4%3Cf32%3E";rhs="f32"]

  [:lhs="vec4%3Cf32%3E";rhs="i32"]

  [:lhs="vec4%3Cf32%3E";rhs="u32"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cf32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="abstract-float"]

  [:lhs="vec4%3Ci32%3E";rhs="abstract-int"]

  [:lhs="vec4%3Ci32%3E";rhs="bool"]

  [:lhs="vec4%3Ci32%3E";rhs="f16"]

  [:lhs="vec4%3Ci32%3E";rhs="f32"]

  [:lhs="vec4%3Ci32%3E";rhs="i32"]

  [:lhs="vec4%3Ci32%3E";rhs="u32"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Ci32%3E";rhs="vec2%3Cu32%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="abstract-float"]

  [:lhs="vec4%3Cu32%3E";rhs="abstract-int"]

  [:lhs="vec4%3Cu32%3E";rhs="bool"]

  [:lhs="vec4%3Cu32%3E";rhs="f16"]

  [:lhs="vec4%3Cu32%3E";rhs="f32"]

  [:lhs="vec4%3Cu32%3E";rhs="i32"]

  [:lhs="vec4%3Cu32%3E";rhs="u32"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cabstract-float%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cabstract-int%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cbool%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cf16%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cf32%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Ci32%3E"]

  [:lhs="vec4%3Cu32%3E";rhs="vec2%3Cu32%3E"]
