diff options
| author | Tony Jiang <jtony@ca.ibm.com> | 2017-07-05 16:00:38 +0000 |
|---|---|---|
| committer | Tony Jiang <jtony@ca.ibm.com> | 2017-07-05 16:00:38 +0000 |
| commit | 9a91a1811001e976aa90a02ed341023ab9d1841b (patch) | |
| tree | 29a47878a46edf05e8e0d4a15e32242591b0f577 /llvm/lib/Target/PowerPC/PPCISelLowering.h | |
| parent | d560a64e426540ee894f7f861b1ec7380a1a92fd (diff) | |
| download | bcm5719-llvm-9a91a1811001e976aa90a02ed341023ab9d1841b.tar.gz bcm5719-llvm-9a91a1811001e976aa90a02ed341023ab9d1841b.zip | |
[Power9] Exploit vector integer extend instructions when indices aren't correct.
This patch adds on to the exploitation added by https://reviews.llvm.org/D33510.
This now catches build vector nodes where the inputs are coming from sign
extended vector extract elements where the indices used by the vector extract
are not correct. We can still use the new hardware instructions by adding a
shuffle to move the elements to the correct indices. I introduced a new PPCISD
node here because adding a vector_shuffle and changing the elements of the
vector_extracts was getting undone by another DAG combine.
Commit on behalf of Zaara Syeda (syzaara@ca.ibm.com)
Differential Revision: https://reviews.llvm.org/D34009
llvm-svn: 307169
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.h')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.h b/llvm/lib/Target/PowerPC/PPCISelLowering.h index a5108727bb4..ecc35d0a5d0 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.h +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.h @@ -67,6 +67,10 @@ namespace llvm { /// VSFRC that is sign-extended from ByteWidth to a 64-byte integer. VEXTS, + /// SExtVElems, takes an input vector of a smaller type and sign + /// extends to an output vector of a larger type. + SExtVElems, + /// Reciprocal estimate instructions (unary FP ops). FRE, FRSQRTE, |

