1/* 2 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 3 * 4 */ 5 6 .eabi_attribute 24, 1 7 .eabi_attribute 25, 1 8 9 .arm 10 .fpu neon 11 .text 12 13 .global armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe 14 .func armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe 15armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe: 16 PUSH {r4-r12,lr} 17 VLD1.8 {d0,d1},[r0],r1 18 VMOV.I16 d31,#0x14 19 VMOV.I16 d30,#0x5 20 VEXT.8 d4,d0,d1,#1 21 VEXT.8 d2,d0,d1,#2 22 VEXT.8 d3,d0,d1,#3 23 VEXT.8 d5,d0,d1,#4 24 VEXT.8 d1,d0,d1,#5 25 VADDL.U8 q1,d2,d3 26 VADDL.U8 q2,d4,d5 27 VADDL.U8 q5,d0,d1 28 VLD1.8 {d0,d1},[r0],r1 29 VMLA.I16 d10,d2,d31 30 VMUL.I16 d8,d4,d30 31 VEXT.8 d4,d0,d1,#1 32 VEXT.8 d2,d0,d1,#2 33 VEXT.8 d3,d0,d1,#3 34 VEXT.8 d5,d0,d1,#4 35 VEXT.8 d1,d0,d1,#5 36 VADDL.U8 q1,d2,d3 37 VADDL.U8 q2,d4,d5 38 VADDL.U8 q6,d0,d1 39 VLD1.8 {d0,d1},[r0],r1 40 VSUB.I16 d10,d10,d8 41 VMLA.I16 d12,d2,d31 42 VMUL.I16 d8,d4,d30 43 VEXT.8 d4,d0,d1,#1 44 VEXT.8 d2,d0,d1,#2 45 VEXT.8 d3,d0,d1,#3 46 VEXT.8 d5,d0,d1,#4 47 VEXT.8 d1,d0,d1,#5 48 VADDL.U8 q1,d2,d3 49 VADDL.U8 q2,d4,d5 50 VADDL.U8 q7,d0,d1 51 VLD1.8 {d0,d1},[r0],r1 52 VSUB.I16 d12,d12,d8 53 VMLA.I16 d14,d2,d31 54 VMUL.I16 d8,d4,d30 55 VEXT.8 d4,d0,d1,#1 56 VEXT.8 d2,d0,d1,#2 57 VEXT.8 d3,d0,d1,#3 58 VEXT.8 d5,d0,d1,#4 59 VEXT.8 d1,d0,d1,#5 60 VADDL.U8 q1,d2,d3 61 VADDL.U8 q2,d4,d5 62 VADDL.U8 q8,d0,d1 63 VLD1.8 {d0,d1},[r0],r1 64 VSUB.I16 d14,d14,d8 65 VMLA.I16 d16,d2,d31 66 VMUL.I16 d8,d4,d30 67 VEXT.8 d4,d0,d1,#1 68 VEXT.8 d2,d0,d1,#2 69 VEXT.8 d3,d0,d1,#3 70 VEXT.8 d5,d0,d1,#4 71 VEXT.8 d1,d0,d1,#5 72 VADDL.U8 q1,d2,d3 73 VADDL.U8 q2,d4,d5 74 VADDL.U8 q9,d0,d1 75 VLD1.8 {d0,d1},[r0],r1 76 VSUB.I16 d16,d16,d8 77 VMLA.I16 d18,d2,d31 78 VMUL.I16 d8,d4,d30 79 VEXT.8 d4,d0,d1,#1 80 VEXT.8 d2,d0,d1,#2 81 VEXT.8 d3,d0,d1,#3 82 VEXT.8 d5,d0,d1,#4 83 VEXT.8 d1,d0,d1,#5 84 VADDL.U8 q1,d2,d3 85 VADDL.U8 q2,d4,d5 86 VADDL.U8 q10,d0,d1 87 VLD1.8 {d0,d1},[r0],r1 88 VSUB.I16 d18,d18,d8 89 VMLA.I16 d20,d2,d31 90 VMUL.I16 d8,d4,d30 91 VEXT.8 d4,d0,d1,#1 92 VEXT.8 d2,d0,d1,#2 93 VEXT.8 d3,d0,d1,#3 94 VEXT.8 d5,d0,d1,#4 95 VEXT.8 d1,d0,d1,#5 96 VADDL.U8 q1,d2,d3 97 VADDL.U8 q2,d4,d5 98 VADDL.U8 q11,d0,d1 99 VLD1.8 {d0,d1},[r0],r1 100 VSUB.I16 d20,d20,d8 101 VMLA.I16 d22,d2,d31 102 VMUL.I16 d8,d4,d30 103 VEXT.8 d4,d0,d1,#1 104 VEXT.8 d2,d0,d1,#2 105 VEXT.8 d3,d0,d1,#3 106 VEXT.8 d5,d0,d1,#4 107 VEXT.8 d1,d0,d1,#5 108 VADDL.U8 q1,d2,d3 109 VADDL.U8 q2,d4,d5 110 VADDL.U8 q12,d0,d1 111 VLD1.8 {d0,d1},[r0],r1 112 VSUB.I16 d22,d22,d8 113 VMLA.I16 d24,d2,d31 114 VMUL.I16 d8,d4,d30 115 VEXT.8 d4,d0,d1,#1 116 VEXT.8 d2,d0,d1,#2 117 VEXT.8 d3,d0,d1,#3 118 VEXT.8 d5,d0,d1,#4 119 VEXT.8 d1,d0,d1,#5 120 VADDL.U8 q1,d2,d3 121 VADDL.U8 q2,d4,d5 122 VADDL.U8 q13,d0,d1 123 VSUB.I16 d24,d24,d8 124 VMLA.I16 d26,d2,d31 125 VMUL.I16 d8,d4,d30 126 VMOV.I32 q15,#0x14 127 VMOV.I32 q14,#0x5 128 VADDL.S16 q5,d10,d20 129 VADDL.S16 q1,d14,d16 130 VADDL.S16 q0,d12,d18 131 VSUB.I16 d26,d26,d8 132 VMLA.I32 q5,q1,q15 133 VMUL.I32 q4,q0,q14 134 VADDL.S16 q6,d12,d22 135 VADDL.S16 q1,d16,d18 136 VADDL.S16 q0,d14,d20 137 VMLA.I32 q6,q1,q15 138 VSUB.I32 q5,q5,q4 139 VMUL.I32 q4,q0,q14 140 VADDL.S16 q2,d14,d24 141 VADDL.S16 q1,d18,d20 142 VADDL.S16 q0,d16,d22 143 VMLA.I32 q2,q1,q15 144 VSUB.I32 q6,q6,q4 145 VMUL.I32 q4,q0,q14 146 VADDL.S16 q3,d16,d26 147 VADDL.S16 q1,d20,d22 148 VADDL.S16 q0,d18,d24 149 VMLA.I32 q3,q1,q15 150 VSUB.I32 q2,q2,q4 151 VMLS.I32 q3,q0,q14 152 VQRSHRUN.S32 d0,q5,#10 153 VQRSHRUN.S32 d2,q6,#10 154 VQRSHRUN.S32 d4,q2,#10 155 VQRSHRUN.S32 d6,q3,#10 156 VQMOVN.U16 d0,q0 157 VQMOVN.U16 d2,q1 158 VQMOVN.U16 d4,q2 159 VQMOVN.U16 d6,q3 160 POP {r4-r12,pc} 161 .endfunc 162 163 .end 164 165