i965/fs: Set the execution size of the MOVs correctly in opt_combine_constants().
authorFrancisco Jerez <currojerez@riseup.net>
Mon, 27 Jul 2015 16:09:45 +0000 (19:09 +0300)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 29 Jul 2015 11:14:29 +0000 (14:14 +0300)
The execution size was being left equal to the default of 8/16, which
AFAICT would have overwritten components other than the one we wanted
to initialize and could potentially have corrupted other registers.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp

index 0af5a915c9f2d636b728d5ee883d8f7d253ffd2c..c182232285e291a3552408aa4d0708111ea5d9a7 100644 (file)
@@ -277,7 +277,7 @@ fs_visitor::opt_combine_constants()
        */
       exec_node *n = (imm->inst ? imm->inst :
                       imm->block->last_non_control_flow_inst()->next);
-      const fs_builder ibld = bld.at(imm->block, n).exec_all();
+      const fs_builder ibld = bld.at(imm->block, n).exec_all().group(1, 0);
 
       ibld.MOV(reg, fs_reg(imm->val));
       imm->reg = reg.reg;