JustPaste.it


00006280 <memcpy>:
6280: a9 03 00 00 l.ori r8,r3,0x0 ; R8 = R3
6284: a9 84 00 00 l.ori r12,r4,0x0 ; R12 = R4
6288: bc a5 00 0f l.sfleui r5,15 ; if (R5 <= 15)
628c: 10 00 00 07 l.bf 62a8 <memcpy+0x28>
6290: a8 e5 00 00 l.ori r7,r5,0x0 ; R7 = R5
6294: e0 c4 18 04 l.or r6,r4,r3 ; R6 = R4|R3
6298: a4 c6 00 03 l.andi r6,r6,0x3 ; R6 &= 3
629c: bc 26 00 00 l.sfnei r6,0 ; if (R6 == 0)
62a0: 0c 00 00 0f l.bnf 62dc <memcpy+0x5c>
62a4: a8 c4 00 00 l.ori r6,r4,0x0

enter_unaligned_memcpy
62a8: bc 07 00 00 l.sfeqi r7,0
62ac: 10 00 00 0a l.bf 62d4 <memcpy+0x54>
62b0: 15 00 00 00 l.nop 0x0
62b4: 9c 80 00 00 l.addi r4,r0,0 ; R4 = 0
loop:
62b8: e0 cc 20 00 l.add r6,r12,r4 ; R6 = R12 + R4
62bc: e0 a8 20 00 l.add r5,r8,r4 ; R5 = R8 + R4
62c0: 8c c6 00 00 l.lbz r6,0(r6) ; R6 = mem[R6]
62c4: 9c 84 00 01 l.addi r4,r4,1 ; R4 += 1
62c8: e4 24 38 00 l.sfne r4,r7 ; if R4 != R7
62cc: 13 ff ff fb l.bf 62b8 <memcpy+0x38>
62d0: d8 05 30 00 l.sb 0(r5),r6 ; mem[R5] = R6
62d4: 44 00 48 00 l.jr r9 ; return
62d8: a9 63 00 00 l.ori r11,r3,0x0 ; R11 = R3

; On aligned memcpy
62dc: a9 05 00 00 l.ori r8,r5,0x0 ; R8 = R5
62e0: a8 e3 00 00 l.ori r7,r3,0x0 ; R7 = R3
aligned_loop:
62e4: 85 66 00 00 l.lwz r11,0(r6) ; R11 = mem[R6]
62e8: 9d 08 ff f0 l.addi r8,r8,-16 ; R8 -= 16
62ec: d4 07 58 00 l.sw 0(r7),r11 ; mem[R7] = R11
62f0: bc 48 00 0f l.sfgtui r8,15 ; if R8 > 15
62f4: 85 66 00 04 l.lwz r11,4(r6) ; R11 = mem[R6+4]
62f8: d4 07 58 04 l.sw 4(r7),r11 ; mem[R7+4]=R11
62fc: 85 66 00 08 l.lwz r11,8(r6) ; R11 = mem[R6+8]
6300: d4 07 58 08 l.sw 8(r7),r11 ; mem[R7+8] = R11
6304: 85 66 00 0c l.lwz r11,12(r6) ; R11 = mem[R6+12]
6308: 9c c6 00 10 l.addi r6,r6,16 ; R6 += 16
630c: d4 07 58 0c l.sw 12(r7),r11 ; mem[R7+12] = R11
6310: 13 ff ff f5 l.bf 62e4 <memcpy+0x64> ; goto aligned_loop
6314: 9c e7 00 10 l.addi r7,r7,16 ; R7 += 16

6318: 9c a5 ff f0 l.addi r5,r5,-16 ; R5 -= 16
631c: b8 c5 00 44 l.srli r6,r5,0x4 ; R6 = R5 >> 4
6320: 9d 86 00 01 l.addi r12,r6,1 ; R12 = R6 + 1
6324: b8 c6 00 04 l.slli r6,r6,0x4 ; R6 = R6 << 4
6328: b9 8c 00 04 l.slli r12,r12,0x4 ; R12 = R12 << 4
632c: e0 a5 30 02 l.sub r5,r5,r6 ; R5 = R5 - R6
6330: e1 03 60 00 l.add r8,r3,r12 ; R8 = R3 + R12
6334: a8 e5 00 00 l.ori r7,r5,0x0 ; R7 = R5
6338: bc a5 00 03 l.sfleui r5,3 ; if (R5 <= 3)
633c: 13 ff ff db l.bf 62a8 <memcpy+0x28> ; goto unaligned
6340: e1 84 60 00 l.add r12,r4,r12 ; R12 += R4

; Unrolled loop ending
6344: 9c 80 00 00 l.addi r4,r0,0 ; R4= R0
6348: e0 cc 20 00 l.add r6,r12,r4 ; R6 = R12 + R4
unrolled_loop:
634c: e0 e8 20 00 l.add r7,r8,r4 ; R7 = R8 + R4
6350: 84 c6 00 00 l.lwz r6,0(r6) ; R6 = mem[R6]
6354: 9c 84 00 04 l.addi r4,r4,4 ; R4 = R4 + 4
6358: d4 07 30 00 l.sw 0(r7),r6 ; mem[R7] = R6
635c: e0 c5 20 02 l.sub r6,r5,r4 ; R6 = R5 - R4
6360: bc 46 00 03 l.sfgtui r6,3 ; if (R6 > 3)
6364: 13 ff ff fa l.bf 634c <memcpy+0xcc> ; goto unrolled_loop
6368: e0 cc 20 00 l.add r6,r12,r4 ; R6 = R12 + R4

636c: 9c a5 ff fc l.addi r5,r5,-4 ; R5 -= 4
6370: b8 e5 00 42 l.srli r7,r5,0x2 ; R7 = R5 >> 2
6374: 9c 87 00 01 l.addi r4,r7,1 ; R4 = R7 + 1
6378: b8 e7 00 02 l.slli r7,r7,0x2 ; R7 >>= 2
637c: b8 84 00 02 l.slli r4,r4,0x2 ; R4 >>= 2
6380: e0 e5 38 02 l.sub r7,r5,r7 ; R7 = R5 - R7
6384: e1 08 20 00 l.add r8,r8,r4 ; R8 = R8 + 4
6388: 03 ff ff c8 l.j 62a8 <memcpy+0x28> ; goto memcpy()
638c: e1 8c 20 00 l.add r12,r12,r4