diff options
| author | Diogo N. Sampaio <diogo.sampaio@arm.com> | 2019-04-10 13:28:06 +0000 | 
|---|---|---|
| committer | Diogo N. Sampaio <diogo.sampaio@arm.com> | 2019-04-10 13:28:06 +0000 | 
| commit | 651463e4a8fe4ef29cdbe595ce32b1ffba6b2559 (patch) | |
| tree | 04ffec26758a292bb01b9c4145bd1d7bdaadb6dd /llvm/lib/Target/ARM | |
| parent | 48e2eb0b27187776f4a033562828bc44f4dcf58d (diff) | |
| download | bcm5719-llvm-651463e4a8fe4ef29cdbe595ce32b1ffba6b2559.tar.gz bcm5719-llvm-651463e4a8fe4ef29cdbe595ce32b1ffba6b2559.zip | |
[ARM] [FIX] Add missing f16 vector operations lowering
Summary:
Add missing <8xhalf> shufflevectors pattern, when using concat_vector dag node.
As well, allows <8xhalf> and <4xhalf> vldup1 operations.
These instructions are required for v8.2a fp16 lowering of vmul_n_f16, vmulq_n_f16 and vmulq_lane_f16 intrinsics.
Reviewers: olista01, pbarrio, LukeGeeson, efriedma
Reviewed By: efriedma
Subscribers: efriedma, javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60319
llvm-svn: 358081
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 5 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrNEON.td | 2 | 
2 files changed, 6 insertions, 1 deletions
| diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index 5facc8d6b11..b9c4317c9cf 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -2212,7 +2212,10 @@ void ARMDAGToDAGISel::SelectVLDDup(SDNode *N, bool IsIntrinsic,    case MVT::v8i8:    case MVT::v16i8: OpcodeIndex = 0; break;    case MVT::v4i16: -  case MVT::v8i16: OpcodeIndex = 1; break; +  case MVT::v8i16: +  case MVT::v4f16: +  case MVT::v8f16: +                  OpcodeIndex = 1; break;    case MVT::v2f32:    case MVT::v2i32:    case MVT::v4f32: diff --git a/llvm/lib/Target/ARM/ARMInstrNEON.td b/llvm/lib/Target/ARM/ARMInstrNEON.td index 2c996b571d6..ba5e255568b 100644 --- a/llvm/lib/Target/ARM/ARMInstrNEON.td +++ b/llvm/lib/Target/ARM/ARMInstrNEON.td @@ -7576,6 +7576,8 @@ def : Pat<(v16i8 (concat_vectors DPR:$Dn, DPR:$Dm)),            (REG_SEQUENCE QPR, DPR:$Dn, dsub_0, DPR:$Dm, dsub_1)>;  def : Pat<(v4f32 (concat_vectors DPR:$Dn, DPR:$Dm)),            (REG_SEQUENCE QPR, DPR:$Dn, dsub_0, DPR:$Dm, dsub_1)>; +def : Pat<(v8f16 (concat_vectors DPR:$Dn, DPR:$Dm)), +          (REG_SEQUENCE QPR, DPR:$Dn, dsub_0, DPR:$Dm, dsub_1)>;  //===----------------------------------------------------------------------===//  // Assembler aliases | 

