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_HalfDiagHorVer4x4_unsafe
     29     .func   armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe
     30 armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe:
     31     PUSH     {r4-r12,lr}
     32     VLD1.8   {d0,d1},[r0],r1
     33     VMOV.I16 d31,#0x14
     34     VMOV.I16 d30,#0x5
     35     VEXT.8   d4,d0,d1,#1
     36     VEXT.8   d2,d0,d1,#2
     37     VEXT.8   d3,d0,d1,#3
     38     VEXT.8   d5,d0,d1,#4
     39     VEXT.8   d1,d0,d1,#5
     40     VADDL.U8 q1,d2,d3
     41     VADDL.U8 q2,d4,d5
     42     VADDL.U8 q5,d0,d1
     43     VLD1.8   {d0,d1},[r0],r1
     44     VMLA.I16 d10,d2,d31
     45     VMUL.I16 d8,d4,d30
     46     VEXT.8   d4,d0,d1,#1
     47     VEXT.8   d2,d0,d1,#2
     48     VEXT.8   d3,d0,d1,#3
     49     VEXT.8   d5,d0,d1,#4
     50     VEXT.8   d1,d0,d1,#5
     51     VADDL.U8 q1,d2,d3
     52     VADDL.U8 q2,d4,d5
     53     VADDL.U8 q6,d0,d1
     54     VLD1.8   {d0,d1},[r0],r1
     55     VSUB.I16 d10,d10,d8
     56     VMLA.I16 d12,d2,d31
     57     VMUL.I16 d8,d4,d30
     58     VEXT.8   d4,d0,d1,#1
     59     VEXT.8   d2,d0,d1,#2
     60     VEXT.8   d3,d0,d1,#3
     61     VEXT.8   d5,d0,d1,#4
     62     VEXT.8   d1,d0,d1,#5
     63     VADDL.U8 q1,d2,d3
     64     VADDL.U8 q2,d4,d5
     65     VADDL.U8 q7,d0,d1
     66     VLD1.8   {d0,d1},[r0],r1
     67     VSUB.I16 d12,d12,d8
     68     VMLA.I16 d14,d2,d31
     69     VMUL.I16 d8,d4,d30
     70     VEXT.8   d4,d0,d1,#1
     71     VEXT.8   d2,d0,d1,#2
     72     VEXT.8   d3,d0,d1,#3
     73     VEXT.8   d5,d0,d1,#4
     74     VEXT.8   d1,d0,d1,#5
     75     VADDL.U8 q1,d2,d3
     76     VADDL.U8 q2,d4,d5
     77     VADDL.U8 q8,d0,d1
     78     VLD1.8   {d0,d1},[r0],r1
     79     VSUB.I16 d14,d14,d8
     80     VMLA.I16 d16,d2,d31
     81     VMUL.I16 d8,d4,d30
     82     VEXT.8   d4,d0,d1,#1
     83     VEXT.8   d2,d0,d1,#2
     84     VEXT.8   d3,d0,d1,#3
     85     VEXT.8   d5,d0,d1,#4
     86     VEXT.8   d1,d0,d1,#5
     87     VADDL.U8 q1,d2,d3
     88     VADDL.U8 q2,d4,d5
     89     VADDL.U8 q9,d0,d1
     90     VLD1.8   {d0,d1},[r0],r1
     91     VSUB.I16 d16,d16,d8
     92     VMLA.I16 d18,d2,d31
     93     VMUL.I16 d8,d4,d30
     94     VEXT.8   d4,d0,d1,#1
     95     VEXT.8   d2,d0,d1,#2
     96     VEXT.8   d3,d0,d1,#3
     97     VEXT.8   d5,d0,d1,#4
     98     VEXT.8   d1,d0,d1,#5
     99     VADDL.U8 q1,d2,d3
    100     VADDL.U8 q2,d4,d5
    101     VADDL.U8 q10,d0,d1
    102     VLD1.8   {d0,d1},[r0],r1
    103     VSUB.I16 d18,d18,d8
    104     VMLA.I16 d20,d2,d31
    105     VMUL.I16 d8,d4,d30
    106     VEXT.8   d4,d0,d1,#1
    107     VEXT.8   d2,d0,d1,#2
    108     VEXT.8   d3,d0,d1,#3
    109     VEXT.8   d5,d0,d1,#4
    110     VEXT.8   d1,d0,d1,#5
    111     VADDL.U8 q1,d2,d3
    112     VADDL.U8 q2,d4,d5
    113     VADDL.U8 q11,d0,d1
    114     VLD1.8   {d0,d1},[r0],r1
    115     VSUB.I16 d20,d20,d8
    116     VMLA.I16 d22,d2,d31
    117     VMUL.I16 d8,d4,d30
    118     VEXT.8   d4,d0,d1,#1
    119     VEXT.8   d2,d0,d1,#2
    120     VEXT.8   d3,d0,d1,#3
    121     VEXT.8   d5,d0,d1,#4
    122     VEXT.8   d1,d0,d1,#5
    123     VADDL.U8 q1,d2,d3
    124     VADDL.U8 q2,d4,d5
    125     VADDL.U8 q12,d0,d1
    126     VLD1.8   {d0,d1},[r0],r1
    127     VSUB.I16 d22,d22,d8
    128     VMLA.I16 d24,d2,d31
    129     VMUL.I16 d8,d4,d30
    130     VEXT.8   d4,d0,d1,#1
    131     VEXT.8   d2,d0,d1,#2
    132     VEXT.8   d3,d0,d1,#3
    133     VEXT.8   d5,d0,d1,#4
    134     VEXT.8   d1,d0,d1,#5
    135     VADDL.U8 q1,d2,d3
    136     VADDL.U8 q2,d4,d5
    137     VADDL.U8 q13,d0,d1
    138     VSUB.I16 d24,d24,d8
    139     VMLA.I16 d26,d2,d31
    140     VMUL.I16 d8,d4,d30
    141     VMOV.I32 q15,#0x14
    142     VMOV.I32 q14,#0x5
    143     VADDL.S16 q5,d10,d20
    144     VADDL.S16 q1,d14,d16
    145     VADDL.S16 q0,d12,d18
    146     VSUB.I16 d26,d26,d8
    147     VMLA.I32 q5,q1,q15
    148     VMUL.I32 q4,q0,q14
    149     VADDL.S16 q6,d12,d22
    150     VADDL.S16 q1,d16,d18
    151     VADDL.S16 q0,d14,d20
    152     VMLA.I32 q6,q1,q15
    153     VSUB.I32 q5,q5,q4
    154     VMUL.I32 q4,q0,q14
    155     VADDL.S16 q2,d14,d24
    156     VADDL.S16 q1,d18,d20
    157     VADDL.S16 q0,d16,d22
    158     VMLA.I32 q2,q1,q15
    159     VSUB.I32 q6,q6,q4
    160     VMUL.I32 q4,q0,q14
    161     VADDL.S16 q3,d16,d26
    162     VADDL.S16 q1,d20,d22
    163     VADDL.S16 q0,d18,d24
    164     VMLA.I32 q3,q1,q15
    165     VSUB.I32 q2,q2,q4
    166     VMLS.I32 q3,q0,q14
    167     VQRSHRUN.S32 d0,q5,#10
    168     VQRSHRUN.S32 d2,q6,#10
    169     VQRSHRUN.S32 d4,q2,#10
    170     VQRSHRUN.S32 d6,q3,#10
    171     VQMOVN.U16 d0,q0
    172     VQMOVN.U16 d2,q1
    173     VQMOVN.U16 d4,q2
    174     VQMOVN.U16 d6,q3
    175     POP      {r4-r12,pc}
    176     .endfunc
    177 
    178     .end
    179 
    180