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

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

?? ia64.s

?? C++編寫
?? S
字號:
.explicit.text.ident	"ia64.S, Version 1.1".ident	"IA-64 ISA artwork by Andy Polyakov <appro@fy.chalmers.se>"//// ====================================================================// Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL// project.//// Rights for redistribution and usage in source and binary forms are// granted according to the OpenSSL license. Warranty of any kind is// disclaimed.// ====================================================================//// Q.	How much faster does it get?// A.	Here is the output from 'openssl speed rsa dsa' for vanilla//	0.9.6a compiled with gcc version 2.96 20000731 (Red Hat//	Linux 7.1 2.96-81):////	                  sign    verify    sign/s verify/s//	rsa  512 bits   0.0036s   0.0003s    275.3   2999.2//	rsa 1024 bits   0.0203s   0.0011s     49.3    894.1//	rsa 2048 bits   0.1331s   0.0040s      7.5    250.9//	rsa 4096 bits   0.9270s   0.0147s      1.1     68.1//	                  sign    verify    sign/s verify/s//	dsa  512 bits   0.0035s   0.0043s    288.3    234.8//	dsa 1024 bits   0.0111s   0.0135s     90.0     74.2////	And here is similar output but for this assembler//	implementation:-)////	                  sign    verify    sign/s verify/s//	rsa  512 bits   0.0021s   0.0001s    549.4   9638.5//	rsa 1024 bits   0.0055s   0.0002s    183.8   4481.1//	rsa 2048 bits   0.0244s   0.0006s     41.4   1726.3//	rsa 4096 bits   0.1295s   0.0018s      7.7    561.5//	                  sign    verify    sign/s verify/s//	dsa  512 bits   0.0012s   0.0013s    891.9    756.6//	dsa 1024 bits   0.0023s   0.0028s    440.4    376.2//	//	Yes, you may argue that it's not fair comparison as it's//	possible to craft the C implementation with BN_UMULT_HIGH//	inline assembler macro. But of course! Here is the output//	with the macro:////	                  sign    verify    sign/s verify/s//	rsa  512 bits   0.0020s   0.0002s    495.0   6561.0//	rsa 1024 bits   0.0086s   0.0004s    116.2   2235.7//	rsa 2048 bits   0.0519s   0.0015s     19.3    667.3//	rsa 4096 bits   0.3464s   0.0053s      2.9    187.7//	                  sign    verify    sign/s verify/s//	dsa  512 bits   0.0016s   0.0020s    613.1    510.5//	dsa 1024 bits   0.0045s   0.0054s    221.0    183.9////	My code is still way faster, huh:-) And I believe that even//	higher performance can be achieved. Note that as keys get//	longer, performance gain is larger. Why? According to the//	profiler there is another player in the field, namely//	BN_from_montgomery consuming larger and larger portion of CPU//	time as keysize decreases. I therefore consider putting effort//	to assembler implementation of the following routine:////	void bn_mul_add_mont (BN_ULONG *rp,BN_ULONG *np,int nl,BN_ULONG n0)//	{//	int      i,j;//	BN_ULONG v;////	for (i=0; i<nl; i++)//		{//		v=bn_mul_add_words(rp,np,nl,(rp[0]*n0)&BN_MASK2);//		nrp++;//		rp++;//		if (((nrp[-1]+=v)&BN_MASK2) < v)//			for (j=0; ((++nrp[j])&BN_MASK2) == 0; j++) ;//		}//	}////	It might as well be beneficial to implement even combaX//	variants, as it appears as it can literally unleash the//	performance (see comment section to bn_mul_comba8 below).////	And finally for your reference the output for 0.9.6a compiled//	with SGIcc version 0.01.0-12 (keep in mind that for the moment//	of this writing it's not possible to convince SGIcc to use//	BN_UMULT_HIGH inline assembler macro, yet the code is fast,//	i.e. for a compiler generated one:-):////	                  sign    verify    sign/s verify/s//	rsa  512 bits   0.0022s   0.0002s    452.7   5894.3//	rsa 1024 bits   0.0097s   0.0005s    102.7   2002.9//	rsa 2048 bits   0.0578s   0.0017s     17.3    600.2//	rsa 4096 bits   0.3838s   0.0061s      2.6    164.5//	                  sign    verify    sign/s verify/s//	dsa  512 bits   0.0018s   0.0022s    547.3    459.6//	dsa 1024 bits   0.0051s   0.0062s    196.6    161.3////	Oh! Benchmarks were performed on 733MHz Lion-class Itanium//	system running Redhat Linux 7.1 (very special thanks to Ray//	McCaffity of Williams Communications for providing an account).//// Q.	What's the heck with 'rum 1<<5' at the end of every function?// A.	Well, by clearing the "upper FP registers written" bit of the//	User Mask I want to excuse the kernel from preserving upper//	(f32-f128) FP register bank over process context switch, thus//	minimizing bus bandwidth consumption during the switch (i.e.//	after PKI opration completes and the program is off doing//	something else like bulk symmetric encryption). Having said//	this, I also want to point out that it might be good idea//	to compile the whole toolkit (as well as majority of the//	programs for that matter) with -mfixed-range=f32-f127 command//	line option. No, it doesn't prevent the compiler from writing//	to upper bank, but at least discourages to do so. If you don't//	like the idea you have the option to compile the module with//	-Drum=nop.m in command line.//#if 1//// bn_[add|sub]_words routines.//// Loops are spinning in 2*(n+5) ticks on Itanuim (provided that the// data reside in L1 cache, i.e. 2 ticks away). It's possible to// compress the epilogue and get down to 2*n+6, but at the cost of// scalability (the neat feature of this implementation is that it// shall automagically spin in n+5 on "wider" IA-64 implementations:-)// I consider that the epilogue is short enough as it is to trade tiny// performance loss on Itanium for scalability.//// BN_ULONG bn_add_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num)//.global	bn_add_words#.proc	bn_add_words#.align	64.skip	32	// makes the loop body aligned at 64-byte boundarybn_add_words:	.prologue	.fframe	0	.save	ar.pfs,r2{ .mii;	alloc		r2=ar.pfs,4,12,0,16	cmp4.le		p6,p0=r35,r0	};;{ .mfb;	mov		r8=r0			// return value(p6)	br.ret.spnt.many	b0	};;	.save	ar.lc,r3{ .mib;	sub		r10=r35,r0,1	mov		r3=ar.lc	brp.loop.imp	.L_bn_add_words_ctop,.L_bn_add_words_cend-16					}	.body{ .mib;	mov		r14=r32			// rp	mov		r9=pr		};;{ .mii;	mov		r15=r33			// ap	mov		ar.lc=r10	mov		ar.ec=6		}{ .mib;	mov		r16=r34			// bp	mov		pr.rot=1<<16	};;.L_bn_add_words_ctop:{ .mii;	(p16)	ld8		r32=[r16],8	  // b=*(bp++)	(p18)	add		r39=r37,r34	(p19)	cmp.ltu.unc	p56,p0=r40,r38	}{ .mfb;	(p0)	nop.m		0x0	(p0)	nop.f		0x0	(p0)	nop.b		0x0		}{ .mii;	(p16)	ld8		r35=[r15],8	  // a=*(ap++)	(p58)	cmp.eq.or	p57,p0=-1,r41	  // (p20)	(p58)	add		r41=1,r41	} // (p20){ .mfb;	(p21)	st8		[r14]=r42,8	  // *(rp++)=r	(p0)	nop.f		0x0	br.ctop.sptk	.L_bn_add_words_ctop	};;.L_bn_add_words_cend:{ .mii;(p59)	add		r8=1,r8		// return value	mov		pr=r9,-1	mov		ar.lc=r3	}{ .mbb;	nop.b		0x0	br.ret.sptk.many	b0	};;.endp	bn_add_words#//// BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num)//.global	bn_sub_words#.proc	bn_sub_words#.align	64.skip	32	// makes the loop body aligned at 64-byte boundarybn_sub_words:	.prologue	.fframe	0	.save	ar.pfs,r2{ .mii;	alloc		r2=ar.pfs,4,12,0,16	cmp4.le		p6,p0=r35,r0	};;{ .mfb;	mov		r8=r0			// return value(p6)	br.ret.spnt.many	b0	};;	.save	ar.lc,r3{ .mib;	sub		r10=r35,r0,1	mov		r3=ar.lc	brp.loop.imp	.L_bn_sub_words_ctop,.L_bn_sub_words_cend-16					}	.body{ .mib;	mov		r14=r32			// rp	mov		r9=pr		};;{ .mii;	mov		r15=r33			// ap	mov		ar.lc=r10	mov		ar.ec=6		}{ .mib;	mov		r16=r34			// bp	mov		pr.rot=1<<16	};;.L_bn_sub_words_ctop:{ .mii;	(p16)	ld8		r32=[r16],8	  // b=*(bp++)	(p18)	sub		r39=r37,r34	(p19)	cmp.gtu.unc	p56,p0=r40,r38	}{ .mfb;	(p0)	nop.m		0x0	(p0)	nop.f		0x0	(p0)	nop.b		0x0		}{ .mii;	(p16)	ld8		r35=[r15],8	  // a=*(ap++)	(p58)	cmp.eq.or	p57,p0=0,r41	  // (p20)	(p58)	add		r41=-1,r41	} // (p20){ .mbb;	(p21)	st8		[r14]=r42,8	  // *(rp++)=r	(p0)	nop.b		0x0	br.ctop.sptk	.L_bn_sub_words_ctop	};;.L_bn_sub_words_cend:{ .mii;(p59)	add		r8=1,r8		// return value	mov		pr=r9,-1	mov		ar.lc=r3	}{ .mbb;	nop.b		0x0	br.ret.sptk.many	b0	};;.endp	bn_sub_words##endif#if 0#define XMA_TEMPTATION#endif#if 1//// BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w)//.global	bn_mul_words#.proc	bn_mul_words#.align	64.skip	32	// makes the loop body aligned at 64-byte boundarybn_mul_words:	.prologue	.fframe	0	.save	ar.pfs,r2#ifdef XMA_TEMPTATION{ .mfi;	alloc		r2=ar.pfs,4,0,0,0	};;#else{ .mfi;	alloc		r2=ar.pfs,4,4,0,8	};;#endif{ .mib;	mov		r8=r0			// return value	cmp4.le		p6,p0=r34,r0(p6)	br.ret.spnt.many	b0		};;	.save	ar.lc,r3{ .mii;	sub	r10=r34,r0,1	mov	r3=ar.lc	mov	r9=pr			};;	.body{ .mib;	setf.sig	f8=r35	// w	mov		pr.rot=0x400001<<16			// ------^----- serves as (p48) at first (p26)	brp.loop.imp	.L_bn_mul_words_ctop,.L_bn_mul_words_cend-16					}#ifndef XMA_TEMPTATION{ .mii;	mov		r14=r32	// rp	mov		r15=r33	// ap	mov		ar.lc=r10	}{ .mii;	mov		r39=0	// serves as r33 at first (p26)	mov		ar.ec=12	};;// This loop spins in 2*(n+11) ticks. It's scheduled for data in L2// cache (i.e. 9 ticks away) as floating point load/store instructions// bypass L1 cache and L2 latency is actually best-case scenario for// ldf8. The loop is not scalable and shall run in 2*(n+11) even on// "wider" IA-64 implementations. It's a trade-off here. n+22 loop// would give us ~5% in *overall* performance improvement on "wider"// IA-64, but would hurt Itanium for about same because of longer// epilogue. As it's a matter of few percents in either case I've// chosen to trade the scalability for development time (you can see// this very instruction sequence in bn_mul_add_words loop which in// turn is scalable)..L_bn_mul_words_ctop:{ .mfi;	(p25)	getf.sig	r36=f49			// low	(p21)	xmpy.lu		f45=f37,f8	(p27)	cmp.ltu		p52,p48=r39,r38	}{ .mfi;	(p16)	ldf8		f32=[r15],8	(p21)	xmpy.hu		f38=f37,f8	(p0)	nop.i		0x0		};;{ .mii;	(p26)	getf.sig	r32=f43			// high	.pred.rel	"mutex",p48,p52	(p48)	add		r38=r37,r33		// (p26)	(p52)	add		r38=r37,r33,1	}	// (p26){ .mfb;	(p27)	st8		[r14]=r39,8	(p0)	nop.f		0x0	br.ctop.sptk	.L_bn_mul_words_ctop	};;.L_bn_mul_words_cend:{ .mii;	nop.m		0x0.pred.rel	"mutex",p49,p53(p49)	add		r8=r34,r0(p53)	add		r8=r34,r0,1	}{ .mfb;	nop.m	0x0	nop.f	0x0	nop.b	0x0			}#else	// XMA_TEMPTATION	setf.sig	f37=r0	// serves as carry at (p18) tick	mov		ar.lc=r10	mov		ar.ec=5;;// Most of you examining this code very likely wonder why in the name// of Intel the following loop is commented out? Indeed, it looks so// neat that you find it hard to believe that it's something wrong// with it, right? The catch is that every iteration depends on the// result from previous one and the latter isn't available instantly.// The loop therefore spins at the latency of xma minus 1, or in other// words at 6*(n+4) ticks:-( Compare to the "production" loop above// that runs in 2*(n+11) where the low latency problem is worked around// by moving the dependency to one-tick latent interger ALU. Note that// "distance" between ldf8 and xma is not latency of ldf8, but the// *difference* between xma and ldf8 latencies..L_bn_mul_words_ctop:{ .mfi;	(p16)	ldf8		f32=[r33],8	(p18)	xma.hu		f38=f34,f8,f39	}{ .mfb;	(p20)	stf8		[r32]=f37,8	(p18)	xma.lu		f35=f34,f8,f39	br.ctop.sptk	.L_bn_mul_words_ctop	};;.L_bn_mul_words_cend:	getf.sig	r8=f41		// the return value#endif	// XMA_TEMPTATION{ .mii;	nop.m		0x0	mov		pr=r9,-1	mov		ar.lc=r3	}{ .mfb;	rum		1<<5		// clear um.mfh	nop.f		0x0	br.ret.sptk.many	b0	};;.endp	bn_mul_words##endif#if 1//// BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w)//.global	bn_mul_add_words#.proc	bn_mul_add_words#.align	64//.skip	0	// makes the loop split at 64-byte boundarybn_mul_add_words:	.prologue	.fframe	0	.save	ar.pfs,r2{ .mii;	alloc		r2=ar.pfs,4,12,0,16	cmp4.le		p6,p0=r34,r0	};;{ .mfb;	mov		r8=r0			// return value(p6)	br.ret.spnt.many	b0	};;	.save	ar.lc,r3{ .mii;	sub	r10=r34,r0,1	mov	r3=ar.lc	mov	r9=pr			};;	.body{ .mib;	setf.sig	f8=r35	// w	mov		pr.rot=0x400001<<16			// ------^----- serves as (p48) at first (p26)	brp.loop.imp	.L_bn_mul_add_words_ctop,.L_bn_mul_add_words_cend-16					}{ .mii;	mov		r14=r32	// rp	mov		r15=r33	// ap	mov		ar.lc=r10	}{ .mii;	mov		r39=0	// serves as r33 at first (p26)	mov		r18=r32	// rp copy	mov		ar.ec=14	};;// This loop spins in 3*(n+13) ticks on Itanium and should spin in// 2*(n+13) on "wider" IA-64 implementations (to be verified with new// 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合在线五月| 狠狠色丁香婷婷综合久久片| 日韩免费在线观看| 99精品视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产日韩精品一区| 日韩美女一区二区三区| 91黄色免费看| 成人黄色国产精品网站大全在线免费观看| 亚洲成人免费看| 日韩毛片精品高清免费| 久久久久99精品一区| 91麻豆精品国产无毒不卡在线观看| 91一区二区在线观看| 国产乱淫av一区二区三区| 日韩专区一卡二卡| 亚洲三级在线观看| 亚洲日本乱码在线观看| 亚洲欧洲一区二区三区| 亚洲精品一区二区三区四区高清| 欧美日韩一级二级| 色婷婷精品大在线视频| 国产91精品久久久久久久网曝门 | a在线播放不卡| 国产中文字幕一区| 久久激情综合网| 久久精品国产网站| 麻豆视频观看网址久久| 日韩精品欧美成人高清一区二区| 亚洲第一av色| 亚洲va中文字幕| 亚洲自拍偷拍图区| 亚洲最新在线观看| 亚洲成人动漫av| 成人av免费在线| 波多野结衣一区二区三区| 国产成人亚洲综合a∨婷婷 | 国产精品久久久久毛片软件| 26uuu国产日韩综合| 欧美变态tickle挠乳网站| 日韩一区二区在线观看| 欧美大胆一级视频| 日韩亚洲欧美一区| 久久一区二区视频| 中文av字幕一区| 最新成人av在线| 亚洲免费伊人电影| 亚洲国产精品精华液网站| 天天色综合成人网| 日本欧美韩国一区三区| 久久99精品久久久久久动态图| 激情综合色丁香一区二区| 国产精品亚洲第一区在线暖暖韩国 | 欧美日韩国产欧美日美国产精品| 日本黄色一区二区| 欧美日本免费一区二区三区| 欧美一级在线视频| 精品欧美乱码久久久久久1区2区| 精品国产一区二区亚洲人成毛片| 久久影院视频免费| 国产精品人人做人人爽人人添| 中文字幕在线观看一区| 亚洲国产一区在线观看| 日本成人在线网站| 国产suv一区二区三区88区| 91小视频在线观看| 欧美人与禽zozo性伦| 久久婷婷国产综合精品青草| 国产欧美一区二区精品仙草咪| 亚洲青青青在线视频| 日韩电影一区二区三区| 国产精品69毛片高清亚洲| 色婷婷av一区二区三区大白胸| 欧美精品黑人性xxxx| 国产女人aaa级久久久级| 亚洲午夜电影在线观看| 国产麻豆欧美日韩一区| 在线这里只有精品| 欧美精品一区二| 亚洲精品一二三| 国产一区二区在线影院| 色婷婷精品大在线视频| 精品国产髙清在线看国产毛片| 亚洲欧美日韩一区二区三区在线观看| 天天综合网 天天综合色| 国产成人午夜电影网| 欧美狂野另类xxxxoooo| 国产精品视频麻豆| 亚洲v中文字幕| 成a人片国产精品| 日韩午夜电影在线观看| 亚洲人午夜精品天堂一二香蕉| 久草这里只有精品视频| 91福利在线观看| 国产亚洲一本大道中文在线| 99国产精品久久久| 欧美日本韩国一区| 日韩一区有码在线| 国产精品1区2区3区| 91精品国产入口| 亚洲精品综合在线| 福利一区二区在线| 欧美成人在线直播| 亚洲国产日韩a在线播放| 国产福利一区二区三区| 日韩女优电影在线观看| 亚洲电影在线免费观看| 91啪亚洲精品| 国产精品久线观看视频| 国产综合久久久久久鬼色| 宅男噜噜噜66一区二区66| 亚洲一二三区不卡| 色婷婷狠狠综合| 国产精品久久久爽爽爽麻豆色哟哟| 国内精品伊人久久久久av影院| 欧美少妇bbb| 亚洲精品水蜜桃| 一本色道综合亚洲| |精品福利一区二区三区| 国产电影一区在线| 精品国产91亚洲一区二区三区婷婷 | 中文字幕一区二区三区蜜月 | 五月婷婷综合网| 欧美色倩网站大全免费| 亚洲综合偷拍欧美一区色| 成人小视频免费观看| 久久久一区二区三区| 狠狠狠色丁香婷婷综合激情| 欧美不卡视频一区| 狠狠色综合日日| 精品88久久久久88久久久| 麻豆国产欧美一区二区三区| 日韩精品一区二| 韩国欧美国产1区| 久久久精品2019中文字幕之3| 国产精品一二三四五| 国产亚洲污的网站| 波多野结衣精品在线| 亚洲视频一区二区在线观看| 99视频在线精品| 亚洲欧美激情小说另类| 在线观看不卡视频| 亚洲第一福利一区| 欧美一级一区二区| 国产尤物一区二区在线| 欧美国产97人人爽人人喊| 成人av资源网站| 亚洲综合视频网| 日韩一级免费观看| 国产一区二区三区国产| 国产精品麻豆视频| 97se亚洲国产综合自在线不卡| 亚洲美女免费视频| 777欧美精品| 国产综合久久久久影院| 国产精品久久久久久久第一福利| 91美女视频网站| 日韩精品乱码免费| 久久久精品国产免大香伊| 91麻豆精品在线观看| 午夜久久电影网| 久久精品欧美一区二区三区麻豆| 99精品国产热久久91蜜凸| 香蕉成人伊视频在线观看| 26uuu国产日韩综合| 91玉足脚交白嫩脚丫在线播放| 天堂蜜桃91精品| 国产精品午夜在线观看| 欧美自拍丝袜亚洲| 狠狠狠色丁香婷婷综合激情| 亚洲欧美日韩久久| 欧美一区二区三区人| 成人网页在线观看| 午夜精品福利在线| 国产日韩欧美高清| 欧美视频中文字幕| 在线播放日韩导航| 大尺度一区二区| 日韩在线一二三区| 国产精品久久久久久久蜜臀| 欧美高清视频www夜色资源网| 国产福利91精品一区| 亚洲成人动漫在线免费观看| 国产喷白浆一区二区三区| 欧美日韩一区二区欧美激情| 国产成人亚洲综合a∨猫咪| 五月婷婷综合激情| 国产精品高潮呻吟久久| 日韩免费性生活视频播放| 色综合久久综合中文综合网| 国模一区二区三区白浆 | 成人视屏免费看| 全国精品久久少妇| 中文字幕av一区二区三区| 在线成人小视频| 91美女片黄在线| 国产99久久久国产精品潘金网站| 性做久久久久久久免费看| 亚洲欧美日韩在线不卡| 国产欧美精品一区二区色综合|