From 8beff254e2fc0a7cf858fbadf355a02c53717557 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 24 Mar 2025 00:30:00 +0200 Subject: [PATCH] x86 saturating multiply sum defs --- src/singeli/src/base.singeli | 2 +- src/singeli/src/x86.singeli | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index 8e5bca77..ce497337 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -181,7 +181,7 @@ def { all_hom,any_hom,blend_hom,hom_to_int,store_masked_hom,store_blended_hom, all_top,any_top,blend_top,top_to_int,store_masked_top,store_blended_top, load_expand_bits,make,mask_to_hom,mulw_split,mulh,narrow,narrow_trunc,narrow_pair, - pair,pdep,pext,rbit,sel,shuf_ind,reverse_units,broadcast_sel,absdiff_sum,mul_sum, + pair,pdep,pext,rbit,sel,shuf_ind,reverse_units,broadcast_sel,absdiff_sum,mul_sum,mul_sum_sat, unord,unzip,vfold,vec_select,vec_shuffle,widen,widen_upper,multishift, addp,addpw,addpwa, } diff --git a/src/singeli/src/x86.singeli b/src/singeli/src/x86.singeli index 00429b2d..34356e24 100644 --- a/src/singeli/src/x86.singeli +++ b/src/singeli/src/x86.singeli @@ -84,6 +84,10 @@ def absdiff_sum{8, a:V=[k](u8), b:V if has_bw{V}} = { def mul_sum{2, a:V=[k](i16), b:V if has_bw{V}} = { emit{[k/2]i32, intrin{V, 'madd_epi16'}, a, b} } +def mul_sum_sat{2, a:V=[k](i8), b:[k](u8) if has_bw{V}} = mul_sum_sat{2, b, a} +def mul_sum_sat{2, a:V=[k](u8), b:[k](i8) if has_bw{V}} = { + emit{[k/2]i16, intrin{V, 'maddubs_epi16'}, a, b} +} def x86_low_elts{n, x:V=[k]E} = extract{x86_vec_low{n,E}, x, 0}