diff options
| author | Cullen Rhodes <cullen.rhodes@arm.com> | 2019-05-24 09:06:37 +0000 |
|---|---|---|
| committer | Cullen Rhodes <cullen.rhodes@arm.com> | 2019-05-24 09:06:37 +0000 |
| commit | 6bca64fe5e9cf04cd39217e5ae2e148dc96b7dae (patch) | |
| tree | 7b7c9727ce3aba6a48d2c70d55a1012e26435947 /llvm/lib | |
| parent | 119c31ad9374210b5a950960a401582aac0c5333 (diff) | |
| download | bcm5719-llvm-6bca64fe5e9cf04cd39217e5ae2e148dc96b7dae.tar.gz bcm5719-llvm-6bca64fe5e9cf04cd39217e5ae2e148dc96b7dae.zip | |
[AArch64][SVE2] Asm: add saturating add/sub instructions
Summary:
Patch adds support for the following instructions:
* SQADD, UQADD, SUQADD, USQADD
* SQSUB, UQSUB, SQSUBR, UQSUBR
The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest
Reviewed By: chill
Differential Revision: https://reviews.llvm.org/D62130
llvm-svn: 361611
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td index 62dfdf1345a..7e2b152395a 100644 --- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td @@ -1140,6 +1140,16 @@ let Predicates = [HasSVE2] in { defm SQABS_ZPmZ : sve2_int_un_pred_arit<0b100, "sqabs">; defm SQNEG_ZPmZ : sve2_int_un_pred_arit<0b101, "sqneg">; + // SVE2 saturating add/subtract + defm SQADD_ZPmZ : sve2_int_arith_pred<0b110000, "sqadd">; + defm UQADD_ZPmZ : sve2_int_arith_pred<0b110010, "uqadd">; + defm SQSUB_ZPmZ : sve2_int_arith_pred<0b110100, "sqsub">; + defm UQSUB_ZPmZ : sve2_int_arith_pred<0b110110, "uqsub">; + defm SUQADD_ZPmZ : sve2_int_arith_pred<0b111000, "suqadd">; + defm USQADD_ZPmZ : sve2_int_arith_pred<0b111010, "usqadd">; + defm SQSUBR_ZPmZ : sve2_int_arith_pred<0b111100, "sqsubr">; + defm UQSUBR_ZPmZ : sve2_int_arith_pred<0b111110, "uqsubr">; + // SVE2 integer multiply long defm SQDMULLB_ZZZ : sve2_wide_int_arith_long<0b11000, "sqdmullb">; defm SQDMULLT_ZZZ : sve2_wide_int_arith_long<0b11001, "sqdmullt">; |

