Remove push constants.

Push constants won't be supported by WebGPU. This CL removes them from
Tint.

For the SPIR-V reader case, this means the push constant will cause a
unknown storage class error.

Bug: tint:19
Change-Id: I10b09ce589b6b370fc828af0cd56e6213c5bc694
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/21180
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/ast/storage_class.cc b/src/ast/storage_class.cc
index 4545358..add2597 100644
--- a/src/ast/storage_class.cc
+++ b/src/ast/storage_class.cc
@@ -51,10 +51,6 @@
       out << "image";
       break;
     }
-    case StorageClass::kPushConstant: {
-      out << "push_constant";
-      break;
-    }
     case StorageClass::kPrivate: {
       out << "private";
       break;
diff --git a/src/ast/storage_class.h b/src/ast/storage_class.h
index 3a25fed..2fd13cd 100644
--- a/src/ast/storage_class.h
+++ b/src/ast/storage_class.h
@@ -30,7 +30,6 @@
   kUniformConstant,
   kStorageBuffer,
   kImage,
-  kPushConstant,
   kPrivate,
   kFunction
 };
diff --git a/src/reader/spirv/enum_converter.cc b/src/reader/spirv/enum_converter.cc
index aea3bbf..26aba0a 100644
--- a/src/reader/spirv/enum_converter.cc
+++ b/src/reader/spirv/enum_converter.cc
@@ -54,8 +54,6 @@
       return ast::StorageClass::kStorageBuffer;
     case SpvStorageClassImage:
       return ast::StorageClass::kImage;
-    case SpvStorageClassPushConstant:
-      return ast::StorageClass::kPushConstant;
     case SpvStorageClassPrivate:
       return ast::StorageClass::kPrivate;
     case SpvStorageClassFunction:
diff --git a/src/reader/spirv/enum_converter_test.cc b/src/reader/spirv/enum_converter_test.cc
index 0b2eb75..fc9b076 100644
--- a/src/reader/spirv/enum_converter_test.cc
+++ b/src/reader/spirv/enum_converter_test.cc
@@ -150,8 +150,6 @@
         StorageClassCase{SpvStorageClassStorageBuffer, true,
                          ast::StorageClass::kStorageBuffer},
         StorageClassCase{SpvStorageClassImage, true, ast::StorageClass::kImage},
-        StorageClassCase{SpvStorageClassPushConstant, true,
-                         ast::StorageClass::kPushConstant},
         StorageClassCase{SpvStorageClassPrivate, true,
                          ast::StorageClass::kPrivate},
         StorageClassCase{SpvStorageClassFunction, true,
diff --git a/src/reader/spirv/parser_impl_convert_type_test.cc b/src/reader/spirv/parser_impl_convert_type_test.cc
index 75746ad..84e80db 100644
--- a/src/reader/spirv/parser_impl_convert_type_test.cc
+++ b/src/reader/spirv/parser_impl_convert_type_test.cc
@@ -628,22 +628,6 @@
   EXPECT_TRUE(p->error().empty());
 }
 
-TEST_F(SpvParserTest, ConvertType_PointerPushConstant) {
-  auto* p = parser(test::Assemble(R"(
-  %float = OpTypeFloat 32
-  %3 = OpTypePointer PushConstant %float
-  )"));
-  EXPECT_TRUE(p->BuildInternalModule());
-
-  auto* type = p->ConvertType(3);
-  EXPECT_TRUE(type->IsPointer());
-  auto* ptr_ty = type->AsPointer();
-  EXPECT_NE(ptr_ty, nullptr);
-  EXPECT_TRUE(ptr_ty->type()->IsF32());
-  EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kPushConstant);
-  EXPECT_TRUE(p->error().empty());
-}
-
 TEST_F(SpvParserTest, ConvertType_PointerPrivate) {
   auto* p = parser(test::Assemble(R"(
   %float = OpTypeFloat 32
diff --git a/src/reader/wgsl/lexer.cc b/src/reader/wgsl/lexer.cc
index d1a6982..dc70410 100644
--- a/src/reader/wgsl/lexer.cc
+++ b/src/reader/wgsl/lexer.cc
@@ -602,8 +602,6 @@
     return {Token::Type::kPrivate, source, "private"};
   if (str == "ptr")
     return {Token::Type::kPtr, source, "ptr"};
-  if (str == "push_constant")
-    return {Token::Type::kPushConstant, source, "push_constant"};
   if (str == "return")
     return {Token::Type::kReturn, source, "return"};
   if (str == "set")
diff --git a/src/reader/wgsl/lexer_test.cc b/src/reader/wgsl/lexer_test.cc
index 71a1109..aba0eb6 100644
--- a/src/reader/wgsl/lexer_test.cc
+++ b/src/reader/wgsl/lexer_test.cc
@@ -476,7 +476,6 @@
         TokenData{"position", Token::Type::kPosition},
         TokenData{"private", Token::Type::kPrivate},
         TokenData{"ptr", Token::Type::kPtr},
-        TokenData{"push_constant", Token::Type::kPushConstant},
         TokenData{"return", Token::Type::kReturn},
         TokenData{"set", Token::Type::kSet},
         TokenData{"storage_buffer", Token::Type::kStorageBuffer},
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index e87aa78..be74cec 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -927,7 +927,6 @@
 //  | UNIFORM_CONSTANT
 //  | STORAGE_BUFFER
 //  | IMAGE
-//  | PUSH_CONSTANT
 //  | PRIVATE
 //  | FUNCTION
 ast::StorageClass ParserImpl::storage_class() {
@@ -960,10 +959,6 @@
     next();  // consume the peek
     return ast::StorageClass::kImage;
   }
-  if (t.IsPushConstant()) {
-    next();  // consume the peek
-    return ast::StorageClass::kPushConstant;
-  }
   if (t.IsPrivate()) {
     next();  // consume the peek
     return ast::StorageClass::kPrivate;
diff --git a/src/reader/wgsl/parser_impl_storage_class_test.cc b/src/reader/wgsl/parser_impl_storage_class_test.cc
index c2de306..ed3f358 100644
--- a/src/reader/wgsl/parser_impl_storage_class_test.cc
+++ b/src/reader/wgsl/parser_impl_storage_class_test.cc
@@ -73,7 +73,6 @@
                          ast::StorageClass::kUniformConstant},
         StorageClassData{"storage_buffer", ast::StorageClass::kStorageBuffer},
         StorageClassData{"image", ast::StorageClass::kImage},
-        StorageClassData{"push_constant", ast::StorageClass::kPushConstant},
         StorageClassData{"private", ast::StorageClass::kPrivate},
         StorageClassData{"function", ast::StorageClass::kFunction}));
 
diff --git a/src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc b/src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc
index 112df1c..6cbe9cd 100644
--- a/src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc
@@ -74,7 +74,6 @@
         VariableStorageData{"storage_buffer",
                             ast::StorageClass::kStorageBuffer},
         VariableStorageData{"image", ast::StorageClass::kImage},
-        VariableStorageData{"push_constant", ast::StorageClass::kPushConstant},
         VariableStorageData{"private", ast::StorageClass::kPrivate},
         VariableStorageData{"function", ast::StorageClass::kFunction}));
 
diff --git a/src/reader/wgsl/token.cc b/src/reader/wgsl/token.cc
index fbbc1aa..16b85e7 100644
--- a/src/reader/wgsl/token.cc
+++ b/src/reader/wgsl/token.cc
@@ -241,8 +241,6 @@
       return "private";
     case Token::Type::kPtr:
       return "ptr";
-    case Token::Type::kPushConstant:
-      return "push_constant";
     case Token::Type::kRegardless:
       return "regardless";
     case Token::Type::kReturn:
diff --git a/src/reader/wgsl/token.h b/src/reader/wgsl/token.h
index 418979d..3784986 100644
--- a/src/reader/wgsl/token.h
+++ b/src/reader/wgsl/token.h
@@ -252,8 +252,6 @@
     kPrivate,
     /// A 'ptr'
     kPtr,
-    /// A 'push_constant'
-    kPushConstant,
     /// A 'regardless'
     kRegardless,
     /// A 'return'
@@ -565,8 +563,6 @@
   bool IsPrivate() const { return type_ == Type::kPrivate; }
   /// @returns true if token is a 'ptr'
   bool IsPtr() const { return type_ == Type::kPtr; }
-  /// @returns true if token is a 'push_constant'
-  bool IsPushConstant() const { return type_ == Type::kPushConstant; }
   /// @returns true if token is a 'return'
   bool IsReturn() const { return type_ == Type::kReturn; }
   /// @returns true if token is a 'set'
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index fc205f0..43e2172 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -1611,8 +1611,6 @@
       return SpvStorageClassStorageBuffer;
     case ast::StorageClass::kImage:
       return SpvStorageClassImage;
-    case ast::StorageClass::kPushConstant:
-      return SpvStorageClassPushConstant;
     case ast::StorageClass::kPrivate:
       return SpvStorageClassPrivate;
     case ast::StorageClass::kFunction:
diff --git a/src/writer/spirv/builder_type_test.cc b/src/writer/spirv/builder_type_test.cc
index 544ec02..b49e987 100644
--- a/src/writer/spirv/builder_type_test.cc
+++ b/src/writer/spirv/builder_type_test.cc
@@ -498,7 +498,6 @@
         PtrData{ast::StorageClass::kStorageBuffer,
                 SpvStorageClassStorageBuffer},
         PtrData{ast::StorageClass::kImage, SpvStorageClassImage},
-        PtrData{ast::StorageClass::kPushConstant, SpvStorageClassPushConstant},
         PtrData{ast::StorageClass::kPrivate, SpvStorageClassPrivate},
         PtrData{ast::StorageClass::kFunction, SpvStorageClassFunction}));