summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_asm.c
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2011-04-24 08:30:08 +1000
committerDave Airlie <[email protected]>2011-04-24 08:30:08 +1000
commit22d5a71e4dedfc047e1a14082b7d0d287cfe910e (patch)
treed6e8d6612c7432b7c1947c1f7e9c24f8285756d5 /src/gallium/drivers/r600/r600_asm.c
parente4da46e007de5c83202976a12efb0e894494a354 (diff)
r600g: PV/PS have cycle restrictions in scalar operations
In the R600 ISA document: Section 4.7.5 Cycle restrictions for the ALU.trans states that PV/PS have cycle restrictions wrt constants. This is part of a fix for the LIT tests Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_asm.c')
-rw-r--r--src/gallium/drivers/r600/r600_asm.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 7e854b1b81d..4cdd1ed698f 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -709,8 +709,12 @@ static int check_scalar(struct r600_bc *bc, struct r600_bc_alu *alu,
if (r)
return r;
}
- // Constants already processed
- // No restrictions on PV, PS
+ // PV PS restrictions
+ if (const_count && (sel == 254 || sel == 255)) {
+ cycle = cycle_for_bank_swizzle_scl[bank_swizzle][src];
+ if (cycle < const_count)
+ return -1;
+ }
}
return 0;
}