[hlsl-writer] Add support for sample_mask builtins

Bug: tint:372
Change-Id: Ie3fe7f6853396ff6a4ff47045b98b3b561bf1340
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/40561
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 9ac33c8..d370a62 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -1703,6 +1703,12 @@
       return "SV_GroupIndex";
     case ast::Builtin::kGlobalInvocationId:
       return "SV_DispatchThreadID";
+    case ast::Builtin::kSampleId:
+      return "SV_SampleIndex";
+    case ast::Builtin::kSampleMaskIn:
+      return "SV_Coverage";
+    case ast::Builtin::kSampleMaskOut:
+      return "SV_Coverage";
     default:
       break;
   }
diff --git a/src/writer/hlsl/generator_impl_test.cc b/src/writer/hlsl/generator_impl_test.cc
index cae4d60..33d8f5b 100644
--- a/src/writer/hlsl/generator_impl_test.cc
+++ b/src/writer/hlsl/generator_impl_test.cc
@@ -95,7 +95,10 @@
         HlslBuiltinData{ast::Builtin::kLocalInvocationId, "SV_GroupThreadID"},
         HlslBuiltinData{ast::Builtin::kLocalInvocationIndex, "SV_GroupIndex"},
         HlslBuiltinData{ast::Builtin::kGlobalInvocationId,
-                        "SV_DispatchThreadID"}));
+                        "SV_DispatchThreadID"},
+        HlslBuiltinData{ast::Builtin::kSampleId, "SV_SampleIndex"},
+        HlslBuiltinData{ast::Builtin::kSampleMaskIn, "SV_Coverage"},
+        HlslBuiltinData{ast::Builtin::kSampleMaskOut, "SV_Coverage"}));
 
 }  // namespace
 }  // namespace hlsl