[ARM,MVE] Add the `vsbciq` intrinsics.
Summary: These are exactly parallel to the existing `vadciq` intrinsics, which we implemented last year as part of the original MVE intrinsics framework setup. Just like VADC/VADCI, the MVE VSBC/VSBCI instructions deliver two outputs, both of which the intrinsic exposes: a modified vector register and a carry flag. So they have to be instruction-selected in C++ rather than Tablegen. However, in this case, that's trivial: the same C++ isel routine we already have for VADC works unchanged, and all we have to do is to pass it a different instruction id. Reviewers: MarkMurrayARM, dmgreen, miyuki, ostannard Reviewed By: miyuki Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D75444
Showing
- clang/include/clang/Basic/arm_mve.td 24 additions, 20 deletionsclang/include/clang/Basic/arm_mve.td
- clang/test/CodeGen/arm-mve-intrinsics/vadc.c 160 additions, 0 deletionsclang/test/CodeGen/arm-mve-intrinsics/vadc.c
- llvm/include/llvm/IR/IntrinsicsARM.td 7 additions, 0 deletionsllvm/include/llvm/IR/IntrinsicsARM.td
- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp 5 additions, 0 deletionsllvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
- llvm/test/CodeGen/Thumb2/mve-intrinsics/vadc.ll 184 additions, 0 deletionsllvm/test/CodeGen/Thumb2/mve-intrinsics/vadc.ll
Loading
Please register or sign in to comment