summaryrefslogtreecommitdiff
path: root/asm/libstdc++/mem_funcs.s
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-09-29 11:38:18 -0400
committerMax <mparisi@stevens.edu>2020-09-29 11:38:18 -0400
commit89a32b3c5dfabad2676e7aac02c2d97c85f8fa90 (patch)
tree2eb43f33d07c851d60479e1f26e5860086ce15ed /asm/libstdc++/mem_funcs.s
parent638d9da61f67c94afa06998b0a071c42694c5b6a (diff)
split mem, mem_funcs, math_api, mbstring, and misc_io
Diffstat (limited to 'asm/libstdc++/mem_funcs.s')
-rw-r--r--asm/libstdc++/mem_funcs.s219
1 files changed, 219 insertions, 0 deletions
diff --git a/asm/libstdc++/mem_funcs.s b/asm/libstdc++/mem_funcs.s
new file mode 100644
index 0000000..426d2cb
--- /dev/null
+++ b/asm/libstdc++/mem_funcs.s
@@ -0,0 +1,219 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __copy_longs_aligned
+__copy_longs_aligned:
+/* 801CA3E4 001C6044 7C 03 00 D0 */ neg r0, r3
+/* 801CA3E8 001C6048 38 84 FF FF */ addi r4, r4, -1
+/* 801CA3EC 001C604C 54 06 07 BF */ clrlwi. r6, r0, 0x1e
+/* 801CA3F0 001C6050 38 63 FF FF */ addi r3, r3, -1
+/* 801CA3F4 001C6054 41 82 00 18 */ beq lbl_801CA40C
+/* 801CA3F8 001C6058 7C A6 28 50 */ subf r5, r6, r5
+lbl_801CA3FC:
+/* 801CA3FC 001C605C 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801CA400 001C6060 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA404 001C6064 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA408 001C6068 40 82 FF F4 */ bne lbl_801CA3FC
+lbl_801CA40C:
+/* 801CA40C 001C606C 54 A6 D9 7F */ rlwinm. r6, r5, 0x1b, 5, 0x1f
+/* 801CA410 001C6070 38 E4 FF FD */ addi r7, r4, -3
+/* 801CA414 001C6074 38 83 FF FD */ addi r4, r3, -3
+/* 801CA418 001C6078 41 82 00 4C */ beq lbl_801CA464
+lbl_801CA41C:
+/* 801CA41C 001C607C 80 67 00 04 */ lwz r3, 4(r7)
+/* 801CA420 001C6080 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA424 001C6084 80 07 00 08 */ lwz r0, 8(r7)
+/* 801CA428 001C6088 90 64 00 04 */ stw r3, 4(r4)
+/* 801CA42C 001C608C 80 67 00 0C */ lwz r3, 0xc(r7)
+/* 801CA430 001C6090 90 04 00 08 */ stw r0, 8(r4)
+/* 801CA434 001C6094 80 07 00 10 */ lwz r0, 0x10(r7)
+/* 801CA438 001C6098 90 64 00 0C */ stw r3, 0xc(r4)
+/* 801CA43C 001C609C 80 67 00 14 */ lwz r3, 0x14(r7)
+/* 801CA440 001C60A0 90 04 00 10 */ stw r0, 0x10(r4)
+/* 801CA444 001C60A4 80 07 00 18 */ lwz r0, 0x18(r7)
+/* 801CA448 001C60A8 90 64 00 14 */ stw r3, 0x14(r4)
+/* 801CA44C 001C60AC 80 67 00 1C */ lwz r3, 0x1c(r7)
+/* 801CA450 001C60B0 90 04 00 18 */ stw r0, 0x18(r4)
+/* 801CA454 001C60B4 84 07 00 20 */ lwzu r0, 0x20(r7)
+/* 801CA458 001C60B8 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 801CA45C 001C60BC 94 04 00 20 */ stwu r0, 0x20(r4)
+/* 801CA460 001C60C0 40 82 FF BC */ bne lbl_801CA41C
+lbl_801CA464:
+/* 801CA464 001C60C4 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f
+/* 801CA468 001C60C8 41 82 00 14 */ beq lbl_801CA47C
+lbl_801CA46C:
+/* 801CA46C 001C60CC 84 07 00 04 */ lwzu r0, 4(r7)
+/* 801CA470 001C60D0 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA474 001C60D4 94 04 00 04 */ stwu r0, 4(r4)
+/* 801CA478 001C60D8 40 82 FF F4 */ bne lbl_801CA46C
+lbl_801CA47C:
+/* 801CA47C 001C60DC 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA480 001C60E0 38 C7 00 03 */ addi r6, r7, 3
+/* 801CA484 001C60E4 38 64 00 03 */ addi r3, r4, 3
+/* 801CA488 001C60E8 4D 82 00 20 */ beqlr
+lbl_801CA48C:
+/* 801CA48C 001C60EC 8C 06 00 01 */ lbzu r0, 1(r6)
+/* 801CA490 001C60F0 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA494 001C60F4 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA498 001C60F8 40 82 FF F4 */ bne lbl_801CA48C
+/* 801CA49C 001C60FC 4E 80 00 20 */ blr
+
+.global __copy_longs_rev_aligned
+__copy_longs_rev_aligned:
+/* 801CA4A0 001C6100 7C E3 2A 14 */ add r7, r3, r5
+/* 801CA4A4 001C6104 7C C4 2A 14 */ add r6, r4, r5
+/* 801CA4A8 001C6108 54 E3 07 BF */ clrlwi. r3, r7, 0x1e
+/* 801CA4AC 001C610C 41 82 00 18 */ beq lbl_801CA4C4
+/* 801CA4B0 001C6110 7C A3 28 50 */ subf r5, r3, r5
+lbl_801CA4B4:
+/* 801CA4B4 001C6114 8C 06 FF FF */ lbzu r0, -1(r6)
+/* 801CA4B8 001C6118 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA4BC 001C611C 9C 07 FF FF */ stbu r0, -1(r7)
+/* 801CA4C0 001C6120 40 82 FF F4 */ bne lbl_801CA4B4
+lbl_801CA4C4:
+/* 801CA4C4 001C6124 54 A4 D9 7F */ rlwinm. r4, r5, 0x1b, 5, 0x1f
+/* 801CA4C8 001C6128 41 82 00 4C */ beq lbl_801CA514
+lbl_801CA4CC:
+/* 801CA4CC 001C612C 80 66 FF FC */ lwz r3, -4(r6)
+/* 801CA4D0 001C6130 34 84 FF FF */ addic. r4, r4, -1
+/* 801CA4D4 001C6134 80 06 FF F8 */ lwz r0, -8(r6)
+/* 801CA4D8 001C6138 90 67 FF FC */ stw r3, -4(r7)
+/* 801CA4DC 001C613C 80 66 FF F4 */ lwz r3, -0xc(r6)
+/* 801CA4E0 001C6140 90 07 FF F8 */ stw r0, -8(r7)
+/* 801CA4E4 001C6144 80 06 FF F0 */ lwz r0, -0x10(r6)
+/* 801CA4E8 001C6148 90 67 FF F4 */ stw r3, -0xc(r7)
+/* 801CA4EC 001C614C 80 66 FF EC */ lwz r3, -0x14(r6)
+/* 801CA4F0 001C6150 90 07 FF F0 */ stw r0, -0x10(r7)
+/* 801CA4F4 001C6154 80 06 FF E8 */ lwz r0, -0x18(r6)
+/* 801CA4F8 001C6158 90 67 FF EC */ stw r3, -0x14(r7)
+/* 801CA4FC 001C615C 80 66 FF E4 */ lwz r3, -0x1c(r6)
+/* 801CA500 001C6160 90 07 FF E8 */ stw r0, -0x18(r7)
+/* 801CA504 001C6164 84 06 FF E0 */ lwzu r0, -0x20(r6)
+/* 801CA508 001C6168 90 67 FF E4 */ stw r3, -0x1c(r7)
+/* 801CA50C 001C616C 94 07 FF E0 */ stwu r0, -0x20(r7)
+/* 801CA510 001C6170 40 82 FF BC */ bne lbl_801CA4CC
+lbl_801CA514:
+/* 801CA514 001C6174 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f
+/* 801CA518 001C6178 41 82 00 14 */ beq lbl_801CA52C
+lbl_801CA51C:
+/* 801CA51C 001C617C 84 06 FF FC */ lwzu r0, -4(r6)
+/* 801CA520 001C6180 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA524 001C6184 94 07 FF FC */ stwu r0, -4(r7)
+/* 801CA528 001C6188 40 82 FF F4 */ bne lbl_801CA51C
+lbl_801CA52C:
+/* 801CA52C 001C618C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA530 001C6190 4D 82 00 20 */ beqlr
+lbl_801CA534:
+/* 801CA534 001C6194 8C 06 FF FF */ lbzu r0, -1(r6)
+/* 801CA538 001C6198 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA53C 001C619C 9C 07 FF FF */ stbu r0, -1(r7)
+/* 801CA540 001C61A0 40 82 FF F4 */ bne lbl_801CA534
+/* 801CA544 001C61A4 4E 80 00 20 */ blr
+
+.global __copy_longs_unaligned
+__copy_longs_unaligned:
+/* 801CA548 001C61A8 7C 03 00 D0 */ neg r0, r3
+/* 801CA54C 001C61AC 39 04 FF FF */ addi r8, r4, -1
+/* 801CA550 001C61B0 54 06 07 BF */ clrlwi. r6, r0, 0x1e
+/* 801CA554 001C61B4 38 63 FF FF */ addi r3, r3, -1
+/* 801CA558 001C61B8 41 82 00 18 */ beq lbl_801CA570
+/* 801CA55C 001C61BC 7C A6 28 50 */ subf r5, r6, r5
+lbl_801CA560:
+/* 801CA560 001C61C0 8C 08 00 01 */ lbzu r0, 1(r8)
+/* 801CA564 001C61C4 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA568 001C61C8 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA56C 001C61CC 40 82 FF F4 */ bne lbl_801CA560
+lbl_801CA570:
+/* 801CA570 001C61D0 38 08 00 01 */ addi r0, r8, 1
+/* 801CA574 001C61D4 38 C3 FF FD */ addi r6, r3, -3
+/* 801CA578 001C61D8 54 09 07 BE */ clrlwi r9, r0, 0x1e
+/* 801CA57C 001C61DC 54 A7 E8 FE */ srwi r7, r5, 3
+/* 801CA580 001C61E0 7D 09 40 50 */ subf r8, r9, r8
+/* 801CA584 001C61E4 54 0A 1E F8 */ rlwinm r10, r0, 3, 0x1b, 0x1c
+/* 801CA588 001C61E8 84 88 00 01 */ lwzu r4, 1(r8)
+/* 801CA58C 001C61EC 21 6A 00 20 */ subfic r11, r10, 0x20
+lbl_801CA590:
+/* 801CA590 001C61F0 80 68 00 04 */ lwz r3, 4(r8)
+/* 801CA594 001C61F4 7C 84 50 30 */ slw r4, r4, r10
+/* 801CA598 001C61F8 34 E7 FF FF */ addic. r7, r7, -1
+/* 801CA59C 001C61FC 7C 60 5C 30 */ srw r0, r3, r11
+/* 801CA5A0 001C6200 7C 63 50 30 */ slw r3, r3, r10
+/* 801CA5A4 001C6204 7C 80 03 78 */ or r0, r4, r0
+/* 801CA5A8 001C6208 90 06 00 04 */ stw r0, 4(r6)
+/* 801CA5AC 001C620C 84 88 00 08 */ lwzu r4, 8(r8)
+/* 801CA5B0 001C6210 7C 80 5C 30 */ srw r0, r4, r11
+/* 801CA5B4 001C6214 7C 60 03 78 */ or r0, r3, r0
+/* 801CA5B8 001C6218 94 06 00 08 */ stwu r0, 8(r6)
+/* 801CA5BC 001C621C 40 82 FF D4 */ bne lbl_801CA590
+/* 801CA5C0 001C6220 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d
+/* 801CA5C4 001C6224 41 82 00 18 */ beq lbl_801CA5DC
+/* 801CA5C8 001C6228 84 08 00 04 */ lwzu r0, 4(r8)
+/* 801CA5CC 001C622C 7C 83 50 30 */ slw r3, r4, r10
+/* 801CA5D0 001C6230 7C 00 5C 30 */ srw r0, r0, r11
+/* 801CA5D4 001C6234 7C 60 03 78 */ or r0, r3, r0
+/* 801CA5D8 001C6238 94 06 00 04 */ stwu r0, 4(r6)
+lbl_801CA5DC:
+/* 801CA5DC 001C623C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA5E0 001C6240 38 88 00 03 */ addi r4, r8, 3
+/* 801CA5E4 001C6244 38 66 00 03 */ addi r3, r6, 3
+/* 801CA5E8 001C6248 4D 82 00 20 */ beqlr
+/* 801CA5EC 001C624C 20 09 00 04 */ subfic r0, r9, 4
+/* 801CA5F0 001C6250 7C 80 20 50 */ subf r4, r0, r4
+lbl_801CA5F4:
+/* 801CA5F4 001C6254 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801CA5F8 001C6258 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA5FC 001C625C 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA600 001C6260 40 82 FF F4 */ bne lbl_801CA5F4
+/* 801CA604 001C6264 4E 80 00 20 */ blr
+
+.global __copy_longs_rev_unaligned
+__copy_longs_rev_unaligned:
+/* 801CA608 001C6268 7D 63 2A 14 */ add r11, r3, r5
+/* 801CA60C 001C626C 7D 44 2A 14 */ add r10, r4, r5
+/* 801CA610 001C6270 55 63 07 BF */ clrlwi. r3, r11, 0x1e
+/* 801CA614 001C6274 41 82 00 18 */ beq lbl_801CA62C
+/* 801CA618 001C6278 7C A3 28 50 */ subf r5, r3, r5
+lbl_801CA61C:
+/* 801CA61C 001C627C 8C 0A FF FF */ lbzu r0, -1(r10)
+/* 801CA620 001C6280 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA624 001C6284 9C 0B FF FF */ stbu r0, -1(r11)
+/* 801CA628 001C6288 40 82 FF F4 */ bne lbl_801CA61C
+lbl_801CA62C:
+/* 801CA62C 001C628C 55 48 1E F8 */ rlwinm r8, r10, 3, 0x1b, 0x1c
+/* 801CA630 001C6290 55 47 07 BE */ clrlwi r7, r10, 0x1e
+/* 801CA634 001C6294 21 28 00 20 */ subfic r9, r8, 0x20
+/* 801CA638 001C6298 54 A6 E8 FE */ srwi r6, r5, 3
+/* 801CA63C 001C629C 20 07 00 04 */ subfic r0, r7, 4
+/* 801CA640 001C62A0 7D 4A 02 14 */ add r10, r10, r0
+/* 801CA644 001C62A4 84 8A FF FC */ lwzu r4, -4(r10)
+lbl_801CA648:
+/* 801CA648 001C62A8 80 0A FF FC */ lwz r0, -4(r10)
+/* 801CA64C 001C62AC 7C 83 4C 30 */ srw r3, r4, r9
+/* 801CA650 001C62B0 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA654 001C62B4 7C 04 40 30 */ slw r4, r0, r8
+/* 801CA658 001C62B8 7C 00 4C 30 */ srw r0, r0, r9
+/* 801CA65C 001C62BC 7C 83 1B 78 */ or r3, r4, r3
+/* 801CA660 001C62C0 90 6B FF FC */ stw r3, -4(r11)
+/* 801CA664 001C62C4 84 8A FF F8 */ lwzu r4, -8(r10)
+/* 801CA668 001C62C8 7C 83 40 30 */ slw r3, r4, r8
+/* 801CA66C 001C62CC 7C 60 03 78 */ or r0, r3, r0
+/* 801CA670 001C62D0 94 0B FF F8 */ stwu r0, -8(r11)
+/* 801CA674 001C62D4 40 82 FF D4 */ bne lbl_801CA648
+/* 801CA678 001C62D8 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d
+/* 801CA67C 001C62DC 41 82 00 18 */ beq lbl_801CA694
+/* 801CA680 001C62E0 84 6A FF FC */ lwzu r3, -4(r10)
+/* 801CA684 001C62E4 7C 80 4C 30 */ srw r0, r4, r9
+/* 801CA688 001C62E8 7C 63 40 30 */ slw r3, r3, r8
+/* 801CA68C 001C62EC 7C 60 03 78 */ or r0, r3, r0
+/* 801CA690 001C62F0 94 0B FF FC */ stwu r0, -4(r11)
+lbl_801CA694:
+/* 801CA694 001C62F4 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA698 001C62F8 4D 82 00 20 */ beqlr
+/* 801CA69C 001C62FC 7D 4A 3A 14 */ add r10, r10, r7
+lbl_801CA6A0:
+/* 801CA6A0 001C6300 8C 0A FF FF */ lbzu r0, -1(r10)
+/* 801CA6A4 001C6304 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA6A8 001C6308 9C 0B FF FF */ stbu r0, -1(r11)
+/* 801CA6AC 001C630C 40 82 FF F4 */ bne lbl_801CA6A0
+/* 801CA6B0 001C6310 4E 80 00 20 */ blr