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_mem_fns_neon.s 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * ,:brief 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * Contains function definitions for memory manipulation 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * ,:author 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * Naveen SR 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * ,:par List of Functions: 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * - ihevc_memcpy() 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * - ihevc_memset_mul_8() 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * - ihevc_memset_16bit_mul_8() 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * ,:remarks 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * None 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// * 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// ******************************************************************************* 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*/ 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar///** 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//******************************************************************************* 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:brief 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* memcpy of a 1d array 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:par Description: 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* Does memcpy of 8bit data from source to destination for 8,16 or 32 number of bytes 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:param[in] pu1_dst 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* UWORD8 pointer to the destination 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:param[in] pu1_src 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* UWORD8 pointer to the source 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:param[in] num_bytes 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* number of bytes to copy 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:returns 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ,:remarks 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* None 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//******************************************************************************* 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*/ 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memcpy_mul_8(UWORD8 *pu1_dst, 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 *pu1_src, 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_bytes) 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu1_dst 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => *pu1_src 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_bytes 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.p2align 2 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memcpy_mul_8_av8 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memcpy_mul_8_av8, %function 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memcpy_mul_8_av8: 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_NEON_MEMCPY_MUL_8: 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memcpy 8 bytes 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar LD1 {v0.8b},[x1],#8 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8b},[x0],#8 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_NEON_MEMCPY_MUL_8 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//******************************************************************************* 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//*/ 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memcpy(UWORD8 *pu1_dst, 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 *pu1_src, 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_bytes) 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu1_dst 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => *pu1_src 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_bytes 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memcpy_av8 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memcpy_av8, %function 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memcpy_av8: 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BLT ARM_MEMCPY 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_NEON_MEMCPY: 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memcpy 8 bytes 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar LD1 {v0.8b},[x1],#8 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8b},[x0],#8 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BGE LOOP_NEON_MEMCPY 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CMP x2,#-8 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BEQ MEMCPY_RETURN 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarARM_MEMCPY: 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ADD x2,x2,#8 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_ARM_MEMCPY: 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar LDRB w3,[x1],#1 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar STRB w3,[x0],#1 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#1 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_ARM_MEMCPY 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarMEMCPY_RETURN: 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memset_mul_8(UWORD8 *pu1_dst, 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 value, 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_bytes) 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu1_dst 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => value 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_bytes 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.p2align 2 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memset_mul_8_av8 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memset_mul_8_av8, %function 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memset_mul_8_av8: 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// Assumptions: numbytes is either 8, 16 or 32 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v0.8b,w1 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_MEMSET_MUL_8: 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memset 8 bytes 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8b},[x0],#8 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_MEMSET_MUL_8 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memset(UWORD8 *pu1_dst, 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 value, 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_bytes) 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu1_dst 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => value 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_bytes 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memset_av8 1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memset_av8, %function 1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memset_av8: 1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BLT ARM_MEMSET 1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v0.8b,w1 1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_NEON_MEMSET: 1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memcpy 8 bytes 1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8b},[x0],#8 1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BGE LOOP_NEON_MEMSET 1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CMP x2,#-8 1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BEQ MEMSET_RETURN 1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarARM_MEMSET: 1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ADD x2,x2,#8 1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_ARM_MEMSET: 1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar STRB w1,[x0],#1 1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#1 1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_ARM_MEMSET 1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarMEMSET_RETURN: 2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memset_16bit_mul_8(UWORD16 *pu2_dst, 2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD16 value, 2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_words) 2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu2_dst 2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => value 2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_words 2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text 2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.p2align 2 2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memset_16bit_mul_8_av8 2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memset_16bit_mul_8_av8, %function 2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memset_16bit_mul_8_av8: 2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// Assumptions: num_words is either 8, 16 or 32 2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memset 8 words 2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v0.8h,w1 2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_MEMSET_16BIT_MUL_8: 2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8h},[x0],#16 2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_MEMSET_16BIT_MUL_8 2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_memset_16bit(UWORD16 *pu2_dst, 2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD16 value, 2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// UWORD8 num_words) 2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//**************Variables Vs Registers************************* 2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x0 => *pu2_dst 2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x1 => value 2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// x2 => num_words 2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .global ihevc_memset_16bit_av8 2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_memset_16bit_av8, %function 2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_memset_16bit_av8: 2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BLT ARM_MEMSET_16BIT 2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v0.8h,w1 2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_NEON_MEMSET_16BIT: 2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Memset 8 words 2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ST1 {v0.8h},[x0],#16 2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#8 2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BGE LOOP_NEON_MEMSET_16BIT 2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CMP x2,#-8 2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BEQ MEMSET_16BIT_RETURN 2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarARM_MEMSET_16BIT: 2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ADD x2,x2,#8 2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarLOOP_ARM_MEMSET_16BIT: 2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar STRH w1,[x0],#2 2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SUBS x2,x2,#1 2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar BNE LOOP_ARM_MEMSET_16BIT 2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarMEMSET_16BIT_RETURN: 2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar .section .note.GNU-stack,"",%progbits 2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 281