diff options
| author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-08-03 09:24:29 +0000 |
|---|---|---|
| committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-08-03 09:24:29 +0000 |
| commit | d62c5ec2fe374dc00bcd315abbee9839b80457b2 (patch) | |
| tree | 16f46a181dde0edbdc50e462f371c2d1d97683a9 /llvm/lib/Target/ARM | |
| parent | 2c4dcf05760b6891ec2bec25772774002a83be3a (diff) | |
| download | bcm5719-llvm-d62c5ec2fe374dc00bcd315abbee9839b80457b2.tar.gz bcm5719-llvm-d62c5ec2fe374dc00bcd315abbee9839b80457b2.zip | |
[ARM] FP16: support vector zip and unzip
This is addressing PR38404.
Differential Revision: https://reviews.llvm.org/D50186
llvm-svn: 338835
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index 9592dd53c34..2f7a0e3c4f3 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -3030,11 +3030,13 @@ void ARMDAGToDAGISel::Select(SDNode *N) { switch (VT.getSimpleVT().SimpleTy) { default: return; case MVT::v8i8: Opc = ARM::VZIPd8; break; + case MVT::v4f16: case MVT::v4i16: Opc = ARM::VZIPd16; break; case MVT::v2f32: // vzip.32 Dd, Dm is a pseudo-instruction expanded to vtrn.32 Dd, Dm. case MVT::v2i32: Opc = ARM::VTRNd32; break; case MVT::v16i8: Opc = ARM::VZIPq8; break; + case MVT::v8f16: case MVT::v8i16: Opc = ARM::VZIPq16; break; case MVT::v4f32: case MVT::v4i32: Opc = ARM::VZIPq32; break; @@ -3051,11 +3053,13 @@ void ARMDAGToDAGISel::Select(SDNode *N) { switch (VT.getSimpleVT().SimpleTy) { default: return; case MVT::v8i8: Opc = ARM::VUZPd8; break; + case MVT::v4f16: case MVT::v4i16: Opc = ARM::VUZPd16; break; case MVT::v2f32: // vuzp.32 Dd, Dm is a pseudo-instruction expanded to vtrn.32 Dd, Dm. case MVT::v2i32: Opc = ARM::VTRNd32; break; case MVT::v16i8: Opc = ARM::VUZPq8; break; + case MVT::v8f16: case MVT::v8i16: Opc = ARM::VUZPq16; break; case MVT::v4f32: case MVT::v4i32: Opc = ARM::VUZPq32; break; |

