[ir] Support subgroup builtin inputs

Bug: tint:2000
Change-Id: I209a2dafe2d842611064c1995c66eacc317d35a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/151585
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/core/ir/function_param.cc b/src/tint/lang/core/ir/function_param.cc
index 1b76ff6..877364e 100644
--- a/src/tint/lang/core/ir/function_param.cc
+++ b/src/tint/lang/core/ir/function_param.cc
@@ -50,6 +50,10 @@
             return "sample_index";
         case FunctionParam::Builtin::kSampleMask:
             return "sample_mask";
+        case FunctionParam::Builtin::kSubgroupInvocationId:
+            return "subgroup_invocation_id";
+        case FunctionParam::Builtin::kSubgroupSize:
+            return "subgroup_size";
     }
     return "<unknown>";
 }
diff --git a/src/tint/lang/core/ir/function_param.h b/src/tint/lang/core/ir/function_param.h
index f8f83d4..d9bf75c 100644
--- a/src/tint/lang/core/ir/function_param.h
+++ b/src/tint/lang/core/ir/function_param.h
@@ -53,6 +53,10 @@
         kSampleIndex,
         /// Builtin Sample mask
         kSampleMask,
+        /// Builtin Subgroup invocation id
+        kSubgroupInvocationId,
+        /// Builtin Subgroup size
+        kSubgroupSize,
     };
 
     /// Constructor
diff --git a/src/tint/lang/core/ir/transform/shader_io.cc b/src/tint/lang/core/ir/transform/shader_io.cc
index 1d072af..cab7fb0 100644
--- a/src/tint/lang/core/ir/transform/shader_io.cc
+++ b/src/tint/lang/core/ir/transform/shader_io.cc
@@ -52,6 +52,10 @@
             return core::BuiltinValue::kSampleIndex;
         case FunctionParam::Builtin::kSampleMask:
             return core::BuiltinValue::kSampleMask;
+        case FunctionParam::Builtin::kSubgroupInvocationId:
+            return core::BuiltinValue::kSubgroupInvocationId;
+        case FunctionParam::Builtin::kSubgroupSize:
+            return core::BuiltinValue::kSubgroupSize;
     }
     return core::BuiltinValue::kUndefined;
 }
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
index 1464464..4850db3 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
@@ -421,6 +421,14 @@
                                     param->SetBuiltin(
                                         core::ir::FunctionParam::Builtin::kSampleMask);
                                     break;
+                                case core::BuiltinValue::kSubgroupInvocationId:
+                                    param->SetBuiltin(
+                                        core::ir::FunctionParam::Builtin::kSubgroupInvocationId);
+                                    break;
+                                case core::BuiltinValue::kSubgroupSize:
+                                    param->SetBuiltin(
+                                        core::ir::FunctionParam::Builtin::kSubgroupSize);
+                                    break;
                                 default:
                                     TINT_ICE() << "Unknown builtin value in parameter attributes "
                                                << ident_sem->Value();