Home | History | Annotate | Download | only in src_gcc
      1 /*
      2  * Copyright (C) 2007-2008 ARM Limited
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  *
     16  */
     17 /*
     18  *
     19  */
     20 
     21     .eabi_attribute 24, 1
     22     .eabi_attribute 25, 1
     23 
     24     .arm
     25     .fpu neon
     26     .text
     27 
     28     .global armVCM4P10_InterpolateLuma_HorDiagCopy_unsafe
     29     .func   armVCM4P10_InterpolateLuma_HorDiagCopy_unsafe
     30 armVCM4P10_InterpolateLuma_HorDiagCopy_unsafe:
     31     PUSH     {r4-r6,lr}
     32     MOV      lr,#4
     33     LDR      r6, =0xfe00fe0
     34     LDR      r12, =0xff00ff
     35 LoopStart1:
     36     LDR      r11,[r0,#0xc]
     37     LDR      r10,[r0,#8]
     38     LDR      r5,[r0,#4]
     39     LDR      r4,[r0],r1
     40     UQSUB16  r11,r11,r6
     41     UQSUB16  r10,r10,r6
     42     UQSUB16  r5,r5,r6
     43     UQSUB16  r4,r4,r6
     44     USAT16   r11,#13,r11
     45     USAT16   r10,#13,r10
     46     USAT16   r5,#13,r5
     47     USAT16   r4,#13,r4
     48     AND      r11,r12,r11,LSR #5
     49     AND      r10,r12,r10,LSR #5
     50     AND      r5,r12,r5,LSR #5
     51     AND      r4,r12,r4,LSR #5
     52     ORR      r11,r10,r11,LSL #8
     53     ORR      r10,r4,r5,LSL #8
     54     SUBS     lr,lr,#1
     55     STRD     r10,r11,[r7],#8
     56     BGT      LoopStart1
     57     SUB      r0,r7,#0x20
     58     MOV      r1,#8
     59     POP      {r4-r6,pc}
     60     .endfunc
     61 
     62     .global armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe
     63     .func   armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe
     64 armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe:
     65     PUSH     {r4-r6,lr}
     66     LDR      r6, =0xfe00fe0
     67     LDR      r12, =0xff00ff
     68     MOV      lr,#2
     69 LoopStart:
     70     LDR      r11,[r0,#0xc]
     71     LDR      r10,[r0,#8]
     72     LDR      r5,[r0,#4]
     73     LDR      r4,[r0],r1
     74     UQSUB16  r11,r11,r6
     75     UQSUB16  r10,r10,r6
     76     UQSUB16  r5,r5,r6
     77     UQSUB16  r4,r4,r6
     78     USAT16   r11,#13,r11
     79     USAT16   r10,#13,r10
     80     USAT16   r5,#13,r5
     81     USAT16   r4,#13,r4
     82     AND      r11,r12,r11,LSR #5
     83     AND      r10,r12,r10,LSR #5
     84     AND      r5,r12,r5,LSR #5
     85     AND      r4,r12,r4,LSR #5
     86     ORR      r11,r10,r11,LSL #8
     87     ORR      r10,r4,r5,LSL #8
     88     PKHBT    r4,r10,r11,LSL #16
     89     STR      r4,[r7],#8
     90     PKHTB    r5,r11,r10,ASR #16
     91     STR      r5,[r7],#-4
     92     LDR      r11,[r0,#0xc]
     93     LDR      r10,[r0,#8]
     94     LDR      r5,[r0,#4]
     95     LDR      r4,[r0],r1
     96     UQSUB16  r11,r11,r6
     97     UQSUB16  r10,r10,r6
     98     UQSUB16  r5,r5,r6
     99     UQSUB16  r4,r4,r6
    100     USAT16   r11,#13,r11
    101     USAT16   r10,#13,r10
    102     USAT16   r5,#13,r5
    103     USAT16   r4,#13,r4
    104     AND      r11,r12,r11,LSR #5
    105     AND      r10,r12,r10,LSR #5
    106     AND      r5,r12,r5,LSR #5
    107     AND      r4,r12,r4,LSR #5
    108     ORR      r11,r10,r11,LSL #8
    109     ORR      r10,r4,r5,LSL #8
    110     PKHBT    r4,r10,r11,LSL #16
    111     SUBS     lr,lr,#1
    112     STR      r4,[r7],#8
    113     PKHTB    r5,r11,r10,ASR #16
    114     STR      r5,[r7],#4
    115     BGT      LoopStart
    116     SUB      r0,r7,#0x18
    117     MOV      r1,#4
    118     POP      {r4-r6,pc}
    119     .endfunc
    120 
    121     .end
    122 
    123