Add testing for 1D w/ level textureLoad overload

BUG=tint:516

Change-Id: Ic075dc52618bc6d2492e82538f0f02d45f925ddf
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/42700
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/ast/intrinsic_texture_helper_test.cc b/src/ast/intrinsic_texture_helper_test.cc
index 958ba7c..b9ec2f9 100644
--- a/src/ast/intrinsic_texture_helper_test.cc
+++ b/src/ast/intrinsic_texture_helper_test.cc
@@ -1701,6 +1701,51 @@
           },
       },
       {
+          ValidTextureOverload::kLoad1dLevelF32,
+          "textureLoad(t      : texture_1d<f32>,\n"
+          "            coords : i32,\n"
+          "            level  : i32) -> vec4<f32>",
+          TextureKind::kRegular,
+          type::TextureDimension::k1d,
+          TextureDataType::kF32,
+          "textureLoad",
+          [](ProgramBuilder* b) {
+            return b->ExprList("texture",  // t
+                               1,          // coords
+                               3);         // level
+          },
+      },
+      {
+          ValidTextureOverload::kLoad1dLevelU32,
+          "textureLoad(t      : texture_1d<u32>,\n"
+          "            coords : i32,\n"
+          "            level  : i32) -> vec4<u32>",
+          TextureKind::kRegular,
+          type::TextureDimension::k1d,
+          TextureDataType::kU32,
+          "textureLoad",
+          [](ProgramBuilder* b) {
+            return b->ExprList("texture",  // t
+                               1,          // coords
+                               3);         // level
+          },
+      },
+      {
+          ValidTextureOverload::kLoad1dLevelI32,
+          "textureLoad(t      : texture_1d<i32>,\n"
+          "            coords : i32,\n"
+          "            level  : i32) -> vec4<i32>",
+          TextureKind::kRegular,
+          type::TextureDimension::k1d,
+          TextureDataType::kI32,
+          "textureLoad",
+          [](ProgramBuilder* b) {
+            return b->ExprList("texture",  // t
+                               1,          // coords
+                               3);         // level
+          },
+      },
+      {
           ValidTextureOverload::kLoad2dF32,
           "textureLoad(t      : texture_2d<f32>,\n"
           "            coords : vec2<i32>) -> vec4<f32>",
diff --git a/src/ast/intrinsic_texture_helper_test.h b/src/ast/intrinsic_texture_helper_test.h
index 626e7ea..17fac28 100644
--- a/src/ast/intrinsic_texture_helper_test.h
+++ b/src/ast/intrinsic_texture_helper_test.h
@@ -137,6 +137,9 @@
   kLoad1dF32,
   kLoad1dU32,
   kLoad1dI32,
+  kLoad1dLevelF32,
+  kLoad1dLevelU32,
+  kLoad1dLevelI32,
   kLoad2dF32,
   kLoad2dU32,
   kLoad2dI32,
@@ -165,7 +168,7 @@
   kLoadDepth2dLevelF32,
   kLoadDepth2dArrayF32,
   kLoadDepth2dArrayLevelF32,
-  kLoadStorageRO1dRgba32float,       // Not permutated for all texel formats
+  kLoadStorageRO1dRgba32float,  // Not permutated for all texel formats
   kLoadStorageRO2dRgba8unorm,
   kLoadStorageRO2dRgba8snorm,
   kLoadStorageRO2dRgba8uint,
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index 9c8de62..9ae97b5 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -3391,6 +3391,12 @@
       return R"(textureLoad(texture, coords))";
     case ValidTextureOverload::kLoad1dI32:
       return R"(textureLoad(texture, coords))";
+    case ValidTextureOverload::kLoad1dLevelF32:
+      return R"(textureLoad(texture, coords, level))";
+    case ValidTextureOverload::kLoad1dLevelU32:
+      return R"(textureLoad(texture, coords, level))";
+    case ValidTextureOverload::kLoad1dLevelI32:
+      return R"(textureLoad(texture, coords, level))";
     case ValidTextureOverload::kLoad2dF32:
       return R"(textureLoad(texture, coords))";
     case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
index 283b38e..c63dd7d 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
@@ -311,6 +311,12 @@
       return R"(texture_tint_0.Load(int2(1, 0)))";
     case ValidTextureOverload::kLoad1dI32:
       return R"(texture_tint_0.Load(int2(1, 0)))";
+    case ValidTextureOverload::kLoad1dLevelF32:
+      return R"(texture_tint_0.Load(int2(1, 0), 3))";
+    case ValidTextureOverload::kLoad1dLevelU32:
+      return R"(texture_tint_0.Load(int2(1, 0), 3))";
+    case ValidTextureOverload::kLoad1dLevelI32:
+      return R"(texture_tint_0.Load(int2(1, 0), 3))";
     case ValidTextureOverload::kLoad2dF32:
       return R"(texture_tint_0.Load(int3(1, 2, 0)))";
     case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/msl/generator_impl_intrinsic_texture_test.cc b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
index 48664ae..f4f8412 100644
--- a/src/writer/msl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
@@ -196,6 +196,12 @@
       return R"(texture_tint_0.read(1))";
     case ValidTextureOverload::kLoad1dI32:
       return R"(texture_tint_0.read(1))";
+    case ValidTextureOverload::kLoad1dLevelF32:
+      return R"(texture_tint_0.read(1, 3))";
+    case ValidTextureOverload::kLoad1dLevelU32:
+      return R"(texture_tint_0.read(1, 3))";
+    case ValidTextureOverload::kLoad1dLevelI32:
+      return R"(texture_tint_0.read(1, 3))";
     case ValidTextureOverload::kLoad2dF32:
       return R"(texture_tint_0.read(int2(1, 2)))";
     case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/spirv/builder_intrinsic_texture_test.cc b/src/writer/spirv/builder_intrinsic_texture_test.cc
index 7abc537..b1ca0dc 100644
--- a/src/writer/spirv/builder_intrinsic_texture_test.cc
+++ b/src/writer/spirv/builder_intrinsic_texture_test.cc
@@ -2612,6 +2612,71 @@
           R"(
 OpCapability Sampled1D
 )"};
+    case ValidTextureOverload::kLoad1dLevelF32:
+      return {
+          R"(
+%4 = OpTypeFloat 32
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpTypeInt 32 1
+%12 = OpConstant %11 1
+%13 = OpConstant %11 3
+)",
+          R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %12 Lod %13
+)",
+          R"(
+OpCapability Sampled1D
+)"};
+    case ValidTextureOverload::kLoad1dLevelU32:
+      return {
+          R"(
+%4 = OpTypeInt 32 0
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpTypeInt 32 1
+%12 = OpConstant %11 1
+%13 = OpConstant %11 3
+)",
+          R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %12 Lod %13
+)",
+          R"(
+OpCapability Sampled1D
+)"};
+    case ValidTextureOverload::kLoad1dLevelI32:
+      return {
+          R"(
+%4 = OpTypeInt 32 1
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpConstant %4 1
+%12 = OpConstant %4 3
+)",
+          R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %11 Lod %12
+)",
+          R"(
+OpCapability Sampled1D
+)"};
     case ValidTextureOverload::kLoad2dF32:
       return {
           R"(