i965: Actually check whether the opcode is supported.
authorMatt Turner <mattst88@gmail.com>
Fri, 29 Apr 2016 23:54:55 +0000 (16:54 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 4 May 2016 05:33:59 +0000 (22:33 -0700)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_eu.c
src/mesa/drivers/dri/i965/brw_eu_validate.c

index 102e4ca..14b2da4 100644 (file)
@@ -583,7 +583,6 @@ gen_from_devinfo(const struct brw_device_info *devinfo)
 
 /* Return the matching opcode_desc for the specified opcode number and
  * hardware generation, or NULL if the opcode is not supported by the device.
- * XXX -- Actually check whether the opcode is supported.
  */
 const struct opcode_desc *
 brw_opcode_desc(const struct brw_device_info *devinfo, enum opcode opcode)
@@ -591,7 +590,8 @@ brw_opcode_desc(const struct brw_device_info *devinfo, enum opcode opcode)
    if (opcode >= ARRAY_SIZE(opcode_descs))
       return NULL;
 
-   if (opcode_descs[opcode].name)
+   enum gen gen = gen_from_devinfo(devinfo);
+   if ((opcode_descs[opcode].gens & gen) != 0)
       return &opcode_descs[opcode];
    else
       return NULL;
index 6f55df9..dbf75e4 100644 (file)
@@ -121,8 +121,7 @@ static bool
 is_unsupported_inst(const struct brw_device_info *devinfo,
                     const brw_inst *inst)
 {
-   int gen = gen_from_devinfo(devinfo);
-   return (opcode_descs[brw_inst_opcode(devinfo, inst)].gens & gen) == 0;
+   return brw_opcode_desc(devinfo, brw_inst_opcode(devinfo, inst)) == NULL;
 }
 
 bool