1 | #ifdef _CC_INSIDE_KERNEL |
2 | #include "taichi/util/macros.h" |
3 | // clang-format off |
4 | STR( |
5 | union Ti_BitCast { |
6 | Ti_i64 val_i64; |
7 | Ti_i32 val_i32; |
8 | Ti_i16 val_i16; |
9 | Ti_i8 val_i8; |
10 | Ti_u64 val_u64; |
11 | Ti_u32 val_u32; |
12 | Ti_u16 val_u16; |
13 | Ti_u8 val_u8; |
14 | Ti_f32 val_f32; |
15 | Ti_f64 val_f64; |
16 | Ti_i64 *ptr_i64; |
17 | Ti_i32 *ptr_i32; |
18 | Ti_i16 *ptr_i16; |
19 | Ti_i8 *ptr_i8; |
20 | Ti_u64 *ptr_u64; |
21 | Ti_u32 *ptr_u32; |
22 | Ti_u16 *ptr_u16; |
23 | Ti_u8 *ptr_u8; |
24 | Ti_f32 *ptr_f32; |
25 | Ti_f64 *ptr_f64; |
26 | void *ptr_void; |
27 | }; |
28 | |
29 | struct Ti_Context { |
30 | struct Ti_S0root *root; |
31 | // In some C compilers `void *p; p + 1 == p;`, so let's use `char *p`: |
32 | Ti_i8 *gtmp; |
33 | |
34 | union Ti_BitCast *args; |
35 | int *earg; |
36 | }; |
37 | ) |
38 | |
39 | // clang-format on |
40 | #else // _CC_INSIDE_KERNEL |
41 | |
42 | #include "cc_program.h" |
43 | #include "taichi/util/lang_util.h" |
44 | |
45 | namespace taichi::lang { |
46 | |
47 | namespace cccp { |
48 | |
49 | struct CCContext { |
50 | void *root; |
51 | void *gtmp; |
52 | |
53 | uint64_t *args; |
54 | int *earg; |
55 | }; |
56 | |
57 | }; // namespace cccp |
58 | |
59 | } // namespace taichi::lang |
60 | |
61 | #endif // _CC_INSIDE_KERNEL |
62 | |