summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api/signals/main.cpp
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2019-11-19 14:47:07 +0000
committerSimon Tatham <simon.tatham@arm.com>2019-11-19 14:47:29 +0000
commit254b4f250007ef9f2d2377eb912963beafa39754 (patch)
treeee3c8b0ad5bfcbcca0be5772e2456d8c02ac35ab /lldb/packages/Python/lldbsuite/test/python_api/signals/main.cpp
parent33d93c3d0b4a331632902f5fb9874f4e021a2f58 (diff)
downloadbcm5719-llvm-254b4f250007ef9f2d2377eb912963beafa39754.tar.gz
bcm5719-llvm-254b4f250007ef9f2d2377eb912963beafa39754.zip
[ARM,MVE] Add intrinsics for scalar shifts.
This fills in the small family of MVE intrinsics that have nothing to do with vectors: they implement bit-shift operations on 32- or 64-bit values held in one or two general-purpose registers. Most of these shift operations saturate if shifting left, and round to nearest if shifting right, although LSLL and ASRL behave like ordinary shifts. When these instructions take a variable shift count in a register, they pay attention to its sign, so that (for example) LSLL or UQRSHLL will shift left if given a positive number but right if given a negative one. That makes even LSLL and ASRL different enough from standard LLVM IR shift semantics that I couldn't see any better alternative than to simply model the whole family as a set of MVE-specific IR intrinsics. (The //immediate// forms of LSLL and ASRL, on the other hand, do behave exactly like a standard IR shift of a 64-bit value. In fact, those forms don't have ACLE intrinsics defined at all, because you can just write an ordinary C shift operation if you want one of those.) The 64-bit shifts have to be instruction-selected in C++, because they deliver two output values. But the 32-bit ones are simple enough that I could write a DAG isel pattern directly into each Instruction record. Reviewers: ostannard, MarkMurrayARM, dmgreen Reviewed By: dmgreen Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D70319
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/signals/main.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud