^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) .align 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ENTRY(__multi3) /* %o0 = u, %o1 = v */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) mov %o1, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) srl %o3, 0, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) mulx %o4, %g1, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) srlx %g1, 0x20, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) mulx %g3, %o4, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) sllx %g7, 0x20, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) srl %g1, 0, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) sub %o1, %o5, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) srlx %o5, 0x20, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) addcc %g7, %o5, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) srlx %o3, 0x20, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) mulx %o4, %o5, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) mulx %g3, %o5, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) sethi %hi(0x80000000), %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) addcc %g7, %o4, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) srlx %g7, 0x20, %g7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) add %g3, %g3, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) movcc %xcc, %g0, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) addcc %o5, %g7, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) sllx %o4, 0x20, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) add %o1, %o4, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) add %o5, %g3, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) mulx %g1, %o2, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) add %g1, %g2, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) mulx %o0, %o3, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) add %g1, %o0, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) ENDPROC(__multi3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) EXPORT_SYMBOL(__multi3)