1#pragma once
2
3#include "taichi/rhi/arch.h"
4
5#include <string>
6
7namespace taichi::lang {
8
9// The Taichi core feature set (dense SNode) should probably be supported by all
10// the backends. In addition, each backend can optionally support features in
11// the extension set.
12//
13// The notion of core vs. extension feature set is defined mainly because the
14// Metal backend can only support the dense SNodes. We may need to define this
15// notion more precisely in the future.
16
17enum class Extension {
18#define PER_EXTENSION(x) x,
19#include "taichi/inc/extensions.inc.h"
20
21#undef PER_EXTENSION
22};
23
24bool is_extension_supported(Arch arch, Extension ext);
25
26} // namespace taichi::lang
27