ir3: update info about applicability of saturation modifier

On a6xx saturation doesn't work on cat4 and on bary.f

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9751>
This commit is contained in:
Danylo Piliaiev 2021-03-22 15:06:08 +02:00 committed by Marge Bot
parent 5942a0f1ac
commit 208250b376
2 changed files with 3 additions and 5 deletions

View File

@ -1042,12 +1042,14 @@ static inline bool instr_sat(instr_t *instr)
static inline bool is_sat_compatible(opc_t opc)
{
/* TODO probably opc_cat==4 is ok too */
/* On a6xx saturation doesn't work on cat4 */
if (opc_cat(opc) != 2 && opc_cat(opc) != 3)
return false;
switch (opc) {
/* On a3xx and a6xx saturation doesn't work on bary.f */
case OPC_BARY_F:
/* On a6xx saturation doesn't work on sel.* */
case OPC_SEL_B16:
case OPC_SEL_B32:
case OPC_SEL_S16:

View File

@ -429,10 +429,6 @@ emit_alu(struct ir3_context *ctx, nir_alu_instr *alu)
* (sat) bit, we can just fold the (sat) flag back to the
* src instruction and create a mov. This is easier for cp
* to eliminate.
*
* NOTE: a3xx definitely seen not working with flat bary.f. Same test
* uses ldlv on a4xx+, so not definitive. Seems rare enough to apply
* everywhere.
*/
if (alu->src[0].src.is_ssa &&
is_sat_compatible(src[0]->opc) &&