peak_sse_assist.s

来自「FEC Optimized viterbi code」· S 代码 · 共 50 行

S
50
字号
# SSE assist routines for peakval# Copyright 2001 Phil Karn, KA9Q# May be used under the terms of the GNU Lesser General Public License (LGPL)	.text# Find peak absolute value in signed 16-bit input samples#  int peakval_sse(signed short *in,int cnt);	.global peakval_sse	.type peakval_sse,@function	.align 16peakval_sse:	pushl %ebp	movl %esp,%ebp	pushl %esi	pushl %ecx	movl 8(%ebp),%esi	movl 12(%ebp),%ecx	pxor %mm7,%mm7		# clear peak	1:	subl $4,%ecx	jl 2f	movq (%esi),%mm0	movq %mm0,%mm1		psraw $15,%mm1		# mm1 = 1's if negative, 0's if positive	pxor %mm1,%mm0		# complement negatives	psubw %mm1,%mm0		# add 1 to negatives	pmaxsw %mm0,%mm7	# store peak		addl $8,%esi	jmp 1b	2:	movq %mm7,%mm0	psrlq $32,%mm0	pmaxsw %mm0,%mm7	movq %mm7,%mm0	psrlq $16,%mm0	pmaxsw %mm0,%mm7	# min value in low word of %mm7		movd %mm7,%eax	andl $0xffff,%eax	emms	popl %ecx	popl %esi	popl %ebp	ret

⌨️ 快捷键说明

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