1#pragma once
2
3#include <string>
4#include "taichi/common/core.h"
5
6namespace taichi {
7
8enum class Arch : int {
9#define PER_ARCH(x) x,
10#include "taichi/inc/archs.inc.h"
11
12#undef PER_ARCH
13};
14
15std::string arch_name(Arch arch);
16
17Arch arch_from_name(const std::string &arch);
18
19bool arch_is_cpu(Arch arch);
20
21bool arch_is_cuda(Arch arch);
22
23bool arch_uses_llvm(Arch arch);
24
25bool arch_is_gpu(Arch arch);
26
27bool arch_uses_spirv(Arch arch);
28
29Arch host_arch();
30
31bool arch_use_host_memory(Arch arch);
32
33int default_simd_width(Arch arch);
34
35} // namespace taichi
36