mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
gallium: implement TGSI_OPCODE_DP2A, add sqrt to NRM3/NRM4
This commit is contained in:
parent
49680dae5d
commit
cf9836cf09
1 changed files with 19 additions and 3 deletions
|
|
@ -2034,7 +2034,21 @@ exec_instruction(
|
|||
|
||||
case TGSI_OPCODE_DOT2ADD:
|
||||
/* TGSI_OPCODE_DP2A */
|
||||
assert (0);
|
||||
FETCH( &r[0], 0, CHAN_X );
|
||||
FETCH( &r[1], 1, CHAN_X );
|
||||
micro_mul( &r[0], &r[0], &r[1] );
|
||||
|
||||
FETCH( &r[1], 0, CHAN_Y );
|
||||
FETCH( &r[2], 1, CHAN_Y );
|
||||
micro_mul( &r[1], &r[1], &r[2] );
|
||||
micro_add( &r[0], &r[0], &r[1] );
|
||||
|
||||
FETCH( &r[2], 2, CHAN_X );
|
||||
micro_add( &r[0], &r[0], &r[2] );
|
||||
|
||||
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
|
||||
STORE( &r[0], 0, chan_index );
|
||||
}
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_INDEX:
|
||||
|
|
@ -2479,7 +2493,8 @@ exec_instruction(
|
|||
micro_mul( &dot, &r[2], &r[2] );
|
||||
micro_add( &tmp, &tmp, &dot );
|
||||
|
||||
/* tmp = 1 / tmp */
|
||||
/* tmp = 1 / sqrt(tmp) */
|
||||
micro_sqrt( &tmp, &tmp );
|
||||
micro_div( &tmp, &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], &tmp );
|
||||
|
||||
/* note: w channel is undefined */
|
||||
|
|
@ -2512,7 +2527,8 @@ exec_instruction(
|
|||
micro_mul( &dot, &r[3], &r[3] );
|
||||
micro_add( &tmp, &tmp, &dot );
|
||||
|
||||
/* tmp = 1 / tmp */
|
||||
/* tmp = 1 / sqrt(tmp) */
|
||||
micro_sqrt( &tmp, &tmp );
|
||||
micro_div( &tmp, &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C], &tmp );
|
||||
|
||||
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue