memcpy_likely_aligned.S revision 341825
1//===------------------------- memcopy routines ---------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10
11	.macro FUNCTION_BEGIN name
12	.text
13	.p2align 5
14	.globl \name
15	.type  \name, @function
16\name:
17	.endm
18
19	.macro FUNCTION_END name
20	.size  \name, . - \name
21	.endm
22
23FUNCTION_BEGIN __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes
24	{
25		p0 = bitsclr(r1,#7)
26		p0 = bitsclr(r0,#7)
27		if (p0.new) r5:4 = memd(r1)
28		r3 = #-3
29	}
30	{
31		if (!p0) jump .Lmemcpy_call
32		if (p0) memd(r0++#8) = r5:4
33		if (p0) r5:4 = memd(r1+#8)
34		r3 += lsr(r2,#3)
35	}
36	{
37		memd(r0++#8) = r5:4
38		r5:4 = memd(r1+#16)
39		r1 = add(r1,#24)
40		loop0(1f,r3)
41	}
42	.falign
431:
44	{
45		memd(r0++#8) = r5:4
46		r5:4 = memd(r1++#8)
47	}:endloop0
48	{
49		memd(r0) = r5:4
50		r0 -= add(r2,#-8)
51		jumpr r31
52	}
53FUNCTION_END __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes
54
55.Lmemcpy_call:
56#ifdef __PIC__
57	jump memcpy@PLT
58#else
59	jump memcpy
60#endif
61
62  .globl __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes
63  .set   __qdsp_memcpy_likely_aligned_min32bytes_mult8bytes, \
64         __hexagon_memcpy_likely_aligned_min32bytes_mult8bytes
65