107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| @/******************************************************************************
 | |
| @ *
 | |
| @ * Copyright (C) 2018 The Android Open Source Project
 | |
| @ *
 | |
| @ * 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.
 | |
| @ *
 | |
| @ *****************************************************************************
 | |
| @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
 | |
| @*/
 | |
| 
 | |
| 
 | |
|         .code 32
 | |
|        .eabi_attribute 24, 1            @Tag_ABI_align_needed
 | |
|        .eabi_attribute 25, 1            @Tag_ABI_align_preserved
 | |
| .text
 | |
| .p2align 2
 | |
|         .global ixheaacd_shiftrountine
 | |
|         .type ixheaacd_shiftrountine, %function
 | |
| ixheaacd_shiftrountine:
 | |
|     CMP             r3, #0
 | |
|     STMFD           sp!, {r4-r7, r12}
 | |
|     MOV             r12, #0x1f
 | |
|     BGE             SROUTINE_L1
 | |
|     RSB             r3, r3, #0
 | |
|     CMP             r3, r12
 | |
|     MOVGT           r3, r12
 | |
|     SUBS            r2, r2, #2
 | |
| @    LDMMIFD     sp!, {r4-r7, r12}
 | |
|     LDMFDMI         sp!, {r4-r7, r12}
 | |
|     BXMI            lr
 | |
| SROUTINE_L2:
 | |
|     LDR             r12, [r0, #0]
 | |
|     LDR             r4, [r1, #0]
 | |
|     MOV             r12, r12, ASR r3
 | |
|     MOV             r4, r4, ASR r3
 | |
|     STR             r12, [r0], #4
 | |
|     STR             r4, [r1], #4
 | |
| 
 | |
|     LDR             r12, [r0, #0]
 | |
|     LDR             r4, [r1, #0]
 | |
|     MOV             r12, r12, ASR r3
 | |
|     MOV             r4, r4, ASR r3
 | |
|     SUBS            r2, r2, #2
 | |
|     STR             r12, [r0], #4
 | |
|     STR             r4, [r1], #4
 | |
| 
 | |
|     BPL             SROUTINE_L2
 | |
|     LDMFD           sp!, {r4-r7, r12}
 | |
|     BX              lr
 | |
| SROUTINE_L1:
 | |
|     SUBS            r4, r2, #2
 | |
|     RSB             r2, r3, #0x1f
 | |
| @    LDMMIFD     sp!, {r4-r7, r12}
 | |
|     LDMFDMI         sp!, {r4-r7, r12}
 | |
|     BXMI            lr
 | |
| SROUTINE_L3:
 | |
|     LDR             r12, [r0, #0]
 | |
|     LDR             r5, [r1, #0]
 | |
| 
 | |
|     MOVS            r7, r12, ASR r2
 | |
|     CMNLT           r7, #1
 | |
|     MOVLT           r6, #0x80000000
 | |
|     MVNGT           r6, #0x80000000
 | |
|     MOVEQ           r6, r12, LSL r3
 | |
| 
 | |
|     MOVS            r7, r5, ASR r2
 | |
|     CMNLT           r7, #1
 | |
|     MOVLT           r12, #0x80000000
 | |
|     MVNGT           r12, #0x80000000
 | |
|     MOVEQ           r12, r5, LSL r3
 | |
|     STR             r6, [r0], #4
 | |
|     STR             r12, [r1], #4
 | |
| 
 | |
|     LDR             r12, [r0, #0]
 | |
|     LDR             r5, [r1, #0]
 | |
| 
 | |
|     MOVS            r7, r12, ASR r2
 | |
|     CMNLT           r7, #1
 | |
|     MOVLT           r6, #0x80000000
 | |
|     MVNGT           r6, #0x80000000
 | |
|     MOVEQ           r6, r12, LSL r3
 | |
| 
 | |
|     MOVS            r7, r5, ASR r2
 | |
|     CMNLT           r7, #1
 | |
|     MOVLT           r12, #0x80000000
 | |
|     MVNGT           r12, #0x80000000
 | |
|     MOVEQ           r12, r5, LSL r3
 | |
|     SUBS            r4, r4, #2
 | |
|     STR             r6, [r0], #4
 | |
|     STR             r12, [r1], #4
 | |
| 
 | |
|     BPL             SROUTINE_L3
 | |
|     LDMFD           sp!, {r4-r7, r12}
 | |
|     BX              lr
 | |
| 
 | |
| 
 |