]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/clang/Basic/BuiltinsAMDGPU.def
Vendor import of clang trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / include / clang / Basic / BuiltinsAMDGPU.def
1 //==- BuiltinsAMDGPU.def - AMDGPU Builtin function database ------*- C++ -*-==//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines the AMDGPU-specific builtin function database. Users of
11 // this file must define the BUILTIN macro to make use of this information.
12 //
13 //===----------------------------------------------------------------------===//
14
15 // The format of this database matches clang/Basic/Builtins.def.
16
17 #if defined(BUILTIN) && !defined(TARGET_BUILTIN)
18 #   define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
19 #endif
20 //===----------------------------------------------------------------------===//
21 // SI+ only builtins.
22 //===----------------------------------------------------------------------===//
23
24 BUILTIN(__builtin_amdgcn_dispatch_ptr, "v*4", "nc")
25 BUILTIN(__builtin_amdgcn_kernarg_segment_ptr, "v*4", "nc")
26 BUILTIN(__builtin_amdgcn_implicitarg_ptr, "v*4", "nc")
27 BUILTIN(__builtin_amdgcn_queue_ptr, "v*4", "nc")
28
29 BUILTIN(__builtin_amdgcn_workgroup_id_x, "Ui", "nc")
30 BUILTIN(__builtin_amdgcn_workgroup_id_y, "Ui", "nc")
31 BUILTIN(__builtin_amdgcn_workgroup_id_z, "Ui", "nc")
32
33 BUILTIN(__builtin_amdgcn_workitem_id_x, "Ui", "nc")
34 BUILTIN(__builtin_amdgcn_workitem_id_y, "Ui", "nc")
35 BUILTIN(__builtin_amdgcn_workitem_id_z, "Ui", "nc")
36
37 //===----------------------------------------------------------------------===//
38 // Instruction builtins.
39 //===----------------------------------------------------------------------===//
40 BUILTIN(__builtin_amdgcn_s_getreg, "UiIi", "n")
41 BUILTIN(__builtin_amdgcn_s_getpc, "LUi", "n")
42 BUILTIN(__builtin_amdgcn_s_waitcnt, "vIi", "n")
43 BUILTIN(__builtin_amdgcn_s_sendmsg, "vIiUi", "n")
44 BUILTIN(__builtin_amdgcn_s_sendmsghalt, "vIiUi", "n")
45 BUILTIN(__builtin_amdgcn_s_barrier, "v", "n")
46 BUILTIN(__builtin_amdgcn_wave_barrier, "v", "n")
47 BUILTIN(__builtin_amdgcn_s_dcache_inv, "v", "n")
48 BUILTIN(__builtin_amdgcn_buffer_wbinvl1, "v", "n")
49
50 // FIXME: Need to disallow constant address space.
51 BUILTIN(__builtin_amdgcn_div_scale, "dddbb*", "n")
52 BUILTIN(__builtin_amdgcn_div_scalef, "fffbb*", "n")
53 BUILTIN(__builtin_amdgcn_div_fmas, "ddddb", "nc")
54 BUILTIN(__builtin_amdgcn_div_fmasf, "ffffb", "nc")
55 BUILTIN(__builtin_amdgcn_div_fixup, "dddd", "nc")
56 BUILTIN(__builtin_amdgcn_div_fixupf, "ffff", "nc")
57 BUILTIN(__builtin_amdgcn_trig_preop, "ddi", "nc")
58 BUILTIN(__builtin_amdgcn_trig_preopf, "ffi", "nc")
59 BUILTIN(__builtin_amdgcn_rcp, "dd", "nc")
60 BUILTIN(__builtin_amdgcn_rcpf, "ff", "nc")
61 BUILTIN(__builtin_amdgcn_rsq, "dd", "nc")
62 BUILTIN(__builtin_amdgcn_rsqf, "ff", "nc")
63 BUILTIN(__builtin_amdgcn_rsq_clamp, "dd", "nc")
64 BUILTIN(__builtin_amdgcn_rsq_clampf, "ff", "nc")
65 BUILTIN(__builtin_amdgcn_sinf, "ff", "nc")
66 BUILTIN(__builtin_amdgcn_cosf, "ff", "nc")
67 BUILTIN(__builtin_amdgcn_log_clampf, "ff", "nc")
68 BUILTIN(__builtin_amdgcn_ldexp, "ddi", "nc")
69 BUILTIN(__builtin_amdgcn_ldexpf, "ffi", "nc")
70 BUILTIN(__builtin_amdgcn_frexp_mant, "dd", "nc")
71 BUILTIN(__builtin_amdgcn_frexp_mantf, "ff", "nc")
72 BUILTIN(__builtin_amdgcn_frexp_exp, "id", "nc")
73 BUILTIN(__builtin_amdgcn_frexp_expf, "if", "nc")
74 BUILTIN(__builtin_amdgcn_fract, "dd", "nc")
75 BUILTIN(__builtin_amdgcn_fractf, "ff", "nc")
76 BUILTIN(__builtin_amdgcn_lerp, "UiUiUiUi", "nc")
77 BUILTIN(__builtin_amdgcn_class, "bdi", "nc")
78 BUILTIN(__builtin_amdgcn_classf, "bfi", "nc")
79 BUILTIN(__builtin_amdgcn_cubeid, "ffff", "nc")
80 BUILTIN(__builtin_amdgcn_cubesc, "ffff", "nc")
81 BUILTIN(__builtin_amdgcn_cubetc, "ffff", "nc")
82 BUILTIN(__builtin_amdgcn_cubema, "ffff", "nc")
83 BUILTIN(__builtin_amdgcn_s_memtime, "LUi", "n")
84 BUILTIN(__builtin_amdgcn_s_sleep, "vIi", "n")
85 BUILTIN(__builtin_amdgcn_s_incperflevel, "vIi", "n")
86 BUILTIN(__builtin_amdgcn_s_decperflevel, "vIi", "n")
87 BUILTIN(__builtin_amdgcn_uicmp, "LUiUiUiIi", "nc")
88 BUILTIN(__builtin_amdgcn_uicmpl, "LUiLUiLUiIi", "nc")
89 BUILTIN(__builtin_amdgcn_sicmp, "LUiiiIi", "nc")
90 BUILTIN(__builtin_amdgcn_sicmpl, "LUiLiLiIi", "nc")
91 BUILTIN(__builtin_amdgcn_fcmp, "LUiddIi", "nc")
92 BUILTIN(__builtin_amdgcn_fcmpf, "LUiffIi", "nc")
93 BUILTIN(__builtin_amdgcn_ds_swizzle, "iiIi", "nc")
94 BUILTIN(__builtin_amdgcn_ds_permute, "iii", "nc")
95 BUILTIN(__builtin_amdgcn_ds_bpermute, "iii", "nc")
96 BUILTIN(__builtin_amdgcn_readfirstlane, "ii", "nc")
97 BUILTIN(__builtin_amdgcn_readlane, "iii", "nc")
98 BUILTIN(__builtin_amdgcn_fmed3f, "ffff", "nc")
99 BUILTIN(__builtin_amdgcn_ds_faddf, "ff*3fIiIiIb", "n")
100 BUILTIN(__builtin_amdgcn_ds_fminf, "ff*3fIiIiIb", "n")
101 BUILTIN(__builtin_amdgcn_ds_fmaxf, "ff*3fIiIiIb", "n")
102
103 //===----------------------------------------------------------------------===//
104 // CI+ only builtins.
105 //===----------------------------------------------------------------------===//
106 TARGET_BUILTIN(__builtin_amdgcn_s_dcache_inv_vol, "v", "n", "ci-insts")
107 TARGET_BUILTIN(__builtin_amdgcn_buffer_wbinvl1_vol, "v", "n", "ci-insts")
108
109 //===----------------------------------------------------------------------===//
110 // VI+ only builtins.
111 //===----------------------------------------------------------------------===//
112
113 TARGET_BUILTIN(__builtin_amdgcn_div_fixuph, "hhhh", "nc", "16-bit-insts")
114 TARGET_BUILTIN(__builtin_amdgcn_rcph, "hh", "nc", "16-bit-insts")
115 TARGET_BUILTIN(__builtin_amdgcn_rsqh, "hh", "nc", "16-bit-insts")
116 TARGET_BUILTIN(__builtin_amdgcn_sinh, "hh", "nc", "16-bit-insts")
117 TARGET_BUILTIN(__builtin_amdgcn_cosh, "hh", "nc", "16-bit-insts")
118 TARGET_BUILTIN(__builtin_amdgcn_ldexph, "hhi", "nc", "16-bit-insts")
119 TARGET_BUILTIN(__builtin_amdgcn_frexp_manth, "hh", "nc", "16-bit-insts")
120 TARGET_BUILTIN(__builtin_amdgcn_frexp_exph, "sh", "nc", "16-bit-insts")
121 TARGET_BUILTIN(__builtin_amdgcn_fracth, "hh", "nc", "16-bit-insts")
122 TARGET_BUILTIN(__builtin_amdgcn_classh, "bhi", "nc", "16-bit-insts")
123 TARGET_BUILTIN(__builtin_amdgcn_s_memrealtime, "LUi", "n", "s-memrealtime")
124 TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nc", "dpp")
125 TARGET_BUILTIN(__builtin_amdgcn_update_dpp, "iiiIiIiIiIb", "nc", "dpp")
126 TARGET_BUILTIN(__builtin_amdgcn_s_dcache_wb, "v", "n", "vi-insts")
127
128 //===----------------------------------------------------------------------===//
129 // GFX9+ only builtins.
130 //===----------------------------------------------------------------------===//
131
132 TARGET_BUILTIN(__builtin_amdgcn_fmed3h, "hhhh", "nc", "gfx9-insts")
133
134 //===----------------------------------------------------------------------===//
135 // Deep learning builtins.
136 //===----------------------------------------------------------------------===//
137
138 TARGET_BUILTIN(__builtin_amdgcn_fdot2, "fV2hV2hfIb", "nc", "dot-insts")
139 TARGET_BUILTIN(__builtin_amdgcn_sdot2, "SiV2SsV2SsSiIb", "nc", "dot-insts")
140 TARGET_BUILTIN(__builtin_amdgcn_udot2, "UiV2UsV2UsUiIb", "nc", "dot-insts")
141 TARGET_BUILTIN(__builtin_amdgcn_sdot4, "SiSiSiSiIb", "nc", "dot-insts")
142 TARGET_BUILTIN(__builtin_amdgcn_udot4, "UiUiUiUiIb", "nc", "dot-insts")
143 TARGET_BUILTIN(__builtin_amdgcn_sdot8, "SiSiSiSiIb", "nc", "dot-insts")
144 TARGET_BUILTIN(__builtin_amdgcn_udot8, "UiUiUiUiIb", "nc", "dot-insts")
145
146 //===----------------------------------------------------------------------===//
147 // Special builtins.
148 //===----------------------------------------------------------------------===//
149 BUILTIN(__builtin_amdgcn_read_exec, "LUi", "nc")
150 BUILTIN(__builtin_amdgcn_read_exec_lo, "Ui", "nc")
151 BUILTIN(__builtin_amdgcn_read_exec_hi, "Ui", "nc")
152
153 //===----------------------------------------------------------------------===//
154 // R600-NI only builtins.
155 //===----------------------------------------------------------------------===//
156
157 BUILTIN(__builtin_r600_implicitarg_ptr, "Uc*7", "nc")
158
159 BUILTIN(__builtin_r600_read_tgid_x, "Ui", "nc")
160 BUILTIN(__builtin_r600_read_tgid_y, "Ui", "nc")
161 BUILTIN(__builtin_r600_read_tgid_z, "Ui", "nc")
162
163 BUILTIN(__builtin_r600_read_tidig_x, "Ui", "nc")
164 BUILTIN(__builtin_r600_read_tidig_y, "Ui", "nc")
165 BUILTIN(__builtin_r600_read_tidig_z, "Ui", "nc")
166
167 BUILTIN(__builtin_r600_recipsqrt_ieee, "dd", "nc")
168 BUILTIN(__builtin_r600_recipsqrt_ieeef, "ff", "nc")
169
170 #undef BUILTIN
171 #undef TARGET_BUILTIN