Skip to content

Commit 1157558

Browse files
committed
progress
1 parent 9e6c2e1 commit 1157558

File tree

1 file changed

+270
-1
lines changed

1 file changed

+270
-1
lines changed

src/x86/sse42.rs

Lines changed: 270 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,270 @@ pub const _SIDD_MASKED_NEGATIVE_POLARITY: i8 = 0b00110000;
1818
pub const _SIDD_LEAST_SIGNIFICANT: i8 = 0b00000000;
1919
pub const _SIDD_MOST_SIGNIFICANT: i8 = 0b01000000;
2020

21+
macro_rules! constify_imm8 {
22+
($imm8:expr, $expand:ident) => {
23+
#[allow(overflowing_literals)]
24+
match $imm8 & 0b1111_1111 {
25+
0 => $expand!(0),
26+
1 => $expand!(1),
27+
2 => $expand!(2),
28+
3 => $expand!(3),
29+
4 => $expand!(4),
30+
5 => $expand!(5),
31+
6 => $expand!(6),
32+
7 => $expand!(7),
33+
8 => $expand!(8),
34+
9 => $expand!(9),
35+
10 => $expand!(10),
36+
11 => $expand!(11),
37+
12 => $expand!(12),
38+
13 => $expand!(13),
39+
14 => $expand!(14),
40+
15 => $expand!(15),
41+
16 => $expand!(16),
42+
17 => $expand!(17),
43+
18 => $expand!(18),
44+
19 => $expand!(19),
45+
20 => $expand!(20),
46+
21 => $expand!(21),
47+
22 => $expand!(22),
48+
23 => $expand!(23),
49+
24 => $expand!(24),
50+
25 => $expand!(25),
51+
26 => $expand!(26),
52+
27 => $expand!(27),
53+
28 => $expand!(28),
54+
29 => $expand!(29),
55+
30 => $expand!(30),
56+
31 => $expand!(31),
57+
32 => $expand!(32),
58+
33 => $expand!(33),
59+
34 => $expand!(34),
60+
35 => $expand!(35),
61+
36 => $expand!(36),
62+
37 => $expand!(37),
63+
38 => $expand!(38),
64+
39 => $expand!(39),
65+
40 => $expand!(40),
66+
41 => $expand!(41),
67+
42 => $expand!(42),
68+
43 => $expand!(43),
69+
44 => $expand!(44),
70+
45 => $expand!(45),
71+
46 => $expand!(46),
72+
47 => $expand!(47),
73+
48 => $expand!(48),
74+
49 => $expand!(49),
75+
50 => $expand!(50),
76+
51 => $expand!(51),
77+
52 => $expand!(52),
78+
53 => $expand!(53),
79+
54 => $expand!(54),
80+
55 => $expand!(55),
81+
56 => $expand!(56),
82+
57 => $expand!(57),
83+
58 => $expand!(58),
84+
59 => $expand!(59),
85+
60 => $expand!(60),
86+
61 => $expand!(61),
87+
62 => $expand!(62),
88+
63 => $expand!(63),
89+
64 => $expand!(64),
90+
65 => $expand!(65),
91+
66 => $expand!(66),
92+
67 => $expand!(67),
93+
68 => $expand!(68),
94+
69 => $expand!(69),
95+
70 => $expand!(70),
96+
71 => $expand!(71),
97+
72 => $expand!(72),
98+
73 => $expand!(73),
99+
74 => $expand!(74),
100+
75 => $expand!(75),
101+
76 => $expand!(76),
102+
77 => $expand!(77),
103+
78 => $expand!(78),
104+
79 => $expand!(79),
105+
80 => $expand!(80),
106+
81 => $expand!(81),
107+
82 => $expand!(82),
108+
83 => $expand!(83),
109+
84 => $expand!(84),
110+
85 => $expand!(85),
111+
86 => $expand!(86),
112+
87 => $expand!(87),
113+
88 => $expand!(88),
114+
89 => $expand!(89),
115+
90 => $expand!(90),
116+
91 => $expand!(91),
117+
92 => $expand!(92),
118+
93 => $expand!(93),
119+
94 => $expand!(94),
120+
95 => $expand!(95),
121+
96 => $expand!(96),
122+
97 => $expand!(97),
123+
98 => $expand!(98),
124+
99 => $expand!(99),
125+
100 => $expand!(100),
126+
101 => $expand!(101),
127+
102 => $expand!(102),
128+
103 => $expand!(103),
129+
104 => $expand!(104),
130+
105 => $expand!(105),
131+
106 => $expand!(106),
132+
107 => $expand!(107),
133+
108 => $expand!(108),
134+
109 => $expand!(109),
135+
110 => $expand!(110),
136+
111 => $expand!(111),
137+
112 => $expand!(112),
138+
113 => $expand!(113),
139+
114 => $expand!(114),
140+
115 => $expand!(115),
141+
116 => $expand!(116),
142+
117 => $expand!(117),
143+
118 => $expand!(118),
144+
119 => $expand!(119),
145+
120 => $expand!(120),
146+
121 => $expand!(121),
147+
122 => $expand!(122),
148+
123 => $expand!(123),
149+
124 => $expand!(124),
150+
125 => $expand!(125),
151+
126 => $expand!(126),
152+
127 => $expand!(127),
153+
128 => $expand!(128),
154+
129 => $expand!(129),
155+
130 => $expand!(130),
156+
131 => $expand!(131),
157+
132 => $expand!(132),
158+
133 => $expand!(133),
159+
134 => $expand!(134),
160+
135 => $expand!(135),
161+
136 => $expand!(136),
162+
137 => $expand!(137),
163+
138 => $expand!(138),
164+
139 => $expand!(139),
165+
140 => $expand!(140),
166+
141 => $expand!(141),
167+
142 => $expand!(142),
168+
143 => $expand!(143),
169+
144 => $expand!(144),
170+
145 => $expand!(145),
171+
146 => $expand!(146),
172+
147 => $expand!(147),
173+
148 => $expand!(148),
174+
149 => $expand!(149),
175+
150 => $expand!(150),
176+
151 => $expand!(151),
177+
152 => $expand!(152),
178+
153 => $expand!(153),
179+
154 => $expand!(154),
180+
155 => $expand!(155),
181+
156 => $expand!(156),
182+
157 => $expand!(157),
183+
158 => $expand!(158),
184+
159 => $expand!(159),
185+
160 => $expand!(160),
186+
161 => $expand!(161),
187+
162 => $expand!(162),
188+
163 => $expand!(163),
189+
164 => $expand!(164),
190+
165 => $expand!(165),
191+
166 => $expand!(166),
192+
167 => $expand!(167),
193+
168 => $expand!(168),
194+
169 => $expand!(169),
195+
170 => $expand!(170),
196+
171 => $expand!(171),
197+
172 => $expand!(172),
198+
173 => $expand!(173),
199+
174 => $expand!(174),
200+
175 => $expand!(175),
201+
176 => $expand!(176),
202+
177 => $expand!(177),
203+
178 => $expand!(178),
204+
179 => $expand!(179),
205+
180 => $expand!(180),
206+
181 => $expand!(181),
207+
182 => $expand!(182),
208+
183 => $expand!(183),
209+
184 => $expand!(184),
210+
185 => $expand!(185),
211+
186 => $expand!(186),
212+
187 => $expand!(187),
213+
188 => $expand!(188),
214+
189 => $expand!(189),
215+
190 => $expand!(190),
216+
191 => $expand!(191),
217+
192 => $expand!(192),
218+
193 => $expand!(193),
219+
194 => $expand!(194),
220+
195 => $expand!(195),
221+
196 => $expand!(196),
222+
197 => $expand!(197),
223+
198 => $expand!(198),
224+
199 => $expand!(199),
225+
200 => $expand!(200),
226+
201 => $expand!(201),
227+
202 => $expand!(202),
228+
203 => $expand!(203),
229+
204 => $expand!(204),
230+
205 => $expand!(205),
231+
206 => $expand!(206),
232+
207 => $expand!(207),
233+
208 => $expand!(208),
234+
209 => $expand!(209),
235+
210 => $expand!(210),
236+
211 => $expand!(211),
237+
212 => $expand!(212),
238+
213 => $expand!(213),
239+
214 => $expand!(214),
240+
215 => $expand!(215),
241+
216 => $expand!(216),
242+
217 => $expand!(217),
243+
218 => $expand!(218),
244+
219 => $expand!(219),
245+
220 => $expand!(220),
246+
221 => $expand!(221),
247+
222 => $expand!(222),
248+
223 => $expand!(223),
249+
224 => $expand!(224),
250+
225 => $expand!(225),
251+
226 => $expand!(226),
252+
227 => $expand!(227),
253+
228 => $expand!(228),
254+
229 => $expand!(229),
255+
230 => $expand!(230),
256+
231 => $expand!(231),
257+
232 => $expand!(232),
258+
233 => $expand!(233),
259+
234 => $expand!(234),
260+
235 => $expand!(235),
261+
236 => $expand!(236),
262+
237 => $expand!(237),
263+
238 => $expand!(238),
264+
239 => $expand!(239),
265+
240 => $expand!(240),
266+
241 => $expand!(241),
267+
242 => $expand!(242),
268+
243 => $expand!(243),
269+
244 => $expand!(244),
270+
245 => $expand!(245),
271+
246 => $expand!(246),
272+
247 => $expand!(247),
273+
248 => $expand!(248),
274+
249 => $expand!(249),
275+
250 => $expand!(250),
276+
251 => $expand!(251),
277+
252 => $expand!(252),
278+
253 => $expand!(253),
279+
254 => $expand!(254),
280+
_ => $expand!(255),
281+
}
282+
}
283+
}
284+
21285
#[inline(always)]
22286
#[target_feature = "+sse4.2"]
23287
pub fn _mm_cmpestri(
@@ -27,7 +291,12 @@ pub fn _mm_cmpestri(
27291
lb: i32,
28292
imm8: i8,
29293
) -> i32 {
30-
unsafe { pcmpestri128(a, la, b, lb, imm8) }
294+
macro_rules! call {
295+
($imm8:expr) => {
296+
unsafe { pcmpestri128(a, la, b, lb, $imm8) }
297+
}
298+
}
299+
constify_imm8!(imm8, call)
31300
}
32301

33302
#[allow(improper_ctypes)]

0 commit comments

Comments
 (0)