Changeset e269c53 in mainline


Ignore:
Timestamp:
2006-06-06T15:39:46Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2d7a5fe
Parents:
c782434
Message:

ia64 memcpy that is unaligned pointer resistent.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/asm.S

    rc782434 re269c53  
    5050        alloc loc0 = ar.pfs, 3, 1, 0, 0
    5151
    52         shr.u r18 = in2, 3
    53         mov r8 = in1 ;;                 /* prepare to return in1 on success */
    54         cmp.ne p6, p7 = 0, r18  ;;
    55 (p7)    mov r17 = r0
    56 (p7)    br.cond.dptk 1f ;;
     52        adds r14 = 7, in1
     53        mov r2 = ar.lc
     54        mov r8 = in1 ;;
     55        and r14 = -8, r14 ;;
     56        cmp.ne p6, p7 = r14, in1
     57(p7)    br.cond.dpnt 3f ;;
     580:
     59        cmp.ne p6, p7 = 0, in2
     60(p7)    br.cond.dpnt 2f ;;
     61(p6)    adds r14 = -1, in2
     62(p6)    mov r16 = r0
     63(p6)    mov r17 = r0 ;;
     64(p6)    mov ar.lc = r14
     651:
     66        add r14 = r16, r8
     67        add r15 = r16, in0
     68        adds r17 = 1, r17 ;;
     69        ld1 r14 = [r14]
     70        mov r16 = r17 ;;
     71        st1 [r15] = r14
     72        br.cloop.sptk.few 1b ;;
     732:
     74        mov ar.lc = r2
     75
     76        mov ar.pfs = loc0
     77        br.ret.sptk.many rp
     783:
     79        adds r14 = 7, in0 ;;
     80        and r14 = -8, r14 ;;
     81        cmp.eq p6, p7 = r14, in0
     82(p7)    br.cond.dptk 0b
     83        shr.u r18 = in2, 3 ;;
     84        cmp.ne p6, p7 = 0, r18
     85(p7)    br.cond.dpnt 5f ;;
     86(p6)    adds r14 = -1, r18
     87(p6)    mov r16 = r0
     88(p6)    mov r17 = r0 ;;
     89(p6)    mov ar.lc = r14
     904:
     91        shladd r14 = r16, 3, r0
     92        adds r16 = 1, r17 ;;
     93        add r15 = r8, r14
     94        add r14 = in0, r14
     95        mov r17 = r16 ;;
     96        ld8 r15 = [r15] ;;
     97        st8 [r14] = r15
     98        br.cloop.sptk.few 4b
     995:
     100        and r15 = 7, in2
     101        shladd r14 = r18, 3, r0
    57102        mov r16 = r0
    58         mov r17 = r0 ;;
    59 
    60 0:
    61         shladd r14 = r17, 3, r0
    62         adds r16 = 1, r16 ;;
    63         add r15 = r14, r8
    64         sxt4 r17 = r16
    65         add r14 = r14, in0 ;;
    66         ld8 r15 = [r15]
    67         cmp.gtu p6, p7 = r18, r17 ;;
    68         st8 [r14] = r15
    69 (p6)    br.cond.dptk 0b
    70 
    71 1:
    72         and in2 = 7, in2 ;;
    73         cmp.eq p6, p7 = 0, in2 ;;
    74 (p6)    mov ar.pfs = loc0
    75 (p6)    br.ret.dptk.many rp
    76         shladd r14 = r17, 3, r0
    77         mov r16 = r0
    78         mov r17 = r0 ;;
    79         add in0 = in0, r14
    80         add r18 = r8, r14 ;;
    81 
    82 2:
    83         add r14 = r16, r18
    84         adds r17 = 1, r17
    85         add r15 = in0, r16 ;;
     103        mov r18 = r0 ;;
     104        cmp.eq p6, p7 = 0, r15
     105        add in0 = r14, in0
     106        adds r15 = -1, r15
     107        add r17 = r14, r8
     108(p6)    br.cond.dpnt 2b ;;
     109        mov ar.lc = r15
     1106:
     111        add r14 = r16, r17
     112        add r15 = r16, in0
     113        adds r16 = 1, r18 ;;
    86114        ld1 r14 = [r14]
    87         sxt4 r16 = r17  ;;
     115        mov r18 = r16 ;;
    88116        st1 [r15] = r14
    89         cmp.gtu p6, p7 = in2, r16
    90 (p6)    br.cond.dptk 2b
     117        br.cloop.sptk.few 6b ;;
     118        mov ar.lc = r2
    91119
    92120        mov ar.pfs = loc0
Note: See TracChangeset for help on using the changeset viewer.