summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2015-11-06 18:48:26 -0800
committerMatt Turner <mattst88@gmail.com>2015-11-12 11:08:04 -0800
commit309d4d8f8339248ebdf31b7ef802aae90df44f44 (patch)
tree58c8707f42e43379b422d25721e5e89d046295d1
parent10c54f3655183008c8b61d1fd04f67a141b92243 (diff)
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_validate.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu_validate.c b/src/mesa/drivers/dri/i965/brw_eu_validate.c
index 8236d8defdb..fe9b6a62e26 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_validate.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_validate.c
@@ -402,7 +402,7 @@ static const struct inst_info inst_info[128] = {
},
[BRW_OPCODE_PLN] = {
.gen = GEN_GE(GEN45),
- .acc = ACC_NO_EXPLICIT_SOURCE,
+ .acc = ACC_GEN_DEPENDENT,
},
[BRW_OPCODE_MAD] = {
.gen = GEN_GE(GEN6),
@@ -431,41 +431,52 @@ accumulator_restrictions(const struct brw_device_info *devinfo,
switch (opcode) {
case BRW_OPCODE_SEL:
- if (devinfo->gen < 7)
+ if (devinfo->gen < 7) {
acc = ACC_NO_ACCESS;
- else
+ } else {
acc = ACC_NO_RESTRICTIONS;
+ }
break;
case BRW_OPCODE_CMP:
case BRW_OPCODE_CMPN:
acc = ACC_NO_RESTRICTIONS;
- if (devinfo->gen < 8)
+ if (devinfo->gen < 8) {
acc |= ACC_NO_DESTINATION;
- if (devinfo->gen < 7)
+ }
+ if (devinfo->gen < 7) {
acc |= ACC_NO_SOURCE_MODIFIER |
ACC_NO_INTEGER_SOURCE;
+ }
break;
case BRW_OPCODE_MUL:
- if (devinfo->gen < 8)
+ if (devinfo->gen < 8) {
acc = ACC_NO_SOURCE_MODIFIER;
- else
+ } else {
acc = ACC_NO_RESTRICTIONS;
+ }
break;
case BRW_OPCODE_RNDU:
case BRW_OPCODE_RNDD:
case BRW_OPCODE_RNDE:
case BRW_OPCODE_RNDZ:
- if (devinfo->gen < 8)
+ if (devinfo->gen < 8) {
acc = ACC_NO_ACCESS;
- else
+ } else {
acc = ACC_NO_RESTRICTIONS;
+ }
break;
case BRW_OPCODE_LZD:
- if (devinfo->gen < 8)
+ if (devinfo->gen < 8) {
acc = ACC_NO_EXPLICIT_DESTINATION;
- else
+ } else {
acc = ACC_NO_RESTRICTIONS;
+ }
break;
+ case BRW_OPCODE_PLN:
+ if (devinfo->gen < 9) {
+ acc = ACC_NO_ACCESS;
+ else {
+ }
default:
unreachable("not reached");
}