gallium: print warning rather than assert(0) for LOG/EXP opcodes
Glean vertProg1 runs all the way through, rather than aborting.
This commit is contained in:
@@ -1516,11 +1516,41 @@ exec_instruction(
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_EXP:
|
||||
assert (0);
|
||||
printf("TGSI: EXP opcode not implemented\n");
|
||||
/* from ARB_v_p:
|
||||
tmp = ScalarLoad(op0);
|
||||
result.x = 2^floor(tmp);
|
||||
result.y = tmp - floor(tmp);
|
||||
result.z = RoughApprox2ToX(tmp);
|
||||
result.w = 1.0;
|
||||
*/
|
||||
#if 0
|
||||
/* something like this: */
|
||||
FETCH( &r[0], 0, CHAN_X );
|
||||
micro_exp2( &r[0], &r[0] );
|
||||
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
|
||||
STORE( &r[0], 0, chan_index );
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_LOG:
|
||||
assert (0);
|
||||
printf("TGSI: LOG opcode not implemented\n");
|
||||
/* from ARB_v_p:
|
||||
tmp = fabs(ScalarLoad(op0));
|
||||
result.x = floor(log2(tmp));
|
||||
result.y = tmp / 2^(floor(log2(tmp)));
|
||||
result.z = RoughApproxLog2(tmp);
|
||||
result.w = 1.0;
|
||||
*/
|
||||
#if 0
|
||||
/* something like this: */
|
||||
FETCH( &r[0], 0, CHAN_X );
|
||||
micro_lg2( &r[0], &r[0] );
|
||||
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
|
||||
STORE( &r[0], 0, chan_index );
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_MUL:
|
||||
|
||||
Reference in New Issue
Block a user