blob: 54938b4f2e2fe3d8afa747211e22144e4e596b93 [file] [log] [blame]
!sum
# Average (unsigned byte, unsigned word)
# Instructions: VPAVGB, VPAVGW
- go: Average
asm: "VPAVG[BW]" # Matches VPAVGB (byte) and VPAVGW (word)
in:
- &uint_t # $t will be Uint8xN for VPAVGB, Uint16xN for VPAVGW
go: $t
base: uint
- *uint_t
out:
- *uint_t
# Absolute Value (signed byte, word, dword, qword)
# Instructions: VPABSB, VPABSW, VPABSD, VPABSQ
- go: Abs
asm: "VPABS[BWDQ]" # Matches VPABSB, VPABSW, VPABSD, VPABSQ
in:
- &int_t # $t will be Int8xN, Int16xN, Int32xN, Int64xN
go: $t
base: int
out:
- *int_t # Output is magnitude, fits in the same signed type
# Sign Operation (signed byte, word, dword)
# Applies sign of second operand to the first.
# Instructions: VPSIGNB, VPSIGNW, VPSIGND
- go: CopySign
asm: "VPSIGN[BWD]" # Matches VPSIGNB, VPSIGNW, VPSIGND
in:
- *int_t # value to apply sign to
- *int_t # value from which to take the sign
out:
- *int_t
# Population Count (count set bits in each element)
# Instructions: VPOPCNTB, VPOPCNTW (AVX512_BITALG)
# VPOPCNTD, VPOPCNTQ (AVX512_VPOPCNTDQ)
- go: OnesCount
asm: "VPOPCNT[BWDQ]"
in:
- &any
go: $t
out:
- *any