<font size=2 face="Courier New">Hello,</font>
<br>
<br><font size=2 face="Courier New">I would like to contribute a fix for
a wrong transformation performed </font>
<br><font size=2 face="Courier New">by the Instruction Combiner on sequences
of insertelement/extractelement </font>
<br><font size=2 face="Courier New">instructions.</font>
<br>
<br><font size=2 face="Courier New">When trying to collapse sequences of
insertelement/extractelement</font>
<br><font size=2 face="Courier New">instructions into single shuffle instructions,
there is one specific</font>
<br><font size=2 face="Courier New">case where the Instruction Combiner
wrongly updates the resulting</font>
<br><font size=2 face="Courier New">Mask of shuffle indexes.</font>
<br>
<br><font size=2 face="Courier New">The problem is in function CollectShuffleElments.</font>
<br>
<br><font size=2 face="Courier New">If we have a sequence of insert/extract
element instructions</font>
<br><font size=2 face="Courier New">like the one below:</font>
<br>
<br><font size=2 face="Courier New">  %tmp1 = extractelement <4
x float> %LHS, i32 0</font>
<br><font size=2 face="Courier New">  %tmp2 = insertelement <4
x float> %RHS, float %tmp1, i32 1</font>
<br><font size=2 face="Courier New">  %tmp3 = extractelement <4
x float> %RHS, i32 2</font>
<br><font size=2 face="Courier New">  %tmp4 = insertelement <4
x float> %tmp2, float %tmp3, i32 3</font>
<br>
<br><font size=2 face="Courier New">Where:</font>
<br><font size=2 face="Courier New"> . %RHS will have a mask of [4,5,6,7]</font>
<br><font size=2 face="Courier New"> . %LHS will have a mask of [0,1,2,3]
</font>
<br>
<br><font size=2 face="Courier New">The Mask of shuffle indexes is wrongly
computed to [4,1,6,7]</font>
<br><font size=2 face="Courier New">instead of [4,0,6,7].</font>
<br><font size=2 face="Courier New">When analyzing %tmp2 in order to compute
the Mask for the </font>
<br><font size=2 face="Courier New">resulting shuffle instruction, the
algorithm forgets to update</font>
<br><font size=2 face="Courier New">the mask index at position 1 with the
index associated to the</font>
<br><font size=2 face="Courier New">element extracted from %LHS by instruction
%tmp1.</font>
<br>
<br><font size=2 face="Courier New">The patch in attachment fixes the problem
with the wrong</font>
<br><font size=2 face="Courier New">propagation of shuffle indexes.</font>
<br><font size=2 face="Courier New">It also adds two extra cases to test
</font>
<br><font size=2 face="Courier New">Transforms/InstCombine/vec_shuffle.ll
to check that now we</font>
<br><font size=2 face="Courier New">do the correct thing when collapsing
sequences of insert/extract</font>
<br><font size=2 face="Courier New">element instruction in that problematic
scenario.</font>
<br>
<br>
<br><font size=2 face="sans-serif"><br>
</font><font size=2 face="Courier New">Thanks!</font>
<br><font size=2 face="Courier New">Andrea Di Biagio</font><font size=2 color=blue face="sans-serif"><u><br>
</u></font><a href></a><font size=2 face="Arial"><br>
**********************************************************************<br>
This email and any files transmitted with it are confidential and intended
solely for the use of the individual or entity to whom they are addressed.
If you have received this email in error please notify postmaster@scee.net<br>
This footnote also confirms that this email message has been checked for
all known viruses.<br>
Sony Computer Entertainment Europe Limited<br>
Registered Office: 10 Great Marlborough Street, London W1F 7LP, United
Kingdom<br>
Registered in England: 3277793<br>
**********************************************************************<br>
</font><font size=5 color=#008000 face="Webdings"><br>
P</font><font size=2 color=#008000 face="Arial"><b><i> Please consider
the environment before printing this e-mail</i></b></font>