]> git.proxmox.com Git - rustc.git/blob - src/etc/platform-intrinsics/x86/avx2.json
Imported Upstream version 1.11.0+dfsg1
[rustc.git] / src / etc / platform-intrinsics / x86 / avx2.json
1 {
2 "llvm_prefix": "llvm.x86.avx2.",
3 "intrinsics": [
4 {
5 "intrinsic": "256_abs_{0.data_type}",
6 "width": [256],
7 "llvm": "pabs.{0.data_type_short}",
8 "ret": "s(8-32)",
9 "args": ["0"]
10 },
11 {
12 "intrinsic": "256_adds_{0.data_type}",
13 "width": [256],
14 "llvm": "padd{0.kind_short}s.{0.data_type_short}",
15 "ret": "i(8-16)",
16 "args": ["0", "0"]
17 },
18 {
19 "intrinsic": "256_avg_{0.data_type}",
20 "width": [256],
21 "llvm": "pavg.{0.data_type_short}",
22 "ret": "u(8-16)",
23 "args": ["0", "0"]
24 },
25 {
26 "intrinsic": "256_hadd_{0.data_type}",
27 "width": [256],
28 "llvm": "phadd.{0.data_type_short}",
29 "ret": "s(16-32)",
30 "args": ["0", "0"]
31 },
32 {
33 "intrinsic": "256_hadds_epi16",
34 "width": [256],
35 "llvm": "phadd.sw",
36 "ret": "s16",
37 "args": ["0", "0"]
38 },
39 {
40 "intrinsic": "256_hsub_{0.data_type}",
41 "width": [256],
42 "llvm": "phsub.{0.data_type_short}",
43 "ret": "s(16-32)",
44 "args": ["0", "0"]
45 },
46 {
47 "intrinsic": "256_hsubs_epi16",
48 "width": [256],
49 "llvm": "phsub.sw",
50 "ret": "s16",
51 "args": ["0", "0"]
52 },
53 {
54 "intrinsic": "256_madd_epi16",
55 "width": [256],
56 "llvm": "pmadd.wd",
57 "ret": "s32",
58 "args": ["s16", "s16"]
59 },
60 {
61 "intrinsic": "256_maddubs_epi16",
62 "width": [256],
63 "llvm": "pmadd.ub.sw",
64 "ret": "s16",
65 "args": ["s8", "s8"]
66 },
67 {
68 "intrinsic": "{0.width_mm}_mask_i32gather_{0.data_type}",
69 "width": [128, 256],
70 "llvm": "gather.d.{0.data_type_short}{0.width_suffix}",
71 "ret": ["s32", "f32"],
72 "args": ["0", "0SPc/S8", "s32", "0s->0", "S32/8"]
73 },
74 {
75 "intrinsic": "{0.width_mm}_mask_i32gather_{0.data_type}",
76 "width": [128, 256],
77 "llvm": "gather.d.{0.data_type_short}{0.width_suffix}",
78 "ret": ["s64", "f64"],
79 "args": ["0", "0SPc/S8", "s32x128", "0s->0", "S32/8"]
80 },
81 {
82 "intrinsic": "{3.width_mm}_mask_i64gather_{0.data_type}",
83 "width": [128, 256],
84 "llvm": "gather.q.{0.data_type_short}{0.width_suffix}",
85 "ret": ["s32x128", "f32x128"],
86 "args": ["0", "0SPc/S8", "s64", "0s->0", "S32/8"]
87 },
88 {
89 "intrinsic": "{0.width_mm}_mask_i64gather_{0.data_type}",
90 "width": [128, 256],
91 "llvm": "gather.q.{0.data_type_short}{0.width_suffix}",
92 "ret": ["s64", "f64"],
93 "args": ["0", "0SPc/S8", "s64", "0s->0", "S32/8"]
94 },
95 {
96 "intrinsic": "{0.width_mm}_maskload_{0.data_type}",
97 "width": [128, 256],
98 "llvm": "maskload.{0.data_type_short}{0.width_suffix}",
99 "ret": ["s(32-64)"],
100 "args": ["0Pc/S8", "0"]
101 },
102 {
103 "intrinsic": "{2.width_mm}_maskstore_{2.data_type}",
104 "width": [128, 256],
105 "llvm": "maskstore.{2.data_type_short}{2.width_suffix}",
106 "ret": "V",
107 "args": ["S(32-64)Pm/S8", "1Dv", "2"]
108 },
109 {
110 "intrinsic": "256_max_{0.data_type}",
111 "width": [256],
112 "llvm": "pmax{0.kind}.{0.data_type_short}",
113 "ret": "i(8-32)",
114 "args": ["0", "0"]
115 },
116 {
117 "intrinsic": "256_min_{0.data_type}",
118 "width": [256],
119 "llvm": "pmin{0.kind}.{0.data_type_short}",
120 "ret": "i(8-32)",
121 "args": ["0", "0"]
122 },
123 {
124 "intrinsic": "256_movemask_epi8",
125 "width": [256],
126 "llvm": "pmovmskb",
127 "ret": "S32",
128 "args": ["s8"]
129 },
130 {
131 "intrinsic": "256_mpsadbw_epu8",
132 "width": [256],
133 "llvm": "mpsadbw",
134 "ret": "u16",
135 "args": ["u8", "u8", "S32/8"]
136 },
137 {
138 "intrinsic": "256_mul_{0.data_type}",
139 "width": [256],
140 "llvm": "pmul{0.data_type_short}.dq",
141 "ret": "i64",
142 "args": ["0dn", "0dn"]
143 },
144 {
145 "intrinsic": "256_mulhi_{0.data_type}",
146 "width": [256],
147 "llvm": "pmulh{0.data_type_short}.w",
148 "ret": "i16",
149 "args": ["0", "0"]
150 },
151 {
152 "intrinsic": "256_mulhrs_epi16",
153 "width": [256],
154 "llvm": "pmul.hr.sw",
155 "ret": "s16",
156 "args": ["0", "0"]
157 },
158 {
159 "intrinsic": "256_pack{0.kind_short}s_{1.data_type}",
160 "width": [256],
161 "llvm": "pack{0.kind}s{1.data_type_short}{0.data_type_short}",
162 "ret": "i(8-16)",
163 "args": ["0hws", "0hws"]
164 },
165 {
166 "intrinsic": "256_permutevar8x32_{0.data_type}",
167 "width": [256],
168 "llvm": "perm{0.data_type_short}",
169 "ret": ["s32", "f32"],
170 "args": ["0", "0s"]
171 },
172 {
173 "intrinsic": "256_sad_epu8",
174 "width": [256],
175 "llvm": "psad.bw",
176 "ret": "u8",
177 "args": ["0", "0"]
178 },
179 {
180 "intrinsic": "256_shuffle_epi8",
181 "width": [256],
182 "llvm": "pshuf.b",
183 "ret": "s8",
184 "args": ["0", "0"]
185 },
186 {
187 "intrinsic": "256_sign_{0.data_type}",
188 "width": [256],
189 "llvm": "psign.{0.data_type_short}",
190 "ret": "s(8-32)",
191 "args": ["0", "0"]
192 },
193 {
194 "intrinsic": "256_subs_{0.data_type}",
195 "width": [256],
196 "llvm": "psub{0.kind_short}s.{0.data_type_short}",
197 "ret": "i(8-16)",
198 "args": ["0", "0"]
199 }
200 ]
201 }