blob: 157542e70a95159439b1790c520e5a8e9270b234 [file] [log] [blame]
{{- /*
--------------------------------------------------------------------------------
Template file for use with tools/src/cmd/gen to generate builtin_fn.h
To update the generated file, run:
./tools/run gen
See:
* tools/src/cmd/gen for structures used by this template
* https://golang.org/pkg/text/template/ for documentation on the template syntax
--------------------------------------------------------------------------------
*/ -}}
{{- $I := LoadIntrinsics "src/tint/lang/spirv/spirv.def" -}}
#ifndef SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
#define SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
#include <cstdint>
#include <string>
#include "src/tint/utils/rtti/traits.h"
#include "src/tint/lang/core/ir/call.h"
// \cond DO_NOT_DOCUMENT
namespace tint::spirv {
/// Enumerator of all builtin functions
enum class BuiltinFn : uint8_t {
{{- range $I.Sem.Builtins }}
k{{PascalCase .Name}},
{{- end }}
kNone,
};
/// @returns the name of the builtin function type. The spelling, including
/// case, matches the name in the WGSL spec.
const char* str(BuiltinFn i);
/// Emits the name of the builtin function type. The spelling, including case,
/// matches the name in the WGSL spec.
template <typename STREAM, typename = traits::EnableIfIsOStream<STREAM>>
auto& operator<<(STREAM& o, BuiltinFn i) {
return o << str(i);
}
/// @returns access restrictions for a function
tint::core::ir::Instruction::Accesses GetSideEffects(BuiltinFn fn);
} // namespace tint::spirv
// \endcond
#endif // SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_