]> git.proxmox.com Git - rustc.git/blob - src/etc/platform-intrinsics/x86/avx.json
Imported Upstream version 1.9.0+dfsg1
[rustc.git] / src / etc / platform-intrinsics / x86 / avx.json
1 {
2 "llvm_prefix": "llvm.x86.avx.",
3 "intrinsics": [
4 {
5 "intrinsic": "256_addsub_{0.data_type}",
6 "width": [256],
7 "llvm": "addsub.{0.data_type}.256",
8 "ret": "f(32-64)",
9 "args": ["0", "0"]
10 },
11 {
12 "intrinsic": "256_blendv_{0.data_type}",
13 "width": [256],
14 "llvm": "blendv.{0.data_type}.256",
15 "ret": "f(32-64)",
16 "args": ["0", "0", "0"]
17 },
18 {
19 "intrinsic": "256_broadcast_{0.data_type}",
20 "width": [256],
21 "llvm": "vbroadcastf128.{0.data_type}.256",
22 "ret": "f(32-64)",
23 "args": ["s8SPc"]
24 },
25 {
26 "intrinsic": "256_cmp_{0.data_type}",
27 "width": [256],
28 "llvm": "cmp.{1.data_type}.256",
29 "ret": "f(32-64)",
30 "args": ["0", "0", "s8S"]
31 },
32 {
33 "intrinsic": "256_cvtepi32_pd",
34 "width": [256],
35 "llvm": "cvtdq2.pd.256",
36 "ret": "f64",
37 "args": ["s32h"]
38 },
39 {
40 "intrinsic": "256_cvtepi32_ps",
41 "width": [256],
42 "llvm": "cvtdq2.ps.256",
43 "ret": "f32",
44 "args": ["s32"]
45 },
46 {
47 "intrinsic": "256_cvtpd_epi32",
48 "width": [256],
49 "llvm": "cvt.pd2dq.256",
50 "ret": "s32h",
51 "args": ["f64"]
52 },
53 {
54 "intrinsic": "256_cvtpd_ps",
55 "width": [256],
56 "llvm": "cvt.pd2.ps.256",
57 "ret": "f32h",
58 "args": ["f64"]
59 },
60 {
61 "intrinsic": "256_cvtps_epi32",
62 "width": [256],
63 "llvm": "cvt.ps2dq.256",
64 "ret": "s32",
65 "args": ["f32"]
66 },
67 {
68 "intrinsic": "256_cvtps_pd",
69 "width": [256],
70 "llvm": "cvt.ps2.pd.256",
71 "ret": "f64",
72 "args": ["f32h"]
73 },
74 {
75 "intrinsic": "256_cvttpd_epi32",
76 "width": [256],
77 "llvm": "cvtt.pd2dq.256",
78 "ret": "s32h",
79 "args": ["f64"]
80 },
81 {
82 "intrinsic": "256_cvttps_epi32",
83 "width": [256],
84 "llvm": "cvtt.ps2dq.256",
85 "ret": "s32",
86 "args": ["f32"]
87 },
88 {
89 "intrinsic": "256_dp_ps",
90 "width": [256],
91 "llvm": "dp.ps.256",
92 "ret": "f32",
93 "args": ["0", "0", "S32/8"]
94 },
95 {
96 "intrinsic": "256_hadd_{0.data_type}",
97 "width": [256],
98 "llvm": "hadd.{0.data_type}.256",
99 "ret": "f(32-64)",
100 "args": ["0", "0"]
101 },
102 {
103 "intrinsic": "256_hsub_{0.data_type}",
104 "width": [256],
105 "llvm": "hsub.{0.data_type}.256",
106 "ret": "f(32-64)",
107 "args": ["0", "0"]
108 },
109 {
110 "intrinsic": "256_max_{0.data_type}",
111 "width": [256],
112 "llvm": "max.{0.data_type}.256",
113 "ret": "f(32-64)",
114 "args": ["0", "0"]
115 },
116 {
117 "intrinsic": "{0.width_mm}_maskload_{0.data_type}",
118 "width": [128, 256],
119 "llvm": "maskload.{0.data_type_short}{0.width_suffix}",
120 "ret": ["f(32-64)"],
121 "args": ["0SPc/S8", "0s->0"]
122 },
123 {
124 "intrinsic": "{3.width_mm}_maskstore_{3.data_type}",
125 "width": [128, 256],
126 "llvm": "maskstore.{3.data_type_short}{3.width_suffix}",
127 "ret": "V",
128 "args": ["F(32-64)Pm/S8", "1Dsv->1Dv", "1Dv"]
129 },
130 {
131 "intrinsic": "256_min_{0.data_type}",
132 "width": [256],
133 "llvm": "min.{0.data_type}.256",
134 "ret": "f(32-64)",
135 "args": ["0", "0"]
136 },
137 {
138 "intrinsic": "256_movemask_ps",
139 "width": [256],
140 "llvm": "movmsk.ps.256",
141 "ret": "S32",
142 "args": ["f32"]
143 },
144 {
145 "intrinsic": "256_movemask_pd",
146 "width": [256],
147 "llvm": "movmsk.pd.256",
148 "ret": "S32",
149 "args": ["f64"]
150 },
151 {
152 "intrinsic": "{0.width_mm}_permutevar_{0.data_type}",
153 "width": [128, 256],
154 "llvm": "vpermilvar.{0.data_type}{0.width_suffix}",
155 "ret": "f(32-64)",
156 "args": ["0", "0s"]
157 },
158 {
159 "intrinsic": "256_rcp_ps",
160 "width": [256],
161 "llvm": "rcp.ps.256",
162 "ret": "f32",
163 "args": ["f32"]
164 },
165 {
166 "intrinsic": "256_rsqrt_ps",
167 "width": [256],
168 "llvm": "rsqrt.ps.256",
169 "ret": "f32",
170 "args": ["f32"]
171 },
172 {
173 "intrinsic": "256_storeu_{2.data_type}",
174 "width": [256],
175 "llvm": "storeu.ps.256",
176 "ret": "V",
177 "args": ["f(32-64)Pm/U8", "1D"]
178 },
179 {
180 "intrinsic": "256_storeu_si256",
181 "width": [256],
182 "llvm": "storeu.dq.256",
183 "ret": "V",
184 "args": ["u8Pm/U8", "1D"]
185 },
186 {
187 "intrinsic": "256_sqrt_{0.data_type}",
188 "width": [256],
189 "llvm": "!llvm.sqrt.{0.llvm_name}",
190 "ret": "f(32-64)",
191 "args": ["0"]
192 },
193 {
194 "intrinsic": "{1.width_mm}_testc_ps",
195 "width": [128, 256],
196 "llvm": "vtestc.ps{1.width_suffix}",
197 "ret": "S32",
198 "args": ["f32", "f32"]
199 },
200 {
201 "intrinsic": "{1.width_mm}_testc_pd",
202 "width": [128, 256],
203 "llvm": "vtestc.pd{1.width_suffix}",
204 "ret": "S32",
205 "args": ["f64", "f64"]
206 },
207 {
208 "intrinsic": "256_testc_si256",
209 "width": [256],
210 "llvm": "ptestc.256",
211 "ret": "S32",
212 "args": ["u64", "u64"]
213 },
214 {
215 "intrinsic": "{1.width_mm}_testnzc_ps",
216 "width": [128, 256],
217 "llvm": "vtestnzc.ps{1.width_suffix}",
218 "ret": "S32",
219 "args": ["f32", "f32"]
220 },
221 {
222 "intrinsic": "{1.width_mm}_testnzc_pd",
223 "width": [128, 256],
224 "llvm": "vtestnzc.pd{1.width_suffix}",
225 "ret": "S32",
226 "args": ["f64", "f64"]
227 },
228 {
229 "intrinsic": "256_testnzc_si256",
230 "width": [256],
231 "llvm": "ptestnzc.256",
232 "ret": "S32",
233 "args": ["u64", "u64"]
234 },
235 {
236 "intrinsic": "{1.width_mm}_testz_ps",
237 "width": [128, 256],
238 "llvm": "vtestz.ps{1.width_suffix}",
239 "ret": "S32",
240 "args": ["f32", "f32"]
241 },
242 {
243 "intrinsic": "{1.width_mm}_testz_pd",
244 "width": [128, 256],
245 "llvm": "vtestz.pd{1.width_suffix}",
246 "ret": "S32",
247 "args": ["f64", "f64"]
248 },
249 {
250 "intrinsic": "256_testz_si256",
251 "width": [256],
252 "llvm": "ptestz.256",
253 "ret": "S32",
254 "args": ["u64", "u64"]
255 },
256 {
257 "intrinsic": "256_zeroall",
258 "width": [256],
259 "llvm": "vzeroall",
260 "ret": "V",
261 "args": []
262 },
263 {
264 "intrinsic": "256_zeroupper",
265 "width": [256],
266 "llvm": "vzeroupper",
267 "ret": "V",
268 "args": []
269 }
270 ]
271 }