In the vec4 backend the generator sets the execution size for all instructions to 8, however, we will have to split certain DF instructions to have an execution size of 4, so we need to indicate this explicitly in the IR for the generator to set the right execution size for them.
We will use this in a later patch when we implement a SIMD splitting pass. --- src/mesa/drivers/dri/i965/brw_ir_vec4.h | 2 ++ src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 3 +++ src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_ir_vec4.h b/src/mesa/drivers/dri/i965/brw_ir_vec4.h index 81b6a13..721772e 100644 --- a/src/mesa/drivers/dri/i965/brw_ir_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_ir_vec4.h @@ -166,6 +166,8 @@ public: bool sol_final_write; /**< gen6: send commit message */ unsigned sol_vertex; /**< gen6: used for setting dst index in SVB header */ + uint8_t exec_size; + bool is_send_from_grf(); unsigned regs_read(unsigned arg) const; bool can_reswizzle(const struct brw_device_info *devinfo, int dst_writemask, diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp index d7e6e2d..c6e040e 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp @@ -1526,6 +1526,9 @@ generate_code(struct brw_codegen *p, } brw_set_default_exec_size(p, BRW_EXECUTE_4); fix_exec_size = true; + } else { + assert(inst->exec_size == 8 || inst->exec_size == 4); + brw_set_default_exec_size(p, cvt(inst->exec_size) - 1); } switch (inst->opcode) { diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index 652b453..265bb17 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -55,6 +55,7 @@ vec4_instruction::vec4_instruction(enum opcode opcode, const dst_reg &dst, this->mlen = 0; this->base_mrf = 0; this->offset = 0; + this->exec_size = 8; this->annotation = NULL; } -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev