Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023      
00024 #include "arm_math.h"     
00025      
00057 void arm_q31_to_q7(     
00058   q31_t * pSrc,     
00059   q7_t * pDst,     
00060   uint32_t blockSize)     
00061 {     
00062   q31_t *pIn = pSrc;                                  
00063   uint32_t blkCnt;                                    
00064   q31_t in1, in2, in3, in4; 
00065   q31_t in5, in6, in7, in8; 
00066   q7_t out1, out2, out3, out4;
00067      
00068        
00069   blkCnt = blockSize >> 3u;     
00070      
00071   
00072      
00073   while(blkCnt > 0u)     
00074   {                  
00075          
00076          
00077       
00078     in1 = pIn[0];  
00079     in2 = pIn[1];  
00080     out1 = (q7_t)(in1 >> 24); 
00081     in3 = pIn[2];  
00082     out2 = (q7_t)(in2 >> 24); 
00083     in4 = pIn[3]; 
00084     
00085     out3 = (q7_t)(in3 >> 24); 
00086     out4 = (q7_t)(in4 >> 24); 
00087  
00088     *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);
00089 
00090     in5 = pIn[4];  
00091     in6 = pIn[5];  
00092     out1 = (q7_t)(in5 >> 24); 
00093     in7 = pIn[6];  
00094     out2 = (q7_t)(in6 >> 24); 
00095     in8 = pIn[7]; 
00096     
00097     out3 = (q7_t)(in7 >> 24); 
00098     out4 = (q7_t)(in8 >> 24); 
00099 
00100     *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);
00101 
00102     
00103     pIn += 8u;
00104 
00105          
00106     blkCnt--;     
00107   }     
00108      
00109   
00110      
00111   blkCnt = blockSize % 0x8u;     
00112      
00113   while(blkCnt > 0u)     
00114   {     
00115          
00116          
00117     *pDst++ = (q7_t) (*pIn++ >> 24);     
00118      
00119          
00120     blkCnt--;     
00121   }     
00122      
00123 }     
00124