1;// 2;// 3;// File Name: armVCM4P10_InterpolateLuma_Copy_unsafe_s.s 4;// OpenMAX DL: v1.0.2 5;// Revision: 9641 6;// Date: Thursday, February 7, 2008 7;// 8;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 9;// 10;// 11;// 12 13;// Function: 14;// armVCM4P10_InterpolateLuma_Copy4x4_unsafe 15;// 16;// Implements copy from an arbitrary aligned source memory location (pSrc) to an aligned 17;// destination pointed by (pDst) 18;// 19;// Registers preserved for top level function 20;// r1,r3,r4,r5,r6,r7,r10,r11,r14 21;// 22;// Registers modified by the function 23;// r0,r2,r8,r9,r12 24 25 INCLUDE omxtypes_s.h 26 INCLUDE armCOMM_s.h 27 28 M_VARIANTS ARM1136JS 29 30 EXPORT armVCM4P10_InterpolateLuma_Copy4x4_unsafe 31 32;// Declare input registers 33pSrc RN 0 34srcStep RN 1 35pDst RN 2 36dstStep RN 3 37 38;// Declare other intermediate registers 39x0 RN 4 40x1 RN 5 41x2 RN 8 42x3 RN 9 43Temp RN 12 44 45 IF ARM1136JS 46 47 M_START armVCM4P10_InterpolateLuma_Copy4x4_unsafe, r6 48 49Copy4x4Start 50 ;// Do Copy and branch to EndOfInterpolation 51 AND Temp, pSrc, #3 52 BIC pSrc, pSrc, #3 53 54 M_SWITCH Temp 55 M_CASE Copy4x4Align0 56 M_CASE Copy4x4Align1 57 M_CASE Copy4x4Align2 58 M_CASE Copy4x4Align3 59 M_ENDSWITCH 60 61Copy4x4Align0 62 M_LDR x0, [pSrc], srcStep 63 M_LDR x1, [pSrc], srcStep 64 M_STR x0, [pDst], dstStep 65 M_LDR x2, [pSrc], srcStep 66 M_STR x1, [pDst], dstStep 67 M_LDR x3, [pSrc], srcStep 68 M_STR x2, [pDst], dstStep 69 M_STR x3, [pDst], dstStep 70 B Copy4x4End 71 72Copy4x4Align1 73 LDR x1, [pSrc, #4] 74 M_LDR x0, [pSrc], srcStep 75 LDR x3, [pSrc, #4] 76 M_LDR x2, [pSrc], srcStep 77 MOV x0, x0, LSR #8 78 ORR x0, x0, x1, LSL #24 79 M_STR x0, [pDst], dstStep 80 MOV x2, x2, LSR #8 81 ORR x2, x2, x3, LSL #24 82 LDR x1, [pSrc, #4] 83 M_LDR x0, [pSrc], srcStep 84 M_STR x2, [pDst], dstStep 85 LDR x3, [pSrc, #4] 86 M_LDR x2, [pSrc], srcStep 87 MOV x0, x0, LSR #8 88 ORR x0, x0, x1, LSL #24 89 M_STR x0, [pDst], dstStep 90 MOV x2, x2, LSR #8 91 ORR x2, x2, x3, LSL #24 92 M_STR x2, [pDst], dstStep 93 B Copy4x4End 94 95Copy4x4Align2 96 LDR x1, [pSrc, #4] 97 M_LDR x0, [pSrc], srcStep 98 LDR x3, [pSrc, #4] 99 M_LDR x2, [pSrc], srcStep 100 MOV x0, x0, LSR #16 101 ORR x0, x0, x1, LSL #16 102 M_STR x0, [pDst], dstStep 103 MOV x2, x2, LSR #16 104 ORR x2, x2, x3, LSL #16 105 M_STR x2, [pDst], dstStep 106 107 LDR x1, [pSrc, #4] 108 M_LDR x0, [pSrc], srcStep 109 LDR x3, [pSrc, #4] 110 M_LDR x2, [pSrc], srcStep 111 MOV x0, x0, LSR #16 112 ORR x0, x0, x1, LSL #16 113 M_STR x0, [pDst], dstStep 114 MOV x2, x2, LSR #16 115 ORR x2, x2, x3, LSL #16 116 M_STR x2, [pDst], dstStep 117 B Copy4x4End 118 119Copy4x4Align3 120 LDR x1, [pSrc, #4] 121 M_LDR x0, [pSrc], srcStep 122 LDR x3, [pSrc, #4] 123 M_LDR x2, [pSrc], srcStep 124 MOV x0, x0, LSR #24 125 ORR x0, x0, x1, LSL #8 126 M_STR x0, [pDst], dstStep 127 MOV x2, x2, LSR #24 128 ORR x2, x2, x3, LSL #8 129 M_STR x2, [pDst], dstStep 130 131 LDR x1, [pSrc, #4] 132 M_LDR x0, [pSrc], srcStep 133 LDR x3, [pSrc, #4] 134 M_LDR x2, [pSrc], srcStep 135 MOV x0, x0, LSR #24 136 ORR x0, x0, x1, LSL #8 137 M_STR x0, [pDst], dstStep 138 MOV x2, x2, LSR #24 139 ORR x2, x2, x3, LSL #8 140 M_STR x2, [pDst], dstStep 141 B Copy4x4End 142 143Copy4x4End 144 M_END 145 146 ENDIF 147 148 END 149