On Thu, 2016-04-28 at 15:38 +0200, Iago Toral wrote: > On Thu, 2016-04-28 at 00:19 -0700, Francisco Jerez wrote: > > This is not strictly required for the following changes because none > > of the three-source opcodes we support at the moment in the compiler > > back-end has been removed or redefined, but that's likely to change in > > the future. In any case having hardware instructions specified as a > > pair of hardware device and opcode number explicitly in all cases will > > simplify the opcode look-up interface introduced in a subsequent > > commit, since the opcode number alone is in general ambiguous. > > --- > > src/mesa/drivers/dri/i965/brw_eu.h | 2 +- > > src/mesa/drivers/dri/i965/brw_eu_compact.c | 5 +++-- > > src/mesa/drivers/dri/i965/brw_fs.cpp | 2 +- > > src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 2 +- > > src/mesa/drivers/dri/i965/brw_shader.cpp | 4 ++-- > > src/mesa/drivers/dri/i965/brw_shader.h | 2 +- > > src/mesa/drivers/dri/i965/brw_vec4.cpp | 2 +- > > src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 2 +- > > 8 files changed, 11 insertions(+), 10 deletions(-) > > > > diff --git a/src/mesa/drivers/dri/i965/brw_eu.h > > b/src/mesa/drivers/dri/i965/brw_eu.h > > index 08ad63a..89b4e7f 100644 > > --- a/src/mesa/drivers/dri/i965/brw_eu.h > > +++ b/src/mesa/drivers/dri/i965/brw_eu.h > > @@ -546,7 +546,7 @@ next_offset(const struct brw_device_info *devinfo, void > > *store, int offset) > > } > > > > static inline bool > > -is_3src(enum opcode opcode) > > +is_3src(const struct brw_device_info *devinfo, enum opcode opcode) > > { > > How about adding > > (void) devinfo; > > to prevent any compiler warnings?
Never mind, you actually put devinfo to use in later patches. > > return opcode_descs[opcode].nsrc == 3; > > } > > diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c > > b/src/mesa/drivers/dri/i965/brw_eu_compact.c > > index bca8a84..5ae3fdd 100644 > > --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c > > +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c > > @@ -968,7 +968,7 @@ brw_try_compact_instruction(const struct > > brw_device_info *devinfo, > > > > assert(brw_inst_cmpt_control(devinfo, src) == 0); > > > > - if (is_3src(brw_inst_opcode(devinfo, src))) { > > + if (is_3src(devinfo, brw_inst_opcode(devinfo, src))) { > > if (devinfo->gen >= 8) { > > memset(&temp, 0, sizeof(temp)); > > if (brw_try_compact_3src_instruction(devinfo, &temp, src)) { > > @@ -1202,7 +1202,8 @@ brw_uncompact_instruction(const struct > > brw_device_info *devinfo, brw_inst *dst, > > { > > memset(dst, 0, sizeof(*dst)); > > > > - if (devinfo->gen >= 8 && is_3src(brw_compact_inst_3src_opcode(devinfo, > > src))) { > > + if (devinfo->gen >= 8 && > > + is_3src(devinfo, brw_compact_inst_3src_opcode(devinfo, src))) { > > brw_uncompact_3src_instruction(devinfo, dst, src); > > return; > > } > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > > b/src/mesa/drivers/dri/i965/brw_fs.cpp > > index c7c7a45..66263e3 100644 > > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > > @@ -5359,7 +5359,7 @@ fs_visitor::fixup_3src_null_dest() > > bool progress = false; > > > > foreach_block_and_inst_safe (block, fs_inst, inst, cfg) { > > - if (inst->is_3src() && inst->dst.is_null()) { > > + if (inst->is_3src(devinfo) && inst->dst.is_null()) { > > inst->dst = fs_reg(VGRF, alloc.allocate(dispatch_width / 8), > > inst->dst.type); > > progress = true; > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > > b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > > index ffab0a8..2e8c84f 100644 > > --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp > > @@ -293,7 +293,7 @@ can_take_stride(fs_inst *inst, unsigned arg, unsigned > > stride, > > * This is applicable to 32b datatypes and 16b datatype. 64b > > datatypes > > * cannot use the replicate control. > > */ > > - if (inst->is_3src()) { > > + if (inst->is_3src(devinfo)) { > > if (type_sz(inst->src[arg].type) > 4) > > return stride == 1; > > else > > diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp > > b/src/mesa/drivers/dri/i965/brw_shader.cpp > > index a2281a7..d417d3d 100644 > > --- a/src/mesa/drivers/dri/i965/brw_shader.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp > > @@ -737,9 +737,9 @@ backend_instruction::is_commutative() const > > } > > > > bool > > -backend_instruction::is_3src() const > > +backend_instruction::is_3src(const struct brw_device_info *devinfo) const > > { > > - return ::is_3src(opcode); > > + return ::is_3src(devinfo, opcode); > > } > > > > bool > > diff --git a/src/mesa/drivers/dri/i965/brw_shader.h > > b/src/mesa/drivers/dri/i965/brw_shader.h > > index 8ab8d5b..d77531c 100644 > > --- a/src/mesa/drivers/dri/i965/brw_shader.h > > +++ b/src/mesa/drivers/dri/i965/brw_shader.h > > @@ -101,7 +101,7 @@ struct bblock_t; > > > > #ifdef __cplusplus > > struct backend_instruction : public exec_node { > > - bool is_3src() const; > > + bool is_3src(const struct brw_device_info *devinfo) const; > > bool is_tex() const; > > bool is_math() const; > > bool is_control_flow() const; > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > > index 599e45e..815eaed 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > > @@ -1868,7 +1868,7 @@ vec4_visitor::convert_to_hw_regs() > > src = reg; > > } > > > > - if (inst->is_3src()) { > > + if (inst->is_3src(devinfo)) { > > /* 3-src instructions with scalar sources support arbitrary subnr, > > * but don't actually use swizzles. Convert swizzle into subnr. > > */ > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp > > b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp > > index 92423e1..8faa241 100644 > > --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp > > @@ -324,7 +324,7 @@ try_copy_propagate(const struct brw_device_info > > *devinfo, > > > > unsigned composed_swizzle = brw_compose_swizzle(inst->src[arg].swizzle, > > value.swizzle); > > - if (inst->is_3src() && > > + if (inst->is_3src(devinfo) && > > (value.file == UNIFORM || > > (value.file == ATTR && attributes_per_reg != 1)) && > > !brw_is_single_value_swizzle(composed_swizzle)) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev