xref: /aosp_15_r20/external/libxaac/decoder/armv8/ixheaacd_no_lap1.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.macro push_v_regs
23*15dc779aSAndroid Build Coastguard Worker    stp             q8, q9, [sp, #-32]!
24*15dc779aSAndroid Build Coastguard Worker    stp             q10, q11, [sp, #-32]!
25*15dc779aSAndroid Build Coastguard Worker    stp             q12, q13, [sp, #-32]!
26*15dc779aSAndroid Build Coastguard Worker    stp             q14, q15, [sp, #-32]!
27*15dc779aSAndroid Build Coastguard Worker    stp             X8, X9, [sp, #-16]!
28*15dc779aSAndroid Build Coastguard Worker    stp             X10, X11, [sp, #-16]!
29*15dc779aSAndroid Build Coastguard Worker    stp             X12, X13, [sp, #-16]!
30*15dc779aSAndroid Build Coastguard Worker    stp             X14, X15, [sp, #-16]!
31*15dc779aSAndroid Build Coastguard Worker    stp             X16, X17, [sp, #-16]!
32*15dc779aSAndroid Build Coastguard Worker    stp             X29, X30, [sp, #-16]!
33*15dc779aSAndroid Build Coastguard Worker.endm
34*15dc779aSAndroid Build Coastguard Worker.macro pop_v_regs
35*15dc779aSAndroid Build Coastguard Worker    ldp             X29, X30, [sp], #16
36*15dc779aSAndroid Build Coastguard Worker    ldp             X16, X17, [sp], #16
37*15dc779aSAndroid Build Coastguard Worker    ldp             X14, X15, [sp], #16
38*15dc779aSAndroid Build Coastguard Worker    ldp             X12, X13, [sp], #16
39*15dc779aSAndroid Build Coastguard Worker    ldp             X10, X11, [sp], #16
40*15dc779aSAndroid Build Coastguard Worker    ldp             X8, X9, [sp], #16
41*15dc779aSAndroid Build Coastguard Worker    ldp             q14, q15, [sp], #32
42*15dc779aSAndroid Build Coastguard Worker    ldp             q12, q13, [sp], #32
43*15dc779aSAndroid Build Coastguard Worker    ldp             q10, q11, [sp], #32
44*15dc779aSAndroid Build Coastguard Worker    ldp             q8, q9, [sp], #32
45*15dc779aSAndroid Build Coastguard Worker.endm
46*15dc779aSAndroid Build Coastguard Worker.text
47*15dc779aSAndroid Build Coastguard Worker.global ixheaacd_neg_shift_spec_armv8
48*15dc779aSAndroid Build Coastguard Workerixheaacd_neg_shift_spec_armv8:
49*15dc779aSAndroid Build Coastguard Worker    push_v_regs
50*15dc779aSAndroid Build Coastguard Worker    MOV             X5, #448
51*15dc779aSAndroid Build Coastguard Worker    SUB             X6, X5, #1
52*15dc779aSAndroid Build Coastguard Worker    LSL             X6, X6, #2
53*15dc779aSAndroid Build Coastguard Worker    ADD             X6, X6, X0
54*15dc779aSAndroid Build Coastguard Worker    MOV             X8, #-16
55*15dc779aSAndroid Build Coastguard Worker    SUB             X6, X6, #12
56*15dc779aSAndroid Build Coastguard Worker    LSL             X7, X3, #2
57*15dc779aSAndroid Build Coastguard Worker    DUP             V31.4S, W2
58*15dc779aSAndroid Build Coastguard Worker
59*15dc779aSAndroid Build Coastguard Worker
60*15dc779aSAndroid Build Coastguard Worker    LD1             {V0.4S}, [X6], X8
61*15dc779aSAndroid Build Coastguard Worker    SQNEG           V0.4S, V0.4S
62*15dc779aSAndroid Build Coastguard Worker
63*15dc779aSAndroid Build Coastguard Worker    LD1             {V6.4S}, [X6], X8
64*15dc779aSAndroid Build Coastguard Worker    SQSHL           V25.4S, V0.4S, V31.4S
65*15dc779aSAndroid Build Coastguard Worker
66*15dc779aSAndroid Build Coastguard Worker    REV64           V25.4S, V25.4S
67*15dc779aSAndroid Build Coastguard Worker    SUB             X5, X5, #8
68*15dc779aSAndroid Build Coastguard Worker
69*15dc779aSAndroid Build Coastguard Worker    SQNEG           V29.4S, V6.4S
70*15dc779aSAndroid Build Coastguard Worker
71*15dc779aSAndroid Build Coastguard WorkerLOOP_1:
72*15dc779aSAndroid Build Coastguard Worker
73*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[2], [X1], X7
74*15dc779aSAndroid Build Coastguard Worker    SQSHL           V22.4S, V29.4S, V31.4S
75*15dc779aSAndroid Build Coastguard Worker    LD1             {V0.4S}, [X6], X8
76*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[3], [X1], X7
77*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[0], [X1], X7
78*15dc779aSAndroid Build Coastguard Worker    SQNEG           V0.4S, V0.4S
79*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[1], [X1], X7
80*15dc779aSAndroid Build Coastguard Worker    REV64           V22.4S, V22.4S
81*15dc779aSAndroid Build Coastguard Worker    SUBS            X5, X5, #8
82*15dc779aSAndroid Build Coastguard Worker
83*15dc779aSAndroid Build Coastguard Worker
84*15dc779aSAndroid Build Coastguard Worker    SQSHL           V25.4S, V0.4S, V31.4S
85*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[2], [X1], X7
86*15dc779aSAndroid Build Coastguard Worker    LD1             {V6.4S}, [X6], X8
87*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[3], [X1], X7
88*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[0], [X1], X7
89*15dc779aSAndroid Build Coastguard Worker    REV64           V25.4S, V25.4S
90*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[1], [X1], X7
91*15dc779aSAndroid Build Coastguard Worker
92*15dc779aSAndroid Build Coastguard Worker
93*15dc779aSAndroid Build Coastguard Worker    SQNEG           V29.4S, V6.4S
94*15dc779aSAndroid Build Coastguard Worker
95*15dc779aSAndroid Build Coastguard Worker    BGT             LOOP_1
96*15dc779aSAndroid Build Coastguard Worker
97*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[2], [X1], X7
98*15dc779aSAndroid Build Coastguard Worker    SQSHL           V22.4S, V29.4S, V31.4S
99*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[3], [X1], X7
100*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[0], [X1], X7
101*15dc779aSAndroid Build Coastguard Worker
102*15dc779aSAndroid Build Coastguard Worker    ST1             {V25.S}[1], [X1], X7
103*15dc779aSAndroid Build Coastguard Worker
104*15dc779aSAndroid Build Coastguard Worker    REV64            V22.4S, V22.4S
105*15dc779aSAndroid Build Coastguard Worker
106*15dc779aSAndroid Build Coastguard Worker
107*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[2], [X1], X7
108*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[3], [X1], X7
109*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[0], [X1], X7
110*15dc779aSAndroid Build Coastguard Worker    ST1             {V22.S}[1], [X1], X7
111*15dc779aSAndroid Build Coastguard Worker    pop_v_regs
112*15dc779aSAndroid Build Coastguard Worker    RET
113