summaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2020-02-17 17:05:39 +0000
committerSimon Tatham <simon.tatham@arm.com>2020-02-18 09:34:50 +0000
commit68b49f7ef49eec068b7ddcf86c868e2a193e64e1 (patch)
treee4425d2d5509f57bb5fc0d313edaacff1916d414 /llvm/lib
parentb6236e94799e43fad1f024e84ed56a85d9a3623f (diff)
[ARM,MVE] Add intrinsics vclzq and vclsq.
Summary: vclzq maps nicely to the existing target-independent @llvm.ctlz IR intrinsic. But vclsq ('count leading sign bits') has no corresponding target-independent intrinsic, so I've made up @llvm.arm.mve.vcls. This commit adds the unpredicated forms only. Reviewers: dmgreen, miyuki, MarkMurrayARM, ostannard Reviewed By: miyuki Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D74335
Diffstat (limited to 'llvm/lib')
-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 b0ec20494b8a..0583a26dffea 100644
--- a/llvm/lib/Target/ARM/ARMInstrMVE.td
+++ b/llvm/lib/Target/ARM/ARMInstrMVE.td
@@ -2076,6 +2076,13 @@ let Predicates = [HasMVEInt] in {
(v4i32 ( MVE_VCLZs32 (v4i32 MQPR:$val1)))>;
def : Pat<(v8i16 ( ctlz (v8i16 MQPR:$val1))),
(v8i16 ( MVE_VCLZs16 (v8i16 MQPR:$val1)))>;
+
+ def : Pat<(v16i8 ( int_arm_mve_vcls (v16i8 MQPR:$val1))),
+ (v16i8 ( MVE_VCLSs8 (v16i8 MQPR:$val1)))>;
+ def : Pat<(v4i32 ( int_arm_mve_vcls (v4i32 MQPR:$val1))),
+ (v4i32 ( MVE_VCLSs32 (v4i32 MQPR:$val1)))>;
+ def : Pat<(v8i16 ( int_arm_mve_vcls (v8i16 MQPR:$val1))),
+ (v8i16 ( MVE_VCLSs16 (v8i16 MQPR:$val1)))>;
}
class MVE_VABSNEG_int<string iname, string suffix, bits<2> size, bit negate,