[cts.https.html?q=webgpu:shader,validation,expression,matrix,bitwise_shift:invalid:*]
  implementation-status: backlog
  [:op="left";rhs="1u";test="af";swap=false]

  [:op="left";rhs="1u";test="af";swap=true]

  [:op="left";rhs="1u";test="ai";swap=false]

  [:op="left";rhs="1u";test="ai";swap=true]

  [:op="left";rhs="1u";test="array";swap=false]

  [:op="left";rhs="1u";test="array";swap=true]

  [:op="left";rhs="1u";test="atomic";swap=false]
    expected: FAIL

  [:op="left";rhs="1u";test="atomic";swap=true]

  [:op="left";rhs="1u";test="bool";swap=false]

  [:op="left";rhs="1u";test="bool";swap=true]

  [:op="left";rhs="1u";test="f16";swap=false]

  [:op="left";rhs="1u";test="f16";swap=true]

  [:op="left";rhs="1u";test="f32";swap=false]

  [:op="left";rhs="1u";test="f32";swap=true]

  [:op="left";rhs="1u";test="i32";swap=false]

  [:op="left";rhs="1u";test="i32";swap=true]

  [:op="left";rhs="1u";test="matf_matching";swap=false]

  [:op="left";rhs="1u";test="matf_matching";swap=true]

  [:op="left";rhs="1u";test="matf_no_match";swap=false]

  [:op="left";rhs="1u";test="matf_no_match";swap=true]

  [:op="left";rhs="1u";test="math";swap=false]

  [:op="left";rhs="1u";test="math";swap=true]

  [:op="left";rhs="1u";test="sampler";swap=false]

  [:op="left";rhs="1u";test="sampler";swap=true]

  [:op="left";rhs="1u";test="struct";swap=false]

  [:op="left";rhs="1u";test="struct";swap=true]

  [:op="left";rhs="1u";test="texture";swap=false]

  [:op="left";rhs="1u";test="texture";swap=true]

  [:op="left";rhs="1u";test="u32";swap=false]

  [:op="left";rhs="1u";test="u32";swap=true]

  [:op="left";rhs="1u";test="vec";swap=false]
    expected: FAIL

  [:op="left";rhs="1u";test="vec";swap=true]
    expected: FAIL

  [:op="left";rhs="ai";test="af";swap=false]

  [:op="left";rhs="ai";test="af";swap=true]

  [:op="left";rhs="ai";test="ai";swap=false]

  [:op="left";rhs="ai";test="ai";swap=true]

  [:op="left";rhs="ai";test="array";swap=false]

  [:op="left";rhs="ai";test="array";swap=true]

  [:op="left";rhs="ai";test="atomic";swap=false]

  [:op="left";rhs="ai";test="atomic";swap=true]

  [:op="left";rhs="ai";test="bool";swap=false]

  [:op="left";rhs="ai";test="bool";swap=true]

  [:op="left";rhs="ai";test="f16";swap=false]

  [:op="left";rhs="ai";test="f16";swap=true]

  [:op="left";rhs="ai";test="f32";swap=false]

  [:op="left";rhs="ai";test="f32";swap=true]

  [:op="left";rhs="ai";test="i32";swap=false]

  [:op="left";rhs="ai";test="i32";swap=true]

  [:op="left";rhs="ai";test="matf_matching";swap=false]

  [:op="left";rhs="ai";test="matf_matching";swap=true]

  [:op="left";rhs="ai";test="matf_no_match";swap=false]

  [:op="left";rhs="ai";test="matf_no_match";swap=true]

  [:op="left";rhs="ai";test="math";swap=false]

  [:op="left";rhs="ai";test="math";swap=true]

  [:op="left";rhs="ai";test="sampler";swap=false]

  [:op="left";rhs="ai";test="sampler";swap=true]

  [:op="left";rhs="ai";test="struct";swap=false]

  [:op="left";rhs="ai";test="struct";swap=true]

  [:op="left";rhs="ai";test="texture";swap=false]

  [:op="left";rhs="ai";test="texture";swap=true]

  [:op="left";rhs="ai";test="u32";swap=false]

  [:op="left";rhs="ai";test="u32";swap=true]

  [:op="left";rhs="ai";test="vec";swap=false]

  [:op="left";rhs="ai";test="vec";swap=true]

  [:op="left";rhs="mat2x3f()";test="af";swap=false]

  [:op="left";rhs="mat2x3f()";test="af";swap=true]

  [:op="left";rhs="mat2x3f()";test="ai";swap=false]

  [:op="left";rhs="mat2x3f()";test="ai";swap=true]

  [:op="left";rhs="mat2x3f()";test="array";swap=false]

  [:op="left";rhs="mat2x3f()";test="array";swap=true]

  [:op="left";rhs="mat2x3f()";test="atomic";swap=false]

  [:op="left";rhs="mat2x3f()";test="atomic";swap=true]

  [:op="left";rhs="mat2x3f()";test="bool";swap=false]

  [:op="left";rhs="mat2x3f()";test="bool";swap=true]

  [:op="left";rhs="mat2x3f()";test="f16";swap=false]

  [:op="left";rhs="mat2x3f()";test="f16";swap=true]

  [:op="left";rhs="mat2x3f()";test="f32";swap=false]

  [:op="left";rhs="mat2x3f()";test="f32";swap=true]

  [:op="left";rhs="mat2x3f()";test="i32";swap=false]

  [:op="left";rhs="mat2x3f()";test="i32";swap=true]

  [:op="left";rhs="mat2x3f()";test="matf_matching";swap=false]

  [:op="left";rhs="mat2x3f()";test="matf_matching";swap=true]

  [:op="left";rhs="mat2x3f()";test="matf_no_match";swap=false]

  [:op="left";rhs="mat2x3f()";test="matf_no_match";swap=true]

  [:op="left";rhs="mat2x3f()";test="math";swap=false]

  [:op="left";rhs="mat2x3f()";test="math";swap=true]

  [:op="left";rhs="mat2x3f()";test="sampler";swap=false]

  [:op="left";rhs="mat2x3f()";test="sampler";swap=true]

  [:op="left";rhs="mat2x3f()";test="struct";swap=false]

  [:op="left";rhs="mat2x3f()";test="struct";swap=true]

  [:op="left";rhs="mat2x3f()";test="texture";swap=false]

  [:op="left";rhs="mat2x3f()";test="texture";swap=true]

  [:op="left";rhs="mat2x3f()";test="u32";swap=false]

  [:op="left";rhs="mat2x3f()";test="u32";swap=true]

  [:op="left";rhs="mat2x3f()";test="vec";swap=false]

  [:op="left";rhs="mat2x3f()";test="vec";swap=true]

  [:op="left";rhs="mat2x3h()";test="af";swap=false]

  [:op="left";rhs="mat2x3h()";test="af";swap=true]

  [:op="left";rhs="mat2x3h()";test="ai";swap=false]

  [:op="left";rhs="mat2x3h()";test="ai";swap=true]

  [:op="left";rhs="mat2x3h()";test="array";swap=false]

  [:op="left";rhs="mat2x3h()";test="array";swap=true]

  [:op="left";rhs="mat2x3h()";test="atomic";swap=false]

  [:op="left";rhs="mat2x3h()";test="atomic";swap=true]

  [:op="left";rhs="mat2x3h()";test="bool";swap=false]

  [:op="left";rhs="mat2x3h()";test="bool";swap=true]

  [:op="left";rhs="mat2x3h()";test="f16";swap=false]

  [:op="left";rhs="mat2x3h()";test="f16";swap=true]

  [:op="left";rhs="mat2x3h()";test="f32";swap=false]

  [:op="left";rhs="mat2x3h()";test="f32";swap=true]

  [:op="left";rhs="mat2x3h()";test="i32";swap=false]

  [:op="left";rhs="mat2x3h()";test="i32";swap=true]

  [:op="left";rhs="mat2x3h()";test="matf_matching";swap=false]

  [:op="left";rhs="mat2x3h()";test="matf_matching";swap=true]

  [:op="left";rhs="mat2x3h()";test="matf_no_match";swap=false]

  [:op="left";rhs="mat2x3h()";test="matf_no_match";swap=true]

  [:op="left";rhs="mat2x3h()";test="math";swap=false]

  [:op="left";rhs="mat2x3h()";test="math";swap=true]

  [:op="left";rhs="mat2x3h()";test="sampler";swap=false]

  [:op="left";rhs="mat2x3h()";test="sampler";swap=true]

  [:op="left";rhs="mat2x3h()";test="struct";swap=false]

  [:op="left";rhs="mat2x3h()";test="struct";swap=true]

  [:op="left";rhs="mat2x3h()";test="texture";swap=false]

  [:op="left";rhs="mat2x3h()";test="texture";swap=true]

  [:op="left";rhs="mat2x3h()";test="u32";swap=false]

  [:op="left";rhs="mat2x3h()";test="u32";swap=true]

  [:op="left";rhs="mat2x3h()";test="vec";swap=false]

  [:op="left";rhs="mat2x3h()";test="vec";swap=true]

  [:op="right";rhs="1u";test="af";swap=false]

  [:op="right";rhs="1u";test="af";swap=true]

  [:op="right";rhs="1u";test="ai";swap=false]

  [:op="right";rhs="1u";test="ai";swap=true]

  [:op="right";rhs="1u";test="array";swap=false]

  [:op="right";rhs="1u";test="array";swap=true]

  [:op="right";rhs="1u";test="atomic";swap=false]
    expected: FAIL

  [:op="right";rhs="1u";test="atomic";swap=true]

  [:op="right";rhs="1u";test="bool";swap=false]

  [:op="right";rhs="1u";test="bool";swap=true]

  [:op="right";rhs="1u";test="f16";swap=false]

  [:op="right";rhs="1u";test="f16";swap=true]

  [:op="right";rhs="1u";test="f32";swap=false]

  [:op="right";rhs="1u";test="f32";swap=true]

  [:op="right";rhs="1u";test="i32";swap=false]

  [:op="right";rhs="1u";test="i32";swap=true]

  [:op="right";rhs="1u";test="matf_matching";swap=false]

  [:op="right";rhs="1u";test="matf_matching";swap=true]

  [:op="right";rhs="1u";test="matf_no_match";swap=false]

  [:op="right";rhs="1u";test="matf_no_match";swap=true]

  [:op="right";rhs="1u";test="math";swap=false]

  [:op="right";rhs="1u";test="math";swap=true]

  [:op="right";rhs="1u";test="sampler";swap=false]

  [:op="right";rhs="1u";test="sampler";swap=true]

  [:op="right";rhs="1u";test="struct";swap=false]

  [:op="right";rhs="1u";test="struct";swap=true]

  [:op="right";rhs="1u";test="texture";swap=false]

  [:op="right";rhs="1u";test="texture";swap=true]

  [:op="right";rhs="1u";test="u32";swap=false]

  [:op="right";rhs="1u";test="u32";swap=true]

  [:op="right";rhs="1u";test="vec";swap=false]
    expected: FAIL

  [:op="right";rhs="1u";test="vec";swap=true]
    expected: FAIL

  [:op="right";rhs="ai";test="af";swap=false]

  [:op="right";rhs="ai";test="af";swap=true]

  [:op="right";rhs="ai";test="ai";swap=false]

  [:op="right";rhs="ai";test="ai";swap=true]

  [:op="right";rhs="ai";test="array";swap=false]

  [:op="right";rhs="ai";test="array";swap=true]

  [:op="right";rhs="ai";test="atomic";swap=false]

  [:op="right";rhs="ai";test="atomic";swap=true]

  [:op="right";rhs="ai";test="bool";swap=false]

  [:op="right";rhs="ai";test="bool";swap=true]

  [:op="right";rhs="ai";test="f16";swap=false]

  [:op="right";rhs="ai";test="f16";swap=true]

  [:op="right";rhs="ai";test="f32";swap=false]

  [:op="right";rhs="ai";test="f32";swap=true]

  [:op="right";rhs="ai";test="i32";swap=false]

  [:op="right";rhs="ai";test="i32";swap=true]

  [:op="right";rhs="ai";test="matf_matching";swap=false]

  [:op="right";rhs="ai";test="matf_matching";swap=true]

  [:op="right";rhs="ai";test="matf_no_match";swap=false]

  [:op="right";rhs="ai";test="matf_no_match";swap=true]

  [:op="right";rhs="ai";test="math";swap=false]

  [:op="right";rhs="ai";test="math";swap=true]

  [:op="right";rhs="ai";test="sampler";swap=false]

  [:op="right";rhs="ai";test="sampler";swap=true]

  [:op="right";rhs="ai";test="struct";swap=false]

  [:op="right";rhs="ai";test="struct";swap=true]

  [:op="right";rhs="ai";test="texture";swap=false]

  [:op="right";rhs="ai";test="texture";swap=true]

  [:op="right";rhs="ai";test="u32";swap=false]

  [:op="right";rhs="ai";test="u32";swap=true]

  [:op="right";rhs="ai";test="vec";swap=false]

  [:op="right";rhs="ai";test="vec";swap=true]

  [:op="right";rhs="mat2x3f()";test="af";swap=false]

  [:op="right";rhs="mat2x3f()";test="af";swap=true]

  [:op="right";rhs="mat2x3f()";test="ai";swap=false]

  [:op="right";rhs="mat2x3f()";test="ai";swap=true]

  [:op="right";rhs="mat2x3f()";test="array";swap=false]

  [:op="right";rhs="mat2x3f()";test="array";swap=true]

  [:op="right";rhs="mat2x3f()";test="atomic";swap=false]

  [:op="right";rhs="mat2x3f()";test="atomic";swap=true]

  [:op="right";rhs="mat2x3f()";test="bool";swap=false]

  [:op="right";rhs="mat2x3f()";test="bool";swap=true]

  [:op="right";rhs="mat2x3f()";test="f16";swap=false]

  [:op="right";rhs="mat2x3f()";test="f16";swap=true]

  [:op="right";rhs="mat2x3f()";test="f32";swap=false]

  [:op="right";rhs="mat2x3f()";test="f32";swap=true]

  [:op="right";rhs="mat2x3f()";test="i32";swap=false]

  [:op="right";rhs="mat2x3f()";test="i32";swap=true]

  [:op="right";rhs="mat2x3f()";test="matf_matching";swap=false]

  [:op="right";rhs="mat2x3f()";test="matf_matching";swap=true]

  [:op="right";rhs="mat2x3f()";test="matf_no_match";swap=false]

  [:op="right";rhs="mat2x3f()";test="matf_no_match";swap=true]

  [:op="right";rhs="mat2x3f()";test="math";swap=false]

  [:op="right";rhs="mat2x3f()";test="math";swap=true]

  [:op="right";rhs="mat2x3f()";test="sampler";swap=false]

  [:op="right";rhs="mat2x3f()";test="sampler";swap=true]

  [:op="right";rhs="mat2x3f()";test="struct";swap=false]

  [:op="right";rhs="mat2x3f()";test="struct";swap=true]

  [:op="right";rhs="mat2x3f()";test="texture";swap=false]

  [:op="right";rhs="mat2x3f()";test="texture";swap=true]

  [:op="right";rhs="mat2x3f()";test="u32";swap=false]

  [:op="right";rhs="mat2x3f()";test="u32";swap=true]

  [:op="right";rhs="mat2x3f()";test="vec";swap=false]

  [:op="right";rhs="mat2x3f()";test="vec";swap=true]

  [:op="right";rhs="mat2x3h()";test="af";swap=false]

  [:op="right";rhs="mat2x3h()";test="af";swap=true]

  [:op="right";rhs="mat2x3h()";test="ai";swap=false]

  [:op="right";rhs="mat2x3h()";test="ai";swap=true]

  [:op="right";rhs="mat2x3h()";test="array";swap=false]

  [:op="right";rhs="mat2x3h()";test="array";swap=true]

  [:op="right";rhs="mat2x3h()";test="atomic";swap=false]

  [:op="right";rhs="mat2x3h()";test="atomic";swap=true]

  [:op="right";rhs="mat2x3h()";test="bool";swap=false]

  [:op="right";rhs="mat2x3h()";test="bool";swap=true]

  [:op="right";rhs="mat2x3h()";test="f16";swap=false]

  [:op="right";rhs="mat2x3h()";test="f16";swap=true]

  [:op="right";rhs="mat2x3h()";test="f32";swap=false]

  [:op="right";rhs="mat2x3h()";test="f32";swap=true]

  [:op="right";rhs="mat2x3h()";test="i32";swap=false]

  [:op="right";rhs="mat2x3h()";test="i32";swap=true]

  [:op="right";rhs="mat2x3h()";test="matf_matching";swap=false]

  [:op="right";rhs="mat2x3h()";test="matf_matching";swap=true]

  [:op="right";rhs="mat2x3h()";test="matf_no_match";swap=false]

  [:op="right";rhs="mat2x3h()";test="matf_no_match";swap=true]

  [:op="right";rhs="mat2x3h()";test="math";swap=false]

  [:op="right";rhs="mat2x3h()";test="math";swap=true]

  [:op="right";rhs="mat2x3h()";test="sampler";swap=false]

  [:op="right";rhs="mat2x3h()";test="sampler";swap=true]

  [:op="right";rhs="mat2x3h()";test="struct";swap=false]

  [:op="right";rhs="mat2x3h()";test="struct";swap=true]

  [:op="right";rhs="mat2x3h()";test="texture";swap=false]

  [:op="right";rhs="mat2x3h()";test="texture";swap=true]

  [:op="right";rhs="mat2x3h()";test="u32";swap=false]

  [:op="right";rhs="mat2x3h()";test="u32";swap=true]

  [:op="right";rhs="mat2x3h()";test="vec";swap=false]

  [:op="right";rhs="mat2x3h()";test="vec";swap=true]
