参考にならない上にバグってる可能性大のpunpcklbwしない方法(^^;; movd mm0, [x] movd mm1, [y] movd mm2, [z] movd mm3, [w] movq mm4, mm0 movq mm5, mm1 movq mm6, mm0 movq mm7, mm1 pxor mm0, mm2 pxor mm1, mm3 pand mm4, mm2 pand mm5, mm3 pavgb mm6, mm2 pavgb mm7, mm3 pxor mm0, mm1 por mm4, mm5 pand mm0, [MASK] ; MASK dd 0x1010101, 0 pavgb mm6, mm7 pandn mm4, mm0 psubusb mm6, mm4 movd [X], mm6
pavgb を連ねると1大きくなっちゃうことがあるわけで,それをさくっと判定して後からその分を引いちゃえばいいんだろうけど,さくっと判定するロジックが思いつかず. |