@@ -129,6 +129,57 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
129
129
"testnzc_ps" => p ! ( "avx.vtestnzc.ps.256" , ( f32x8, f32x8) -> i32 ) ,
130
130
"testz_pd" => p ! ( "avx.vtestz.pd.256" , ( f64x4, f64x4) -> i32 ) ,
131
131
"testz_ps" => p ! ( "avx.vtestz.ps.256" , ( f32x8, f32x8) -> i32 ) ,
132
+
133
+ "abs_epi16" => p ! ( "avx2.pabs.w" , ( i16x16) -> i16x16) ,
134
+ "abs_epi32" => p ! ( "avx2.pabs.d" , ( i32x8) -> i32x8) ,
135
+ "abs_epi8" => p ! ( "avx2.pabs.b" , ( i8x32) -> i8x32) ,
136
+ "adds_epi16" => p ! ( "avx2.padds.w" , ( i16x16, i16x16) -> i16x16) ,
137
+ "adds_epi8" => p ! ( "avx2.padds.b" , ( i8x32, i8x32) -> i8x32) ,
138
+ "adds_epu16" => p ! ( "avx2.paddus.w" , ( i16x16, i16x16) -> i16x16) ,
139
+ "adds_epu8" => p ! ( "avx2.paddus.b" , ( i8x32, i8x32) -> i8x32) ,
140
+ "avg_epu16" => p ! ( "avx2.pavg.w" , ( i16x16, i16x16) -> i16x16) ,
141
+ "avg_epu8" => p ! ( "avx2.pavg.b" , ( i8x32, i8x32) -> i8x32) ,
142
+ "hadd_epi16" => p ! ( "avx2.phadd.w" , ( i16x16, i16x16) -> i16x16) ,
143
+ "hadd_epi32" => p ! ( "avx2.phadd.d" , ( i32x8, i32x8) -> i32x8) ,
144
+ "hadds_epi16" => p ! ( "avx2.phadd.sw" , ( i16x16, i16x16) -> i16x16) ,
145
+ "hsub_epi16" => p ! ( "avx2.phsub.w" , ( i16x16, i16x16) -> i16x16) ,
146
+ "hsub_epi32" => p ! ( "avx2.phsub.d" , ( i32x8, i32x8) -> i32x8) ,
147
+ "hsubs_epi16" => p ! ( "avx2.phsub.sw" , ( i16x16, i16x16) -> i16x16) ,
148
+ "madd_epi16" => p ! ( "avx2.pmadd.wd" , ( i16x16, i16x16) -> i32x8) ,
149
+ "maddubs_epi16" => p ! ( "avx2.pmadd.ub.sw" , ( i8x32, i8x32) -> i16x16) ,
150
+ "max_epi16" => p ! ( "avx2.pmaxs.w" , ( i16x16, i16x16) -> i16x16) ,
151
+ "max_epi32" => p ! ( "avx2.pmaxs.d" , ( i32x8, i32x8) -> i32x8) ,
152
+ "max_epi8" => p ! ( "avx2.pmaxs.b" , ( i8x32, i8x32) -> i8x32) ,
153
+ "max_epu16" => p ! ( "avx2.pmaxu.w" , ( i16x16, i16x16) -> i16x16) ,
154
+ "max_epu32" => p ! ( "avx2.pmaxu.d" , ( i32x8, i32x8) -> i32x8) ,
155
+ "max_epu8" => p ! ( "avx2.pmaxu.b" , ( i8x32, i8x32) -> i8x32) ,
156
+ "min_epi16" => p ! ( "avx2.pmins.w" , ( i16x16, i16x16) -> i16x16) ,
157
+ "min_epi32" => p ! ( "avx2.pmins.d" , ( i32x8, i32x8) -> i32x8) ,
158
+ "min_epi8" => p ! ( "avx2.pmins.b" , ( i8x32, i8x32) -> i8x32) ,
159
+ "min_epu16" => p ! ( "avx2.pminu.w" , ( i16x16, i16x16) -> i16x16) ,
160
+ "min_epu32" => p ! ( "avx2.pminu.d" , ( i32x8, i32x8) -> i32x8) ,
161
+ "min_epu8" => p ! ( "avx2.pminu.b" , ( i8x32, i8x32) -> i8x32) ,
162
+ "mul_epi32" => p ! ( "avx2.mul.dq" , ( i32x8, i32x8) -> i64x4) ,
163
+ "mul_epu32" => p ! ( "avx2.mulu.dq" , ( i32x8, i32x8) -> i64x4) ,
164
+ "mulhi_epi16" => p ! ( "avx2.pmulh.w" , ( i8x32, i8x32) -> i8x32) ,
165
+ "mulhi_epu16" => p ! ( "avx2.pmulhu.w" , ( i8x32, i8x32) -> i8x32) ,
166
+ "mulhrs_epi16" => p ! ( "avx2.pmul.hr.sw" , ( i16x16, i16x16) -> i16x16) ,
167
+ "packs_epi16" => p ! ( "avx2.packsswb" , ( i16x16, i16x16) -> i8x32) ,
168
+ "packs_epi32" => p ! ( "avx2.packssdw" , ( i32x8, i32x8) -> i16x16) ,
169
+ "packus_epi16" => p ! ( "avx2.packuswb" , ( i16x16, i16x16) -> i8x32) ,
170
+ "packus_epi32" => p ! ( "avx2.packusdw" , ( i32x8, i32x8) -> i16x16) ,
171
+ "permutevar8x32_epi32" => p ! ( "avx2.permd" , ( i32x8, i32x8) -> i32x8) ,
172
+ "permutevar8x32_ps" => p ! ( "avx2.permps" , ( f32x8, i32x8) -> i32x8) ,
173
+ "sad_epu8" => p ! ( "avx2.psad.bw" , ( i8x32, i8x32) -> i64x4) ,
174
+ "shuffle_epi8" => p ! ( "avx2.pshuf.b" , ( i8x32, i8x32) -> i8x32) ,
175
+ "sign_epi16" => p ! ( "avx2.psign.w" , ( i16x16, i16x16) -> i16x16) ,
176
+ "sign_epi32" => p ! ( "avx2.psign.d" , ( i32x8, i32x8) -> i32x8) ,
177
+ "sign_epi8" => p ! ( "avx2.psign.b" , ( i8x32, i8x32) -> i8x32) ,
178
+ "subs_epi16" => p ! ( "avx2.psubs.w" , ( i16x16, i16x16) -> i16x16) ,
179
+ "subs_epi8" => p ! ( "avx2.psubs.b" , ( i8x32, i8x32) -> i8x32) ,
180
+ "subs_epu16" => p ! ( "avx2.psubus.w" , ( i16x16, i16x16) -> i16x16) ,
181
+ "subs_epu8" => p ! ( "avx2.psubus.b" , ( i8x32, i8x32) -> i8x32) ,
182
+
132
183
_ => return None ,
133
184
} )
134
185
} else {
0 commit comments