special-cased x86 SSE2 i8 min/max accumulator
This commit is contained in:
parent
f503880cc3
commit
97260e0051
@ -182,4 +182,14 @@ def sum_accumulator{DE==i64, unr, VT=[k]SE==i32 if hasarch{'X86_64'}} = { # TODO
|
||||
extend finish{me}
|
||||
}
|
||||
|
||||
def assoc_accumulator{F if is{F,min} or is{F,max}, unr if knum{unr}, VT=([16]i8), ident if hasarch{'X86_64'} and not hasarch{'SSE4.1'}} = {
|
||||
def adda{M, a, c:([16]i8)} = {
|
||||
mask_ident{F,ident}{M, a, ty_u{c} ^ [16]u8**128}
|
||||
}
|
||||
def {acc, ..._} = acc_impl{adda, F, unr, [16]u8, u8, (ident%256) ^ 128}
|
||||
def me{...} = acc
|
||||
def me{'scal_result'} = i8~~(acc{'scal_result'} ^ 128)
|
||||
extend finish{me}
|
||||
}
|
||||
|
||||
def sum_accumulator{E, unr, VT=[_]E} = assoc_accumulator{__add, unr, VT, 0}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user