summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSam Tebbs <sam.tebbs@arm.com>2019-09-03 08:17:46 +0000
committerSam Tebbs <sam.tebbs@arm.com>2019-09-03 08:17:46 +0000
commit8b2df85d023e6213543d0761eafa98fe914fdc0a (patch)
tree4be34a1ecb70519e516fcfb0bb73be6191b48008 /llvm/lib/Target
parent13edbbe2faa66a7a69e69ed8afe8482c4c5e930c (diff)
downloadbcm5719-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.td15
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>;
OpenPOWER on IntegriCloud