summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api/exprpath_synthetic
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2019-12-09 15:43:50 +0000
committerSimon Tatham <simon.tatham@arm.com>2019-12-09 15:44:09 +0000
commitd97b3e3e65cd77a81b39732af84a1a4229e95091 (patch)
tree554a5ee5dcb7652298b1f702cb01b687b009b3b3 /lldb/packages/Python/lldbsuite/test/python_api/exprpath_synthetic
parentcaabb713ea157f8c449c8d3eb00410bbef734a22 (diff)
downloadbcm5719-llvm-d97b3e3e65cd77a81b39732af84a1a4229e95091.tar.gz
bcm5719-llvm-d97b3e3e65cd77a81b39732af84a1a4229e95091.zip
[ARM][MVE] Add intrinsics for immediate shifts.
Summary: This adds the family of `vshlq_n` and `vshrq_n` ACLE intrinsics, which shift every lane of a vector left or right by a compile-time immediate. They mostly work by expanding to the IR `shl`, `lshr` and `ashr` operations, with their second operand being a vector splat of the immediate. There's a fiddly special case, though. ACLE specifies that the immediate in `vshrq_n` can take values up to //and including// the bit size of the vector lane. But LLVM IR thinks that shifting right by the full size of the lane is UB, and feels free to replace the `lshr` with an `undef` half way through the optimization pipeline. Hence, to keep this legal in source code, I have to detect it at codegen time. Logical (unsigned) right shifts by the element size are handled by simply emitting the zero vector; arithmetic ones are converted into a shift of one bit less, which will always give the same output. In order to do that check, I also had to enhance the tablegen MveEmitter so that it can cope with converting a builtin function's operand into a bare integer to pass to a code-generating subfunction. Previously the only bare integers it knew how to handle were flags generated from within `arm_mve.td`. Reviewers: dmgreen, miyuki, MarkMurrayARM, ostannard Reviewed By: MarkMurrayARM Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D71065
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/exprpath_synthetic')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud