summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2018-01-21 12:20:01 -0500
committerRob Clark <[email protected]>2018-02-10 14:54:58 -0500
commitb2fc94f0745b375b586dbd2685b1c268f4267747 (patch)
tree9e357b45d69b6826029b24485eb42eec80cf16c5 /src/gallium/drivers/freedreno/ir3/disasm-a3xx.c
parent1b658533e1109b8ff9a6578a7eb4b390454e7876 (diff)
freedreno/ir3: add encoding/decoding for (sat) bit
Seems to be there since a3xx, but we always lowered fsat. But we can shave some instructions, especially in shaders that use lots of clamp(foo, 0.0, 1.0) by not lowering fsat. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/ir3/disasm-a3xx.c')
-rw-r--r--src/gallium/drivers/freedreno/ir3/disasm-a3xx.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c b/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c
index 1c81c387127..5499e19b446 100644
--- a/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c
+++ b/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c
@@ -980,18 +980,18 @@ static void print_instr(uint32_t *dwords, int level, int n)
* diff'ing..
*/
+ repeat = instr_repeat(instr);
+
if (instr->sync)
printf("(sy)");
if (instr->ss && ((instr->opc_cat <= 4) || (instr->opc_cat == 7)))
printf("(ss)");
if (instr->jmp_tgt)
printf("(jp)");
- if (instr->repeat && (instr->opc_cat <= 4)) {
- printf("(rpt%d)", instr->repeat);
- repeat = instr->repeat;
- } else {
- repeat = 0;
- }
+ if (instr_sat(instr))
+ printf("(sat)");
+ if (repeat)
+ printf("(rpt%d)", repeat);
if (instr->ul && ((2 <= instr->opc_cat) && (instr->opc_cat <= 4)))
printf("(ul)");