20#include <initializer_list>
29static const CapsLookupTable& caps_lookup_table() {
32 CapsLookupTable::Pair(
"mustDoOpBetweenFloorAndAbs",
34 CapsLookupTable::Pair(
"mustGuardDivisionEvenAfterExplicitZeroCheck",
36 CapsLookupTable::Pair(
"atan2ImplementedAsAtanYOverX",
38 CapsLookupTable::Pair(
"floatIs32Bits",
40 CapsLookupTable::Pair(
"integerSupport",
42 CapsLookupTable::Pair(
"builtinDeterminantSupport",
44 CapsLookupTable::Pair(
"rewriteMatrixVectorMultiply",
46 CapsLookupTable::Pair(
"PerlinNoiseRoundingFix",
49 return *sCapsLookupTable;
55 for (
const auto& [
name,
capsPtr] : caps_lookup_table()) {
65 const std::string_view&
name) {
const std::unique_ptr< Type > fBool
const BuiltinTypes & fTypes
void error(Position position, std::string_view msg)
static std::unique_ptr< Literal > MakeBool(const Context &context, Position pos, bool value)
std::unique_ptr< Expression > toLiteral(const ShaderCaps &caps) const
static std::unique_ptr< Expression > Convert(const Context &context, Position pos, const std::string_view &name)
const bool ShaderCaps::* CapsPtr
static std::unique_ptr< Expression > Make(const Context &context, Position pos, CapsPtr capsPtr)
std::string_view name() const
DEF_SWITCHES_START aot vmservice shared library name
static bool AllowsPrivateIdentifiers(ProgramKind kind)
bool fMustGuardDivisionEvenAfterExplicitZeroCheck
bool fPerlinNoiseRoundingFix
bool fRewriteMatrixVectorMultiply
bool fBuiltinDeterminantSupport
bool fMustDoOpBetweenFloorAndAbs
bool fAtan2ImplementedAsAtanYOverX