10c1bc742181ded4930842b46e9507372f0b1b963James Dong/* 278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Copyright (C) 2007-2008 ARM Limited 378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * 478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Licensed under the Apache License, Version 2.0 (the "License"); 578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * you may not use this file except in compliance with the License. 678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * You may obtain a copy of the License at 778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * 878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * http://www.apache.org/licenses/LICENSE-2.0 978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * 1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Unless required by applicable law or agreed to in writing, software 1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * distributed under the License is distributed on an "AS IS" BASIS, 1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * See the License for the specific language governing permissions and 1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * limitations under the License. 1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * 1678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar */ 1778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar/* 180c1bc742181ded4930842b46e9507372f0b1b963James Dong * 190c1bc742181ded4930842b46e9507372f0b1b963James Dong */ 200c1bc742181ded4930842b46e9507372f0b1b963James Dong 210c1bc742181ded4930842b46e9507372f0b1b963James Dong .eabi_attribute 24, 1 220c1bc742181ded4930842b46e9507372f0b1b963James Dong .eabi_attribute 25, 1 230c1bc742181ded4930842b46e9507372f0b1b963James Dong 240c1bc742181ded4930842b46e9507372f0b1b963James Dong .arm 250c1bc742181ded4930842b46e9507372f0b1b963James Dong .fpu neon 260c1bc742181ded4930842b46e9507372f0b1b963James Dong .text 270c1bc742181ded4930842b46e9507372f0b1b963James Dong 280c1bc742181ded4930842b46e9507372f0b1b963James Dong .global armVCM4P10_UnpackBlock4x4 290c1bc742181ded4930842b46e9507372f0b1b963James Dong .func armVCM4P10_UnpackBlock4x4 300c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_UnpackBlock4x4: 310c1bc742181ded4930842b46e9507372f0b1b963James Dong PUSH {r4-r8,lr} 320c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR r2,[r0,#0] 330c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r7,#0x1f 340c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r4,#0 350c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r5,#0 360c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRB r3,[r2],#1 370c1bc742181ded4930842b46e9507372f0b1b963James Dong STRD r4,r5,[r1,#0] 380c1bc742181ded4930842b46e9507372f0b1b963James Dong STRD r4,r5,[r1,#8] 390c1bc742181ded4930842b46e9507372f0b1b963James Dong STRD r4,r5,[r1,#0x10] 400c1bc742181ded4930842b46e9507372f0b1b963James Dong STRD r4,r5,[r1,#0x18] 410c1bc742181ded4930842b46e9507372f0b1b963James DongunpackLoop: 420c1bc742181ded4930842b46e9507372f0b1b963James Dong TST r3,#0x10 430c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRNESB r5,[r2,#1] 440c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRNEB r4,[r2],#2 450c1bc742181ded4930842b46e9507372f0b1b963James Dong AND r6,r7,r3,LSL #1 460c1bc742181ded4930842b46e9507372f0b1b963James Dong LDREQSB r4,[r2],#1 470c1bc742181ded4930842b46e9507372f0b1b963James Dong ORRNE r4,r4,r5,LSL #8 480c1bc742181ded4930842b46e9507372f0b1b963James Dong TST r3,#0x20 490c1bc742181ded4930842b46e9507372f0b1b963James Dong LDREQB r3,[r2],#1 500c1bc742181ded4930842b46e9507372f0b1b963James Dong STRH r4,[r1,r6] 510c1bc742181ded4930842b46e9507372f0b1b963James Dong BEQ unpackLoop 520c1bc742181ded4930842b46e9507372f0b1b963James Dong STR r2,[r0,#0] 530c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r8,pc} 540c1bc742181ded4930842b46e9507372f0b1b963James Dong .endfunc 550c1bc742181ded4930842b46e9507372f0b1b963James Dong .end 56