fix signedness of abs{x}

This commit is contained in:
dzaima 2023-07-20 00:19:54 +03:00
parent 2243fa76c1
commit 0486adccb5
2 changed files with 5 additions and 5 deletions

View File

@ -76,9 +76,9 @@ def __mul{a:T,b:T & [ 8]i32==T} = emit{T, '_mm256_mullo_epi32', a, b}
def mul32{a:T,b:T & [ 4]i64==T} = emit{T, '_mm256_mul_epi32', a, b} # reads only low 32 bits of arguments
def mul32{a:T,b:T & [ 4]u64==T} = emit{T, '_mm256_mul_epu32', a, b} # reads only low 32 bits of arguments
def abs{a:T & w256i{T,8 }} = emit{[32]i8 , '_mm256_abs_epi8', a}
def abs{a:T & w256i{T,16}} = emit{[16]i16, '_mm256_abs_epi16', a}
def abs{a:T & w256i{T,32}} = emit{[ 8]i32, '_mm256_abs_epi32', a}
def abs{a:T & w256i{T,8 }} = emit{T, '_mm256_abs_epi8', a}
def abs{a:T & w256i{T,16}} = emit{T, '_mm256_abs_epi16', a}
def abs{a:T & w256i{T,32}} = emit{T, '_mm256_abs_epi32', a}
def absu{a:T & w256i{T}} = ty_u{abs{a}}
def __add{a:T,b:T & w256i{T, 8}} = emit{T, '_mm256_add_epi8', a, b}; def __sub{a:T,b:T & w256i{T, 8}} = emit{T, '_mm256_sub_epi8', a, b}

View File

@ -138,8 +138,8 @@ def min{a:T,b:T & w128u{T,16}} = a-subs{a,b}
def min{a:T,b:T & T==[ 8]i16} = emit{T, '_mm_min_epi16', a, b}; def max{a:T,b:T & T==[ 8]i16} = emit{T, '_mm_max_epi16', a, b}
def min{a:T,b:T & T==[16]u8 } = emit{T, '_mm_min_epu8', a, b}; def max{a:T,b:T & T==[16]u8 } = emit{T, '_mm_max_epu8', a, b}
def abs{a:T & w128i{T,8 }} = { def U=[16]u8; ty_s{min{U~~a, U**0 - U~~a}} }
def abs{a:T & w128i{T,16}} = max{a, [8]i16**0 - a}
def abs{a:T & w128i{T,8 }} = { def U=[16]u8; T~~min{U~~a, U**0 - U~~a} }
def abs{a:T & w128i{T,16}} = max{a, T**0 - a}
def abs{a:T & w128i{T,32}} = { t:= a>>31; (t^a) - t }
def absu{a:T & w128i{T}} = ty_u{abs{a}}