// crbug.com/tint/959
// Test that we automatically remap resource numbers into a flat namespace for
// MSL. Use some high binding numbers to also test that the remapped numbers are
// densely packed starting at 0.

struct S {
  a : f32;
};

@group(0)  @binding(0) var<storage> b0  : S;
@group(1)  @binding(0) var<storage> b1  : S;
@group(2)  @binding(0) var<storage> b2  : S;
@group(3)  @binding(0) var<storage> b3  : S;
@group(4)  @binding(0) var<storage> b4  : S;
@group(5)  @binding(0) var<storage> b5  : S;
@group(6)  @binding(0) var<storage> b6  : S;
@group(7)  @binding(0) var<storage> b7  : S;
@group(9)  @binding(1) var<uniform> b8  : S;
@group(8)  @binding(1) var<uniform> b9  : S;
@group(10) @binding(1) var<uniform> b10 : S;
@group(11) @binding(1) var<uniform> b11 : S;
@group(12) @binding(1) var<uniform> b12 : S;
@group(13) @binding(1) var<uniform> b13 : S;
@group(14) @binding(1) var<uniform> b14 : S;
@group(15) @binding(1) var<uniform> b15 : S;

@group(0)  @binding(1) var t0  : texture_2d<f32>;
@group(1)  @binding(1) var t1  : texture_2d<f32>;
@group(2)  @binding(1) var t2  : texture_2d<f32>;
@group(3)  @binding(1) var t3  : texture_2d<f32>;
@group(4)  @binding(1) var t4  : texture_2d<f32>;
@group(5)  @binding(1) var t5  : texture_2d<f32>;
@group(6)  @binding(1) var t6  : texture_2d<f32>;
@group(7)  @binding(1) var t7  : texture_2d<f32>;
@group(8)  @binding(200) var t8  : texture_depth_2d;
@group(9)  @binding(200) var t9  : texture_depth_2d;
@group(10) @binding(200) var t10 : texture_depth_2d;
@group(11) @binding(200) var t11 : texture_depth_2d;
@group(12) @binding(200) var t12 : texture_depth_2d;
@group(13) @binding(200) var t13 : texture_depth_2d;
@group(14) @binding(200) var t14 : texture_depth_2d;
@group(15) @binding(200) var t15 : texture_depth_2d;

@group(0)  @binding(200) var s0 : sampler;
@group(1)  @binding(200) var s1 : sampler;
@group(2)  @binding(200) var s2 : sampler;
@group(3)  @binding(200) var s3 : sampler;
@group(4)  @binding(200) var s4 : sampler;
@group(5)  @binding(200) var s5 : sampler;
@group(6)  @binding(200) var s6 : sampler;
@group(7)  @binding(200) var s7 : sampler;
@group(8)  @binding(300) var s8 : sampler_comparison;
@group(9)  @binding(300) var s9 : sampler_comparison;
@group(10) @binding(300) var s10 : sampler_comparison;
@group(11) @binding(300) var s11 : sampler_comparison;
@group(12) @binding(300) var s12 : sampler_comparison;
@group(13) @binding(300) var s13 : sampler_comparison;
@group(14) @binding(300) var s14 : sampler_comparison;
@group(15) @binding(300) var s15 : sampler_comparison;

@stage(fragment)
fn main() {
  _ = b0;
  _ = b1;
  _ = b2;
  _ = b3;
  _ = b4;
  _ = b5;
  _ = b6;
  _ = b7;
  _ = b8;
  _ = b9;
  _ = b10;
  _ = b11;
  _ = b12;
  _ = b13;
  _ = b14;
  _ = b15;

  _ = t0;
  _ = t1;
  _ = t2;
  _ = t3;
  _ = t4;
  _ = t5;
  _ = t6;
  _ = t7;
  _ = t8;
  _ = t9;
  _ = t10;
  _ = t11;
  _ = t12;
  _ = t13;
  _ = t14;
  _ = t15;

  _ = s0;
  _ = s1;
  _ = s2;
  _ = s3;
  _ = s4;
  _ = s5;
  _ = s6;
  _ = s7;
  _ = s8;
  _ = s9;
  _ = s10;
  _ = s11;
  _ = s12;
  _ = s13;
  _ = s14;
  _ = s15;
}
