From 48aa6ecb8759fcaed68db4b03600c92572759158 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 1 Aug 2017 10:12:56 -0700 Subject: i965: Only change type of 0.0f to VF if destination stride == 1 The destination stride must be equivalent to a dword if VF is used. Also, since the only compaction table entires with "i:vf" have the destination as "r:f" specifically check that the destination is of type float. Reviewed-by: Scott D Phillips --- src/intel/compiler/brw_eu_compact.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/intel/compiler/brw_eu_compact.c b/src/intel/compiler/brw_eu_compact.c index bf57ddf85c2..79103d78837 100644 --- a/src/intel/compiler/brw_eu_compact.c +++ b/src/intel/compiler/brw_eu_compact.c @@ -1014,7 +1014,8 @@ precompact(const struct gen_device_info *devinfo, brw_inst inst) */ if (brw_inst_imm_ud(devinfo, &inst) == 0x0 && 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_dst_reg_type(devinfo, &inst) == BRW_HW_REG_TYPE_F && + brw_inst_dst_hstride(devinfo, &inst) == BRW_HORIZONTAL_STRIDE_1) { brw_inst_set_src0_reg_type(devinfo, &inst, BRW_HW_REG_IMM_TYPE_VF); } -- cgit v1.2.3