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

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

?? fir filter coefficients x4 output samples x2.txt

?? c6000的標準函數庫
?? TXT
字號:
*===============================================================================
*
*	TEXAS INSTRUMENTS, INC.
*
*	FIR4
*
*	Revision Date: 4/17/97
*
*	USAGE	This routine is C Callable and can be called as:
*
*		void fir(short *x, short *h, short *y, int N, int M)
*		
*		x = input array
*		h = coefficient array
*		y = output array
*		N = number of coefficients (MULTIPLE of 4 >= 8)
*		M = number of output samples (M EVEN >= 2)
*
*		If routine is not to be used as a C callable function
*		then all instructions relating to stack should be removed.
*		Refer to comments of individual instructions.  You will also
*		need to initialize values for all of the values passed as these
*		are assumed to be in registers as defined by the calling 
*		convention of the compiler, (refer to the C compiler reference
*		guide).
*
*	C Code 	This is the C equivalent of the Assembly Code without 
*		restrictions.
*
*		Note that the assembly code is hand optimized and restrictions 
*		may apply
*
*		void fir4(short x[], short h[], short y[], int N, int M)
*		{
*			int i, j, sum;
*			
*			for (j = 0; j < M; j++) {
*				sum = 0;
*				for (i = 0; i < N; i++)
*					sum += x[i + j] * h[i];
*				y[j] = sum >> 15;
*			}
*		}
*
*	DESCRIPTION
*		This FIR assumes the number of filter coeficients is a multiple
*		of 4 and the number of output samples is a multiple of 2.  It
*		operates on 16-bit data with a 32-bit accumulate.  This
*		routine has no memory hits regardless of where x, h, and y 
*		arrays are located in memory.  The filter is M output samples
*		and N coefficients.  The assembly routine performs 2 output
*		samples at a time.
*
*
*	TECHNIQUES
*		The inner loop is unrolled four times thus the number of 
*		filter coefficients must be a multiple of four.  The outer
*		loop is unrolled twice so the number of output samples must
*		be a multiple of 2.
*
*		If an odd number of output samples is needed or possible, the
*		final store can either be removed or conditionally executed 
*		depending on whether M is even or odd.  This code would have to 
*		be added to the existing code.
*
*		The outer loop, like the inner loop, is software pipelined as
*		well.  e, o, and p in the comments of the individual 
*		instructions correspond to the epilogue, outer loop, and 
*		prologue respectively.  
*
*		Refer to FIR example in the optimizing assembly chapter of
*		the programmer's guide for more information.
*
*
*	ASSUMPTIONS
*		N MULTIPLE of 4 >= 8
*		M EVEN >= 2
*
*
*	MEMORY NOTE
*		This code has no memory hits regardless of where x and h are
*		located in memory.
*
*	CYCLES	M*(N+8)/2+6
*
*===============================================================================
	.global _fir4
	.text
_fir4:
	STW	.D2	B10,*B15--	; push register (for c-callable func)

*** BEGIN Benchmark Timing ***
B_START

	STW	.D2	B11,*B15--	; push register (for c-callable func)
||	SHR	.S1	A8,1,A2		; set up outer loop counter
||	SHL	.S2	B6,1,B10	; used to rst h pointer each outer loop

	STW	.D2	B12,*B15--	; push register (for c-callable func)
||	ADD	.L1X	B10,10,A3	; used to rst x pointer each outer loop
||	ADD	.S2	B10,8,B10	; used to rst h pointer each outer loop
||	ADD	.L2X	A6,2,B11	; set up pointer to y[1]

	LDH	.D1	*A4++,B8	; x0 = x[j]
||	ADD	.L2X	A4,4,B1		; set up pointer to x[j+2]
||	ADD	.L1X	B4,2,A8		; set up pointer to h[1]
||	SHR	.S2	B6,2,B12	; set up inner loop counter
||[A2]	SUB	.S1	A2,1,A2		; decrement outer loop counter

  	LDH	.D2	*B1++[2],B0	; x2 = x[j+i+2]
||	LDH	.D1	*A4++[2],A0	; x1 = x[j+i+1]

  	LDH	.D1	*A8++[2],B6	; h1 = h[i+1]
||	LDH	.D2	*B4++[2],A1	; h0 = h[i]

  	LDH	.D1	*A4++[2],A5	; x3 = x[j+i+3]
||	LDH	.D2	*B1++[2],B5	; x0 = x[j+i+4]

OUTLOOP:
  	LDH	.D2	*B4++[2],A7	; h2 = h[i+2]
||	LDH	.D1	*A8++[2],B8	; h3 = h[i+3]
||	ZERO	.L1	A9		; zero out sum0
||	ZERO	.L2	B9		; zero out sum1

  	LDH	.D2	*B1++[2],B0	;* x2 = x[j+i+2]
||	LDH	.D1	*A4++[2],A0	;* x1 = x[j+i+1]
||	SUB	.S2	B12,2,B2	; set up inner loop counter

	LDH	.D1	*A8++[2],B6	;* h1 = h[i+1]
||	LDH	.D2	*B4++[2],A1	;* h0 = h[i]

  	MPY	.M1X	B8,A1,A0	; x0 * h0
||	MPY	.M2X	A0,B6,B6	; x1 * h1
||	LDH	.D1	*A4++[2],A5	;* x3 = x[j+i+3]
||	LDH	.D2	*B1++[2],B5	;* x0 = x[j+i+4]

  [B2]	B	.S1	LOOP		; branch to loop
||	MPY	.M2	B0,B6,B7	; x2 * h1
||	MPY	.M1	A0,A1,A1	; x1 * h0
||	LDH	.D2	*B4++[2],A7	;* h2 = h[i+2]
||	LDH	.D1	*A8++[2],B8	;* h3 = h[i+3]
||[B2]	SUB	.S2	B2,1,B2		;* decrement loop counter

  	ADD	.L1	A0,A9,A9	; sum0 += x0 * h0
||	MPY	.M2X	A5,B8,B8	; x3 * h3
||	MPY	.M1X	B0,A7,A5	; x2 * h2
||	LDH	.D2	*B1++[2],B0	;** x2 = x[j+i+2]
||	LDH	.D1	*A4++[2],A0	;** x1 = x[j+i+1]

LOOP:
  	ADD	.L2X	A1,B9,B9	; sum1 += x1 * h0
||	ADD	.L1X	B6,A9,A9	; sum0 += x1 * h1
||	MPY	.M2	B5,B8,B7	; x0 * h3
||	MPY	.M1	A5,A7,A7	; x3 * h2
||	LDH	.D1	*A8++[2],B6	;** h1 = h[i+1]
||	LDH	.D2	*B4++[2],A1	;** h0 = h[i]

  	ADD	.L2	B7,B9,B9	; sum1 += x2 * h1
||	ADD	.L1	A5,A9,A9	; sum0 += x2 * h2
||	MPY	.M1X	B5,A1,A0	;* x0 * h0
||	MPY	.M2X	A0,B6,B6	;* x1 * h1
||	LDH	.D1	*A4++[2],A5	;** x3 = x[j+i+3]
||	LDH	.D2	*B1++[2],B5	;** x0 = x[j+i+4]

  	ADD	.L2X	A7,B9,B9	; sum1 += x3 * h2
||	ADD	.L1X	B8,A9,A9	; sum0 += x3 * h3
||[B2]	B	.S1	LOOP		;* branch to loop
||	MPY	.M2	B0,B6,B7	;* x2 * h1
||	MPY	.M1	A0,A1,A1	;* x1 * h0
||	LDH	.D2	*B4++[2],A7	;** h2 = h[i+2]
||	LDH	.D1	*A8++[2],B8	;** h3 = h[i+3]
||[B2]	SUB	.S2	B2,1,B2		;** decrement loop counter

  	ADD	.L2	B7,B9,B9	; sum1 += x0 * h3
||	ADD	.L1	A0,A9,A9	;* sum0 += x0 * h0
||	MPY	.M2X	A5,B8,B8	;* x3 * h3
||	MPY	.M1X	B0,A7,A5	;* x2 * h2
||	LDH	.D2	*B1++[2],B0	;*** x2 = x[j+i+2]
||	LDH	.D1	*A4++[2],A0	;*** x1 = x[j+i+1]
	; inner loop branch occurs here

  	ADD	.L2X	A1,B9,B9	;e sum1 += x1 * h0
||	ADD	.L1X	B6,A9,A9	;e sum0 += x1 * h1
||	MPY	.M2	B5,B8,B7	;e x0 * h3
||	MPY	.M1	A5,A7,A7	;e x3 * h2
||	SUB	.D1	A4,A3,A4	;o reset x pointer to x[j]
||	SUB	.D2	B4,B10,B4	;o reset h pointer to h[0]
||[A2]	B	.S1	OUTLOOP		;o branch to outer loop

  	ADD	.D2	B7,B9,B9	;e sum1 += x2 * h1
||	ADD	.L1	A5,A9,A9	;e sum0 += x2 * h2
||	LDH	.D1	*A4++,B8	;p x0 = x[j]
||	ADD	.L2X	A4,4,B1		;p set up pointer to x[j+2]
||	ADD	.S1X	B4,2,A8		;p set up pointer to h[1]

  	ADD	.L2X	A7,B9,B9	;e sum1 += x3 * h2
||	ADD	.L1X	B8,A9,A9	;e sum0 += x3 * h3
||  	LDH	.D2	*B1++[2],B0	;p x2 = x[j+i+2]
||	LDH	.D1	*A4++[2],A0	;p x1 = x[j+i+1]
||[A2]	SUB	.S1	A2,1,A2		;o decrement outer loop counter

  	ADD	.L2	B7,B9,B9	;e sum1 += x0 * h3
||	SHR	.S1	A9,15,A9	;e sum0 >> 15
||	LDH	.D1	*A8++[2],B6	;p h1 = h[i+1]
||	LDH	.D2	*B4++[2],A1	;p h0 = h[i]

	SHR	.S2	B9,15,B9	;e sum1 >> 15
||	LDH	.D1	*A4++[2],A5	;p x3 = x[j+i+3]
||	LDH	.D2	*B1++[2],B5	;p x0 = x[j+i+4]

	STH	.D1	A9,*A6++[2]	;e y[j] = sum0 >> 15
||	STH	.D2	B9,*B11++[2]	;e y[j+1] = sum1 >> 15
	; outer loop branch occurs here
B_END:
*** END Benchmark Timing ***


	LDW	.D2	*++B15,B12	; pop register (for c-callable func)

	LDW	.D2	*++B15,B11	; pop register (for c-callable func)
||	B	.S2	B3		; return

	LDW	.D2	*++B15,B10	; pop register (for c-callable func)

	NOP    4

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区久久| 91在线云播放| 亚洲一区电影777| 亚洲欧洲精品成人久久奇米网| 欧美一区欧美二区| 欧美一区二区在线播放| 欧美年轻男男videosbes| 久久精品视频在线免费观看| 国产精品拍天天在线| 精品福利一二区| 精品国产麻豆免费人成网站| 欧美电影免费提供在线观看| 日韩欧美黄色影院| 亚洲精品在线观看网站| 久久综合视频网| 久久精品视频在线看| 国产欧美日韩另类视频免费观看| 欧美国产国产综合| 国产精品久久久久久久久免费丝袜 | 欧美吞精做爰啪啪高潮| 国产成人av网站| 成人激情校园春色| 91欧美一区二区| 欧美午夜在线观看| 欧美福利电影网| 精品国产乱码久久久久久久| 国产午夜精品一区二区三区四区 | 国产在线不卡视频| 成人免费观看av| 一本大道久久a久久综合婷婷| 欧美调教femdomvk| 久久综合九色综合久久久精品综合 | 亚洲欧洲国产专区| 亚洲va中文字幕| 国产大陆a不卡| 一本大道久久a久久综合| 日韩视频免费观看高清完整版 | 日韩一区日韩二区| 午夜精品久久久久影视| 国产成人免费在线观看不卡| 91成人免费在线| 欧美高清在线视频| 亚洲国产美女搞黄色| 久久99热狠狠色一区二区| 波多野结衣视频一区| 欧美日韩国产综合一区二区| 欧美激情一区二区三区在线| 亚洲成a人v欧美综合天堂 | 激情文学综合网| 色狠狠av一区二区三区| 久久免费美女视频| 亚洲大型综合色站| 亚洲日本va在线观看| 亚洲黄网站在线观看| 久久精品国产秦先生| 91久久奴性调教| 久久久电影一区二区三区| 三级一区在线视频先锋| 99精品国产一区二区三区不卡| 日韩一区二区视频在线观看| 一区二区三区精品视频| 国产精品18久久久久久vr| 欧美电影一区二区| 一个色妞综合视频在线观看| av高清不卡在线| 国产拍揄自揄精品视频麻豆| 日韩中文字幕一区二区三区| 欧美中文字幕一区二区三区亚洲 | 国产欧美日韩另类视频免费观看 | 精品久久五月天| 午夜av区久久| 欧美性xxxxx极品少妇| 中文字幕日韩欧美一区二区三区| 国产伦精品一区二区三区免费迷 | 精品无人码麻豆乱码1区2区 | 一区二区视频在线看| 国产在线乱码一区二区三区| 欧美一级艳片视频免费观看| 性做久久久久久久免费看| 在线观看www91| 欧美日韩黄视频| 青青草成人在线观看| 中文字幕亚洲一区二区va在线| 欧美一区二区三区男人的天堂| 成人天堂资源www在线| 日本不卡一区二区| 亚洲色图都市小说| 久久人人超碰精品| 69p69国产精品| 91免费观看视频在线| 国产一区二区三区四区在线观看| 亚洲一区二区五区| 国产精品日韩成人| 欧美不卡视频一区| 欧美久久久久中文字幕| 91亚洲男人天堂| 国产不卡在线播放| 免费av成人在线| 午夜欧美一区二区三区在线播放| 国产精品久久久久久久裸模| 亚洲精品在线观| 欧美变态口味重另类| 制服.丝袜.亚洲.中文.综合| 91黄色免费观看| youjizz久久| 国产.欧美.日韩| 国产美女在线观看一区| 精品一区二区三区的国产在线播放| 亚洲一线二线三线视频| 亚洲欧美日韩国产一区二区三区| 国产精品视频你懂的| 欧美精品一区二区在线播放| 欧美变态tickling挠脚心| 777亚洲妇女| 欧美一区二区黄| 日韩一区二区中文字幕| 91精品国产91久久久久久一区二区 | 风间由美一区二区av101| 久久成人免费网| 狠狠色狠狠色综合系列| 狠狠v欧美v日韩v亚洲ⅴ| 精品一区二区三区日韩| 国产黑丝在线一区二区三区| 91麻豆自制传媒国产之光| 成人午夜免费av| 成人丝袜视频网| 91麻豆福利精品推荐| 日本福利一区二区| 欧美伦理电影网| 51精品国自产在线| 精品久久人人做人人爱| 国产亚洲综合在线| 中文字幕一区二区三区不卡| 综合亚洲深深色噜噜狠狠网站| 亚洲精选视频免费看| 亚洲高清久久久| 久久精品国产亚洲一区二区三区 | 欧美一区日韩一区| 精品乱人伦小说| 国产精品福利在线播放| 一区二区三区精品| 日本不卡免费在线视频| 国产麻豆欧美日韩一区| 99久久夜色精品国产网站| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩激情一区二区三区| 精品精品国产高清一毛片一天堂| 国产欧美一区二区精品性| 亚洲精品视频一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲综合999| 久久国产精品第一页| 成人福利电影精品一区二区在线观看 | 在线精品国精品国产尤物884a| 欧美另类videos死尸| 久久伊人蜜桃av一区二区| 亚洲免费av在线| 久久99热国产| 91久久精品国产91性色tv| 日韩亚洲欧美一区| 亚洲欧美一区二区久久| 久久成人免费电影| 91福利视频网站| 久久亚洲私人国产精品va媚药| 一区二区在线观看不卡| 在线亚洲精品福利网址导航| 精品精品国产高清a毛片牛牛| 最新国产成人在线观看| 麻豆精品精品国产自在97香蕉| 成人综合在线网站| 日韩你懂的电影在线观看| 一区二区国产盗摄色噜噜| 国产精品一级在线| 日韩视频在线一区二区| 亚洲国产婷婷综合在线精品| 成人一区二区在线观看| 日韩三级.com| 天涯成人国产亚洲精品一区av| 成人免费视频免费观看| 日韩精品一区二区在线| 性欧美大战久久久久久久久| gogogo免费视频观看亚洲一| www精品美女久久久tv| 日韩综合一区二区| 欧美亚洲免费在线一区| 自拍av一区二区三区| 国产成人在线看| 欧美大片顶级少妇| 日本美女一区二区三区| 欧美在线free| 一区二区三区国产| 91丝袜呻吟高潮美腿白嫩在线观看| 久久精品欧美日韩| 国产在线精品一区二区| 欧美成人精品1314www| 精品制服美女久久| 欧美mv日韩mv| 精品一区二区久久久| 亚洲精品在线三区| 国产一区二区三区在线观看免费|