ltp_cortexm3.s

来自「基于 STM32 PCM语音编/解码代码」· S 代码 · 共 179 行

S
179
字号
   SECTION .text:CODE(2)
   EXPORT  inner_prod
   
   

#define x       R0    // input array x[]
#define c       R1    // input array c[]
#define N       R2    // number of samples (a multiple of 4) // 40 samples: the lpcsize == 40 for narrowband mode, submode3
#define acc     R3    // accumulator
#define sum     R6    // sum
#define x_0     R4    // elements from array x[]
#define x_1     R5
#define c_0     R7    // elements from array c[]
#define c_1     R8





inner_prod

    PUSH    {r4-r8, lr}
    MOV     sum, #0
        
Loop
        
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc     
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc       
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc       
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc       
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc       
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6
    
    MOV     acc, #0
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    LDRSH   x_0, [x], #2
    LDRSH   c_0, [c], #2
    MLA     acc, x_0, c_0, acc        
    LDRSH   x_1, [x], #2
    LDRSH   c_1, [c], #2
    MLA     acc, x_1, c_1, acc        
    ADD     sum,sum,acc,ASR #6		
    MOV     r0, sum
    
    POP   {r4-r8, pc}
    END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?