148 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.4 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
 | |
| @*/
 | |
| 
 | |
| 
 | |
| .text
 | |
| .p2align 2
 | |
| .global ixheaacd_scale_factor_process_armv7
 | |
| 
 | |
| ixheaacd_scale_factor_process_armv7:
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     STMFD           sp!, {r4-r12, r14}
 | |
|     LDR             r9, [sp, #0x28]
 | |
|     LDR             r11, [sp, #0x2c]
 | |
| 
 | |
|     CMP             r2, #0
 | |
| 
 | |
|     BLE             END
 | |
|     MOV             r10, #0
 | |
|     CMP             r11, #2
 | |
|     MOVLE           r11, #0x25
 | |
|     MOVGT           r11, #0x22
 | |
| 
 | |
| TBANDS_LOOP:
 | |
| 
 | |
|     LDRSH           r5, [r1], #2
 | |
|     LDRB            r4, [r3], #1
 | |
| 
 | |
|     LDR             r6, [sp, #0x30]
 | |
|     LDR             r7, [sp, #0x34]
 | |
| 
 | |
|     CMP             r5, #0x18
 | |
|     BGE             SCALE_FACTOR_GE_12
 | |
| 
 | |
|     CMP             r4, #0
 | |
|     BLE             OFFSET_ZERO
 | |
| 
 | |
| SCALE_FACTOR_LT_12:
 | |
| 
 | |
|     STR             r10, [r0], #4
 | |
|     STR             r10, [r0], #4
 | |
|     STR             r10, [r0], #4
 | |
|     STR             r10, [r0], #4
 | |
|     SUBS            r4, r4, #4
 | |
|     BGT             SCALE_FACTOR_LT_12
 | |
|     B               OFFSET_ZERO
 | |
| 
 | |
| SCALE_FACTOR_GE_12:
 | |
| 
 | |
|     SUBS            r6, r11, r5, ASR #2
 | |
| 
 | |
| 
 | |
|     AND             r5, r5, #3
 | |
| 
 | |
| 
 | |
|     LDR             r5, [r9, r5, LSL #2]
 | |
| 
 | |
|     BLE             SHIFT_LE_ZERO
 | |
| 
 | |
|     SUB             r14, r6, #1
 | |
| 
 | |
| SHIFT_POSITIVE:
 | |
|     LDRD            r6, [r0, #0]
 | |
| 
 | |
|     SMULWB          r6, r6, r5
 | |
|     SMULWB          r7, r7, r5
 | |
| 
 | |
|     MOV             r6, r6, ASR r14
 | |
|     MOV             r7, r7, ASR r14
 | |
| 
 | |
|     STRD            r6, [r0], #8
 | |
| 
 | |
|     LDRD            r6, [r0, #0]
 | |
| 
 | |
|     SMULWB          r6, r6, r5
 | |
|     SMULWB          r7, r7, r5
 | |
|     SUBS            r4, r4, #4
 | |
| 
 | |
|     MOV             r6, r6, ASR r14
 | |
|     MOV             r7, r7, ASR r14
 | |
| 
 | |
|     STRD            r6, [r0], #8
 | |
| 
 | |
|     BGT             SHIFT_POSITIVE
 | |
|     B               OFFSET_ZERO
 | |
| SHIFT_LE_ZERO:
 | |
| 
 | |
|     RSBS            r14, r6, #0
 | |
|     BGT             SHIFT_NEGTIVE1
 | |
| 
 | |
| SHIFT_ZERO:
 | |
|     LDRD            r6, [r0, #0]
 | |
| 
 | |
|     SMULWB          r6, r6, r5
 | |
|     SMULWB          r7, r7, r5
 | |
|     MOV             r6, r6, LSL #1
 | |
|     MOV             r7, r7, LSL #1
 | |
| 
 | |
|     STRD            r6, [r0], #8
 | |
| 
 | |
|     SUBS            r4, r4, #2
 | |
| 
 | |
|     BGT             SHIFT_ZERO
 | |
|     B               OFFSET_ZERO
 | |
| 
 | |
| SHIFT_NEGTIVE1:
 | |
|     SUB             r14, r14, #1
 | |
| SHIFT_NEGTIVE:
 | |
|     LDRD            r6, [r0, #0]
 | |
|     MOV             r6, r6, LSL r14
 | |
|     MOV             r7, r7, LSL r14
 | |
| 
 | |
|     SMULWB          r6, r6, r5
 | |
|     SMULWB          r7, r7, r5
 | |
|     MOV             r6, r6, LSL #2
 | |
|     MOV             r7, r7, LSL #2
 | |
| 
 | |
|     STRD            r6, [r0], #8
 | |
| 
 | |
|     SUBS            r4, r4, #2
 | |
| 
 | |
|     BGT             SHIFT_NEGTIVE
 | |
| 
 | |
| OFFSET_ZERO:
 | |
|     SUBS            r2, r2, #1
 | |
|     BGT             TBANDS_LOOP
 | |
| END:
 | |
|     LDMFD           sp!, {r4-r12, r15}
 |