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@*  ihevcd_fmt_conv_420sp_to_420p.s
220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @brief
240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  contains function definitions for format conversions
250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @author
270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  ittiam
280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @par list of functions:
300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @remarks
330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  none
340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*******************************************************************************/
360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text
450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@/*****************************************************************************
510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Function Name    : neon_copy_yuv420sp_to_yuv420p()                       *
530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Description      : This function conversts the image from YUV420sP color  *
550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     space to 420SP color space(UV interleaved).            *
560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Arguments        : R0           pu1_src_y                                 *
580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     R1           pu1_src_uv                                *
590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     R2           pu1_dest_y                                *
600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     R3           pu1_dest_u                               *
610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #40]    pu1_dest_v                               *
620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #44]    u2_width                                 *
630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #48]    u2_height                                   *
640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #52]    u2_stridey                                *
650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #56]    u2_strideuv                               *
660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #60]    u2_dest_stridey                           *
670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #64]    u2_dest_strideuv                          *
680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #68]    is_u_first                                *
690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     [R13 #72]    disable_luma_copy                         *
700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Values Returned  : None                                                   *
720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Register Usage   : R0 - R14                                               *
740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Stack Usage      : 40 Bytes                                               *
760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Interruptibility : Interruptible                                          *
780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Known Limitations                                                         *
800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*       Assumptions: Image Width:     Assumed to be multiple of 2 and       *
810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                     Image Height:    Assumed to be even.                   *
820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  Revision History :                                                        *
840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*         DD MM YYYY   Author(s)       Changes (Describe the changes made)   *
850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*         16 05 2012   Naveen SR     draft                                   *
860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*                                                                            *
870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*****************************************************************************/
880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.globl ihevcd_fmt_conv_420sp_to_420p_a9q
900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevcd_fmt_conv_420sp_to_420p_a9q, %function
920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevcd_fmt_conv_420sp_to_420p_a9q:
940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    STMFD       sp!,{r4-r12, lr}
950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r5,[sp,#60]                 @//Load u2_dest_stridey
970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   LDR     r6,[sp,#56]             @//Load u2_strideuv
980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r7,[sp,#52]                 @//Load u2_stridey
990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r8,[sp,#44]                 @//Load u2_width
1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r9,[sp,#48]                 @//Load u2_height
1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r10,r7,r8                   @// Src Y increment
1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r11,r5,r8                   @// Dst Y increment
1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r5,[sp,#72]                 @//Load disable_luma_copy flag
1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r5,#0                       @//skip luma if disable_luma_copy is non-zero
1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BNE         uv_copy_start
1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @/* Copy Y */
1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r4,r9                       @// Copying height
1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakary_row_loop:
1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r6,r8                       @// Copying width
1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakary_col_loop:
1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r6,r6,#16
1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d0,d1},[r0]!
1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d0,d1},[r2]!
1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r6,#16
1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BGE         y_col_loop
1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r6,#0
1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BEQ         y_col_loop_end
1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//If non-multiple of 16, then go back by few bytes to ensure 16 bytes can be read
1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//Ex if width is 162, above loop will process 160 pixels. And
1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//Both source and destination will point to 146th pixel and then 16 bytes will be read
1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @// and written using VLD1 and VST1
1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    RSB         r6,r6,#16
1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r0,r0,r6
1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r2,r2,r6
1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d0,d1}, [r0]!
1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d0,d1}, [r2]!
1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakary_col_loop_end:
1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ADD         r0, r0, r10
1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ADD         r2, r2, r11
1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUBS        r4, r4, #1
1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BGT         y_row_loop
1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @/* Copy UV */
1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakaruv_copy_start:
1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r5,[sp,#64]                 @//Load u2_dest_strideuv
1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r7,[sp,#56]                 @//Load u2_strideuv
1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r9,r9,LSR #1                @// height/2
1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   MOV     r8,r8,LSR #1            @// Width/2
1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r10,r7,r8                   @// Src UV increment
1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r11,r8,LSR #1
1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r11,r5,r11                  @// Dst U and V increment
1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r5,[sp,#40]                 @//Load pu1_dest_v
1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDR         r4,[sp,#68]                 @//Load is_u_first_flag
1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r4,#0                       @//Swap U and V dest if is_u_first_flag is zero
1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOVEQ       r4,r5
1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOVEQ       r5,r3
1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOVEQ       r3,r4
1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r4,r9                       @// Copying height
1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakaruv_row_loop:
1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    MOV         r6,r8                       @// Copying width
1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakaruv_col_loop:
1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r6,r6,#16
1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    PLD         [r1,#128]
1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld2.8      {d0,d1},[r1]!
1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    VST1.8      D0,[r3]!
1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    VST1.8      D1,[r5]!
1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r6,#16
1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BGE         uv_col_loop
1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    CMP         r6,#0
1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BEQ         uv_col_loop_end
1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//If non-multiple of 16, then go back by few bytes to ensure 16 bytes can be read
1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//Ex if width is 162, above loop will process 160 pixels. And
1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @//Both source and destination will point to 146th pixel and then 16 bytes will be read
1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @// and written using VLD1 and VST1
1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    RSB         r6,r6,#16
1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r1,r1,r6
1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r3,r3,r6,LSR #1
1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUB         r5,r5,r6,LSR #1
1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld2.8      {d0,d1}, [r1]!
1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    VST1.8      D0, [r3]!
1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    VST1.8      D1, [r5]!
1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakaruv_col_loop_end:
1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ADD         r1, r1, r10
1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ADD         r3, r3, r11
1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ADD         r5, r5, r11
1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    SUBS        r4, r4, #1
1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    BGT         uv_row_loop
1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarexit:
1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    LDMFD       sp!,{r4-r12, pc}
1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
204