AMD Athlon Processor x86 Optimization Manual page 33

X86 code optimization
Table of Contents

Advertisement

22007E/0—November 1999
Use Array Style Instead of Pointer Style Code
*res++ = dp;
dp
= vv->x * *m++;
dp += vv->y * *m++;
dp += vv->z * *m++;
dp += vv->w * *m++;
*res++ = dp;
++vv;
/* next input vertex */
m -= 16;
/* reset to start of transform matrix */
}
}
Example 2 (Preferred):
typedef struct {
float x,y,z,w;
} VERTEX;
typedef struct {
float m[4][4];
} MATRIX;
void XForm (float *res, const float *v, const float *m, int
numverts)
{
int i;
const VERTEX* vv = (VERTEX *)v;
const MATRIX* mm = (MATRIX *)m;
VERTEX* rr = (VERTEX *)res;
for (i = 0; i < numverts; i++) {
rr->x = vv->x*mm->m[0][0] + vv->y*mm->m[0][1] +
vv->z*mm->m[0][2] + vv->w*mm->m[0][3];
rr->y = vv->x*mm->m[1][0] + vv->y*mm->m[1][1] +
vv->z*mm->m[1][2] + vv->w*mm->m[1][3];
rr->z = vv->x*mm->m[2][0] + vv->y*mm->m[2][1] +
vv->z*mm->m[2][2] + vv->w*mm->m[2][3];
rr->w = vv->x*mm->m[3][0] + vv->y*mm->m[3][1] +
vv->z*mm->m[3][2] + vv->w*mm->m[3][3];
}
}
AMD Athlon™ Processor x86 Code Optimization
/* write transformed z */
/* write transformed w */
17

Advertisement

Table of Contents
loading

Table of Contents