Implement all avx2 intrinsics used by the image crate · rust-lang/rust@4381949 (original) (raw)
`@@ -304,7 +304,9 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
`
304
304
` fx.bcx.ins().sshr(a_lane, saturated_count)
`
305
305
`});
`
306
306
`}
`
307
``
`-
"llvm.x86.sse2.psad.bw" => {
`
``
307
`+
"llvm.x86.sse2.psad.bw" | "llvm.x86.avx2.psad.bw" => {
`
``
308
`+
`
``
309
`+
`
308
310
`intrinsic_args!(fx, args => (a, b); intrinsic);
`
309
311
``
310
312
`assert_eq!(a.layout(), b.layout());
`
`@@ -335,7 +337,9 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
`
335
337
` ret.place_lane(fx, out_lane_idx).write_cvalue(fx, res_lane);
`
336
338
`}
`
337
339
`}
`
338
``
`-
"llvm.x86.ssse3.pmadd.ub.sw.128" => {
`
``
340
`+
"llvm.x86.ssse3.pmadd.ub.sw.128" | "llvm.x86.avx2.pmadd.ub.sw" => {
`
``
341
`+
`
``
342
`+
`
339
343
`intrinsic_args!(fx, args => (a, b); intrinsic);
`
340
344
``
341
345
`let (lane_count, lane_ty) = a.layout().ty.simd_size_and_type(fx.tcx);
`
`@@ -374,7 +378,9 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
`
374
378
` ret.place_lane(fx, out_lane_idx).write_cvalue(fx, res_lane);
`
375
379
`}
`
376
380
`}
`
377
``
`-
"llvm.x86.sse2.pmadd.wd" => {
`
``
381
`+
"llvm.x86.sse2.pmadd.wd" | "llvm.x86.avx2.pmadd.wd" => {
`
``
382
`+
`
``
383
`+
`
378
384
`intrinsic_args!(fx, args => (a, b); intrinsic);
`
379
385
``
380
386
`assert_eq!(a.layout(), b.layout());
`