]>
Commit | Line | Data |
---|---|---|
e9174d1e SL |
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 | }, | |
54a0048b SL |
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 | }, | |
e9174d1e SL |
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 | } |