<p dir="ltr"></p>
<p dir="ltr">On Tue, Apr 14, 2015 at 2:00 PM, Connor Abbott <<a href="mailto:cwabbott0@gmail.com">cwabbott0@gmail.com</a>> wrote:<br>
> On Tue, Apr 14, 2015 at 4:56 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
>> On Tue, Apr 14, 2015 at 1:39 PM, Connor Abbott <<a href="mailto:cwabbott0@gmail.com">cwabbott0@gmail.com</a>> wrote:<br>
>>> On Tue, Apr 14, 2015 at 3:55 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
>>>> On Tue, Apr 14, 2015 at 12:51 PM, Connor Abbott <<a href="mailto:cwabbott0@gmail.com">cwabbott0@gmail.com</a>> wrote:<br>
>>>>> We weren't comparing the right number of components when checking<br>
>>>>> swizzles. Use nir_ssa_alu_instr_num_src_components() to do the right<br>
>>>><br>
>>>> I don't like the name of that function, but oh well.<br>
>>><br>
>>> Suggestions for a better name are welcome :).<br>
>><br>
>> How about nir_alu_instr_ssa_src_num_components or<br>
>> nir_alu_instr_num_ssa_src_components?<br>
>> --Jason<br>
><br>
> I think I had something like that initially, but you wanted to change<br>
> it since it actually depends on the destination of the instr being<br>
> SSA. Both of those, especially the second one, seem to imply that the<br>
> src is SSA (and not necessarily the dest).</p>
<p dir="ltr">Right...</p>
<p dir="ltr">> Connor<br>
><br>
>><br>
>>>><br>
>>>> Reviewed-by: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br>
>>>><br>
>>>>> thing.<br>
>>>>><br>
>>>>> I haven't piglited this yet, but it seems straightforward.<br>
>>>>><br>
>>>>> Cc: Ian Romanick <<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@intel.com</a>><br>
>>>>> Signed-off-by: Connor Abbott <<a href="mailto:cwabbott0@gmail.com">cwabbott0@gmail.com</a>><br>
>>>>> ---<br>
>>>>> src/glsl/nir/nir_opt_cse.c | 17 +++++++----------<br>
>>>>> 1 file changed, 7 insertions(+), 10 deletions(-)<br>
>>>>><br>
>>>>> diff --git a/src/glsl/nir/nir_opt_cse.c b/src/glsl/nir/nir_opt_cse.c<br>
>>>>> index 9b38320..db873ce 100644<br>
>>>>> --- a/src/glsl/nir/nir_opt_cse.c<br>
>>>>> +++ b/src/glsl/nir/nir_opt_cse.c<br>
>>>>> @@ -37,20 +37,18 @@ struct cse_state {<br>
>>>>> };<br>
>>>>><br>
>>>>> static bool<br>
>>>>> -nir_alu_srcs_equal(nir_alu_src src1, nir_alu_src src2, uint8_t read_mask)<br>
>>>>> +nir_alu_srcs_equal(nir_alu_instr *alu1, nir_alu_instr *alu2, unsigned src)<br>
>>>>> {<br>
>>>>> - if (src1.abs != src2.abs || src1.negate != src2.negate)<br>
>>>>> + if (alu1->src[src].abs != alu2->src[src].abs ||<br>
>>>>> + alu1->src[src].negate != alu2->src[src].negate)<br>
>>>>> return false;<br>
>>>>><br>
>>>>> - for (int i = 0; i < 4; ++i) {<br>
>>>>> - if (!(read_mask & (1 << i)))<br>
>>>>> - continue;<br>
>>>>> -<br>
>>>>> - if (src1.swizzle[i] != src2.swizzle[i])<br>
>>>>> + for (unsigned i = 0; i < nir_ssa_alu_instr_src_components(alu1, src); i++) {<br>
>>>>> + if (alu1->src[src].swizzle[i] != alu2->src[src].swizzle[i])<br>
>>>>> return false;<br>
>>>>> }<br>
>>>>><br>
>>>>> - return nir_srcs_equal(src1.src, src2.src);<br>
>>>>> + return nir_srcs_equal(alu1->src[src].src, alu2->src[src].src);<br>
>>>>> }<br>
>>>>><br>
>>>>> static bool<br>
>>>>> @@ -74,8 +72,7 @@ nir_instrs_equal(nir_instr *instr1, nir_instr *instr2)<br>
>>>>> return false;<br>
>>>>><br>
>>>>> for (unsigned i = 0; i < nir_op_infos[alu1->op].num_inputs; i++) {<br>
>>>>> - if (!nir_alu_srcs_equal(alu1->src[i], alu2->src[i],<br>
>>>>> - (1 << alu1->dest.dest.ssa.num_components) - 1))<br>
>>>>> + if (!nir_alu_srcs_equal(alu1, alu2, i))<br>
>>>>> return false;<br>
>>>>> }<br>
>>>>> return true;<br>
>>>>> --<br>
>>>>> 2.1.0<br>
>>>>><br>
>>>>> _______________________________________________<br>
>>>>> mesa-dev mailing list<br>
>>>>> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
>>>>> <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></p>