[ir] Add a SPIRV BuiltinCall instruction

This CL adds a `BuiltinCall` instruction to SPIR-V IR and moves
`VectorTimesScalar` over to the builtin.

Bug: tint:1718
Change-Id: I4fd92aab01d32897c5bdb4add97e22b698ded377
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/150100
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/spirv/ir/function.cc b/src/tint/lang/spirv/ir/function.cc
new file mode 100644
index 0000000..f7612f3
--- /dev/null
+++ b/src/tint/lang/spirv/ir/function.cc
@@ -0,0 +1,38 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   src/tint/lang/spirv/ir/function.cc.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+#include "src/tint/lang/spirv/ir/function.h"
+
+namespace tint::spirv::ir {
+
+const char* str(Function i) {
+    switch (i) {
+        case Function::kNone:
+            return "<none>";
+        case Function::kVectorTimesScalar:
+            return "spirv.vector_times_scalar";
+    }
+    return "<unknown>";
+}
+
+}  // namespace tint::spirv::ir