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