summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM
diff options
context:
space:
mode:
authorSam Tebbs <sam.tebbs@arm.com>2019-08-20 16:33:34 +0000
committerSam Tebbs <sam.tebbs@arm.com>2019-08-20 16:33:34 +0000
commitdcfc2d40d30f6ecbe68a731f816ce9f1bceda915 (patch)
tree4c34b266b92c77b236ed5b39f4fb97ea6ced667b /llvm/lib/Target/ARM
parent08bd0808720d327800c13443599a40ae92a7cee4 (diff)
downloadbcm5719-llvm-dcfc2d40d30f6ecbe68a731f816ce9f1bceda915.tar.gz
bcm5719-llvm-dcfc2d40d30f6ecbe68a731f816ce9f1bceda915.zip
[ARM] Select vaddva
This patch adds vaddva selection. Differential revision: https://reviews.llvm.org/D66410 llvm-svn: 369404
Diffstat (limited to 'llvm/lib/Target/ARM')
-rw-r--r--llvm/lib/Target/ARM/ARMInstrMVE.td7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrMVE.td b/llvm/lib/Target/ARM/ARMInstrMVE.td
index 8290ef5a48a..6e079ebe930 100644
--- a/llvm/lib/Target/ARM/ARMInstrMVE.td
+++ b/llvm/lib/Target/ARM/ARMInstrMVE.td
@@ -553,6 +553,13 @@ let Predicates = [HasMVEInt] in {
def : Pat<(i32 (vecreduce_add (v4i32 MQPR:$src))), (i32 (MVE_VADDVu32no_acc $src))>;
def : Pat<(i32 (vecreduce_add (v8i16 MQPR:$src))), (i32 (MVE_VADDVu16no_acc $src))>;
def : Pat<(i32 (vecreduce_add (v16i8 MQPR:$src))), (i32 (MVE_VADDVu8no_acc $src))>;
+ def : Pat<(i32 (add (i32 (vecreduce_add (v4i32 MQPR:$src1))), (i32 tGPR:$src2))),
+ (i32 (MVE_VADDVu32acc $src2, $src1))>;
+ def : Pat<(i32 (add (i32 (vecreduce_add (v8i16 MQPR:$src1))), (i32 tGPR:$src2))),
+ (i32 (MVE_VADDVu16acc $src2, $src1))>;
+ def : Pat<(i32 (add (i32 (vecreduce_add (v16i8 MQPR:$src1))), (i32 tGPR:$src2))),
+ (i32 (MVE_VADDVu8acc $src2, $src1))>;
+
}
class MVE_VADDLV<string iname, string suffix, dag iops, string cstr,
OpenPOWER on IntegriCloud