armVCM4P10_InterpolateLuma_Align_unsafe_s.S revision 78e52bfac041d71ce53b5b13c2abf78af742b09d
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_HorAlign9x_unsafe 29 .func armVCM4P10_InterpolateLuma_HorAlign9x_unsafe 30armVCM4P10_InterpolateLuma_HorAlign9x_unsafe: 31 MOV r12,r8 32 AND r7,r0,#3 33 BIC r0,r0,#3 34 ADD pc,pc,r7,LSL #2 35 NOP 36 B Copy0toAligned 37 B Copy1toAligned 38 B Copy2toAligned 39 B Copy3toAligned 40Copy0toAligned: 41 LDM r0,{r7,r10,r11} 42 SUBS r9,r9,#1 43 ADD r0,r0,r1 44 STM r8!,{r7,r10,r11} 45 BGT Copy0toAligned 46 B CopyEnd 47Copy1toAligned: 48 LDM r0,{r7,r10,r11} 49 SUBS r9,r9,#1 50 ADD r0,r0,r1 51 LSR r7,r7,#8 52 ORR r7,r7,r10,LSL #24 53 LSR r10,r10,#8 54 ORR r10,r10,r11,LSL #24 55 LSR r11,r11,#8 56 STM r8!,{r7,r10,r11} 57 BGT Copy1toAligned 58 B CopyEnd 59Copy2toAligned: 60 LDM r0,{r7,r10,r11} 61 SUBS r9,r9,#1 62 ADD r0,r0,r1 63 LSR r7,r7,#16 64 ORR r7,r7,r10,LSL #16 65 LSR r10,r10,#16 66 ORR r10,r10,r11,LSL #16 67 LSR r11,r11,#16 68 STM r8!,{r7,r10,r11} 69 BGT Copy2toAligned 70 B CopyEnd 71Copy3toAligned: 72 LDM r0,{r7,r10,r11} 73 SUBS r9,r9,#1 74 ADD r0,r0,r1 75 LSR r7,r7,#24 76 ORR r7,r7,r10,LSL #8 77 LSR r10,r10,#24 78 ORR r10,r10,r11,LSL #8 79 LSR r11,r11,#24 80 STM r8!,{r7,r10,r11} 81 BGT Copy3toAligned 82CopyEnd: 83 MOV r0,r12 84 MOV r1,#0xc 85 BX lr 86 .endfunc 87 88 .global armVCM4P10_InterpolateLuma_VerAlign4x_unsafe 89 .func armVCM4P10_InterpolateLuma_VerAlign4x_unsafe 90armVCM4P10_InterpolateLuma_VerAlign4x_unsafe: 91 AND r7,r0,#3 92 BIC r0,r0,#3 93 ADD pc,pc,r7,LSL #2 94 NOP 95 B Copy0toVAligned 96 B Copy1toVAligned 97 B Copy2toVAligned 98 B Copy3toVAligned 99Copy0toVAligned: 100 LDR r7,[r0],r1 101 SUBS r9,r9,#1 102 STR r7,[r8],#4 103 BGT Copy0toVAligned 104 B CopyVEnd 105Copy1toVAligned: 106 LDR r10,[r0,#4] 107 LDR r7,[r0],r1 108 SUBS r9,r9,#1 109 LSL r10,r10,#24 110 ORR r7,r10,r7,LSR #8 111 STR r7,[r8],#4 112 BGT Copy1toVAligned 113 B CopyVEnd 114Copy2toVAligned: 115 LDR r10,[r0,#4] 116 LDR r7,[r0],r1 117 SUBS r9,r9,#1 118 LSL r10,r10,#16 119 ORR r7,r10,r7,LSR #16 120 STR r7,[r8],#4 121 BGT Copy2toVAligned 122 B CopyVEnd 123Copy3toVAligned: 124 LDR r10,[r0,#4] 125 LDR r7,[r0],r1 126 SUBS r9,r9,#1 127 LSL r10,r10,#8 128 ORR r7,r10,r7,LSR #24 129 STR r7,[r8],#4 130 BGT Copy3toVAligned 131CopyVEnd: 132 SUB r0,r8,#0x1c 133 MOV r1,#4 134 BX lr 135 .endfunc 136 137 .end 138 139