18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@/****************************************************************************** 28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Copyright (C) 2015 The Android Open Source Project 48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Licensed under the Apache License, Version 2.0 (the "License"); 68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * you may not use this file except in compliance with the License. 78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * You may obtain a copy of the License at: 88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * http://www.apache.org/licenses/LICENSE-2.0 108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Unless required by applicable law or agreed to in writing, software 128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * distributed under the License is distributed on an "AS IS" BASIS, 138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * See the License for the specific language governing permissions and 158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * limitations under the License. 168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ ***************************************************************************** 188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@*/ 207497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ ******************************************************************************* 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * @file 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * ih264_padding_neon.s 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * @brief 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Contains function definitions padding 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * @author 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * Ittiam 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * @par List of Functions: 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * - ih264_pad_top_a9q() 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * - ih264_pad_left_luma_a9q() 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * - ih264_pad_left_chroma_a9q() 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * - ih264_pad_right_luma_a9q() 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * - ih264_pad_right_chroma_a9q() 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * @remarks 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * None 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ * 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ ******************************************************************************* 427497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 457497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@** 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @brief pad at the top of a 2d array 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @par Description: 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* The top row of a 2d array is replicated for pad_size times at the top 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pu1_src 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* UWORD8 pointer to the source 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] src_strd 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer source stride 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pad_size 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer -padding size of the array 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @returns none 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @remarks none 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 707497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@void ih264_pad_top(UWORD8 *pu1_src, 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 src_strd, 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 wd, 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 pad_size) 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@**************Variables Vs Registers************************* 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r0 => *pu1_src 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r1 => src_strd 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r2 => wd 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r3 => pad_size 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S.text 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S.p2align 2 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S .global ih264_pad_top_a9q 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264_pad_top_a9q: 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S stmfd sp!, {r4-r11, lr} @stack stores the values of the arguments 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r5, r0, r1 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S rsb r6, r1, #0 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_neon_memcpy_mul_16: 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S @ Load 16 bytes 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vld1.8 {d0, d1}, [r0]! 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mov r4, r5 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mov r7, r3 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S add r5, r5, #16 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_neon_pad_top: 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {d0, d1}, [r4], r6 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r7, r7, #1 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_neon_pad_top 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #16 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_neon_memcpy_mul_16 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldmfd sp!, {r4-r11, pc} @Reload the registers from SP 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1137497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@** 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @brief 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* Padding (luma block) at the left of a 2d array 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @par Description: 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* The left column of a 2d array is replicated for pad_size times at the left 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pu1_src 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* UWORD8 pointer to the source 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] src_strd 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer source stride 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pad_size 1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer -padding size of the array 1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @returns 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @remarks 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* None 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 1507497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@#if PAD_LEFT_LUMA == C 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@void ih264_pad_left_luma(UWORD8 *pu1_src, 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 src_strd, 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 ht, 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 pad_size) 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@**************Variables Vs Registers************************* 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r0 => *pu1_src 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r1 => src_strd 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r2 => ht 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r3 => pad_size 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1637497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S .global ih264_pad_left_luma_a9q 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264_pad_left_luma_a9q: 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S stmfd sp!, {r4-r11, lr} @stack stores the values of the arguments 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r4, r0, r3 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r6, r1, #16 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r5, r3, #16 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_16: @ /*hard coded for width=16 ,height =8,16*/ 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r1 @ 16 bytes store 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r1 @ 16 bytes store 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r1 @ 16 bytes store 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r1 @ 16 bytes store 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r1 @ 16 bytes store 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r1 @ 16 bytes store 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #8 1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r1 @ 16 bytes store 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r1 @ 16 bytes store 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_16 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S b end_func 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_32: @ /*hard coded for width=32 ,height =8,16*/ 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 @ 16 bytes store 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #8 2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Send_func: 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldmfd sp!, {r4-r11, pc} @Reload the registers from SP 2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2497497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@** 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @brief 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* Padding (chroma block) at the left of a 2d array 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @par Description: 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* The left column of a 2d array is replicated for pad_size times at the left 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pu1_src 2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* UWORD8 pointer to the source 2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] src_strd 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer source stride 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array (each colour component) 2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pad_size 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer -padding size of the array 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @returns 2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @remarks 2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* None 2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 2867497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@#if PAD_LEFT_CHROMA == C 2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@void ih264_pad_left_chroma(UWORD8 *pu1_src, 2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 src_strd, 2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 ht, 2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 pad_size) 2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@{ 2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r0 => *pu1_src 2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r1 => src_strd 2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r2 => ht 2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r3 => pad_size 2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S .global ih264_pad_left_chroma_a9q 3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264_pad_left_chroma_a9q: 3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S stmfd sp!, {r4-r11, lr} @stack stores the values of the arguments 3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r4, r0, r3 3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r6, r1, #16 3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_32_l_c: @ /*hard coded for width=32 ,height =4,8,12*/ 3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 @ 16 bytes store 3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #4 3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beq end_func_l_c @/* Branching when ht=4*/ 3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #4 3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beq end_func_l_c @/* Branching when ht=8*/ 3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32_l_c 3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Send_func_l_c: 3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldmfd sp!, {r4-r11, pc} @Reload the registers from SP 3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3777497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@** 3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @brief 3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* Padding (luma block) at the right of a 2d array 3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @par Description: 3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* The right column of a 2d array is replicated for pad_size times at the right 3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pu1_src 3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* UWORD8 pointer to the source 3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] src_strd 3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer source stride 3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pad_size 4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer -padding size of the array 4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer height of the array 4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @returns 4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @remarks 4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* None 4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 4147497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@#if PAD_RIGHT_LUMA == C 4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@void ih264_pad_right_luma(UWORD8 *pu1_src, 4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 src_strd, 4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 ht, 4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 pad_size) 4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@{ 4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 row; 4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ 4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ for(row = 0; row < ht; row++) 4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ { 4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ memset(pu1_src, *(pu1_src -1), pad_size); 4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ 4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ pu1_src += src_strd; 4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ } 4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@} 4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ 4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r0 => *pu1_src 4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r1 => src_strd 4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r2 => ht 4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r3 => pad_size 4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S .global ih264_pad_right_luma_a9q 4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264_pad_right_luma_a9q: 4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S stmfd sp!, {r4-r11, lr} @stack stores the values of the arguments 4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mov r4, r0 4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r6, r1, #16 4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r0, r0, #1 4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r5, r3, #16 4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32 4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_16_r: @ /*hard coded for width=16 ,height =8,16*/ 4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r1 @ 16 bytes store 4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r1 @ 16 bytes store 4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r1 @ 16 bytes store 4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r1 @ 16 bytes store 4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r1 @ 16 bytes store 4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r1 @ 16 bytes store 4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #8 4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r1 @ 16 bytes store 4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r1 @ 16 bytes store 4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_16_r 4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S b end_func_r 4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_32_r: @ /*hard coded for width=32 ,height =8,16*/ 4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r8, [r0], r1 4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r9, [r0], r1 4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q0, r8 4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r10, [r0], r1 4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q1, r9 5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 @ 16 bytes store 5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrb r11, [r0], r1 5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q2, r10 5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u8 q3, r11 5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #8 5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32_r 5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Send_func_r: 5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldmfd sp!, {r4-r11, pc} @Reload the registers from SP 5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5237497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@** 5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @brief 5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@;* Padding (chroma block) at the right of a 2d array 5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @par Description: 5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* The right column of a 2d array is replicated for pad_size times at the right 5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pu1_src 5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@;* UWORD8 pointer to the source 5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] src_strd 5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer source stride 5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@;* integer height of the array 5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array (each colour component) 5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] pad_size 5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer -padding size of the array 5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] ht 5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@;* integer height of the array 5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @param[in] wd 5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* integer width of the array 5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @returns 5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* @remarks 5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* None 5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@* 5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@******************************************************************************* 5607497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar@* 5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@#if PAD_RIGHT_CHROMA == C 5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@void ih264_pad_right_chroma(UWORD8 *pu1_src, 5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 src_strd, 5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 ht, 5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ WORD32 pad_size) 5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r0 => *pu1_src 5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r1 => src_strd 5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r2 => ht 5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S@ r3 => pad_size 5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S .global ih264_pad_right_chroma_a9q 5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264_pad_right_chroma_a9q: 5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S stmfd sp!, {r4-r11, lr} @stack stores the values of the arguments 5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mov r4, r0 5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r6, r1, #16 5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sub r0, r0, #2 5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sloop_32_r_c: @ /*hard coded for width=32 ,height =8,4*/ 5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #4 5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beq end_func_r_c @/* Branching when ht=4*/ 6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 @ 16 bytes store 6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S subs r2, r2, #4 6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beq end_func_r_c @/* Branching when ht=8*/ 6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bne loop_32_r_c 6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r8, [r0], r1 6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q0, r8 6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r9, [r0], r1 6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r10, [r0], r1 6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4]! @ 16 bytes store 6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q1, r9 6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q0}, [r4], r6 @ 16 bytes store 6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldrh r11, [r0], r1 6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4]! @ 16 bytes store 6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q2, r10 6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q1}, [r4], r6 @ 16 bytes store 6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4]! @ 16 bytes store 6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vdup.u16 q3, r11 6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q2}, [r4], r6 @ 16 bytes store 6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4]! @ 16 bytes store 6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S vst1.8 {q3}, [r4], r6 @ 16 bytes store 6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Send_func_r_c: 6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ldmfd sp!, {r4-r11, pc} @Reload the registers from SP 6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 648