📄 asmpoly_gcc.s
字号:
@/* ***** BEGIN LICENSE BLOCK *****
@ * Version: RCSL 1.0/RPSL 1.0
@ *
@ * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
@ *
@ * The contents of this file, and the files included with this file, are
@ * subject to the current version of the RealNetworks Public Source License
@ * Version 1.0 (the "RPSL") available at
@ * http://www.helixcommunity.org/content/rpsl unless you have licensed
@ * the file under the RealNetworks Community Source License Version 1.0
@ * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
@ * in which case the RCSL will apply. You may also obtain the license terms
@ * directly from RealNetworks. You may not use this file except in
@ * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
@ * applicable to this file, the RCSL. Please see the applicable RPSL or
@ * RCSL for the rights, obligations and limitations governing use of the
@ * contents of the file.
@ *
@ * This file is part of the Helix DNA Technology. RealNetworks is the
@ * developer of the Original Code and owns the copyrights in the portions
@ * it created.
@ *
@ * This file, and the files included with this file, is distributed and made
@ * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@ * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
@ * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
@ *
@ * Technology Compatibility Kit Test Suite(s) Location:
@ * http://www.helixcommunity.org/content/tck
@ *
@ * Contributor(s):
@ *
@ * ***** END LICENSE BLOCK ***** */
.GLOBAL xmp3_PolyphaseStereo
xmp3_PolyphaseStereo:
STMFD r13!,{r4-r11,r14}
SUB r13,r13,#8
STR r0,[r13,#4]
MOV r4,#0x2000000
MOV r8,#0x2000000
MOV r5,#0
MOV r9,#0
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0]
LDR r3,[r1,#0x5c]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x80]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xdc]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#4]
LDR r3,[r1,#0x58]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x84]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd8]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#8]
LDR r3,[r1,#0x54]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x88]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd4]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0xc]
LDR r3,[r1,#0x50]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x8c]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd0]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x10]
LDR r3,[r1,#0x4c]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x90]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xcc]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x14]
LDR r3,[r1,#0x48]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x94]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc8]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x18]
LDR r3,[r1,#0x44]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x98]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc4]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x1c]
LDR r3,[r1,#0x40]
SMLAL r4,r5,r0,r12
LDR r0,[r1,#0x9c]
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc0]
SMLAL r8,r9,r0,r12
SMLAL r8,r9,r3,r14
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
MOV r8,r8,LSR #26
ORR r8,r8,r9,LSL #6
MOV r12,r8,ASR #31
CMP r12,r8,ASR #15
EORNE r8,r12,r14
STRH r4,[r0,#0]
STRH r8,[r0,#2]
ADD r2,r2,#0x3c0
ADD r1,r1,#0x1000
MOV r4,#0x2000000
MOV r8,#0x2000000
MOV r5,#0
MOV r9,#0
LDR r12,[r2],#4
LDR r0,[r1,#0]
LDR r3,[r1,#0x80]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#4]
LDR r3,[r1,#0x84]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#8]
LDR r3,[r1,#0x88]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#0xc]
LDR r3,[r1,#0x8c]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x10]
LDR r3,[r1,#0x90]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x14]
LDR r3,[r1,#0x94]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x18]
LDR r3,[r1,#0x98]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x1c]
LDR r3,[r1,#0x9c]
SMLAL r4,r5,r0,r12
SMLAL r8,r9,r3,r12
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
MOV r8,r8,LSR #26
ORR r8,r8,r9,LSL #6
MOV r12,r8,ASR #31
CMP r12,r8,ASR #15
EORNE r8,r12,r14
STRH r4,[r0,#0x40]
STRH r8,[r0,#0x42]
SUB r2,r2,#0x3e0
SUB r1,r1,#0xf00
MOV r12,#0xf
ADD r0,r0,#4
LoopPS:
STR r12,[r13,#0]
STR r0,[r13,#4]
MOV r4,#0x2000000
MOV r8,#0x2000000
MOV r6,#0x2000000
MOV r10,#0x2000000
MOV r5,#0
MOV r9,#0
MOV r7,#0
MOV r11,#0
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0]
LDR r3,[r1,#0x5c]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xdc]
LDR r0,[r1,#0x80]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#4]
LDR r3,[r1,#0x58]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd8]
LDR r0,[r1,#0x84]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#8]
LDR r3,[r1,#0x54]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd4]
LDR r0,[r1,#0x88]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0xc]
LDR r3,[r1,#0x50]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xd0]
LDR r0,[r1,#0x8c]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x10]
LDR r3,[r1,#0x4c]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xcc]
LDR r0,[r1,#0x90]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x14]
LDR r3,[r1,#0x48]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc8]
LDR r0,[r1,#0x94]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x18]
LDR r3,[r1,#0x44]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc4]
LDR r0,[r1,#0x98]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x1c]
LDR r3,[r1,#0x40]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r6,r7,r3,r12
SMLAL r4,r5,r3,r14
LDR r3,[r1,#0xc0]
LDR r0,[r1,#0x9c]
SMLAL r8,r9,r3,r14
SMLAL r10,r11,r3,r12
RSB r14,r14,#0
SMLAL r8,r9,r0,r12
SMLAL r10,r11,r0,r14
ADD r1,r1,#0x100
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
MOV r8,r8,LSR #26
ORR r8,r8,r9,LSL #6
MOV r12,r8,ASR #31
CMP r12,r8,ASR #15
EORNE r8,r12,r14
MOV r6,r6,LSR #26
ORR r6,r6,r7,LSL #6
MOV r12,r6,ASR #31
CMP r12,r6,ASR #15
EORNE r6,r12,r14
MOV r10,r10,LSR #26
ORR r10,r10,r11,LSL #6
MOV r12,r10,ASR #31
CMP r12,r10,ASR #15
EORNE r10,r12,r14
LDR r12,[r13,#0]
ADD r14,r0,r12,LSL #3
STRH r6,[r14],#2
STRH r10,[r14],#2
STRH r4,[r0],#2
STRH r8,[r0],#2
SUBS r12,r12,#1
BNE LoopPS
ADD r13,r13,#8
LDMFD r13!,{r4-r11,pc}
.GLOBAL xmp3_PolyphaseMono
xmp3_PolyphaseMono:
STMFD r13!,{r4-r11,r14}
SUB r13,r13,#8
STR r0,[r13,#4]
MOV r4,#0x2000000
MOV r5,#0
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0]
LDR r3,[r1,#0x5c]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#4]
LDR r3,[r1,#0x58]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#8]
LDR r3,[r1,#0x54]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0xc]
LDR r3,[r1,#0x50]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x10]
LDR r3,[r1,#0x4c]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x14]
LDR r3,[r1,#0x48]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x18]
LDR r3,[r1,#0x44]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x1c]
LDR r3,[r1,#0x40]
RSB r14,r14,#0
SMLAL r4,r5,r0,r12
SMLAL r4,r5,r3,r14
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
STRH r4,[r0,#0]
ADD r2,r2,#0x3c0
ADD r1,r1,#0x1000
MOV r4,#0x2000000
MOV r5,#0
LDR r12,[r2],#4
LDR r0,[r1,#0]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#4]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#8]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#0xc]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x10]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x14]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x18]
SMLAL r4,r5,r0,r12
LDR r12,[r2],#4
LDR r0,[r1,#0x1c]
SMLAL r4,r5,r0,r12
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
STRH r4,[r0,#0x20]
SUB r2,r2,#0x3e0
SUB r1,r1,#0xf00
MOV r12,#0xf
ADD r0,r0,#2
LoopPM:
STR r12,[r13,#0]
STR r0,[r13,#4]
MOV r4,#0x2000000
MOV r6,#0x2000000
MOV r5,#0
MOV r7,#0
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0]
LDR r3,[r1,#0x5c]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#4]
LDR r3,[r1,#0x58]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#8]
LDR r3,[r1,#0x54]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0xc]
LDR r3,[r1,#0x50]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x10]
LDR r3,[r1,#0x4c]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x14]
LDR r3,[r1,#0x48]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x18]
LDR r3,[r1,#0x44]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
LDR r12,[r2],#4
LDR r14,[r2],#4
LDR r0,[r1,#0x1c]
LDR r3,[r1,#0x40]
SMLAL r4,r5,r0,r12
SMLAL r6,r7,r0,r14
RSB r14,r14,#0
SMLAL r4,r5,r3,r14
SMLAL r6,r7,r3,r12
ADD r1,r1,#0x100
LDR r0,[r13,#4]
MOV r14,#0x7f00
ORR r14,r14,#0xff
MOV r4,r4,LSR #26
ORR r4,r4,r5,LSL #6
MOV r12,r4,ASR #31
CMP r12,r4,ASR #15
EORNE r4,r12,r14
MOV r6,r6,LSR #26
ORR r6,r6,r7,LSL #6
MOV r12,r6,ASR #31
CMP r12,r6,ASR #15
EORNE r6,r12,r14
LDR r12,[r13,#0]
ADD r14,r0,r12,LSL #2
STRH r6,[r14],#2
STRH r4,[r0],#2
SUBS r12,r12,#1
BNE LoopPM
ADD r13,r13,#8
LDMFD r13!,{r4-r11,pc}
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -