mulHi → mulh for high half of element result

to not be confused with mulwHi or zipHi where it means providing the high batch of elements
This commit is contained in:
dzaima 2023-11-18 00:41:12 +02:00
parent c8cdaf0216
commit 56cbe4aa03
5 changed files with 9 additions and 9 deletions

View File

@ -100,7 +100,7 @@ Some may also support one scalar argument or arguments with different widths.
- `__sub{a:VI, b:VI} : VI` - `a - b` - `__sub{a:VI, b:VI} : VI` - `a - b`
- `__div{a:V, b:V} : V` - `a / b` - `__div{a:V, b:V} : V` - `a / b`
- `__mul{a:V, b:V} : V` - `a * b` - `__mul{a:V, b:V} : V` - `a * b`
- `mulHi{a:VI, b:VI} : VI` - high half of multiplication - `mulh{a:VI, b:VI} : VI` - high half of multiplication
<!-- --> <!-- -->
- `__eq`, `__ne`, `__ge`, `__gt`, `__le`, `__lt` - comparison; `{a:V, b:V} : mt{V}` - `__eq`, `__ne`, `__ge`, `__gt`, `__le`, `__lt` - comparison; `{a:V, b:V} : mt{V}`
<!-- --> <!-- -->

View File

@ -14,10 +14,10 @@ def packQQ{{a, b}} = packQQ{a, b}
# arith # arith
def mulHi{a:T,b:T & [16]i16==T } = emit{T, '_mm256_mulhi_epi16', a, b} def mulh {a:T,b:T & [16]i16==T} = emit{T, '_mm256_mulhi_epi16', a, b}
def mulHi{a:T,b:T & [16]u16==T } = emit{T, '_mm256_mulhi_epu16', a, b} def mulh {a:T,b:T & [16]u16==T} = emit{T, '_mm256_mulhi_epu16', 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]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 mul32{a:T,b:T & [ 4]u64==T} = emit{T, '_mm256_mul_epu32', a, b} # reads only low 32 bits of arguments
# structural operations # structural operations

View File

@ -166,7 +166,7 @@ def lvec{T, n, w & isvec{T} & vcount{T}==n & elwidth{T}==w} = 1
def { def {
absu,andAllZero,andnz,b_getBatch,clmul,cvt,extract,fold_addw,half, absu,andAllZero,andnz,b_getBatch,clmul,cvt,extract,fold_addw,half,
homAll,homAny,homBlend,homMask,homMaskStore,homMaskStoreF,loadBatchBit, homAll,homAny,homBlend,homMask,homMaskStore,homMaskStoreF,loadBatchBit,
loadLow,make,mulw,mulHi,narrow,narrowPair,packHi,packLo,packQ,pair,pdep, loadLow,make,mulw,mulh,narrow,narrowPair,packHi,packLo,packQ,pair,pdep,
pext,popcRand,sel,shl,shr,shuf,shuf16Hi,shuf16Lo,shufHalves,storeLow, pext,popcRand,sel,shl,shr,shuf,shuf16Hi,shuf16Lo,shufHalves,storeLow,
topBlend,topMask,topMaskStore,topMaskStoreF,unord,unpackQ,vfold,widen, topBlend,topMask,topMaskStore,topMaskStoreF,unord,unpackQ,vfold,widen,
zip,zipHi,zipLo zip,zipHi,zipLo

View File

@ -48,7 +48,7 @@ def arithChk2{F, M, w:T, x:T & same{F,__mul} & isvec{T} & i8==eltype{T} & hasarc
} }
def arithChk2{F, M, w:T, x:T & same{F,__mul} & isvec{T} & i16==eltype{T} & hasarch{'X86_64'}} = { def arithChk2{F, M, w:T, x:T & same{F,__mul} & isvec{T} & i16==eltype{T} & hasarch{'X86_64'}} = {
rl:= __mul{w,x} rl:= __mul{w,x}
rh:= mulHi{w,x} rh:= mulh{w,x}
tup{rl, tup{'anyne', rh, rl>>15}} tup{rl, tup{'anyne', rh, rl>>15}}
} }
def arithChk2{F, M, w:T, x:T & same{F,__mul} & isvec{T} & i32==eltype{T} & hasarch{'X86_64'}} = { def arithChk2{F, M, w:T, x:T & same{F,__mul} & isvec{T} & i32==eltype{T} & hasarch{'X86_64'}} = {

View File

@ -28,8 +28,8 @@ def shl{S==[16]u8, x:T, n & w128{T}} = T ~~ emit{T, '_mm_bslli_si128', x, n}
def shr{S==[16]u8, x:T, n & w128{T}} = T ~~ emit{T, '_mm_bsrli_si128', x, n} def shr{S==[16]u8, x:T, n & w128{T}} = T ~~ emit{T, '_mm_bsrli_si128', x, n}
# integer arith # integer arith
def mulHi{a:T,b:T & [8]i16==T} = emit{T, '_mm_mulhi_epi16', a, b} def mulh{a:T,b:T & [8]i16==T} = emit{T, '_mm_mulhi_epi16', a, b}
def mulHi{a:T,b:T & [8]u16==T} = emit{T, '_mm_mulhi_epu16', a, b} def mulh{a:T,b:T & [8]u16==T} = emit{T, '_mm_mulhi_epu16', a, b}
def mul32{a:T,b:T & [2]u64==T} = emit{T, '_mm_mul_epu32', a, b} # reads only low 32 bits of arguments def mul32{a:T,b:T & [2]u64==T} = emit{T, '_mm_mul_epu32', a, b} # reads only low 32 bits of arguments
def __mul{a:T,b:T & [4]i32==T} = { def __mul{a:T,b:T & [4]i32==T} = {
def mu{x, y} = [4]i32 ~~ mul32{[2]u64~~x, [2]u64~~y} def mu{x, y} = [4]i32 ~~ mul32{[2]u64~~x, [2]u64~~y}