83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.1 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
 | |
| .global ixheaacd_calc_max_spectral_line_armv8
 | |
| ixheaacd_calc_max_spectral_line_armv8:
 | |
| 
 | |
|     LSR             W4, W1, #3
 | |
|     LSL             W6, W4, #3
 | |
|     MOV             w11, #0x00000000
 | |
|     MOV             V3.S[0], w11
 | |
|     MOV             V3.S[1], w11
 | |
|     MOV             V3.S[2], w11
 | |
|     MOV             V3.S[3], w11
 | |
| 
 | |
| LOOP_1:
 | |
|     LD1             {V0.4S}, [X0], #16
 | |
|     LD1             {V1.4S}, [X0], #16
 | |
| 
 | |
|     ABS             V0.4S, V0.4S
 | |
|     ABS             V1.4S, V1.4S
 | |
| 
 | |
|     SUBS            W4, W4, #1
 | |
| 
 | |
|     ORR             V3.16B, V0.16B, V3.16B
 | |
|     ORR             V3.16B, V1.16B, V3.16B
 | |
| 
 | |
|     BGT             LOOP_1
 | |
| 
 | |
|     SUBS            W7, W1, W6
 | |
| 
 | |
|     MOV             W4, V3.S[0]
 | |
|     MOV             W1, V3.S[1]
 | |
|     MOV             W2, V3.S[2]
 | |
|     ORR             W4, W4, W1
 | |
|     MOV             W3, V3.S[3]
 | |
|     ORR             W4, W4, W2
 | |
|     ORR             W4, W4, W3
 | |
|     BEQ             END_FUNC
 | |
| LOOP_2:
 | |
| 
 | |
|     LDR             W2, [X0], #4
 | |
| 
 | |
|     CMP             W2, #0
 | |
| 
 | |
|     CNEG            W2, W2, LE
 | |
|     ORR             W4, W4, W2
 | |
|     SUBS            W7, W7, #1
 | |
|     BGT             LOOP_2
 | |
| 
 | |
| END_FUNC:
 | |
| 
 | |
|     MOV             W0, W4
 | |
|     CMP             W0, #0
 | |
| 
 | |
|     CNEG            W0, W0, LE
 | |
|     CLZ             W0, W0
 | |
|     SUB             W0, W0, #1
 | |
| 
 | |
|     RET
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |