| #------------------------------------------------------------------------------ | |
| # | |
| # Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
| # | |
| # SPDX-License-Identifier: BSD-2-Clause-Patent | |
| # | |
| #------------------------------------------------------------------------------ | |
| #include <AsmMacroLib.h> | |
| ASM_FUNC(__ashlti3) | |
| # return if shift is 0 | |
| cbz x2, 1f | |
| mov x3, #64 | |
| sub x3, x3, x2 | |
| cmp x3, #0 | |
| b.le 2f | |
| # shift is <= 64 bits | |
| lsr x3, x0, x3 | |
| lsl x1, x1, x2 | |
| orr x1, x1, x3 | |
| lsl x0, x0, x2 | |
| 1: | |
| ret | |
| 2: | |
| # shift is > 64 | |
| neg w3, w3 | |
| lsl x1, x0, x3 | |
| mov x0, #0 | |
| ret |