This commit is contained in:
Ryan Oldenburg 2022-06-20 22:24:31 -05:00
parent 4870c8f283
commit b302c9b38e

View file

@ -415,22 +415,18 @@ proc applyOpacity*(target: Image | Mask, opacity: float32) {.raises: [].} =
if mm_movemask_epi8(mm_cmpeq_epi16(values, zeroVec)) != 0xffff:
var
valuesEven = mm_slli_epi16(mm_andnot_si128(oddMask, values), 8)
valuesEven = mm_slli_epi16(values, 8)
valuesOdd = mm_and_si128(values, oddMask)
# values * opacity
valuesEven = mm_mulhi_epu16(valuesEven, opacityVec)
valuesOdd = mm_mulhi_epu16(valuesOdd, opacityVec)
# div 255
valuesEven = mm_srli_epi16(mm_mulhi_epu16(valuesEven, div255), 7)
valuesOdd = mm_srli_epi16(mm_mulhi_epu16(valuesOdd, div255), 7)
valuesOdd = mm_slli_epi16(valuesOdd, 8)
mm_storeu_si128(
target.data[index].addr,
mm_or_si128(valuesEven, valuesOdd)
mm_or_si128(valuesEven, mm_slli_epi16(valuesOdd, 8))
)
i += 16