i965: Don't change F->VF if dest type is DF.
authorMatt Turner <mattst88@gmail.com>
Wed, 21 Dec 2016 16:12:39 +0000 (11:12 -0500)
committerMatt Turner <mattst88@gmail.com>
Fri, 20 Jan 2017 19:40:52 +0000 (11:40 -0800)
We change the immediate source type to VF to allow instruction
compaction, but there are no entires in the compaction table for DF, so
there's no point in doing this.

Additionally, I mixing floating-point types is now allowed except for
F and VF.

src/mesa/drivers/dri/i965/brw_eu_emit.c

index 05c097f66ef14f78ce187babcdb9516c4b98073c..a784b78cb55501f56f187a2572394c9e091f3f81 100644 (file)
@@ -405,7 +405,8 @@ brw_set_src0(struct brw_codegen *p, brw_inst *inst, struct brw_reg reg)
        * If we see a 0.0:F, change the type to VF so that it can be compacted.
        */
       if (brw_inst_imm_ud(devinfo, inst) == 0x0 &&
-          brw_inst_src0_reg_type(devinfo, inst) == BRW_HW_REG_TYPE_F) {
+          brw_inst_src0_reg_type(devinfo, inst) == BRW_HW_REG_TYPE_F &&
+          brw_inst_dst_reg_type(devinfo, inst) != GEN7_HW_REG_NON_IMM_TYPE_DF) {
          brw_inst_set_src0_reg_type(devinfo, inst, BRW_HW_REG_IMM_TYPE_VF);
       }