blob: b97efcb5c3a57ca103d1415afcee3a6b891d2d75 [file] [log] [blame]
/*
* Copyright (C) 2007-2008 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/*
*
*/
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.arm
.fpu neon
.text
.syntax unified
.global armVCM4P10_UnpackBlock4x4
armVCM4P10_UnpackBlock4x4:
PUSH {r4-r8,lr}
LDR r2,[r0,#0]
MOV r7,#0x1f
MOV r4,#0
MOV r5,#0
LDRB r3,[r2],#1
STRD r4,r5,[r1,#0]
STRD r4,r5,[r1,#8]
STRD r4,r5,[r1,#0x10]
STRD r4,r5,[r1,#0x18]
unpackLoop:
TST r3,#0x10
LDRSBNE r5,[r2,#1]
LDRBNE r4,[r2],#2
AND r6,r7,r3,LSL #1
LDRSBEQ r4,[r2],#1
ORRNE r4,r4,r5,LSL #8
TST r3,#0x20
LDRBEQ r3,[r2],#1
STRH r4,[r1,r6]
BEQ unpackLoop
STR r2,[r0,#0]
POP {r4-r8,pc}
.end