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