[llvm-commits] [patch] Enable the generation of vaddl-type instructions from extloads on ARM

James Molloy james.molloy at arm.com
Tue Sep 4 02:07:17 PDT 2012


FWIW, I reviewed this patch and it LGTM.

On Tue, 2012-09-04 at 09:58 +0100, Silviu Baranga wrote:
> Hi,
> 
> Currently LLVM will not generate a vaddl-type instructions when an extload
> node is in the input dag. All vector extload nodes are implemented with
> a load instruction and a lengthening instruction on ARM. If the lengthening
> instruction is followed by an add instruction, it would be better to
> generate
> a vaddl-type instruction instead.
> 
> To do this, we split all lengthening dag nodes which extend a type to more
> then twice its size (this is OK because these nodes would be implemented by
> multiple instructions anyway) into two lengthening nodes. One node will be
> later
> combined to form the extload node, and the other can be selected as part of
> a
> vaddl-type instruction (there are already patterns for this).
> 
> To stop the dag nodes from re-combining, we insert a BREAK node between
> them. The
> BREAK node is used as an optimization barrier for the DAG combiner, and
> might be 
> useful in other cases as well. We remove the BREAK node in the instruction 
> selection stage.
> 
> This approach allows the reuse of existing selection patterns.
> 
> This patch depends on the following other patch:
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120827/149201.
> html
> 
> Please review!
> 
> Thanks,
> Silviu







More information about the llvm-commits mailing list