AMD Athlon Processor x86 Optimization Manual page 79

X86 code optimization
Table of Contents

Advertisement

22007E/0—November 1999
Example 4:
Replace Branches with Computation in 3DNow!™ Code
C code:
#define PI 3.14159265358979323
float x,z,r,res;
/* 0 <= r <= PI/4 */
z = abs(x)
if (z < 1) {
res = r;
}
else {
res = PI/2-r;
}
3DNow! code:
;in:
MM0 = x
;
MM1 = r
;out: MM1 = res
MOVQ
MM5, mabs
MOVQ
MM6, one
PAND
MM0, MM5
PCMPGTD
MM6, MM0
MOVQ
MM4, pio2
PFSUB
MM4, MM1
PANDN
MM6, MM4
PFMAX
MM1, MM6
AMD Athlon™ Processor x86 Code Optimization
; mask to clear sign bit
; 1.0
; z=abs(x)
; z < 1 ? 0xffffffff : 0
; pi/2
; pi/2-r
; z < 1 ? 0 : pi/2-r
; res = z < 1 ? r : pi/2-r
63

Advertisement

Table of Contents
loading

Table of Contents