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:
parent
c8cdaf0216
commit
56cbe4aa03
@ -100,7 +100,7 @@ Some may also support one scalar argument or arguments with different widths.
|
||||
- `__sub{a:VI, b:VI} : VI` - `a - b`
|
||||
- `__div{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}`
|
||||
<!-- -->
|
||||
|
||||
@ -14,10 +14,10 @@ def packQQ{{a, b}} = packQQ{a, b}
|
||||
|
||||
|
||||
# arith
|
||||
def mulHi{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 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 mulh {a:T,b:T & [16]i16==T} = emit{T, '_mm256_mulhi_epi16', 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]u64==T} = emit{T, '_mm256_mul_epu32', a, b} # reads only low 32 bits of arguments
|
||||
|
||||
# structural operations
|
||||
|
||||
|
||||
@ -166,7 +166,7 @@ def lvec{T, n, w & isvec{T} & vcount{T}==n & elwidth{T}==w} = 1
|
||||
def {
|
||||
absu,andAllZero,andnz,b_getBatch,clmul,cvt,extract,fold_addw,half,
|
||||
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,
|
||||
topBlend,topMask,topMaskStore,topMaskStoreF,unord,unpackQ,vfold,widen,
|
||||
zip,zipHi,zipLo
|
||||
|
||||
@ -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'}} = {
|
||||
rl:= __mul{w,x}
|
||||
rh:= mulHi{w,x}
|
||||
rh:= mulh{w,x}
|
||||
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'}} = {
|
||||
|
||||
@ -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}
|
||||
|
||||
# integer arith
|
||||
def mulHi{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]i16==T} = emit{T, '_mm_mulhi_epi16', 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 __mul{a:T,b:T & [4]i32==T} = {
|
||||
def mu{x, y} = [4]i32 ~~ mul32{[2]u64~~x, [2]u64~~y}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user