1import("//clang/resource_dir.gni")
2import("//clang/utils/TableGen/clang_tablegen.gni")
3
4# Generate arm_neon.h
5clang_tablegen("arm_neon") {
6  args = [ "-gen-arm-neon" ]
7  td_file = "//clang/include/clang/Basic/arm_neon.td"
8  output_name = "arm_neon.h"
9}
10
11# Generate arm_fp16.h
12clang_tablegen("arm_fp16") {
13  args = [ "-gen-arm-fp16" ]
14  td_file = "//clang/include/clang/Basic/arm_fp16.td"
15  output_name = "arm_fp16.h"
16}
17
18# Generate arm_sve.h
19clang_tablegen("arm_sve") {
20  args = [ "-gen-arm-sve-header" ]
21  td_file = "//clang/include/clang/Basic/arm_sve.td"
22  output_name = "arm_sve.h"
23}
24
25# Generate arm_bf16.h
26clang_tablegen("arm_bf16") {
27  args = [ "-gen-arm-bf16" ]
28  td_file = "//clang/include/clang/Basic/arm_bf16.td"
29  output_name = "arm_bf16.h"
30}
31
32# Generate arm_mve.h
33clang_tablegen("arm_mve") {
34  args = [ "-gen-arm-mve-header" ]
35  td_file = "//clang/include/clang/Basic/arm_mve.td"
36  output_name = "arm_mve.h"
37}
38
39# Generate arm_cde.h
40clang_tablegen("arm_cde") {
41  args = [ "-gen-arm-cde-header" ]
42  td_file = "//clang/include/clang/Basic/arm_cde.td"
43  output_name = "arm_cde.h"
44}
45
46# Generate riscv_vector.h
47clang_tablegen("riscv_vector") {
48  args = [ "-gen-riscv-vector-header" ]
49  td_file = "//clang/include/clang/Basic/riscv_vector.td"
50  output_name = "riscv_vector.h"
51}
52
53copy("tablegen_headers") {
54  visibility = [ ":Headers" ]
55  deps = [
56    ":arm_bf16",
57    ":arm_cde",
58    ":arm_fp16",
59    ":arm_mve",
60    ":arm_neon",
61    ":arm_sve",
62    ":riscv_vector",
63  ]
64  sources = []
65  foreach(dep, deps) {
66    sources += get_target_outputs(dep)
67  }
68  outputs = [ "$clang_resource_dir/include/{{source_file_part}}" ]
69}
70
71copy("Headers") {
72  deps = [ ":tablegen_headers" ]
73
74  sources = [
75    "__clang_cuda_builtin_vars.h",
76    "__clang_cuda_cmath.h",
77    "__clang_cuda_complex_builtins.h",
78    "__clang_cuda_device_functions.h",
79    "__clang_cuda_intrinsics.h",
80    "__clang_cuda_libdevice_declares.h",
81    "__clang_cuda_math.h",
82    "__clang_cuda_math_forward_declares.h",
83    "__clang_cuda_runtime_wrapper.h",
84    "__clang_hip_cmath.h",
85    "__clang_hip_libdevice_declares.h",
86    "__clang_hip_math.h",
87    "__clang_hip_runtime_wrapper.h",
88    "__stddef_max_align_t.h",
89    "__wmmintrin_aes.h",
90    "__wmmintrin_pclmul.h",
91    "adxintrin.h",
92    "altivec.h",
93    "ammintrin.h",
94    "amxintrin.h",
95    "arm64intr.h",
96    "arm_acle.h",
97    "arm_cmse.h",
98    "armintr.h",
99    "avx2intrin.h",
100    "avx512bf16intrin.h",
101    "avx512bitalgintrin.h",
102    "avx512bwintrin.h",
103    "avx512cdintrin.h",
104    "avx512dqintrin.h",
105    "avx512erintrin.h",
106    "avx512fintrin.h",
107    "avx512ifmaintrin.h",
108    "avx512ifmavlintrin.h",
109    "avx512pfintrin.h",
110    "avx512vbmi2intrin.h",
111    "avx512vbmiintrin.h",
112    "avx512vbmivlintrin.h",
113    "avx512vlbf16intrin.h",
114    "avx512vlbitalgintrin.h",
115    "avx512vlbwintrin.h",
116    "avx512vlcdintrin.h",
117    "avx512vldqintrin.h",
118    "avx512vlintrin.h",
119    "avx512vlvbmi2intrin.h",
120    "avx512vlvnniintrin.h",
121    "avx512vlvp2intersectintrin.h",
122    "avx512vnniintrin.h",
123    "avx512vp2intersectintrin.h",
124    "avx512vpopcntdqintrin.h",
125    "avx512vpopcntdqvlintrin.h",
126    "avxintrin.h",
127    "avxvnniintrin.h",
128    "bmi2intrin.h",
129    "bmiintrin.h",
130    "cet.h",
131    "cetintrin.h",
132    "cldemoteintrin.h",
133    "clflushoptintrin.h",
134    "clwbintrin.h",
135    "clzerointrin.h",
136    "cpuid.h",
137    "cuda_wrappers/algorithm",
138    "cuda_wrappers/complex",
139    "cuda_wrappers/new",
140    "emmintrin.h",
141    "enqcmdintrin.h",
142    "f16cintrin.h",
143    "float.h",
144    "fma4intrin.h",
145    "fmaintrin.h",
146    "fxsrintrin.h",
147    "gfniintrin.h",
148    "hresetintrin.h",
149    "htmintrin.h",
150    "htmxlintrin.h",
151    "ia32intrin.h",
152    "immintrin.h",
153    "intrin.h",
154    "inttypes.h",
155    "invpcidintrin.h",
156    "iso646.h",
157    "keylockerintrin.h",
158    "limits.h",
159    "lwpintrin.h",
160    "lzcntintrin.h",
161    "mm3dnow.h",
162    "mm_malloc.h",
163    "mmintrin.h",
164    "module.modulemap",
165    "movdirintrin.h",
166    "msa.h",
167    "mwaitxintrin.h",
168    "nmmintrin.h",
169    "opencl-c-base.h",
170    "opencl-c.h",
171    "openmp_wrappers/__clang_openmp_device_functions.h",
172    "openmp_wrappers/cmath",
173    "openmp_wrappers/complex.h",
174    "openmp_wrappers/complex_cmath.h",
175    "openmp_wrappers/math.h",
176    "pconfigintrin.h",
177    "pkuintrin.h",
178    "pmmintrin.h",
179    "popcntintrin.h",
180    "ppc_wrappers/emmintrin.h",
181    "ppc_wrappers/mm_malloc.h",
182    "ppc_wrappers/mmintrin.h",
183    "ppc_wrappers/pmmintrin.h",
184    "ppc_wrappers/smmintrin.h",
185    "ppc_wrappers/tmmintrin.h",
186    "ppc_wrappers/xmmintrin.h",
187    "prfchwintrin.h",
188    "ptwriteintrin.h",
189    "rdseedintrin.h",
190    "rtmintrin.h",
191    "s390intrin.h",
192    "serializeintrin.h",
193    "sgxintrin.h",
194    "shaintrin.h",
195    "smmintrin.h",
196    "stdalign.h",
197    "stdarg.h",
198    "stdatomic.h",
199    "stdbool.h",
200    "stddef.h",
201    "stdint.h",
202    "stdnoreturn.h",
203    "tbmintrin.h",
204    "tgmath.h",
205    "tmmintrin.h",
206    "tsxldtrkintrin.h",
207    "uintrintrin.h",
208    "unwind.h",
209    "vadefs.h",
210    "vaesintrin.h",
211    "varargs.h",
212    "vecintrin.h",
213    "vpclmulqdqintrin.h",
214    "waitpkgintrin.h",
215    "wasm_simd128.h",
216    "wbnoinvdintrin.h",
217    "wmmintrin.h",
218    "x86gprintrin.h",
219    "x86intrin.h",
220    "xmmintrin.h",
221    "xopintrin.h",
222    "xsavecintrin.h",
223    "xsaveintrin.h",
224    "xsaveoptintrin.h",
225    "xsavesintrin.h",
226    "xtestintrin.h",
227  ]
228  outputs = [ "$clang_resource_dir/include/{{source_target_relative}}" ]
229}
230