1194179Sed//===--- BuiltinsPPC.def - PowerPC Builtin function database ----*- C++ -*-===//
2194179Sed//
3194179Sed//                     The LLVM Compiler Infrastructure
4194179Sed//
5194179Sed// This file is distributed under the University of Illinois Open Source
6194179Sed// License. See LICENSE.TXT for details.
7194179Sed//
8194179Sed//===----------------------------------------------------------------------===//
9194179Sed//
10194179Sed// This file defines the PowerPC-specific builtin function database.  Users of
11194179Sed// this file must define the BUILTIN macro to make use of this information.
12194179Sed//
13194179Sed//===----------------------------------------------------------------------===//
14194179Sed
15194179Sed// FIXME: this needs to be the full list supported by GCC.  Right now, I'm just
16194179Sed// adding stuff on demand.
17194179Sed
18194179Sed// The format of this database matches clang/Basic/Builtins.def.
19194179Sed
20194179Sed// This is just a placeholder, the types and attributes are wrong.
21207619SrdivackyBUILTIN(__builtin_altivec_vaddcuw, "V4UiV4UiV4Ui", "")
22207619Srdivacky
23207619SrdivackyBUILTIN(__builtin_altivec_vaddsbs, "V16ScV16ScV16Sc", "")
24207619SrdivackyBUILTIN(__builtin_altivec_vaddubs, "V16UcV16UcV16Uc", "")
25207619SrdivackyBUILTIN(__builtin_altivec_vaddshs, "V8SsV8SsV8Ss", "")
26207619SrdivackyBUILTIN(__builtin_altivec_vadduhs, "V8UsV8UsV8Us", "")
27207619SrdivackyBUILTIN(__builtin_altivec_vaddsws, "V4SiV4SiV4Si", "")
28207619SrdivackyBUILTIN(__builtin_altivec_vadduws, "V4UiV4UiV4Ui", "")
29207619Srdivacky
30207619SrdivackyBUILTIN(__builtin_altivec_vsubsbs, "V16ScV16ScV16Sc", "")
31207619SrdivackyBUILTIN(__builtin_altivec_vsububs, "V16UcV16UcV16Uc", "")
32207619SrdivackyBUILTIN(__builtin_altivec_vsubshs, "V8SsV8SsV8Ss", "")
33207619SrdivackyBUILTIN(__builtin_altivec_vsubuhs, "V8UsV8UsV8Us", "")
34207619SrdivackyBUILTIN(__builtin_altivec_vsubsws, "V4SiV4SiV4Si", "")
35207619SrdivackyBUILTIN(__builtin_altivec_vsubuws, "V4UiV4UiV4Ui", "")
36207619Srdivacky
37207619SrdivackyBUILTIN(__builtin_altivec_vavgsb, "V16ScV16ScV16Sc", "")
38207619SrdivackyBUILTIN(__builtin_altivec_vavgub, "V16UcV16UcV16Uc", "")
39207619SrdivackyBUILTIN(__builtin_altivec_vavgsh, "V8SsV8SsV8Ss", "")
40207619SrdivackyBUILTIN(__builtin_altivec_vavguh, "V8UsV8UsV8Us", "")
41207619SrdivackyBUILTIN(__builtin_altivec_vavgsw, "V4SiV4SiV4Si", "")
42207619SrdivackyBUILTIN(__builtin_altivec_vavguw, "V4UiV4UiV4Ui", "")
43207619Srdivacky
44210299SedBUILTIN(__builtin_altivec_vrfip, "V4fV4f", "")
45210299Sed
46210299SedBUILTIN(__builtin_altivec_vcfsx, "V4fV4ii", "")
47210299SedBUILTIN(__builtin_altivec_vcfux, "V4fV4ii", "")
48210299SedBUILTIN(__builtin_altivec_vctsxs, "V4SiV4fi", "")
49210299SedBUILTIN(__builtin_altivec_vctuxs, "V4UiV4fi", "")
50210299Sed
51210299SedBUILTIN(__builtin_altivec_dss, "vUi", "")
52210299SedBUILTIN(__builtin_altivec_dssall, "v", "")
53218893SdimBUILTIN(__builtin_altivec_dst, "vvC*iUi", "") 
54218893SdimBUILTIN(__builtin_altivec_dstt, "vvC*iUi", "")
55218893SdimBUILTIN(__builtin_altivec_dstst, "vvC*iUi", "")
56218893SdimBUILTIN(__builtin_altivec_dststt, "vvC*iUi", "")
57210299Sed
58210299SedBUILTIN(__builtin_altivec_vexptefp, "V4fV4f", "")
59210299Sed
60210299SedBUILTIN(__builtin_altivec_vrfim, "V4fV4f", "")
61210299Sed
62218893SdimBUILTIN(__builtin_altivec_lvx, "V4iivC*", "")
63218893SdimBUILTIN(__builtin_altivec_lvxl, "V4iivC*", "")
64218893SdimBUILTIN(__builtin_altivec_lvebx, "V16civC*", "")
65218893SdimBUILTIN(__builtin_altivec_lvehx, "V8sivC*", "")
66218893SdimBUILTIN(__builtin_altivec_lvewx, "V4iivC*", "")
67210299Sed
68210299SedBUILTIN(__builtin_altivec_vlogefp, "V4fV4f", "")
69210299Sed
70218893SdimBUILTIN(__builtin_altivec_lvsl, "V16cUcvC*", "")
71218893SdimBUILTIN(__builtin_altivec_lvsr, "V16cUcvC*", "")
72210299Sed
73210299SedBUILTIN(__builtin_altivec_vmaddfp, "V4fV4fV4fV4f", "")
74210299SedBUILTIN(__builtin_altivec_vmhaddshs, "V8sV8sV8sV8s", "")
75210299SedBUILTIN(__builtin_altivec_vmhraddshs, "V8sV8sV8sV8s", "")
76210299Sed
77210299SedBUILTIN(__builtin_altivec_vmsumubm, "V4UiV16UcV16UcV4Ui", "")
78210299SedBUILTIN(__builtin_altivec_vmsummbm, "V4SiV16ScV16UcV4Si", "")
79210299SedBUILTIN(__builtin_altivec_vmsumuhm, "V4UiV8UsV8UsV4Ui", "")
80210299SedBUILTIN(__builtin_altivec_vmsumshm, "V4SiV8SsV8SsV4Si", "")
81210299SedBUILTIN(__builtin_altivec_vmsumuhs, "V4UiV8UsV8UsV4Ui", "")
82210299SedBUILTIN(__builtin_altivec_vmsumshs, "V4SiV8SsV8SsV4Si", "")
83210299Sed
84210299SedBUILTIN(__builtin_altivec_vmuleub, "V8UsV16UcV16Uc", "")
85210299SedBUILTIN(__builtin_altivec_vmulesb, "V8SsV16ScV16Sc", "")
86210299SedBUILTIN(__builtin_altivec_vmuleuh, "V4UiV8UsV8Us", "")
87210299SedBUILTIN(__builtin_altivec_vmulesh, "V4SiV8SsV8Ss", "")
88210299SedBUILTIN(__builtin_altivec_vmuloub, "V8UsV16UcV16Uc", "")
89210299SedBUILTIN(__builtin_altivec_vmulosb, "V8SsV16ScV16Sc", "")
90210299SedBUILTIN(__builtin_altivec_vmulouh, "V4UiV8UsV8Us", "")
91210299SedBUILTIN(__builtin_altivec_vmulosh, "V4SiV8SsV8Ss", "")
92210299Sed
93210299SedBUILTIN(__builtin_altivec_vnmsubfp, "V4fV4fV4fV4f", "")
94210299Sed
95210299SedBUILTIN(__builtin_altivec_vpkpx, "V8sV4UiV4Ui", "")
96210299SedBUILTIN(__builtin_altivec_vpkuhus, "V16UcV8UsV8Us", "")
97210299SedBUILTIN(__builtin_altivec_vpkshss, "V16ScV8SsV8Ss", "")
98210299SedBUILTIN(__builtin_altivec_vpkuwus, "V8UsV4UiV4Ui", "")
99210299SedBUILTIN(__builtin_altivec_vpkswss, "V8SsV4SiV4Si", "")
100210299SedBUILTIN(__builtin_altivec_vpkshus, "V16UcV8SsV8Ss", "")
101210299SedBUILTIN(__builtin_altivec_vpkswus, "V8UsV4SiV4Si", "")
102210299Sed
103210299SedBUILTIN(__builtin_altivec_vperm_4si, "V4iV4iV4iV16Uc", "")
104210299Sed
105207619SrdivackyBUILTIN(__builtin_altivec_stvx, "vV4iiv*", "")
106207619SrdivackyBUILTIN(__builtin_altivec_stvxl, "vV4iiv*", "")
107207619SrdivackyBUILTIN(__builtin_altivec_stvebx, "vV16civ*", "")
108207619SrdivackyBUILTIN(__builtin_altivec_stvehx, "vV8siv*", "")
109207619SrdivackyBUILTIN(__builtin_altivec_stvewx, "vV4iiv*", "")
110207619Srdivacky
111207619SrdivackyBUILTIN(__builtin_altivec_vcmpbfp, "V4iV4fV4f", "")
112207619Srdivacky
113207619SrdivackyBUILTIN(__builtin_altivec_vcmpgefp, "V4iV4fV4f", "")
114207619Srdivacky
115207619SrdivackyBUILTIN(__builtin_altivec_vcmpequb, "V16cV16cV16c", "")
116207619SrdivackyBUILTIN(__builtin_altivec_vcmpequh, "V8sV8sV8s", "")
117207619SrdivackyBUILTIN(__builtin_altivec_vcmpequw, "V4iV4iV4i", "")
118207619SrdivackyBUILTIN(__builtin_altivec_vcmpeqfp, "V4iV4fV4f", "")
119207619Srdivacky
120207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsb, "V16cV16ScV16Sc", "")
121207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtub, "V16cV16UcV16Uc", "")
122207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsh, "V8sV8SsV8Ss", "")
123207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtuh, "V8sV8UsV8Us", "")
124207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsw, "V4iV4SiV4Si", "")
125207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtuw, "V4iV4UiV4Ui", "")
126207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtfp, "V4iV4fV4f", "")
127207619Srdivacky
128207619SrdivackyBUILTIN(__builtin_altivec_vmaxsb, "V16ScV16ScV16Sc", "")
129207619SrdivackyBUILTIN(__builtin_altivec_vmaxub, "V16UcV16UcV16Uc", "")
130207619SrdivackyBUILTIN(__builtin_altivec_vmaxsh, "V8SsV8SsV8Ss", "")
131207619SrdivackyBUILTIN(__builtin_altivec_vmaxuh, "V8UsV8UsV8Us", "")
132207619SrdivackyBUILTIN(__builtin_altivec_vmaxsw, "V4SiV4SiV4Si", "")
133207619SrdivackyBUILTIN(__builtin_altivec_vmaxuw, "V4UiV4UiV4Ui", "")
134207619SrdivackyBUILTIN(__builtin_altivec_vmaxfp, "V4fV4fV4f", "")
135207619Srdivacky
136207619SrdivackyBUILTIN(__builtin_altivec_mfvscr, "V8Us", "")
137207619Srdivacky
138207619SrdivackyBUILTIN(__builtin_altivec_vminsb, "V16ScV16ScV16Sc", "")
139207619SrdivackyBUILTIN(__builtin_altivec_vminub, "V16UcV16UcV16Uc", "")
140207619SrdivackyBUILTIN(__builtin_altivec_vminsh, "V8SsV8SsV8Ss", "")
141207619SrdivackyBUILTIN(__builtin_altivec_vminuh, "V8UsV8UsV8Us", "")
142207619SrdivackyBUILTIN(__builtin_altivec_vminsw, "V4SiV4SiV4Si", "")
143207619SrdivackyBUILTIN(__builtin_altivec_vminuw, "V4UiV4UiV4Ui", "")
144207619SrdivackyBUILTIN(__builtin_altivec_vminfp, "V4fV4fV4f", "")
145207619Srdivacky
146207619SrdivackyBUILTIN(__builtin_altivec_mtvscr, "vV4i", "")
147207619Srdivacky
148210299SedBUILTIN(__builtin_altivec_vrefp, "V4fV4f", "")
149210299Sed
150210299SedBUILTIN(__builtin_altivec_vrlb, "V16cV16cV16Uc", "")
151210299SedBUILTIN(__builtin_altivec_vrlh, "V8sV8sV8Us", "")
152210299SedBUILTIN(__builtin_altivec_vrlw, "V4iV4iV4Ui", "")
153210299Sed
154210299SedBUILTIN(__builtin_altivec_vsel_4si, "V4iV4iV4iV4Ui", "")
155210299Sed
156210299SedBUILTIN(__builtin_altivec_vsl, "V4iV4iV4i", "")
157210299SedBUILTIN(__builtin_altivec_vslo, "V4iV4iV4i", "")
158210299Sed
159210299SedBUILTIN(__builtin_altivec_vsrab, "V16cV16cV16Uc", "")
160210299SedBUILTIN(__builtin_altivec_vsrah, "V8sV8sV8Us", "")
161210299SedBUILTIN(__builtin_altivec_vsraw, "V4iV4iV4Ui", "")
162210299Sed
163210299SedBUILTIN(__builtin_altivec_vsr, "V4iV4iV4i", "")
164210299SedBUILTIN(__builtin_altivec_vsro, "V4iV4iV4i", "")
165210299Sed
166210299SedBUILTIN(__builtin_altivec_vrfin, "V4fV4f", "")
167210299Sed
168210299SedBUILTIN(__builtin_altivec_vrsqrtefp, "V4fV4f", "")
169210299Sed
170210299SedBUILTIN(__builtin_altivec_vsubcuw, "V4UiV4UiV4Ui", "")
171210299Sed
172210299SedBUILTIN(__builtin_altivec_vsum4sbs, "V4SiV16ScV4Si", "")
173210299SedBUILTIN(__builtin_altivec_vsum4ubs, "V4UiV16UcV4Ui", "")
174210299SedBUILTIN(__builtin_altivec_vsum4shs, "V4SiV8SsV4Si", "")
175210299Sed
176210299SedBUILTIN(__builtin_altivec_vsum2sws, "V4SiV4SiV4Si", "")
177210299Sed
178210299SedBUILTIN(__builtin_altivec_vsumsws, "V4SiV4SiV4Si", "")
179210299Sed
180210299SedBUILTIN(__builtin_altivec_vrfiz, "V4fV4f", "")
181210299Sed
182210299SedBUILTIN(__builtin_altivec_vupkhsb, "V8sV16c", "")
183210299SedBUILTIN(__builtin_altivec_vupkhpx, "V4UiV8s", "")
184210299SedBUILTIN(__builtin_altivec_vupkhsh, "V4iV8s", "")
185210299Sed
186210299SedBUILTIN(__builtin_altivec_vupklsb, "V8sV16c", "")
187210299SedBUILTIN(__builtin_altivec_vupklpx, "V4UiV8s", "")
188210299SedBUILTIN(__builtin_altivec_vupklsh, "V4iV8s", "")
189210299Sed
190207619SrdivackyBUILTIN(__builtin_altivec_vcmpbfp_p, "iiV4fV4f", "")
191207619Srdivacky
192207619SrdivackyBUILTIN(__builtin_altivec_vcmpgefp_p, "iiV4fV4f", "")
193207619Srdivacky
194207619SrdivackyBUILTIN(__builtin_altivec_vcmpequb_p, "iiV16cV16c", "")
195207619SrdivackyBUILTIN(__builtin_altivec_vcmpequh_p, "iiV8sV8s", "")
196207619SrdivackyBUILTIN(__builtin_altivec_vcmpequw_p, "iiV4iV4i", "")
197207619SrdivackyBUILTIN(__builtin_altivec_vcmpeqfp_p, "iiV4fV4f", "")
198207619Srdivacky
199207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsb_p, "iiV16ScV16Sc", "")
200207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtub_p, "iiV16UcV16Uc", "")
201207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsh_p, "iiV8SsV8Ss", "")
202207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtuh_p, "iiV8UsV8Us", "")
203207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtsw_p, "iiV4SiV4Si", "")
204207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtuw_p, "iiV4UiV4Ui", "")
205207619SrdivackyBUILTIN(__builtin_altivec_vcmpgtfp_p, "iiV4fV4f", "")
206207619Srdivacky
207194179Sed// FIXME: Obviously incomplete.
208194179Sed
209194179Sed#undef BUILTIN
210