tp/asm/mtx/vec.s

271 lines
13 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 80347090
.global PSVECAdd
PSVECAdd:
/* 80347090 00343FD0 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
/* 80347094 00343FD4 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
/* 80347098 00343FD8 10 C2 20 2A */ ps_add f6, f2, f4
/* 8034709C 00343FDC F0 C5 00 00 */ psq_st f6, 0(r5), 0, qr0
/* 803470A0 00343FE0 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
/* 803470A4 00343FE4 E0 A4 80 08 */ psq_l f5, 8(r4), 1, qr0
/* 803470A8 00343FE8 10 E3 28 2A */ ps_add f7, f3, f5
/* 803470AC 00343FEC F0 E5 80 08 */ psq_st f7, 8(r5), 1, qr0
/* 803470B0 00343FF0 4E 80 00 20 */ blr
.global PSVECSubtract
PSVECSubtract:
/* 803470B4 00343FF4 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
/* 803470B8 00343FF8 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
/* 803470BC 00343FFC 10 C2 20 28 */ ps_sub f6, f2, f4
/* 803470C0 00344000 F0 C5 00 00 */ psq_st f6, 0(r5), 0, qr0
/* 803470C4 00344004 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
/* 803470C8 00344008 E0 A4 80 08 */ psq_l f5, 8(r4), 1, qr0
/* 803470CC 0034400C 10 E3 28 28 */ ps_sub f7, f3, f5
/* 803470D0 00344010 F0 E5 80 08 */ psq_st f7, 8(r5), 1, qr0
/* 803470D4 00344014 4E 80 00 20 */ blr
.global PSVECScale
PSVECScale:
/* 803470D8 00344018 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 803470DC 0034401C E0 43 80 08 */ psq_l f2, 8(r3), 1, qr0
/* 803470E0 00344020 10 00 00 58 */ ps_muls0 f0, f0, f1
/* 803470E4 00344024 F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
/* 803470E8 00344028 10 02 00 58 */ ps_muls0 f0, f2, f1
/* 803470EC 0034402C F0 04 80 08 */ psq_st f0, 8(r4), 1, qr0
/* 803470F0 00344030 4E 80 00 20 */ blr
.global PSVECNormalize
PSVECNormalize:
/* 803470F4 00344034 C0 02 CB 44 */ lfs f0, lbl_80456544-_SDA2_BASE_(r2)
/* 803470F8 00344038 C0 22 CB 48 */ lfs f1, lbl_80456548-_SDA2_BASE_(r2)
/* 803470FC 0034403C E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
/* 80347100 00344040 10 A2 00 B2 */ ps_mul f5, f2, f2
/* 80347104 00344044 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
/* 80347108 00344048 10 83 28 FA */ ps_madd f4, f3, f3, f5
/* 8034710C 0034404C 10 84 28 D4 */ ps_sum0 f4, f4, f3, f5
/* 80347110 00344050 FC A0 20 34 */ frsqrte f5, f4
/* 80347114 00344054 EC C5 01 72 */ fmuls f6, f5, f5
/* 80347118 00344058 EC 05 00 32 */ fmuls f0, f5, f0
/* 8034711C 0034405C EC C6 09 3C */ fnmsubs f6, f6, f4, f1
/* 80347120 00344060 EC A6 00 32 */ fmuls f5, f6, f0
/* 80347124 00344064 10 42 01 58 */ ps_muls0 f2, f2, f5
/* 80347128 00344068 F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
/* 8034712C 0034406C 10 63 01 58 */ ps_muls0 f3, f3, f5
/* 80347130 00344070 F0 64 80 08 */ psq_st f3, 8(r4), 1, qr0
/* 80347134 00344074 4E 80 00 20 */ blr
.global PSVECSquareMag
PSVECSquareMag:
/* 80347138 00344078 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 8034713C 0034407C 10 00 00 32 */ ps_mul f0, f0, f0
/* 80347140 00344080 C0 23 00 08 */ lfs f1, 8(r3)
/* 80347144 00344084 10 21 00 7A */ ps_madd f1, f1, f1, f0
/* 80347148 00344088 10 21 00 14 */ ps_sum0 f1, f1, f0, f0
/* 8034714C 0034408C 4E 80 00 20 */ blr
.global PSVECMag
PSVECMag:
/* 80347150 00344090 C0 82 CB 44 */ lfs f4, lbl_80456544-_SDA2_BASE_(r2)
/* 80347154 00344094 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 80347158 00344098 10 00 00 32 */ ps_mul f0, f0, f0
/* 8034715C 0034409C C0 23 00 08 */ lfs f1, 8(r3)
/* 80347160 003440A0 EC 44 20 28 */ fsubs f2, f4, f4
/* 80347164 003440A4 10 21 00 7A */ ps_madd f1, f1, f1, f0
/* 80347168 003440A8 10 21 00 14 */ ps_sum0 f1, f1, f0, f0
/* 8034716C 003440AC FC 01 10 00 */ fcmpu cr0, f1, f2
/* 80347170 003440B0 41 82 00 20 */ beq lbl_80347190
/* 80347174 003440B4 FC 00 08 34 */ frsqrte f0, f1
/* 80347178 003440B8 C0 62 CB 48 */ lfs f3, lbl_80456548-_SDA2_BASE_(r2)
/* 8034717C 003440BC EC 40 00 32 */ fmuls f2, f0, f0
/* 80347180 003440C0 EC 00 01 32 */ fmuls f0, f0, f4
/* 80347184 003440C4 EC 42 18 7C */ fnmsubs f2, f2, f1, f3
/* 80347188 003440C8 EC 02 00 32 */ fmuls f0, f2, f0
/* 8034718C 003440CC EC 21 00 32 */ fmuls f1, f1, f0
lbl_80347190:
/* 80347190 003440D0 4E 80 00 20 */ blr
.global PSVECDotProduct
PSVECDotProduct:
/* 80347194 003440D4 E0 43 00 04 */ psq_l f2, 4(r3), 0, qr0
/* 80347198 003440D8 E0 64 00 04 */ psq_l f3, 4(r4), 0, qr0
/* 8034719C 003440DC 10 42 00 F2 */ ps_mul f2, f2, f3
/* 803471A0 003440E0 E0 A3 00 00 */ psq_l f5, 0(r3), 0, qr0
/* 803471A4 003440E4 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
/* 803471A8 003440E8 10 65 11 3A */ ps_madd f3, f5, f4, f2
/* 803471AC 003440EC 10 23 10 94 */ ps_sum0 f1, f3, f2, f2
/* 803471B0 003440F0 4E 80 00 20 */ blr
.global PSVECCrossProduct
PSVECCrossProduct:
/* 803471B4 003440F4 E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0
/* 803471B8 003440F8 C0 43 00 08 */ lfs f2, 8(r3)
/* 803471BC 003440FC E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 803471C0 00344100 10 C1 0C A0 */ ps_merge10 f6, f1, f1
/* 803471C4 00344104 C0 64 00 08 */ lfs f3, 8(r4)
/* 803471C8 00344108 10 81 00 B2 */ ps_mul f4, f1, f2
/* 803471CC 0034410C 10 E1 00 18 */ ps_muls0 f7, f1, f0
/* 803471D0 00344110 10 A0 20 F8 */ ps_msub f5, f0, f3, f4
/* 803471D4 00344114 11 00 39 B8 */ ps_msub f8, f0, f6, f7
/* 803471D8 00344118 11 25 2C E0 */ ps_merge11 f9, f5, f5
/* 803471DC 0034411C 11 45 44 60 */ ps_merge01 f10, f5, f8
/* 803471E0 00344120 F1 25 80 00 */ psq_st f9, 0(r5), 1, qr0
/* 803471E4 00344124 11 40 50 50 */ ps_neg f10, f10
/* 803471E8 00344128 F1 45 00 04 */ psq_st f10, 4(r5), 0, qr0
/* 803471EC 0034412C 4E 80 00 20 */ blr
.global C_VECHalfAngle
C_VECHalfAngle:
/* 803471F0 00344130 7C 08 02 A6 */ mflr r0
/* 803471F4 00344134 90 01 00 04 */ stw r0, 4(r1)
/* 803471F8 00344138 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 803471FC 0034413C 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80347200 00344140 7C BF 2B 78 */ mr r31, r5
/* 80347204 00344144 C0 03 00 00 */ lfs f0, 0(r3)
/* 80347208 00344148 FC 00 00 50 */ fneg f0, f0
/* 8034720C 0034414C D0 01 00 2C */ stfs f0, 0x2c(r1)
/* 80347210 00344150 C0 03 00 04 */ lfs f0, 4(r3)
/* 80347214 00344154 FC 00 00 50 */ fneg f0, f0
/* 80347218 00344158 D0 01 00 30 */ stfs f0, 0x30(r1)
/* 8034721C 0034415C C0 03 00 08 */ lfs f0, 8(r3)
/* 80347220 00344160 38 61 00 2C */ addi r3, r1, 0x2c
/* 80347224 00344164 FC 00 00 50 */ fneg f0, f0
/* 80347228 00344168 D0 01 00 34 */ stfs f0, 0x34(r1)
/* 8034722C 0034416C C0 04 00 00 */ lfs f0, 0(r4)
/* 80347230 00344170 FC 00 00 50 */ fneg f0, f0
/* 80347234 00344174 D0 01 00 20 */ stfs f0, 0x20(r1)
/* 80347238 00344178 C0 04 00 04 */ lfs f0, 4(r4)
/* 8034723C 0034417C FC 00 00 50 */ fneg f0, f0
/* 80347240 00344180 D0 01 00 24 */ stfs f0, 0x24(r1)
/* 80347244 00344184 C0 04 00 08 */ lfs f0, 8(r4)
/* 80347248 00344188 7C 64 1B 78 */ mr r4, r3
/* 8034724C 0034418C FC 00 00 50 */ fneg f0, f0
/* 80347250 00344190 D0 01 00 28 */ stfs f0, 0x28(r1)
/* 80347254 00344194 4B FF FE A1 */ bl PSVECNormalize
/* 80347258 00344198 38 61 00 20 */ addi r3, r1, 0x20
/* 8034725C 0034419C 7C 64 1B 78 */ mr r4, r3
/* 80347260 003441A0 4B FF FE 95 */ bl PSVECNormalize
/* 80347264 003441A4 38 61 00 2C */ addi r3, r1, 0x2c
/* 80347268 003441A8 38 81 00 20 */ addi r4, r1, 0x20
/* 8034726C 003441AC 38 A1 00 14 */ addi r5, r1, 0x14
/* 80347270 003441B0 4B FF FE 21 */ bl PSVECAdd
/* 80347274 003441B4 38 61 00 14 */ addi r3, r1, 0x14
/* 80347278 003441B8 7C 64 1B 78 */ mr r4, r3
/* 8034727C 003441BC 4B FF FF 19 */ bl PSVECDotProduct
/* 80347280 003441C0 C0 02 CB 40 */ lfs f0, lbl_80456540-_SDA2_BASE_(r2)
/* 80347284 003441C4 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80347288 003441C8 40 81 00 14 */ ble lbl_8034729C
/* 8034728C 003441CC 38 61 00 14 */ addi r3, r1, 0x14
/* 80347290 003441D0 7F E4 FB 78 */ mr r4, r31
/* 80347294 003441D4 4B FF FE 61 */ bl PSVECNormalize
/* 80347298 003441D8 48 00 00 1C */ b lbl_803472B4
lbl_8034729C:
/* 8034729C 003441DC 80 61 00 14 */ lwz r3, 0x14(r1)
/* 803472A0 003441E0 80 01 00 18 */ lwz r0, 0x18(r1)
/* 803472A4 003441E4 90 7F 00 00 */ stw r3, 0(r31)
/* 803472A8 003441E8 90 1F 00 04 */ stw r0, 4(r31)
/* 803472AC 003441EC 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 803472B0 003441F0 90 1F 00 08 */ stw r0, 8(r31)
lbl_803472B4:
/* 803472B4 003441F4 80 01 00 44 */ lwz r0, 0x44(r1)
/* 803472B8 003441F8 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 803472BC 003441FC 38 21 00 40 */ addi r1, r1, 0x40
/* 803472C0 00344200 7C 08 03 A6 */ mtlr r0
/* 803472C4 00344204 4E 80 00 20 */ blr
.global C_VECReflect
C_VECReflect:
/* 803472C8 00344208 7C 08 02 A6 */ mflr r0
/* 803472CC 0034420C 90 01 00 04 */ stw r0, 4(r1)
/* 803472D0 00344210 94 21 FF C8 */ stwu r1, -0x38(r1)
/* 803472D4 00344214 93 E1 00 34 */ stw r31, 0x34(r1)
/* 803472D8 00344218 93 C1 00 30 */ stw r30, 0x30(r1)
/* 803472DC 0034421C 7C 9E 23 78 */ mr r30, r4
/* 803472E0 00344220 7C BF 2B 78 */ mr r31, r5
/* 803472E4 00344224 C0 03 00 00 */ lfs f0, 0(r3)
/* 803472E8 00344228 FC 00 00 50 */ fneg f0, f0
/* 803472EC 0034422C D0 01 00 20 */ stfs f0, 0x20(r1)
/* 803472F0 00344230 C0 03 00 04 */ lfs f0, 4(r3)
/* 803472F4 00344234 FC 00 00 50 */ fneg f0, f0
/* 803472F8 00344238 D0 01 00 24 */ stfs f0, 0x24(r1)
/* 803472FC 0034423C C0 03 00 08 */ lfs f0, 8(r3)
/* 80347300 00344240 38 61 00 20 */ addi r3, r1, 0x20
/* 80347304 00344244 7C 64 1B 78 */ mr r4, r3
/* 80347308 00344248 FC 00 00 50 */ fneg f0, f0
/* 8034730C 0034424C D0 01 00 28 */ stfs f0, 0x28(r1)
/* 80347310 00344250 4B FF FD E5 */ bl PSVECNormalize
/* 80347314 00344254 7F C3 F3 78 */ mr r3, r30
/* 80347318 00344258 38 81 00 14 */ addi r4, r1, 0x14
/* 8034731C 0034425C 4B FF FD D9 */ bl PSVECNormalize
/* 80347320 00344260 38 61 00 20 */ addi r3, r1, 0x20
/* 80347324 00344264 38 81 00 14 */ addi r4, r1, 0x14
/* 80347328 00344268 4B FF FE 6D */ bl PSVECDotProduct
/* 8034732C 0034426C C0 62 CB 4C */ lfs f3, lbl_8045654C-_SDA2_BASE_(r2)
/* 80347330 00344270 7F E3 FB 78 */ mr r3, r31
/* 80347334 00344274 C0 41 00 14 */ lfs f2, 0x14(r1)
/* 80347338 00344278 7F E4 FB 78 */ mr r4, r31
/* 8034733C 0034427C C0 01 00 20 */ lfs f0, 0x20(r1)
/* 80347340 00344280 EC 43 00 B2 */ fmuls f2, f3, f2
/* 80347344 00344284 EC 42 00 72 */ fmuls f2, f2, f1
/* 80347348 00344288 EC 02 00 28 */ fsubs f0, f2, f0
/* 8034734C 0034428C D0 1F 00 00 */ stfs f0, 0(r31)
/* 80347350 00344290 C0 41 00 18 */ lfs f2, 0x18(r1)
/* 80347354 00344294 C0 01 00 24 */ lfs f0, 0x24(r1)
/* 80347358 00344298 EC 43 00 B2 */ fmuls f2, f3, f2
/* 8034735C 0034429C EC 42 00 72 */ fmuls f2, f2, f1
/* 80347360 003442A0 EC 02 00 28 */ fsubs f0, f2, f0
/* 80347364 003442A4 D0 1F 00 04 */ stfs f0, 4(r31)
/* 80347368 003442A8 C0 41 00 1C */ lfs f2, 0x1c(r1)
/* 8034736C 003442AC C0 01 00 28 */ lfs f0, 0x28(r1)
/* 80347370 003442B0 EC 43 00 B2 */ fmuls f2, f3, f2
/* 80347374 003442B4 EC 22 00 72 */ fmuls f1, f2, f1
/* 80347378 003442B8 EC 01 00 28 */ fsubs f0, f1, f0
/* 8034737C 003442BC D0 1F 00 08 */ stfs f0, 8(r31)
/* 80347380 003442C0 4B FF FD 75 */ bl PSVECNormalize
/* 80347384 003442C4 80 01 00 3C */ lwz r0, 0x3c(r1)
/* 80347388 003442C8 83 E1 00 34 */ lwz r31, 0x34(r1)
/* 8034738C 003442CC 83 C1 00 30 */ lwz r30, 0x30(r1)
/* 80347390 003442D0 38 21 00 38 */ addi r1, r1, 0x38
/* 80347394 003442D4 7C 08 03 A6 */ mtlr r0
/* 80347398 003442D8 4E 80 00 20 */ blr
.global PSVECSquareDistance
PSVECSquareDistance:
/* 8034739C 003442DC E0 03 00 04 */ psq_l f0, 4(r3), 0, qr0
/* 803473A0 003442E0 E0 24 00 04 */ psq_l f1, 4(r4), 0, qr0
/* 803473A4 003442E4 10 40 08 28 */ ps_sub f2, f0, f1
/* 803473A8 003442E8 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 803473AC 003442EC E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0
/* 803473B0 003442F0 10 42 00 B2 */ ps_mul f2, f2, f2
/* 803473B4 003442F4 10 00 08 28 */ ps_sub f0, f0, f1
/* 803473B8 003442F8 10 20 10 3A */ ps_madd f1, f0, f0, f2
/* 803473BC 003442FC 10 21 10 94 */ ps_sum0 f1, f1, f2, f2
/* 803473C0 00344300 4E 80 00 20 */ blr
.global PSVECDistance
PSVECDistance:
/* 803473C4 00344304 E0 03 00 04 */ psq_l f0, 4(r3), 0, qr0
/* 803473C8 00344308 E0 24 00 04 */ psq_l f1, 4(r4), 0, qr0
/* 803473CC 0034430C 10 40 08 28 */ ps_sub f2, f0, f1
/* 803473D0 00344310 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 803473D4 00344314 E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0
/* 803473D8 00344318 10 42 00 B2 */ ps_mul f2, f2, f2
/* 803473DC 0034431C 10 00 08 28 */ ps_sub f0, f0, f1
/* 803473E0 00344320 C0 62 CB 44 */ lfs f3, lbl_80456544-_SDA2_BASE_(r2)
/* 803473E4 00344324 10 20 10 3A */ ps_madd f1, f0, f0, f2
/* 803473E8 00344328 EC 03 18 28 */ fsubs f0, f3, f3
/* 803473EC 0034432C 10 21 10 94 */ ps_sum0 f1, f1, f2, f2
/* 803473F0 00344330 FC 00 08 00 */ fcmpu cr0, f0, f1
/* 803473F4 00344334 41 82 00 20 */ beq lbl_80347414
/* 803473F8 00344338 C0 82 CB 48 */ lfs f4, lbl_80456548-_SDA2_BASE_(r2)
/* 803473FC 0034433C FC 00 08 34 */ frsqrte f0, f1
/* 80347400 00344340 EC 40 00 32 */ fmuls f2, f0, f0
/* 80347404 00344344 EC 00 00 F2 */ fmuls f0, f0, f3
/* 80347408 00344348 EC 42 20 7C */ fnmsubs f2, f2, f1, f4
/* 8034740C 0034434C EC 02 00 32 */ fmuls f0, f2, f0
/* 80347410 00344350 EC 21 00 32 */ fmuls f1, f1, f0
lbl_80347414:
/* 80347414 00344354 4E 80 00 20 */ blr