64 lines · plain
1//===------------------------- memcopy routines ---------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9 10 .macro FUNCTION_BEGIN name11 .text12 .p2align 513 .globl \name14 .type \name, @function15\name:16 .endm17 18 .macro FUNCTION_END name19 .size \name, . - \name20 .endm21 22FUNCTION_BEGIN __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes23 {24 p0 = bitsclr(r1,#7)25 p0 = bitsclr(r0,#7)26 if (p0.new) r5:4 = memd(r1)27 r3 = #-328 }29 {30 if (!p0) jump .Lmemcpy_call31 if (p0) memd(r0++#8) = r5:432 if (p0) r5:4 = memd(r1+#8)33 r3 += lsr(r2,#3)34 }35 {36 memd(r0++#8) = r5:437 r5:4 = memd(r1+#16)38 r1 = add(r1,#24)39 loop0(1f,r3)40 }41 .falign421:43 {44 memd(r0++#8) = r5:445 r5:4 = memd(r1++#8)46 }:endloop047 {48 memd(r0) = r5:449 r0 -= add(r2,#-8)50 jumpr r3151 }52FUNCTION_END __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes53 54.Lmemcpy_call:55#ifdef __PIC__56 jump memcpy@PLT57#else58 jump memcpy59#endif60 61 .globl __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes62 .set __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes, \63 __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes64