Absolute value, Absolute value -25, Example 4-18 – Intel ARCHITECTURE IA-32 User Manual
Page 245: Computing absolute value -25

Optimizing for SIMD Integer Applications
4
4-25
Absolute Value
x
|
, where
x
is signed. This example
assumes signed words to be the operands.
movq
MM2, MM0
; make a copy of source1 (A)
pcmpgtw MM0, MM1
; create mask of
; source1>source2 (A>B)
movq
MM4, MM2
; make another copy of A
pxor
MM2, MM1
; create the intermediate value of
; the swap operation - xor(A,B)
pand
MM2, MM0
; create a mask of 0s and xor(A,B)
; elements. Where A>B there will
; be a value xor(A,B) and where
; A<=B there will be 0.
pxor
MM4, MM2
; minima-xor(A, swap mask)
pxor
MM1, MM2
; maxima-xor(B, swap mask)
psubw
MM1, MM4
; absolute difference =
; maxima-minima
Example 4-18 Computing Absolute Value
; Input:
;
MM0 signed
source
operand
; Output:
;
MM1
ABS(MMO)
pxor
MM1, MM1
; set MM1 to all zeros
psubw
MM1, MM0
; make each MM1 word contain the
; negative of each MM0 word
pmaxsw
MM1, MM0
; MM1 will contain only the positive
; (larger) values - the absolute value
Example 4-17 Absolute Difference of Signed Numbers (continued)