10d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar///*****************************************************************************
20d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
30d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
40d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
50d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* Licensed under the Apache License, Version 2.0 (the "License");
60d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* you may not use this file except in compliance with the License.
70d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* You may obtain a copy of the License at:
80d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
90d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* http://www.apache.org/licenses/LICENSE-2.0
100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* Unless required by applicable law or agreed to in writing, software
120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* distributed under the License is distributed on an "AS IS" BASIS,
130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* See the License for the specific language governing permissions and
150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* limitations under the License.
160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*****************************************************************************/
180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar///**
190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*******************************************************************************
200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @file
210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  ihevc_intra_pred_luma_mode_11_to_17.s
220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @brief
240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  contains function definitions for intra prediction dc filtering.
250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* functions are coded using neon  intrinsics and can be compiled using
260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* rvct
280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @author
300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  akshaya mukund
310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @par list of functions:
330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @remarks
360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  none
370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*******************************************************************************
390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*/
400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar///**
410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*******************************************************************************
420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @brief
440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*    luma intraprediction filter for dc input
450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @par description:
470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[in] pu1_ref
490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  uword8 pointer to the source
500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[out] pu1_dst
520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  uword8 pointer to the destination
530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[in] src_strd
550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  integer source stride
560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[in] dst_strd
580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  integer destination stride
590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[in] nt
610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  size of tranform block
620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @param[in] mode
640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  type of filtering
650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @returns
670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @remarks
690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*  none
700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*
710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*******************************************************************************
720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*/
730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_intra_pred_luma_mode_11_to_17(uword8* pu1_ref,
750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//                               word32 src_strd,
760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//                               uword8* pu1_dst,
770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//                               word32 dst_strd,
780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//                               word32 nt,
790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//                               word32 mode)
800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//
810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************variables vs registers*****************************************
820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//x0 => *pu1_ref
830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//x1 => src_strd
840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//x2 => *pu1_dst
850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//x3 => dst_strd
860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//stack contents from #40
880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//    nt
890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//    mode
900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text
920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.align 4
930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.include "ihevc_neon_macros.s"
940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.globl ihevc_intra_pred_luma_mode_11_to_17_av8
980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_ang_table
990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_inv_ang_table
1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern col_for_intra_luma
101221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy.extern idx_neg_idx_11_17
1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_intra_pred_luma_mode_11_to_17_av8, %function
1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_intra_pred_luma_mode_11_to_17_av8:
1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    // stmfd sp!, {x4-x12, x14}            //stack stores the values of the arguments
1089cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy
1099cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    stp         d12,d13,[sp,#-16]!
1109cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    stp         d14,d15,[sp,#-16]!
1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    stp         x19, x20,[sp,#-16]!
1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x7,  :got:gai4_ihevc_ang_table
1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x7,  [x7, #:got_lo12:gai4_ihevc_ang_table]
1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x8,  :got:gai4_ihevc_inv_ang_table
1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x8,  [x8, #:got_lo12:gai4_ihevc_inv_ang_table]
1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x7, x7, x5, lsl #2          //gai4_ihevc_ang_table[mode]
1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x8, x8, x5, lsl #2          //gai4_ihevc_inv_ang_table[mode - 11]
1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x8, x8, #44
1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w7,  [x7]                   //intra_pred_ang
1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x7,w7
1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         sp, sp, #132                //ref_temp[2 * max_cu_size + 1]
1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w8,  [x8]                   //inv_ang
1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x8,w8
1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, sp, x4                  //ref_temp + nt
1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mul         x9, x4, x7                  //nt*intra_pred_ang
1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x6, x6, #1                  //ref_temp + nt - 1
1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x1, x0, x4, lsl #1          //x1 = &src[2nt]
1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v30.8b,w7                   //intra_pred_ang
1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x7, x4
1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w11, [x1], #-1
1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x11,w11
1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         x9, x9, #5
1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w12, [x1], #-1
1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x12,w12
1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w10, [x1], #-1
1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x10,w10
1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w14, [x1], #-1
1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x14,w14
1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w11, [x6], #1
1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x11,w11
1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w12, [x6], #1
1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x12,w12
1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w10, [x6], #1
1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x10,w10
1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w14, [x6], #1
1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x14,w14
1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x7, x7, #4
1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         end_loop_copy
1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x6, x6,#4
1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#3
1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x7,x7,#4
1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         loop_copy_8
1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x7,x7,#8
1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         loop_copy_16
1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarloop_copy_32:
1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.8b},[x1]
1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#8
1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v1.8b},[x1]
1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#8
1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v2.8b},[x1]
1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#8
1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v3.8b},[x1]
1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v0.8b,  v0.8b
1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v1.8b,  v1.8b
1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v0.8b},[x6],#8
1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v2.8b,  v2.8b
1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v1.8b},[x6],#8
1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v3.8b,  v3.8b
1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v2.8b},[x6],#8
1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v3.8b},[x6],#8
1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#1
1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_loop_copy
1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarloop_copy_16:
1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.8b},[x1]
1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#8
1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v1.8b},[x1]
1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v0.8b,  v0.8b
1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v1.8b,  v1.8b
1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v0.8b},[x6],#8
2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v1.8b},[x6],#8
2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#1
2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_loop_copy
2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarloop_copy_8:
2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.8b},[x1]
2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rev64       v0.8b,  v0.8b
2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v0.8b},[x6],#8
2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1,#1
2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarend_loop_copy:
2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w11, [x1], #-1
2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x11,w11
2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w11, [x6], #1
2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x11,w11
2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
217d91eedb8cdcdd3d4f23379517752d48fa5791604Bernhard Rosenkränzer    cmn         x9, #1
2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         prologue_8_16_32
2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, sp, x4                  //ref_temp + nt
2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x6, x6, #2                  //ref_temp + nt - 2
2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x12, #-1
2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x20, x9, x12                //count to take care off ref_idx
2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    neg         x9, x20
2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x1, x0, x4, lsl #1          //x1 = &src[2nt]
2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x7, #128                    //inv_ang_sum
2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarloop_copy_ref_idx:
2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x7, x7, x8                  //inv_ang_sum += inv_ang
2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    lsr         x20, x7, #8
2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        w11, [x1, x20]
2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    strb        w11, [x6], #-1
2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x9, x9, #1
2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bne         loop_copy_ref_idx
2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarprologue_8_16_32:
2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         x4, #4
2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         sz_4_proc
2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x14,  :got:col_for_intra_luma
2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x14,  [x14, #:got_lo12:col_for_intra_luma]
2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    lsr         x10, x4, #3
2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v31.8b},[x14],#8
2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mul         x10, x4, x10                //block counter (dec by #8)
2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x11, x4                     //col counter to be inc/dec by #8
2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    smull       v22.8h, v30.8b, v31.8b      //(col+1)*intra_pred_angle [0:7](col)
2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #1
2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x7, x5, #11
2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v2.8b,w0                    //contains #1 for adding to get ref_main_idx + 1
2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x12, :got:idx_neg_idx_11_17 //load least idx table
2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x12, [x12, #:got_lo12:idx_neg_idx_11_17]
2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #2
2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v3.8b,w0
2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x12, x12, x7, lsl #4
2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x8, x12
2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x7, #8
2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x7, x7, x3, lsl #3          //x7 = 8-8x3
2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w9,  [x8]
2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x9,w9
2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x1, sp, x4                  //ref_temp + nt
2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    xtn         v6.8b,  v22.8h
2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v26.8b,w9                   //least idx added to final idx values
2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x1, x1, #1                  //ref_temp + nt - 1
2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, x1, x9
2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.16b}, [x6]              //stores the 32 values reqd based on indices values (from least idx)
2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sshr        v22.8h, v22.8h,#5
2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #31
2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v29.8b,w0                   //contains #31 for vand operation
2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #32
2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v28.8b,w0
2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2929cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sqxtn       v19.8b,  v22.8h
2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    and         v6.8b,  v6.8b ,  v29.8b     //fract values in d1/ idx values in d0
2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #1
2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v27.8b,w0                   //row value inc or reset accordingly
2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2999cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v27.8b   //ref_main_idx (add row)
3009cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sub         v19.8b,  v19.8b ,  v26.8b   //ref_main_idx (row 0)
3019cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v19.8b ,  v2.8b    //ref_main_idx + 1 (row 0)
3029cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 0)
3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         v7.8b,  v28.8b ,  v6.8b     //32-fract
3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3059cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 0)
3069cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v4.8b,  v19.8b ,  v2.8b     //ref_main_idx (row 1)
3079cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v5.8b,  v21.8b ,  v2.8b     //ref_main_idx + 1 (row 1)
3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 1)
3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v24.8h, v12.8b, v7.8b       //mul (row 0)
3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v24.8h, v13.8b, v6.8b       //mul (row 0)
3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 1)
3149cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //ref_main_idx (row 2)
3159cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //ref_main_idx + 1 (row 2)
3160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v24.8h,#5           //round shft (row 0)
3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3199cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v14.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 2)
3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v22.8h, v16.8b, v7.8b       //mul (row 1)
3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v22.8h, v17.8b, v6.8b       //mul (row 1)
3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3239cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v15.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 2)
3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 3)
3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 3)
3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x2], x3           //st (row 0)
3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v22.8b, v22.8h,#5           //round shft (row 1)
3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3309cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v23.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 3)
3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v14.8b, v7.8b       //mul (row 2)
3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v15.8b, v6.8b       //mul (row 2)
3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3349cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v25.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 3)
3359cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //ref_main_idx (row 4)
3369cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //ref_main_idx + 1 (row 4)
3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v22.8b},[x2], x3           //st (row 1)
3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //round shft (row 2)
3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3419cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 4)
3429cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umull       v18.8h, v23.8b, v7.8b       //mul (row 3)
3439cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umlal       v18.8h, v25.8b, v6.8b       //mul (row 3)
3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3459cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 4)
3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 5)
3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 5)
3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.8b},[x2], x3           //st (row 2)
3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //round shft (row 3)
3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 5)
3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v24.8h, v12.8b, v7.8b       //mul (row 4)
3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v24.8h, v13.8b, v6.8b       //mul (row 4)
3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 5)
3579cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //ref_main_idx (row 6)
3589cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //ref_main_idx + 1 (row 6)
3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.8b},[x2], x3           //st (row 3)
3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v24.8h,#5           //round shft (row 4)
3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3639cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v14.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 6)
3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v22.8h, v16.8b, v7.8b       //mul (row 5)
3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v22.8h, v17.8b, v6.8b       //mul (row 5)
3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3679cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v15.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 6)
3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 7)
3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 7)
3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x2], x3           //st (row 4)
3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v22.8b, v22.8h,#5           //round shft (row 5)
3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3749cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v23.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 7)
3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v14.8b, v7.8b       //mul (row 6)
3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v15.8b, v6.8b       //mul (row 6)
3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3789cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v25.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 7)
3799cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umull       v18.8h, v23.8b, v7.8b       //mul (row 7)
3809cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umlal       v18.8h, v25.8b, v6.8b       //mul (row 7)
3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v22.8b},[x2], x3           //st (row 5)
3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //round shft (row 6)
3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //round shft (row 7)
3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.8b},[x2], x3           //st (row 6)
3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x10, x10, #8                //subtract 8 and go to end if 8x8
3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.8b},[x2], x3           //st (row 7)
3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         end_func
3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x11, x11, #8
3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x8, #4
3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x8, x20, x8,gt
3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x2, x7
3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x2, x20, x2,gt
3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x8, x12, x8,le
4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x20, x2, x4
4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x2, x20, x2,le
4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x2, #8
4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x2, x20, x2,le
4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x11, x4, x11,le
4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bgt         lbl390
4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x14,  :got:col_for_intra_luma
4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x14,  [x14, #:got_lo12:col_for_intra_luma]
4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarlbl390:
4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x0, #8
4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x0, x20, x0,le
4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x5,x2
4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v31.8b},[x14],#8
4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    smull       v12.8h, v30.8b, v31.8b      //(col+1)*intra_pred_angle [0:7](col)
4159cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    xtn         v23.8b,  v12.8h
4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sshr        v12.8h, v12.8h,#5
4179cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sqxtn       v25.8b,  v12.8h
4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v27.8b,w0                   //row value inc or reset accordingly
4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w9,  [x8]
4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x9,w9
4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x9, x0, x9
4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x9, x9, #1
4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v26.8b,w9
4249cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v27.8b ,  v25.8b   //ref_main_idx (add row)
4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x4,x4,#8
4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarkernel_8_16_32:
4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4309cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sub         v19.8b,  v19.8b ,  v26.8b   //ref_main_idx
4319cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    mov         v26.8b, v23.8b
4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x11, x11, #8
4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, x1, x9
4359cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v23.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 7)
4369cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v2.8b ,  v19.8b    //ref_main_idx + 1
4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v14.8b, v7.8b       //mul (row 6)
4399cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v25.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 7)
4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v15.8b, v6.8b       //mul (row 6)
4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x0, #8
4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x0, x20, x0,le
4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x8, #4
4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x8, x20, x8,gt
4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.16b}, [x6]              //stores the 32 values reqd based on indices values (from least idx)
4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x5], x3           //st (row 4)
4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v22.8h,#5           //round shft (row 5)
4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bgt         lbl429
4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x14,  :got:col_for_intra_luma
4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x14,  [x14, #:got_lo12:col_for_intra_luma]
4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarlbl429:
4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x8, x12, x8,le
4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v27.8b,w0                   //row value inc or reset accordingly
4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4589cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v4.8b,  v2.8b ,  v19.8b     //ref_main_idx (row 1)
4599cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 0)
4609cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v5.8b,  v2.8b ,  v21.8b     //ref_main_idx + 1 (row 1)
4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4639cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umull       v18.8h, v23.8b, v7.8b       //mul (row 7)
4649cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 0)
4659cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umlal       v18.8h, v25.8b, v6.8b       //mul (row 7)
4660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v31.8b},[x14],#8
4680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    and         v6.8b,  v29.8b ,  v26.8b    //fract values in d1/ idx values in d0
4690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x5], x3           //(from previous loop)st (row 5)
4710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //(from previous loop)round shft (row 6)
4720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4739cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v3.8b ,  v19.8b    //ref_main_idx (row 2)
4740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 1)
4759cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v3.8b ,  v21.8b    //ref_main_idx + 1 (row 2)
4760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x4, #8
4780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x11, x20, x11,le
4790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w9,  [x8]
4800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x9,w9
4810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         v7.8b,  v28.8b ,  v6.8b     //32-fract
4820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v24.8h, v12.8b, v7.8b       //mul (row 0)
4840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 1)
4850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v24.8h, v13.8b, v6.8b       //mul (row 0)
4860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.8b},[x5], x3           //(from previous loop)st (row 6)
4880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //(from previous loop)round shft (row 7)
4890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 3)
4919cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v14.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 2)
4920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 3)
4930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v22.8h, v16.8b, v7.8b       //mul (row 1)
4959cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v15.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 2)
4960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v22.8h, v17.8b, v6.8b       //mul (row 1)
4970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v24.8h,#5           //round shft (row 0)
4990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.8b},[x5], x3           //(from previous loop)st (row 7)
5000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5019cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //ref_main_idx (row 4)
5029cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v23.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 3)
5039cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //ref_main_idx + 1 (row 4)
5040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v14.8b, v7.8b       //mul (row 2)
5069cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v25.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 3)
5070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v15.8b, v6.8b       //mul (row 2)
5080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    smull       v14.8h, v30.8b, v31.8b      //(col+1)*intra_pred_angle [0:7](col)
5100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x5,x2,x3,lsl#2
5110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x9, x0, x9
5120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x2], x3           //st (row 0)
5150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v22.8b, v22.8h,#5           //round shft (row 1)
5160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 5)
5189cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 4)
5190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 5)
5200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5219cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umull       v18.8h, v23.8b, v7.8b       //mul (row 3)
5229cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 4)
5239cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umlal       v18.8h, v25.8b, v6.8b       //mul (row 3)
5240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v22.8b},[x2], x3           //st (row 1)
5260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //round shft (row 2)
5270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5289cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    xtn         v23.8b,  v14.8h
5290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sshr        v14.8h, v14.8h,#5
5300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5319cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //ref_main_idx (row 6)
5320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 5)
5339cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //ref_main_idx + 1 (row 6)
5340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v24.8h, v12.8b, v7.8b       //mul (row 4)
5360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 5)
5370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v24.8h, v13.8b, v6.8b       //mul (row 4)
5380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.8b},[x2], x3           //st (row 2)
5400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //round shft (row 3)
5410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x9, x9, #1
5439cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sqxtn       v25.8b,  v14.8h
5440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //ref_main_idx (row 7)
5469cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v14.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 6)
5470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //ref_main_idx + 1 (row 7)
5480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v22.8h, v16.8b, v7.8b       //mul (row 5)
5509cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v15.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 6)
5510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v22.8h, v17.8b, v6.8b       //mul (row 5)
5520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5539cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v27.8b ,  v25.8b   //ref_main_idx (add row)
5540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v26.8b,w9
5550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.8b},[x2], x3           //st (row 3)
5570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v24.8h,#5           //round shft (row 4)
5580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x2, x2, x3, lsl #2
5610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x20, x7, x2
5620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x2, x20, x2,gt
5630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x20, x2, x4
5640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    csel        x2, x20, x2,le
5650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        x10, x10, #8                //subtract 8 and go to end if 8x8
5670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bne         kernel_8_16_32
5690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarepil_8_16_32:
5700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5719cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v23.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 7)
5720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v14.8b, v7.8b       //mul (row 6)
5749cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v25.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 7)
5750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v15.8b, v6.8b       //mul (row 6)
5760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x5], x3           //st (row 4)
5780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v22.8h,#5           //round shft (row 5)
5790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5809cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umull       v18.8h, v23.8b, v7.8b       //mul (row 7)
5819cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    umlal       v18.8h, v25.8b, v6.8b       //mul (row 7)
5820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.8b},[x5], x3           //(from previous loop)st (row 5)
5840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //(from previous loop)round shft (row 6)
5850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.8b},[x5], x3           //(from previous loop)st (row 6)
5870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //(from previous loop)round shft (row 7)
5880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.8b},[x5], x3           //st (row 7)
5900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_func
5930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarsz_4_proc:
5950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x14,  :got:col_for_intra_luma
5960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x14,  [x14, #:got_lo12:col_for_intra_luma]
5970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v31.8b},[x14]
5990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x12, #1
6000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v2.8b,w12                   //contains #1 for adding to get ref_main_idx + 1
6020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #2
6030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v3.8b,w0
6050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    adrp        x12, :got:idx_neg_idx_11_17 //load least idx table
6060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         x12, [x12, #:got_lo12:idx_neg_idx_11_17]
6070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    smull       v22.8h, v30.8b, v31.8b      //(col+1)*intra_pred_angle [0:7](col)
6090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x7, x5, #11
6100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x12, x12, x7, lsl #4
6120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x8, x12
6130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         w9,  [x8]
6150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sxtw        x9,w9
6160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v26.8b,w9                   //least idx added to final idx values
6180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, sp, x4                  //ref_temp + nt
6190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         x6, x6, #1                  //ref_temp + nt - 1
6210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    xtn         v6.8b,  v22.8h
6220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         x6, x6, x9
6230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ld1         {v0.16b}, [x6]              //stores the 32 values reqd based on indices values (from least idx)
6250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x0, #31
6260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v29.8b,w0                   //contains #31 for vand operation
6280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         x1, #32
6290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    dup         v28.8b,w1
6310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sshr        v22.8h, v22.8h,#5
6339cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sqxtn       v19.8b,  v22.8h
6340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    and         v6.8b,  v6.8b ,  v29.8b     //fract values in d1/ idx values in d0
6360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         v7.8b,  v28.8b ,  v6.8b     //32-fract
6370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6389cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v2.8b    //ref_main_idx (add 1)
6399cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    sub         v19.8b,  v19.8b ,  v26.8b   //ref_main_idx
6409cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v19.8b ,  v2.8b    //ref_main_idx + 1
6410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6429cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v4.8b,  v19.8b ,  v2.8b     //row 1 ref_main_idx
6439cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v5.8b,  v21.8b ,  v2.8b
6440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6459cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx (row 0)
6469cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 0)
6470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v24.8h, v12.8b, v7.8b       //mul (row 0)
6500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx    (row 1)
6510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v24.8h, v13.8b, v6.8b       //mul (row 0)
6520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6539cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v19.8b,  v19.8b ,  v3.8b    //idx (row 2)
6540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 1)
6559cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    add         v21.8b,  v21.8b ,  v3.8b    //idx+1 (row 2)
6560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v22.8h, v16.8b, v7.8b       //mul (row 1)
6589cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v12.8b, {v0.16b},v19.8b     //load from ref_main_idx    (row 2)
6590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v22.8h, v17.8b, v6.8b       //mul (row 1)
6600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v24.8b, v24.8h,#5           //round shift (row 0)
6620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v4.8b,  v4.8b ,  v3.8b      //idx (row 3)
6649cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    tbl         v13.8b, {v0.16b},v21.8b     //load from ref_main_idx + 1 (row 2)
6650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         v5.8b,  v5.8b ,  v3.8b      //idx+1 (row 3)
6660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v20.8h, v12.8b, v7.8b       //mul (row 2)
6680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v16.8b, {v0.16b},v4.8b      //load from ref_main_idx (row 3)
6690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v20.8h, v13.8b, v6.8b       //mul (row 2)
6700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v24.s}[0],[x2], x3         //st row 0
6720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v22.8b, v22.8h,#5           //round shift (row 1)
6730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    tbl         v17.8b, {v0.16b},v5.8b      //load from ref_main_idx + 1 (row 3)
6750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umull       v18.8h, v16.8b, v7.8b       //mul (row 3)
6770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    umlal       v18.8h, v17.8b, v6.8b       //mul (row 3)
6780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v22.s}[0],[x2], x3         //st row 1
6800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v20.8b, v20.8h,#5           //round shift (row 2)
6810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v20.s}[0],[x2], x3         //st row 2
6830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rshrn       v18.8b, v18.8h,#5           //round shift (row 3)
6850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    st1         {v18.s}[0],[x2], x3         //st (row 3)
6870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarend_func:
6890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         sp, sp, #132
6900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    // ldmfd sp!,{x4-x12,x15}                  //reload the registers from sp
6910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldp         x19, x20,[sp],#16
6929cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    ldp         d14,d15,[sp],#16
6939cbd70a2930875be59d7df68136ac9a1a949a13dNaveen Kumar Ponnusamy    ldp         d12,d13,[sp],#16
6940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ret
6950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
6990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
7000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
701