xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_calcmaxspectralline.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker@/******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker@ *
3*15dc779aSAndroid Build Coastguard Worker@ * Copyright (C) 2018 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker@ *
5*15dc779aSAndroid Build Coastguard Worker@ * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker@ * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker@ * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker@ *
9*15dc779aSAndroid Build Coastguard Worker@ * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker@ *
11*15dc779aSAndroid Build Coastguard Worker@ * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker@ * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker@ * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker@ * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker@ *
17*15dc779aSAndroid Build Coastguard Worker@ *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker@*/
20*15dc779aSAndroid Build Coastguard Worker
21*15dc779aSAndroid Build Coastguard Worker
22*15dc779aSAndroid Build Coastguard Worker.text
23*15dc779aSAndroid Build Coastguard Worker.p2align 2
24*15dc779aSAndroid Build Coastguard Worker   .global ixheaacd_calc_max_spectral_line_armv7
25*15dc779aSAndroid Build Coastguard Worker
26*15dc779aSAndroid Build Coastguard Workerixheaacd_calc_max_spectral_line_armv7:
27*15dc779aSAndroid Build Coastguard Worker
28*15dc779aSAndroid Build Coastguard Worker    STMFD           sp!, {R4-R12, R14}
29*15dc779aSAndroid Build Coastguard Worker    MOV             R4, R1, LSR #3
30*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R4, LSL #3
31*15dc779aSAndroid Build Coastguard Worker    VMOV.S32        D6, #0x00000000
32*15dc779aSAndroid Build Coastguard Worker    VMOV.S32        D7, #0x00000000
33*15dc779aSAndroid Build Coastguard Worker
34*15dc779aSAndroid Build Coastguard WorkerLOOP_1:
35*15dc779aSAndroid Build Coastguard Worker    VLD1.32         {D0, D1}, [R0]!
36*15dc779aSAndroid Build Coastguard Worker
37*15dc779aSAndroid Build Coastguard Worker    VLD1.32         {D2, D3}, [R0]!
38*15dc779aSAndroid Build Coastguard Worker    VABS.S32        Q0, Q0
39*15dc779aSAndroid Build Coastguard Worker
40*15dc779aSAndroid Build Coastguard Worker
41*15dc779aSAndroid Build Coastguard Worker    VABS.S32        Q1, Q1
42*15dc779aSAndroid Build Coastguard Worker    SUBS            R4, R4, #1
43*15dc779aSAndroid Build Coastguard Worker
44*15dc779aSAndroid Build Coastguard Worker    VORR            Q3, Q0, Q3
45*15dc779aSAndroid Build Coastguard Worker
46*15dc779aSAndroid Build Coastguard Worker    VORR            Q3, Q1, Q3
47*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP_1
48*15dc779aSAndroid Build Coastguard Worker
49*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R1, R6
50*15dc779aSAndroid Build Coastguard Worker
51*15dc779aSAndroid Build Coastguard Worker    VMOV.32         R4, D6[0]
52*15dc779aSAndroid Build Coastguard Worker    VMOV.32         R1, D6[1]
53*15dc779aSAndroid Build Coastguard Worker    VMOV.32         R2, D7[0]
54*15dc779aSAndroid Build Coastguard Worker    ORR             R4, R4, R1
55*15dc779aSAndroid Build Coastguard Worker    VMOV.32         R3, D7[1]
56*15dc779aSAndroid Build Coastguard Worker    ORR             R4, R4, R2
57*15dc779aSAndroid Build Coastguard Worker
58*15dc779aSAndroid Build Coastguard Worker
59*15dc779aSAndroid Build Coastguard Worker    ORR             R4, R4, R3
60*15dc779aSAndroid Build Coastguard Worker    BEQ             END_FUNC
61*15dc779aSAndroid Build Coastguard WorkerLOOP_2:
62*15dc779aSAndroid Build Coastguard Worker
63*15dc779aSAndroid Build Coastguard Worker    LDR             R2, [R0], #4
64*15dc779aSAndroid Build Coastguard Worker    MOVS            R2, R2
65*15dc779aSAndroid Build Coastguard Worker    RSBMI           R2, R2, #0
66*15dc779aSAndroid Build Coastguard Worker    ORR             R4, R4, R2
67*15dc779aSAndroid Build Coastguard Worker    SUBS            R7, R7, #1
68*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP_2
69*15dc779aSAndroid Build Coastguard Worker
70*15dc779aSAndroid Build Coastguard WorkerEND_FUNC:
71*15dc779aSAndroid Build Coastguard Worker
72*15dc779aSAndroid Build Coastguard Worker    MOVS            R0, R4
73*15dc779aSAndroid Build Coastguard Worker    MVNMI           R0, R0
74*15dc779aSAndroid Build Coastguard Worker    CLZ             R0, R0
75*15dc779aSAndroid Build Coastguard Worker    SUB             R0, R0, #1
76*15dc779aSAndroid Build Coastguard Worker
77*15dc779aSAndroid Build Coastguard Worker    LDMFD           sp!, {R4-R12, R15}
78*15dc779aSAndroid Build Coastguard Worker
79*15dc779aSAndroid Build Coastguard Worker
80*15dc779aSAndroid Build Coastguard Worker
81*15dc779aSAndroid Build Coastguard Worker
82*15dc779aSAndroid Build Coastguard Worker
83