1#pragma once
2
3#include <vector>
4
5#include "taichi/common/core.h"
6#include "taichi/common/serialization.h"
7
8namespace taichi::lang {
9
10// TODO: It would be better if this can be unified with Callable::Arg. However,
11// Callable::Arg is not easily serializable.
12struct LlvmLaunchArgInfo {
13 bool is_array{false};
14
15 TI_IO_DEF(is_array);
16
17 bool operator==(const LlvmLaunchArgInfo &other) const;
18 bool operator!=(const LlvmLaunchArgInfo &other) const {
19 return !(*this == other);
20 }
21};
22
23class Kernel;
24
25std::vector<LlvmLaunchArgInfo> infer_launch_args(const Kernel *kernel);
26
27} // namespace taichi::lang
28