亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fir16_emac.s

?? freescale MAC DSP的算法庫(FFT
?? S
?? 第 1 頁 / 共 2 頁
字號:
;************************************************************************
;*
;* Copyright:
;*	Freescale Semiconductor, INC. All Rights Reserved.  
;*  You are hereby granted a copyright license to use, modify, and
;*  distribute the SOFTWARE so long as this entire notice is
;*  retained without alteration in any modified and/or redistributed
;*  versions, and that such modified versions are clearly identified
;*  as such. No licenses are granted by implication, estoppel or
;*  otherwise under any patents or trademarks of Freescale Semiconductor, 
;*  Inc. This software is provided on an "AS IS" basis and without warranty.
;*
;*  To the maximum extent permitted by applicable law, FREESCALE 
;*  DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING 
;*  IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
;*  PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE 
;*  SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY 
;*  ACCOMPANYING WRITTEN MATERIALS.
;* 
;*  To the maximum extent permitted by applicable law, IN NO EVENT
;*  SHALL FREESCALE BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING 
;*  WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS 
;*  INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
;*  LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.   
;* 
;*  Freescale assumes no responsibility for the maintenance and support
;*  of this software
;*************************************************************************
;*
;*  FILE NAME: fir16.s
;*
;*  PURPOSE:  FIR16 routines definition
;*
;*  AUTHOR: Andrey Butok
;*		FIR16 function optimized for eMAC by Igor Drozdinsky
;*
;***********************************************************************
.text
;#define __EMAC_H
;#include "emac.h"
;#ifdef __FRACT_M
#define __FMAC_SR16 0x00000070
;#else
;#define __FMAC_SR16 0x00000000
;#endif

	.XDEF	_FIR16_EMAC
	.extern _malloc
	.extern _free


;******************************************************
;* NAME: void FIR16( struct tFirStruct *pFIR, Frac16* pX, Frac16* pY, unsigned int n)
;*
;* DESCRIPTION: Computes a Infinite Impulse Response (IIR) filter for a array of 16-bit fractional data values.
;******************************************************
;* Used registers:
;*	a2       pFIR	- Pointer to a data structure containing private data for the IIR filter
;*  d1		 Old MAC status register
;*	d2, d3	 iCurX0, iCurX1, iCurX2, iCurX3	- Curent X
;*	d4		 iCurA0, iCurA1	- Curent coefficients
;*	d5		 j	- inner loop counter
;*	d7		 i	- outer loop counter
;*	d6		 tmp	- saved value for inner loop counter calculation
;*	a0       pX		- Pointer to the current X for outer loop
;*	a1       pY		- Pointer to the current Y for outer loop
;*	a4       pCurX	- Pointer to the current X for inner loop
;*	a4       pCurHistory	- Pointer to the current element of history buffer
;*	a3       pCurCoef	- Pointer to the current coefficient
;*	a6       pFirCoef - Pointer to the coefficients -> {a0,a1,a2...}
;*	ACC0     iOut0	- Accumulator 0
;*	ACC1     iOut1	- Accumulator 1
;*	ACC2     iOut2	- Accumulator 2
;*	ACC3     iOut3	- Accumulator 3
;******************************************************
_FIR16_EMAC:

;---=Saving values of used registers=---
	lea -60(a7), a7
	movem.l d0-d7/a0-a6, (a7)
	
;--== Saving old MAC status register to d1 ==--
	move.l	MACSR, d1
;--== Loading new MAC status register ==--
	move.l	#__FMAC_SR16, d0
	move.l	d0, MACSR
	
;---=Most useful parameters are moved from stack to registers.=---	
	move.l	68(a7), a0			;pX
	move.l	72(a7), a1			;pY
	move.l	64(a7), a2			;pIIR
	move.l	(a2), a6			;pIirCoef = pIIR->pIirCoef
	move.l	#0, ACC0
	move.l	#0, ACC1
	move.l	#0, ACC2
	move.l	#0, ACC3		
;---====== Begin of cycle of getting Y[1]..Y[N] (N = (pIIR->iIirCoefCount - 1) / 2)======---

	move.l	4(a2), d7			;
	subq.l	#1, d7				;tmp = i = pIIR->iIirCoefCount - 1;
	move.l	d7, d6				;
	
	
	asr.l	#2, d7
			
	beq		.EndD4Z				;if(i >> 2)
								;{
 		
;--==First N output samples computation==--
		
	move.l	d6, d7
	subq.l	#4, d7				;i -= 4;

;--==Computation without using history buffer==--
		
.BegD4:								;do{
			
;--== Next input samples loading	==--
	move.l	(a0), d2			;iCurX0 = pX[0]; icurX1 = pX[1];
	move.l	4(a0), d3			;iCurX2 = pX[2]; icurX3 = pX[3];
	
	movea.l	a0, a4				;pCurX = pX;
	lea		8(a0), a0			;pX += 4;
	
	move.l	a6, a3				;pCurCoef = pIirCoef;
;--== Next coefficient loading	==--
	move.w	(a3)+, d4			;iCurA0 = *pCurCoef;

;--== Input samples and first coefficient multiplications ==--
	mac.w	d4.l, d2.u, <<, ACC0	;iOut0 = iCurA0 * iCurX0;
	mac.w	d4.l, d2.l, <<, ACC1	;iOut1 = iCurA0 * iCurX1;
	mac.w	d4.l, d3.u, <<, ACC2	;iOut2 = iCurA0 * iCurX2;
	mac.w	d4.l, d3.l, <<, ACC3	;iOut3 = iCurA0 * iCurX3;

	
;--== The count of inner loops calculation ==-- 
	move.l	d6, d5				;
	sub.l	d7, d5				;j = tmp - i - 4;
	subq.l	#4, d5				;
								
	ble		.EndIn1				;while(j > 0)
								;{
	
.ForIn1Beg:
;--== Next coefficients loading	==--
	move.l	(a3)+, d4			;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;

.ForIn1:
	
;--== Three first input samples and coefficients multiplication ==--
	mac.w	d4.u, d2.u, <<, ACC1	;iOut1 += iCurA0 * iCurX0;
	mac.w	d4.u, d2.l, <<, ACC2 	;iOut2 += iCurA0 * iCurX1;
	mac.w	d4.u, d3.u, <<, ACC3	;iOut3 += iCurA0 * iCurX2;
	
;--== Loading two next input samples ==--	
	move.l	d2, d3					;iCurX3 = iCurX1; 	iCurX2 = iCurX0;
	move.l	-(a4), d2				;iCurX1 = *--pCurX; iCurX0 = *--pCurX;
	
;--== Fourth input sample and coefficient multiplication ==--
	mac.w	d4.u, d2.l, <<, ACC0	;iOut0 += iCurA0 * iCurX1;
		
;--== Next four input sample and coefficients multiplication ==--
	mac.w	d4.l, d2.u, <<, ACC0	;iOut0 += iCurA1 * iCurX0;
	mac.w	d4.l, d2.l, <<, ACC1	;iOut1 += iCurA1 * iCurX1;
	mac.w	d4.l, d3.u, <<, ACC2	;iOut2 += iCurA1 * iCurX2;
;--== Last mac instruction with next coefficients loading ==--
	mac.w	d4.l, d3.l, <<, (a3)+, d4, ACC3	;iOut3 += iCurA1 * iCurX3;
											;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;
		
	subq.l	#2, d5 					;	j -= 2;
	bgt		.ForIn1					;} //while(j > 0)
	
.EndIn1C:	
;--== Correcting pointer to coefficients after inner loop ==--
	lea		-4(a3), a3				;pCurCoef -= 4
	
.EndIn1:	
	
	move.l	12(a2), d5				;if(pIIR->iIirHistoryCount)
;---=Computation using history buffer==--
	beq		.BegNoHistory			;{

;--== The count of inner loops calculation ==-- 
	move.l	d7, d5					;
	addq.l	#4, d5					;j = i + 4;

	ble		.EndInH					;if(j > 0)
									;{

;--== Setting curent history buffer pointer ==--
	move.l  8(a2), a4				;
	adda.l	d6, a4					;
	adda.l	d6, a4					;pCurHistory = pIIR->pIirHistory + tmp * 2;
	

	btst	#0, d5					;if(j & 1)
	beq		.ForInHBeg				;{
	
;--== This part is executed only if j is odd ==--	
;--== Next coefficients loading	==--
	move.w	(a3)+, d4				;iCurA = *pCurCoef++;
	
;--== Next input sample loading	from history buffer==--
	move.w	d2, d3					;iCurX3 = iCurX2;
	move.w	-(a4), d2				;iCurX2 = iCurX1
	swap	d2						;iCurX1 = iCurX0
	swap	d3						;iCurX0 = *--pCurHistory;

	
	mac.w	d4.l, d2.u, <<, ACC0	;iOut0 += iCurA0 * iCurX0;
	mac.w	d4.l, d2.l, <<, ACC1	;iOut1 += iCurA0 * iCurX1;
	mac.w	d4.l, d3.u, <<, ACC2	;iOut2 += iCurA0 * iCurX2;
	mac.w	d4.l, d3.l, <<, ACC3	;iOut3 += iCurA0 * iCurX3;
	
	subq.l	#1, d5					;j -= 1;
	ble		.EndInH					;}
									;while(j > 0)
									;{
	
.ForInHBeg:								
;--== Next coefficients loading	==--
	move.l	(a3)+, d4				;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;

.ForInH:
	
	
;--== Three first input samples and coefficients multiplication ==--
	mac.w	d4.u, d2.u, <<, ACC1	;iOut1 += iCurA0 * iCurX0
	mac.w	d4.u, d2.l, <<, ACC2	;iOut2 += iCurA0 * iCurX1
	mac.w	d4.u, d3.u, <<, ACC3	;iOut3 += iCurA0 * iCurX2
	
	
;--== Loading two next input samples ==--	
	move.l	d2, d3					;iCurX3 = iCurX1; 	iCurX2 = iCurX0;
	move.l	-(a4), d2				;iCurX1 = *--pCurHistory; iCurX0 = *--pCurHistory;
			
	
;--== Fourth input sample and coefficient multiplication ==--
	mac.w	d4.u, d2.l, <<, ACC0	;iOut0 += iCurA0 * iCurX0
	
;--== Next Four input sample and coefficients multiplication ==--
	mac.w	d4.l, d2.u, <<, ACC0	;iOut0 += iCurA1 * iCurX0
	mac.w	d4.l, d2.l, <<, ACC1	;iOut1 += iCurA1 * iCurX1
	mac.w	d4.l, d3.u, <<, ACC2	;iOut2 += iCurA1 * iCurX2
;--== Last mac instruction with next coefficients loading ==--
	mac.w	d4.l, d3.l, <<, (a3)+, d4, ACC3	;iOut3 += iCurA1 * iCurX3
											;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;
	
	subq.l	#2, d5					;j -= 2;
	bgt		.ForInH					;} // while(j > 0)
	
.EndInH:	
	bra		.EndH					;} // if(pIIR->iIirHistoryCount)
									;else{

.BegNoHistory:

;---=Final computations if history buffer is void==--
;--== Next coefficients loading	==--
	move.l	(a3)+, d4				;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;
	
	mac.w	d4.u, d2.u, <<, ACC1	;iOut1 += iCurA0 * iCurX1
	mac.w	d4.u, d2.l, <<, ACC2	;iOut2 += iCurA0 * iCurX2
	mac.w	d4.u, d3.u, <<, ACC3	;iOut3 += iCurA0 * iCurX3
		
	mac.w	d4.l, d2.u, <<, ACC2	;iOut2 += iCurA1 * iCurX2
	mac.w	d4.l, d2.l, <<, ACC3	;iOut3 += iCurA1 * iCurX3
		
;--== Next coefficient loading	==--
	move.w	(a3)+, d4				;iCurA0 = *pCurCoef++;
	
	mac.w	d4.l, d2.u, <<, ACC3	;iOut3 += iCurA0 * iCurX3
	
									;} // else if (pIIR->iIirHistoryCount)
	
.EndH:

;--==Storing computed samples into the memory==--
				
	move.l	a6, a3					;pCurCoef = pIirCoef
	
	movclr.l	ACC0, d0			;*pY++ = iOut0
;#ifndef __FRACT_M	
;	swap	d0						;
;#endif	
	move.w	d0, (a1)+				;
			
	movclr.l	ACC1, d0			;*pY++ = iOut1
;#ifndef __FRACT_M	
;	swap	d0						;
;#endif	
	move.w	d0, (a1)+				;
	
	movclr.l	ACC2, d2			;*pY++ = iOut2
;#ifndef __FRACT_M	
;	swap	d2						;
;#endif	
	move.w	d2, (a1)+				;
	
	movclr.l	ACC3, d0			;*pY++ = iOut3
;#ifndef __FRACT_M	
;	swap	d0						;
;#endif	
	move.w	d0, (a1)+				;

	subq.l	#4, d7					;i -= 4;
	bgt		.BegD4					;}while(i > 0);
	
	bra		.EndD4

.EndD4Z:
	
	move.l	d6, d7					;
	beq		.EndTailH				;
	bra		.BegTailH				;
	
.EndD4:

	addq.l	#4, d7					; i += 4;
	
	beq		.EndTailH				;while(i)
									;{
	
;---=Computation of N % 4 last output samples==--
.BegTailH:
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩不卡视频| 欧美草草影院在线视频| 色香色香欲天天天影视综合网| 国产精品一区二区久久精品爱涩 | 欧洲精品一区二区三区在线观看| 99久久国产综合精品麻豆| 91论坛在线播放| 在线不卡一区二区| 国产三级一区二区三区| 中文字幕一区二区三| 国产在线一区观看| 日韩成人伦理电影在线观看| 国产精品久久久久久久第一福利| 国产精品久久久久久久久快鸭 | 国产福利一区二区| 91亚洲精品一区二区乱码| 欧美精品 国产精品| 久久久精品2019中文字幕之3| 日韩一区在线看| 奇米888四色在线精品| 成人av网站在线观看| 欧美电影在线免费观看| 国产欧美日韩亚州综合| 丝袜美腿成人在线| 成人av中文字幕| 日韩欧美国产综合一区| 国产午夜一区二区三区| 欧美成人aa大片| 亚洲一区二区中文在线| 久久国产综合精品| 在线观看视频一区二区欧美日韩| 久久伊人蜜桃av一区二区| 亚洲一区在线免费观看| 一本到高清视频免费精品| 国产欧美精品一区二区三区四区 | av亚洲精华国产精华精华| 这里只有精品免费| 亚洲福中文字幕伊人影院| 成人av网在线| 国产精品二三区| 波多野结衣精品在线| 亚洲人成精品久久久久| 韩国一区二区在线观看| 日本韩国精品在线| 中文字幕欧美日韩一区| 国内欧美视频一区二区| 欧美α欧美αv大片| 蜜桃91丨九色丨蝌蚪91桃色| 3d动漫精品啪啪| 另类小说视频一区二区| 精品日韩在线观看| 国产一区视频网站| 久久日韩粉嫩一区二区三区| 国产激情视频一区二区三区欧美 | 91精品国产品国语在线不卡| 午夜不卡av免费| 精品久久五月天| 国产成人8x视频一区二区| 亚洲国产精品传媒在线观看| 亚洲成人高清在线| 91黄色激情网站| 久久精品国产网站| 久久综合九色综合97婷婷| 国产精品影音先锋| 一区免费观看视频| 欧美人伦禁忌dvd放荡欲情| 免费av成人在线| 国产精品卡一卡二卡三| 欧美三级视频在线播放| 裸体一区二区三区| 国产精品久久99| 欧美一区二区三区视频免费播放| 成人黄色在线看| 亚洲一级片在线观看| 国产亚洲综合色| 欧美三级电影精品| 91免费版pro下载短视频| 欧美激情一区二区三区在线| 国内外成人在线视频| 亚洲激情综合网| 国产午夜精品久久久久久免费视| 色88888久久久久久影院按摩| 精品午夜一区二区三区在线观看| 亚洲精品日韩综合观看成人91| 精品少妇一区二区三区免费观看| 91免费看视频| 成人午夜在线免费| 韩国成人福利片在线播放| 亚洲国产精品天堂| 亚洲色欲色欲www在线观看| 久久久久久综合| 2021久久国产精品不只是精品| 欧美私人免费视频| 欧美日韩视频在线观看一区二区三区 | caoporm超碰国产精品| 视频一区欧美日韩| 一区二区三区**美女毛片| 亚洲人成电影网站色mp4| 欧美一区二区三区四区高清| 亚洲三级电影全部在线观看高清| 欧美一区二区观看视频| 国产主播一区二区| 激情六月婷婷久久| 韩国成人福利片在线播放| 免费美女久久99| 极品少妇xxxx偷拍精品少妇| 美女任你摸久久| 国产麻豆精品在线| 国产成人精品免费网站| www.日本不卡| 在线亚洲+欧美+日本专区| 欧美日韩久久不卡| 亚洲国产精品成人综合 | 国产精品456| 成人视屏免费看| 在线免费亚洲电影| 日韩欧美国产系列| 国产精品国产三级国产aⅴ入口| 日韩久久一区二区| 天堂午夜影视日韩欧美一区二区| 日本在线播放一区二区三区| 国产一区二区三区黄视频 | 欧美一区二区观看视频| 国产欧美一区二区三区在线看蜜臀| 国产精品久久三| 日本午夜一本久久久综合| 亚洲激情图片qvod| 亚洲欧洲在线观看av| 一区二区在线观看av| 国内欧美视频一区二区| 色94色欧美sute亚洲线路一久| 这里只有精品电影| |精品福利一区二区三区| 全部av―极品视觉盛宴亚洲| 成人国产亚洲欧美成人综合网| 欧美高清dvd| 椎名由奈av一区二区三区| 久久精品国产99久久6| 欧美影院午夜播放| 国产精品成人在线观看| 欧美一区二区精品在线| 亚洲精品一区在线观看| 一区二区三区高清在线| 国产精品自拍一区| 成人免费高清视频| 久久夜色精品一区| 美腿丝袜一区二区三区| 亚洲欧美怡红院| 欧美一级片在线观看| 在线精品国精品国产尤物884a| 久久99久久99| 五月天激情综合网| 亚洲欧美国产高清| 欧美国产精品专区| 精品日韩在线观看| 91麻豆精品国产自产在线| 91传媒视频在线播放| 成人a级免费电影| 国产精品羞羞答答xxdd | 精品久久人人做人人爰| 欧洲一区在线观看| av欧美精品.com| 国产一区二区不卡老阿姨| 青青草97国产精品免费观看| 午夜a成v人精品| 亚洲电影在线播放| 一区二区在线观看视频在线观看| 欧美激情一区三区| 国产偷国产偷精品高清尤物| 精品国产一区a| 欧美电视剧在线看免费| 欧美一区二区三区在线观看| 欧美日韩免费观看一区三区| 在线免费一区三区| 欧美在线三级电影| 欧美在线观看视频一区二区三区| caoporen国产精品视频| 99久久久精品免费观看国产蜜| 国产宾馆实践打屁股91| 国产精品亚洲专一区二区三区| 久久99精品国产麻豆婷婷 | 91精品国模一区二区三区| 欧美三区在线视频| 911精品产国品一二三产区| 欧美日韩三级在线| 91精品国产欧美一区二区18| 欧美一区二视频| 日韩欧美一卡二卡| 久久精品一区四区| 国产人妖乱国产精品人妖| 国产欧美一区二区在线观看| 中文字幕av不卡| 亚洲人吸女人奶水| 夜夜亚洲天天久久| 午夜精品久久久| 久色婷婷小香蕉久久| 狠狠网亚洲精品| 岛国一区二区三区| 色综合久久88色综合天天6| 欧美制服丝袜第一页|