diff options
| author | Simon Tatham <simon.tatham@arm.com> | 2020-02-17 17:05:39 +0000 |
|---|---|---|
| committer | Simon Tatham <simon.tatham@arm.com> | 2020-02-18 09:34:50 +0000 |
| commit | 68b49f7ef49eec068b7ddcf86c868e2a193e64e1 (patch) | |
| tree | e4425d2d5509f57bb5fc0d313edaacff1916d414 /llvm/lib | |
| parent | b6236e94799e43fad1f024e84ed56a85d9a3623f (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.td | 7 |
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, |
