fetch_vector4( GLcontext *ctx,
const struct prog_src_register *source,
const struct gl_program_machine *machine,
- const struct gl_program *program,
GLfloat result[4] )
{
const GLfloat *src = get_register_pointer(ctx, source, machine);
fetch_vector1( GLcontext *ctx,
const struct prog_src_register *source,
const struct gl_program_machine *machine,
- const struct gl_program *program,
GLfloat result[4] )
{
const GLfloat *src = get_register_pointer(ctx, source, machine);
case OPCODE_ABS:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] = FABSF(a[0]);
result[1] = FABSF(a[1]);
result[2] = FABSF(a[2]);
case OPCODE_ADD:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = a[0] + b[0];
result[1] = a[1] + b[1];
result[2] = a[2] + b[2];
case OPCODE_CMP:
{
GLfloat a[4], b[4], c[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
- fetch_vector4( ctx, &inst->SrcReg[2], machine, program, c );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
+ fetch_vector4( ctx, &inst->SrcReg[2], machine, c );
result[0] = a[0] < 0.0F ? b[0] : c[0];
result[1] = a[1] < 0.0F ? b[1] : c[1];
result[2] = a[2] < 0.0F ? b[2] : c[2];
case OPCODE_COS:
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = result[1] = result[2] = result[3]
= (GLfloat) _mesa_cos(a[0]);
store_vector4( inst, machine, result );
case OPCODE_DP3:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = result[1] = result[2] = result[3] = DOT3(a, b);
store_vector4( inst, machine, result );
if (DEBUG_PROG) {
case OPCODE_DP4:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = result[1] = result[2] = result[3] = DOT4(a,b);
store_vector4( inst, machine, result );
if (DEBUG_PROG) {
case OPCODE_DPH:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = result[1] = result[2] = result[3] =
a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + b[3];
store_vector4( inst, machine, result );
case OPCODE_DST: /* Distance vector */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = 1.0F;
result[1] = a[1] * b[1];
result[2] = a[2];
case OPCODE_EX2: /* Exponential base 2 */
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = result[1] = result[2] = result[3] =
(GLfloat) _mesa_pow(2.0, a[0]);
store_vector4( inst, machine, result );
case OPCODE_FLR:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] = FLOORF(a[0]);
result[1] = FLOORF(a[1]);
result[2] = FLOORF(a[2]);
case OPCODE_FRC:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] = a[0] - FLOORF(a[0]);
result[1] = a[1] - FLOORF(a[1]);
result[2] = a[2] - FLOORF(a[2]);
case OPCODE_INT: /* float to int */
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] = (GLfloat) (GLint) a[0];
result[1] = (GLfloat) (GLint) a[1];
result[2] = (GLfloat) (GLint) a[2];
case OPCODE_KIL: /* ARB_f_p only */
{
GLfloat a[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
if (a[0] < 0.0F || a[1] < 0.0F || a[2] < 0.0F || a[3] < 0.0F) {
return GL_FALSE;
}
case OPCODE_LG2: /* log base 2 */
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = result[1] = result[2] = result[3] = LOG2(a[0]);
store_vector4( inst, machine, result );
}
{
const GLfloat epsilon = 1.0F / 256.0F; /* from NV VP spec */
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
a[0] = MAX2(a[0], 0.0F);
a[1] = MAX2(a[1], 0.0F);
/* XXX ARB version clamps a[3], NV version doesn't */
case OPCODE_LRP:
{
GLfloat a[4], b[4], c[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
- fetch_vector4( ctx, &inst->SrcReg[2], machine, program, c );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
+ fetch_vector4( ctx, &inst->SrcReg[2], machine, c );
result[0] = a[0] * b[0] + (1.0F - a[0]) * c[0];
result[1] = a[1] * b[1] + (1.0F - a[1]) * c[1];
result[2] = a[2] * b[2] + (1.0F - a[2]) * c[2];
case OPCODE_MAD:
{
GLfloat a[4], b[4], c[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
- fetch_vector4( ctx, &inst->SrcReg[2], machine, program, c );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
+ fetch_vector4( ctx, &inst->SrcReg[2], machine, c );
result[0] = a[0] * b[0] + c[0];
result[1] = a[1] * b[1] + c[1];
result[2] = a[2] * b[2] + c[2];
case OPCODE_MAX:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = MAX2(a[0], b[0]);
result[1] = MAX2(a[1], b[1]);
result[2] = MAX2(a[2], b[2]);
case OPCODE_MIN:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = MIN2(a[0], b[0]);
result[1] = MIN2(a[1], b[1]);
result[2] = MIN2(a[2], b[2]);
case OPCODE_MOV:
{
GLfloat result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, result );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, result );
store_vector4( inst, machine, result );
if (DEBUG_PROG) {
printf("MOV (%g %g %g %g)\n",
case OPCODE_MUL:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = a[0] * b[0];
result[1] = a[1] * b[1];
result[2] = a[2] * b[2];
case OPCODE_NOISE1:
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] =
result[1] =
result[2] =
case OPCODE_NOISE2:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] =
result[1] =
result[2] =
case OPCODE_NOISE3:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] =
result[1] =
result[2] =
case OPCODE_NOISE4:
{
GLfloat a[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
result[0] =
result[1] =
result[2] =
GLhalfNV hx, hy;
GLuint *rawResult = (GLuint *) result;
GLuint twoHalves;
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
hx = _mesa_float_to_half(a[0]);
hy = _mesa_float_to_half(a[1]);
twoHalves = hx | (hy << 16);
{
GLfloat a[4], result[4];
GLuint usx, usy, *rawResult = (GLuint *) result;
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
a[0] = CLAMP(a[0], 0.0F, 1.0F);
a[1] = CLAMP(a[1], 0.0F, 1.0F);
usx = IROUND(a[0] * 65535.0F);
{
GLfloat a[4], result[4];
GLuint ubx, uby, ubz, ubw, *rawResult = (GLuint *) result;
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
a[0] = CLAMP(a[0], -128.0F / 127.0F, 1.0F);
a[1] = CLAMP(a[1], -128.0F / 127.0F, 1.0F);
a[2] = CLAMP(a[2], -128.0F / 127.0F, 1.0F);
{
GLfloat a[4], result[4];
GLuint ubx, uby, ubz, ubw, *rawResult = (GLuint *) result;
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
a[0] = CLAMP(a[0], 0.0F, 1.0F);
a[1] = CLAMP(a[1], 0.0F, 1.0F);
a[2] = CLAMP(a[2], 0.0F, 1.0F);
case OPCODE_POW:
{
GLfloat a[4], b[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector1( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector1( ctx, &inst->SrcReg[1], machine, b );
result[0] = result[1] = result[2] = result[3]
= (GLfloat)_mesa_pow(a[0], b[0]);
store_vector4( inst, machine, result );
case OPCODE_RCP:
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
if (DEBUG_PROG) {
if (a[0] == 0)
printf("RCP(0)\n");
case OPCODE_RFL: /* reflection vector */
{
GLfloat axis[4], dir[4], result[4], tmpX, tmpW;
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, axis );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, dir );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, axis );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, dir );
tmpW = DOT3(axis, axis);
tmpX = (2.0F * DOT3(axis, dir)) / tmpW;
result[0] = tmpX * axis[0] - dir[0];
case OPCODE_RSQ: /* 1 / sqrt() */
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
a[0] = FABSF(a[0]);
result[0] = result[1] = result[2] = result[3] = INV_SQRTF(a[0]);
store_vector4( inst, machine, result );
case OPCODE_SCS: /* sine and cos */
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = (GLfloat) _mesa_cos(a[0]);
result[1] = (GLfloat) _mesa_sin(a[0]);
result[2] = 0.0; /* undefined! */
case OPCODE_SEQ: /* set on equal */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] == b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] == b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] == b[2]) ? 1.0F : 0.0F;
case OPCODE_SGE: /* set on greater or equal */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] >= b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] >= b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] >= b[2]) ? 1.0F : 0.0F;
case OPCODE_SGT: /* set on greater */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] > b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] > b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] > b[2]) ? 1.0F : 0.0F;
case OPCODE_SIN:
{
GLfloat a[4], result[4];
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = result[1] = result[2] = result[3]
= (GLfloat) _mesa_sin(a[0]);
store_vector4( inst, machine, result );
case OPCODE_SLE: /* set on less or equal */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] <= b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] <= b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] <= b[2]) ? 1.0F : 0.0F;
case OPCODE_SLT: /* set on less */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] < b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] < b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] < b[2]) ? 1.0F : 0.0F;
case OPCODE_SNE: /* set on not equal */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = (a[0] != b[0]) ? 1.0F : 0.0F;
result[1] = (a[1] != b[1]) ? 1.0F : 0.0F;
result[2] = (a[2] != b[2]) ? 1.0F : 0.0F;
case OPCODE_SUB:
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = a[0] - b[0];
result[1] = a[1] - b[1];
result[2] = a[2] - b[2];
else
#endif
lambda = 0.0;
- fetch_vector4(ctx, &inst->SrcReg[0], machine, program, coord);
+ fetch_vector4(ctx, &inst->SrcReg[0], machine, coord);
machine->FetchTexelLod(ctx, coord, lambda, inst->TexSrcUnit, color);
if (DEBUG_PROG) {
printf("TEX (%g, %g, %g, %g) = texture[%d][%g, %g, %g, %g], "
else
#endif
lambda = 0.0;
- fetch_vector4(ctx, &inst->SrcReg[0], machine, program, coord);
+ fetch_vector4(ctx, &inst->SrcReg[0], machine, coord);
/* coord[3] is the bias to add to lambda */
bias = texUnit->LodBias + coord[3];
if (texUnit->_Current)
/* Texture lookup w/ partial derivatives for LOD */
{
GLfloat texcoord[4], dtdx[4], dtdy[4], color[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, texcoord );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, dtdx );
- fetch_vector4( ctx, &inst->SrcReg[2], machine, program, dtdy );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, texcoord );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, dtdx );
+ fetch_vector4( ctx, &inst->SrcReg[2], machine, dtdy );
machine->FetchTexelDeriv(ctx, texcoord, dtdx, dtdy,
inst->TexSrcUnit, color );
store_vector4( inst, machine, color );
else
#endif
lambda = 0.0;
- fetch_vector4(ctx, &inst->SrcReg[0], machine, program,texcoord);
+ fetch_vector4(ctx, &inst->SrcReg[0], machine, texcoord);
/* Not so sure about this test - if texcoord[3] is
* zero, we'd probably be fine except for an ASSERT in
* IROUND_POS() which gets triggered by the inf values created.
else
#endif
lambda = 0.0;
- fetch_vector4(ctx, &inst->SrcReg[0], machine, program,texcoord);
+ fetch_vector4(ctx, &inst->SrcReg[0], machine, texcoord);
if (inst->TexSrcTarget != TEXTURE_CUBE_INDEX &&
texcoord[3] != 0.0) {
texcoord[0] /= texcoord[3];
GLfloat a[4], result[4];
const GLuint *rawBits = (const GLuint *) a;
GLhalfNV hx, hy;
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
hx = rawBits[0] & 0xffff;
hy = rawBits[0] >> 16;
result[0] = result[2] = _mesa_half_to_float(hx);
GLfloat a[4], result[4];
const GLuint *rawBits = (const GLuint *) a;
GLushort usx, usy;
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
usx = rawBits[0] & 0xffff;
usy = rawBits[0] >> 16;
result[0] = result[2] = usx * (1.0f / 65535.0f);
{
GLfloat a[4], result[4];
const GLuint *rawBits = (const GLuint *) a;
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = (((rawBits[0] >> 0) & 0xff) - 128) / 127.0F;
result[1] = (((rawBits[0] >> 8) & 0xff) - 128) / 127.0F;
result[2] = (((rawBits[0] >> 16) & 0xff) - 128) / 127.0F;
{
GLfloat a[4], result[4];
const GLuint *rawBits = (const GLuint *) a;
- fetch_vector1( ctx, &inst->SrcReg[0], machine, program, a );
+ fetch_vector1( ctx, &inst->SrcReg[0], machine, a );
result[0] = ((rawBits[0] >> 0) & 0xff) / 255.0F;
result[1] = ((rawBits[0] >> 8) & 0xff) / 255.0F;
result[2] = ((rawBits[0] >> 16) & 0xff) / 255.0F;
case OPCODE_XPD: /* cross product */
{
GLfloat a[4], b[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
result[0] = a[1] * b[2] - a[2] * b[1];
result[1] = a[2] * b[0] - a[0] * b[2];
result[2] = a[0] * b[1] - a[1] * b[0];
case OPCODE_X2D: /* 2-D matrix transform */
{
GLfloat a[4], b[4], c[4], result[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
- fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
- fetch_vector4( ctx, &inst->SrcReg[2], machine, program, c );
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a );
+ fetch_vector4( ctx, &inst->SrcReg[1], machine, b );
+ fetch_vector4( ctx, &inst->SrcReg[2], machine, c );
result[0] = a[0] + b[0] * c[0] + b[1] * c[1];
result[1] = a[1] + b[0] * c[2] + b[1] * c[3];
result[2] = a[2] + b[0] * c[0] + b[1] * c[1];
{
if (inst->SrcReg[0].File != -1) {
GLfloat a[4];
- fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a);
+ fetch_vector4( ctx, &inst->SrcReg[0], machine, a);
_mesa_printf("%s%g, %g, %g, %g\n", (const char *) inst->Data,
a[0], a[1], a[2], a[3]);
}