^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ;; SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) ;; Copyright (C) 2010 Texas Instruments Incorporated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ;; Contributed by Mark Salter <msalter@redhat.com>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ;; uint64_t __c6xabi_llshl(uint64_t val, uint shift)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ENTRY(__c6xabi_llshl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) mv .l1x B4,A1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) [!A1] b .s2 B3 ; just return if zero shift
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) mvk .s1 32,A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) sub .d1 A0,A1,A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) cmplt .l1 0,A0,A2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) [A2] shru .s1 A4,A0,A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) [!A2] neg .l1 A0,A5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) || [A2] shl .s1 A5,A1,A5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) [!A2] shl .s1 A4,A5,A5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) || [A2] or .d1 A5,A0,A5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) || [!A2] mvk .l1 0,A4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) [A2] shl .s1 A4,A1,A4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) bnop .s2 B3,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ENDPROC(__c6xabi_llshl)