diff options
author | Oliver Stannard <oliver.stannard@arm.com> | 2015-11-16 14:58:50 +0000 |
---|---|---|
committer | Oliver Stannard <oliver.stannard@arm.com> | 2015-11-16 14:58:50 +0000 |
commit | 7aa90f5735e8f2dce303b648613240322a0f320c (patch) | |
tree | d2e7a956475549a77da84ab065537a467ac8a804 /lldb/packages/Python/lldbsuite/test/python_api/value | |
parent | 6b6679276c4fdf3e501fadd3066289dbaa6e740c (diff) | |
download | bcm5719-llvm-7aa90f5735e8f2dce303b648613240322a0f320c.tar.gz bcm5719-llvm-7aa90f5735e8f2dce303b648613240322a0f320c.zip |
[ARM,AArch64] Fix __rev16l and __rev16ll intrinsics
These two intrinsics are defined in arm_acle.h.
__rev16l needs to rotate by 16 bits, bit it was actually rotating by 2 bits.
For AArch64, where long is 64 bits, this would still be wrong.
__rev16ll was incorrect, it reversed the bytes in each 32-bit word, rather than
each 16-bit halfword. The correct implementation is to apply __rev16 to the top
and bottom words of the 64-bit value.
For AArch32 targets, these get compiled down to the hardware rev16 instruction
at -O1 and above. For AArch64 targets, the 64-bit ones get compiled to two
32-bit rev16 instructions, because there is not currently a pattern for the
64-bit rev16 instruction.
Differential Revision: http://reviews.llvm.org/D14609
llvm-svn: 253211
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/value')
0 files changed, 0 insertions, 0 deletions