diff options
| author | Sam Tebbs <sam.tebbs@arm.com> | 2019-09-03 08:17:46 +0000 |
|---|---|---|
| committer | Sam Tebbs <sam.tebbs@arm.com> | 2019-09-03 08:17:46 +0000 |
| commit | 8b2df85d023e6213543d0761eafa98fe914fdc0a (patch) | |
| tree | 4be34a1ecb70519e516fcfb0bb73be6191b48008 /llvm/lib/Target | |
| parent | 13edbbe2faa66a7a69e69ed8afe8482c4c5e930c (diff) | |
| download | bcm5719-llvm-8b2df85d023e6213543d0761eafa98fe914fdc0a.tar.gz bcm5719-llvm-8b2df85d023e6213543d0761eafa98fe914fdc0a.zip | |
[ARM] Select vmla
This patch adds vmla selection.
Differential revision: https://reviews.llvm.org/D66297
llvm-svn: 370704
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrMVE.td | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrMVE.td b/llvm/lib/Target/ARM/ARMInstrMVE.td index 58125d6214a..b32c3545696 100644 --- a/llvm/lib/Target/ARM/ARMInstrMVE.td +++ b/llvm/lib/Target/ARM/ARMInstrMVE.td @@ -3782,6 +3782,21 @@ def MVE_VMLAS_qr_u8 : MVE_VFMAMLA_qr<"vmlas", "u8", 0b1, 0b00, 0b1>; def MVE_VMLAS_qr_u16 : MVE_VFMAMLA_qr<"vmlas", "u16", 0b1, 0b01, 0b1>; def MVE_VMLAS_qr_u32 : MVE_VFMAMLA_qr<"vmlas", "u32", 0b1, 0b10, 0b1>; +let Predicates = [HasMVEInt] in { + def : Pat<(v4i32 (add (v4i32 MQPR:$src1), + (v4i32 (mul (v4i32 MQPR:$src2), + (v4i32 (ARMvdup (i32 rGPR:$x))))))), + (v4i32 (MVE_VMLA_qr_u32 $src1, $src2, $x))>; + def : Pat<(v8i16 (add (v8i16 MQPR:$src1), + (v8i16 (mul (v8i16 MQPR:$src2), + (v8i16 (ARMvdup (i32 rGPR:$x))))))), + (v8i16 (MVE_VMLA_qr_u16 $src1, $src2, $x))>; + def : Pat<(v16i8 (add (v16i8 MQPR:$src1), + (v16i8 (mul (v16i8 MQPR:$src2), + (v16i8 (ARMvdup (i32 rGPR:$x))))))), + (v16i8 (MVE_VMLA_qr_u8 $src1, $src2, $x))>; +} + let Predicates = [HasMVEFloat] in { def MVE_VFMA_qr_f16 : MVE_VFMAMLA_qr<"vfma", "f16", 0b1, 0b11, 0b0>; def MVE_VFMA_qr_f32 : MVE_VFMAMLA_qr<"vfma", "f32", 0b0, 0b11, 0b0>; |

