1336817Sdim//===------------------------- memcopy routines ---------------------------===// 2336817Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6336817Sdim// 7336817Sdim//===----------------------------------------------------------------------===// 8336817Sdim 9336817Sdim 10336817Sdim .macro FUNCTION_BEGIN name 11336817Sdim .text 12336817Sdim .p2align 5 13336817Sdim .globl \name 14336817Sdim .type \name, @function 15336817Sdim\name: 16336817Sdim .endm 17336817Sdim 18336817Sdim .macro FUNCTION_END name 19336817Sdim .size \name, . - \name 20336817Sdim .endm 21336817Sdim 22336817SdimFUNCTION_BEGIN __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes 23336817Sdim { 24336817Sdim p0 = bitsclr(r1,#7) 25336817Sdim p0 = bitsclr(r0,#7) 26336817Sdim if (p0.new) r5:4 = memd(r1) 27336817Sdim r3 = #-3 28336817Sdim } 29336817Sdim { 30336817Sdim if (!p0) jump .Lmemcpy_call 31336817Sdim if (p0) memd(r0++#8) = r5:4 32336817Sdim if (p0) r5:4 = memd(r1+#8) 33336817Sdim r3 += lsr(r2,#3) 34336817Sdim } 35336817Sdim { 36336817Sdim memd(r0++#8) = r5:4 37336817Sdim r5:4 = memd(r1+#16) 38336817Sdim r1 = add(r1,#24) 39336817Sdim loop0(1f,r3) 40336817Sdim } 41336817Sdim .falign 42336817Sdim1: 43336817Sdim { 44336817Sdim memd(r0++#8) = r5:4 45336817Sdim r5:4 = memd(r1++#8) 46336817Sdim }:endloop0 47336817Sdim { 48336817Sdim memd(r0) = r5:4 49336817Sdim r0 -= add(r2,#-8) 50336817Sdim jumpr r31 51336817Sdim } 52336817SdimFUNCTION_END __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes 53336817Sdim 54336817Sdim.Lmemcpy_call: 55336817Sdim#ifdef __PIC__ 56336817Sdim jump memcpy@PLT 57336817Sdim#else 58336817Sdim jump memcpy 59336817Sdim#endif 60336817Sdim 61336817Sdim .globl __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes 62336817Sdim .set __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes, \ 63336817Sdim __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes 64