spirv-reader: handle tests SPIR-V validity, part 4

Bug: tint:765
Change-Id: I6c25ed2c9d40d686e75517815b9d31d544d913ba
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50424
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc
index c23b03d..d3f05af 100644
--- a/src/reader/spirv/parser_impl_handle_test.cc
+++ b/src/reader/spirv/parser_impl_handle_test.cc
@@ -392,6 +392,9 @@
 
   ASSERT_TRUE(image != nullptr);
   EXPECT_EQ(image->result_id(), 20u);
+
+  // Variable pointers is not allowed for WGSL. So don't dump it.
+  p->DeliberatelyInvalidSpirv();
 }
 
 TEST_F(SpvParserHandleTest,
@@ -429,6 +432,9 @@
 
   ASSERT_TRUE(image != nullptr);
   EXPECT_EQ(image->result_id(), 20u);
+
+  // Variable pointers is not allowed for WGSL. So don't dump it.
+  p->DeliberatelyInvalidSpirv();
 }
 
 TEST_F(SpvParserHandleTest,
@@ -685,6 +691,9 @@
 
   ASSERT_TRUE(image != nullptr);
   EXPECT_EQ(image->result_id(), 20u);
+
+  // Variable pointers is not allowed for WGSL. So don't dump it.
+  p->DeliberatelyInvalidSpirv();
 }
 
 TEST_F(SpvParserHandleTest,
@@ -720,6 +729,9 @@
 
   ASSERT_TRUE(image != nullptr);
   EXPECT_EQ(image->result_id(), 20u);
+
+  // Variable pointers is not allowed for WGSL. So don't dump it.
+  p->DeliberatelyInvalidSpirv();
 }
 
 TEST_F(SpvParserHandleTest,
@@ -865,6 +877,7 @@
                         CommonTypes() + R"(
      %si_ty = OpTypeSampledImage %f_texture_2d
      %coords = OpConstantNull %v2float
+     %coords3d = OpConstantNull %v3float ; needed for Proj variants
 
      %10 = OpVariable %ptr_sampler UniformConstant
      %20 = OpVariable %ptr_f_texture_2d UniformConstant
@@ -897,6 +910,7 @@
      %f_ty = OpTypeFunction %void %ptr_sampler %ptr_f_texture_2d
      %si_ty = OpTypeSampledImage %f_texture_2d
      %coords = OpConstantNull %v2float
+     %coords3d = OpConstantNull %v3float ; needed for Proj variants
      %component = OpConstant %uint 1
 
      %10 = OpVariable %ptr_sampler UniformConstant
@@ -937,16 +951,8 @@
     SpvParserHandleTest_RegisterHandleUsage_SampledImage,
     ::testing::Values(
 
-        // OpImageGather
-        UsageImageAccessCase{"%result = OpImageGather "
-                             "%v4float %sampled_image %coords %uint_1",
-                             "Usage(Sampler( ))",
-                             "Usage(Texture( is_sampled ))"},
-        // OpImageDrefGather
-        UsageImageAccessCase{"%result = OpImageDrefGather "
-                             "%v4float %sampled_image %coords %depth",
-                             "Usage(Sampler( comparison ))",
-                             "Usage(Texture( is_sampled depth ))"},
+        // TODO(dneto): OpImageGather
+        // TODO(dneto): OpImageDrefGather
 
         // Sample the texture.
 
@@ -977,23 +983,23 @@
 
         // OpImageSampleProjImplicitLod
         UsageImageAccessCase{"%result = OpImageSampleProjImplicitLod "
-                             "%v4float %sampled_image %coords",
+                             "%v4float %sampled_image %coords3d",
                              "Usage(Sampler( ))",
                              "Usage(Texture( is_sampled ))"},
         // OpImageSampleProjExplicitLod
-        UsageImageAccessCase{"%result = OpImageSampleProjExplicitLod "
-                             "%v4float %sampled_image %coords Lod %float_null",
-                             "Usage(Sampler( ))",
-                             "Usage(Texture( is_sampled ))"},
+        UsageImageAccessCase{
+            "%result = OpImageSampleProjExplicitLod "
+            "%v4float %sampled_image %coords3d Lod %float_null",
+            "Usage(Sampler( ))", "Usage(Texture( is_sampled ))"},
         // OpImageSampleProjDrefImplicitLod
         UsageImageAccessCase{"%result = OpImageSampleProjDrefImplicitLod "
-                             "%float %sampled_image %coords %depth",
+                             "%float %sampled_image %coords3d %depth",
                              "Usage(Sampler( comparison ))",
                              "Usage(Texture( is_sampled depth ))"},
         // OpImageSampleProjDrefExplicitLod
         UsageImageAccessCase{
             "%result = OpImageSampleProjDrefExplicitLod "
-            "%float %sampled_image %coords %depth Lod %float_null",
+            "%float %sampled_image %coords3d %depth Lod %float_null",
             "Usage(Sampler( comparison ))",
             "Usage(Texture( is_sampled depth ))"},
 
@@ -1101,7 +1107,7 @@
         // OpImageFetch
         UsageRawImageCase{"f_texture_1d",
                           "%result = OpImageFetch "
-                          "%v4float %im %float_null",
+                          "%v4float %im %uint_0",
                           "Usage(Texture( is_sampled ))"},
 
         // Image queries
@@ -4285,8 +4291,12 @@
         // There is no 3D array
 
         // Cube array
+        //
+        // Currently textureDimension on cube returns vec3 but maybe should
+        // return vec2
+        // https://github.com/gpuweb/gpuweb/issues/1345
         {"%float Cube 0 1 0 1 Unknown",
-         "%99 = OpImageQuerySizeLod %v4int %im %i1\n",
+         "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
          R"(Variable{
     Decorations{
       GroupDecoration{2}
@@ -4300,10 +4310,10 @@
       VariableConst{
         x_99
         none
-        __vec_4__i32
+        __vec_3__i32
         {
           TypeConstructor[not set]{
-            __vec_4__i32
+            __vec_3__i32
             Call[not set]{
               Identifier[not set]{textureDimensions}
               (
@@ -4361,8 +4371,12 @@
     })"},
 
         // Depth Cube Array
+        //
+        // Currently textureDimension on cube returns vec3 but maybe should
+        // return vec2
+        // https://github.com/gpuweb/gpuweb/issues/1345
         {"%float Cube 1 1 0 1 Unknown",
-         "%99 = OpImageQuerySizeLod %v4int %im %i1\n",
+         "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
          R"(Variable{
     Decorations{
       GroupDecoration{2}
@@ -4376,10 +4390,10 @@
       VariableConst{
         x_99
         none
-        __vec_4__i32
+        __vec_3__i32
         {
           TypeConstructor[not set]{
-            __vec_4__i32
+            __vec_3__i32
             Call[not set]{
               Identifier[not set]{textureDimensions}
               (