Skip to content

Commit aee30c5

Browse files
committed
Implement _mm_abs_epi*
1 parent 92a4093 commit aee30c5

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/intrinsics/llvm_x86.rs

+11
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,17 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
514514
let dest = CPlace::for_ptr(Pointer::new(mem_addr), a.layout());
515515
dest.write_cvalue(fx, a);
516516
}
517+
"llvm.x86.ssse3.pabs.b.128" | "llvm.x86.ssse3.pabs.w.128" | "llvm.x86.ssse3.pabs.d.128" => {
518+
let a = match args {
519+
[a] => a,
520+
_ => bug!("wrong number of args for intrinsic {intrinsic}"),
521+
};
522+
let a = codegen_operand(fx, a);
523+
524+
simd_for_each_lane(fx, a, ret, &|fx, _lane_ty, _res_lane_ty, lane| {
525+
fx.bcx.ins().iabs(lane)
526+
});
527+
}
517528
"llvm.x86.addcarry.32" | "llvm.x86.addcarry.64" => {
518529
intrinsic_args!(fx, args => (c_in, a, b); intrinsic);
519530
let c_in = c_in.load_scalar(fx);

0 commit comments

Comments
 (0)