aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2017-08-01 10:12:56 -0700
committerMatt Turner <[email protected]>2017-08-21 14:05:23 -0700
commit48aa6ecb8759fcaed68db4b03600c92572759158 (patch)
treec717a1f897308f31657c2ef5e6b32e4c4d18e466
parent56a676eed289bdea928b56e7533023f775468bb2 (diff)
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 <[email protected]>
-rw-r--r--src/intel/compiler/brw_eu_compact.c3
1 files changed, 2 insertions, 1 deletions
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);
}