• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1@/******************************************************************************
2@ *
3@ * Copyright (C) 2018 The Android Open Source Project
4@ *
5@ * Licensed under the Apache License, Version 2.0 (the "License");
6@ * you may not use this file except in compliance with the License.
7@ * You may obtain a copy of the License at:
8@ *
9@ * http://www.apache.org/licenses/LICENSE-2.0
10@ *
11@ * Unless required by applicable law or agreed to in writing, software
12@ * distributed under the License is distributed on an "AS IS" BASIS,
13@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14@ * See the License for the specific language governing permissions and
15@ * limitations under the License.
16@ *
17@ *****************************************************************************
18@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19@*/
20
21
22.text
23.p2align 2
24.global ixheaacd_expsubbandsamples_armv7
25ixheaacd_expsubbandsamples_armv7:
26
27    STMFD           sp!, {r4-r12}
28
29    LDR             r7, [sp, #0x24]
30    LDR             r10, [sp, #0x28]
31    SUB             r11, r3, r2
32    MOV             r12, #1
33    CMP             r7, r10
34    BGE             EXIT
35
36    MOVS            r3, r11
37    BEQ             EXIT
38
39
40    LDR             r4, [sp, #0x2c]
41    CMP             r4, #0
42    BEQ             HQ_OUTER_LOOP
43
44
45
46    SUB             r10, r10, r7
47    ADD             r0, r0, r7, LSL #2
48    LDR             r1, [r0], #4
49
50OUTERLOOP:
51    MOV             r3, r11
52    ADD             r5, r1, r2, LSL #2
53INLOOP:
54
55    LDR             r4, [r5], #4
56    SUBS            r3, r3, #2
57    LDRGE           r8, [r5], #4
58    EOR             r1 , r4 , r4, asr #31
59    ORR             r12, r12, r1
60    EORGE           r1 , r8 , r8, asr #31
61    ORRGE           r12, r12, r1
62    BGT             INLOOP
63
64    SUBS            r10, r10, #1
65    LDR             r1, [r0], #4
66    BGT             OUTERLOOP
67
68
69
70    B               EXIT
71
72
73HQ_OUTER_LOOP:
74    LDR             r6, [r0, r7, LSL #2]
75    LDR             r5, [r1, r7, LSL #2]
76    ADD             r6, r6, r2, LSL #2
77    ADD             r5, r5, r2, LSL #2
78    MOV             r4, r11
79
80HQ_IN_LOOP:
81    LDR             r8, [r6], #4
82    LDR             r9, [r5], #4
83    SUBS            r4, r4, #2
84
85    EOR             r3 , r8 , r8, asr #31
86    ORR             r12, r12, r3
87
88    EOR             r3 , r9 , r9, asr #31
89    ORR             r12, r12, r3
90
91    LDRGE           r8, [r6], #4
92    LDRGE           r9, [r5], #4
93
94    EORGE           r3 , r8 , r8, asr #31
95    ORRGE           r12, r12, r3
96
97    EORGE           r3 , r9 , r9, asr #31
98    ORRGE           r12, r12, r3
99
100    BGT             HQ_IN_LOOP
101
102INLOEN:
103    ADD             r7, r7, #1
104    CMP             r7, r10
105    BLT             HQ_OUTER_LOOP
106
107EXIT:
108
109    CLZ             r0, r12
110    SUB             r0, r0, #1
111    LDMFD           sp!, {r4-r12}
112    BX              lr
113
114