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

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

?? mem_transfer_ia64.s

?? xvid的視頻編解碼庫文件
?? S
?? 第 1 頁 / 共 2 頁
字號:
/////////////////////////////////////////////////////////////////////////////////// mem_transfer.c optimized for ia-64 by Sebastian Felis and Max Stengel,// University of Karlsruhe, Germany, 03.06.2002, during the laboratory// "IA-64 Video Codec Assember Parktikum" at IPD Goos.///////// legal header taken from original C-file /////////////////////////////////////////// XVID MPEG-4 VIDEO CODEC// - 8bit<->16bit transfer  -//// This program is an implementation of a part of one or more MPEG-4// Video tools as specified in ISO/IEC 14496-2 standard.  Those intending// to use this software module in hardware or software products are// advised that its use may infringe existing patents or copyrights, and// any such use would be at such party's own risk.  The original// developer of this software module and his/her company, and subsequent// editors and their companies, will have no liability for use of this// software or modifications or derivatives thereof.//// This program is free software ; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation ; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY ; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program ; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA/////// History ///////////////////////////////////////////////////////////////////// - 16.07.2002: several minor changes for ecc-conformity// - 03.06.2002: initial version///////////////////////////////////////////////////////////////////////////////////// Annotations:// ===========//// - All functions work on 8x8-matrices. While the C-code-functions treat each//   element seperatly, the functions in this assembler-code treat a whole line//   simultaneously. So one loop is saved.//   The remaining loop is relized by using softwarepipelining with rotating//   rregisters.// - Register renaming is used for better readability// - To load 8 bytes of missaligned data, two 8-byte-blocks are loaded, both//   parts are shifted and joined together with an "OR"-Instruction.// - First parameter is stored in GR 32, next in GR 33, and so on. They must be //   saved, as these GRs are used for register-rotation.// - Some of the orininal, German comments used during development are left in//   in the code. They shouldn't bother anyone.//// Anmerkungen:// ============//// - Alle Funtionen arbeiten mit 8x8-Matrizen. W鋒rend die Funktionen im C-Code//   jedes Element einzeln bearbeiten, bearbeiten die Funtionen dieses Assembler-//   Codes eine Zeile gleichzeitig. Dadurch kann eine Schleife eingespart werden.//   Die verbleibende Schleife wird unter Benutzung von Softwarepipelining mit//   rotierenden Registern realisiert.// - Umbenennung der Register zwecks besserer Lesbarkeit wird verwendet.// - Um 8 Bytes falsch ausgerichtete Daten zu laden, werden zwei 8-Byte-Bl鯿ke//   geladen, beide Teile mit "shift"-Operationen zurechter點kt und mit einem//   logischen Oder zusammenkopiert.// - Die Parameter werden in den Registern ab GR 32 黚ergeben. Sie m黶sen ge-//   sichert werden, da die Register f黵 die register-Rotation ben鰐igt werden.// - Einige der urspr黱glichen, deutschen Kommentare aus der Entwicklungsphase//   sind im Code verblieben. Sie sollten niemanden st鰎en.///////////////////////////////////////////////////////////////////////////////////	***	define Latencies for software pipilines ***	LL  = 3 // Load	SL  = 3 // Store	PL  = 1 // Pack	SHL = 1 // Shift 	OL  = 1 // Or	UL  = 1 // Unpack	PAL = 1 // Parallel Add	PSL = 1 // Parallel Subtract	PAVGL = 1 // Parallel Avarage	.text		/////////////////////////////////////////////////////////////////////////////////// transfer8x8_copy_ia64//// SRC is missaligned, to align the source load two 8-bytes-words, shift it,// join them and store the aligned source into the destination address./////////////////////////////////////////////////////////////////////////////////	.align 16	.global transfer8x8_copy_ia64#	.proc transfer8x8_copy_ia64#	transfer8x8_copy_ia64:	.prologue	//	*** register renaming ***	zero = r0	oldLC = r2	oldPR = r3		src_1 = r14 // left aligned address of src	src_2 = r15 // right aligned address of src	dst = r16  // destination address	stride = r17		offset = r18 // shift right offset	aoffset = r19 // shift left offset	//	*** Saving old Loop-Counter (LC) and Predicate Registers (PR) ***	.save ar.lc, oldLC	mov oldLC = ar.lc	mov oldPR = pr	.body//	*** Allocating new stackframe, initialize LC, Epilogue-Counter and PR ***	alloc r9 = ar.pfs, 3, 29, 0, 32//	*** Saving Parameters ***	mov dst = r32	mov stride = r34	//	*** Misalingment-Treatment ***		and src_1 = -8, r33 // Computing adress of first aligned block containing src-values	dep offset = r33, zero, 3, 3 // Extracting offset for shr from src-adress	;;	sub aoffset = 64, offset // Computing counterpart of offset ("anti-offset"), used for shl	add src_2 = 8, src_1 // Computing adress of second aligned block containing src-values//	*** init loop: set loop counter, epilog counter, predicates ***	mov ar.lc = 7 	mov ar.ec = LL + SHL + OL + 1	mov pr.rot = 1 << 16	;;	//	*** define register arrays and predicate array for software pipeline ***	// src_v1 = source value 1, shd_r = shifted right, shd_l = shifted left	.rotr src_v1[LL+1], src_v2[LL+1], shd_r[SHL+1], shd_l[SHL+1], value[OL+1]	.rotp ld_stage[LL], sh_stage[SHL], or_stage[OL], st_stage[1]//	Software pipelined loop://	Stage 1: Load two 2 bytes from SRC_1, SRC_2 into SRC_v1 and SRC_v2//	Stage 2: Shift both values of source to SHD_R and SHD_L//	Stage 3: Join both parts together with OR//	Stage 4: Store aligned date to destination and add stride to destination address .Loop_8x8copy:	{.mii		(ld_stage[0]) ld8 src_v1[0] = [src_1], stride			(sh_stage[0]) shr.u shd_r[0] = src_v1[LL], offset	}	{.mii		(ld_stage[0]) ld8 src_v2[0] = [src_2], stride			(sh_stage[0]) shl shd_l[0] = src_v2[LL], aoffset		(or_stage[0]) or value[0] = shd_l[SHL], shd_r[SHL]	}	{.mib		(st_stage[0]) st8 [dst] = value[OL]		(st_stage[0]) add dst = dst, stride		br.ctop.sptk.few .Loop_8x8copy		;;		}	//	*** Restore old LC and PRs ***	mov ar.lc = oldLC	mov pr = oldPR, -1		br.ret.sptk.many b0		.endp transfer8x8_copy_ia64#/////////////////////////////////////////////////////////////////////////////////// transfer_8to16copy_ia64//// SRC is aligned. To convert 8 bit unsigned values to 16 bit signed values,// UNPACK is used. So 8 bytes are loaded from source, unpacked to two // 4 x 16 bit values and stored to the destination. Destination is a continuous // array of 64 x 16 bit signed data. To store the next line, only 16 must be// added to the destination address.///////////////////////////////////////////////////////////////////////////////	.align 16	.global transfer_8to16copy_ia64#	.proc transfer_8to16copy_ia64#		transfer_8to16copy_ia64:	.prologue//	*** register renaming ***	oldLC = r2	oldPR = r3	zero = r0 // damit ist die Zahl "zero" = 0 gemeint		dst_1 = r14 // destination address for first 4 x 16 bit values	dst_2 = r15 // destination address for second 4 x 16 bit values	src = r16	stride = r17//	*** Saving old Loop-Counter (LC) and Predicate Registers (PR) ***	.save ar.lc, oldLC	mov oldLC = ar.lc	mov oldPR = pr	.body//	*** Allocating new stackframe, define rotating registers ***	alloc r9 = ar.pfs, 4, 92, 0, 96	//	*** Saving Paramters ***	mov dst_1 = r32 // fist 4 x 16 bit values	add dst_2 = 8, r32 // second 4 x 16 bit values	mov src = r33	mov stride = r34//	*** init loop: set loop counter, epilog counter, predicates ***	mov ar.lc = 7	mov ar.ec = LL + UL + 1	mov pr.rot = 1 << 16	;;	//	*** define register arrays and predicate array for software pipeline ***	// src_v = source value, dst_v1 = destination value 1	.rotr src_v[LL+1], dst_v1[UL+1], dst_v2[UL+1]	.rotp ld_stage[LL], upack_stage[UL], st_stage[1]	//	Software pipelined loop://	Stage 1: Load value of SRC//	Stage 2: Unpack the SRC_V to two 4 x 16 bit signed data//	Stage 3: Store both 8 byte of 16 bit data.Loop_8to16copy:	{.mii		(ld_stage[0]) ld8 src_v[0] = [src], stride		(upack_stage[0]) unpack1.l dst_v1[0] = zero, src_v[LL]		(upack_stage[0]) unpack1.h dst_v2[0] = zero, src_v[LL]	}	{.mmb		(st_stage[0]) st8 [dst_1] = dst_v1[UL], 16		(st_stage[0]) st8 [dst_2] = dst_v2[UL], 16		br.ctop.sptk.few .Loop_8to16copy		;;	}		//	*** Restore old LC and PRs ***	mov ar.lc = oldLC	mov pr = oldPR, -1	br.ret.sptk.many b0	.endp transfer_8to16copy_ia64#	/////////////////////////////////////////////////////////////////////////////////// transfer_16to8copy_ia64//// src is a 64 x 16 bit signed continuous array. To convert the 16 bit // values to 8 bit unsigned data, PACK is used. So two 8-bytes-words of // 4 x 16 bit signed data are loaded, packed together and stored a 8-byte-word// of 8 x 8 unsigned data to the destination.///////////////////////////////////////////////////////////////////////////////	.align 16	.global transfer_16to8copy_ia64#	.proc transfer_16to8copy_ia64#transfer_16to8copy_ia64:	.prologue//	*** register renaming ***	dst = r14 	src_1 = r15	src_2 = r17	stride = r16//	*** Saving old Loop-Counter (LC) and Predicate Registers (PR) ***	.save ar.lc, oldLC	mov oldLC = ar.lc	mov oldPR = pr		.body//	*** Allocating new stackframe, define rotating registers ***	alloc r9 = ar.pfs, 4, 92, 0, 96	//	*** Saving Paramters ***	mov dst = r32	mov src_1 = r33	add src_2 = 8, r33	mov stride = r34//	*** init loop: set loop counter, epilog counter, predicates ***	mov ar.lc = 7	mov ar.ec = LL + PL + 1	mov pr.rot = 1 << 16	;;//	*** define register arrays and predicate array for software pipeline ***	// src_v1 = source value 1, dst_v = destination value	.rotr src_v1[LL+1], src_v2[LL+1], dst_v[PL+1]	.rotp ld_stage[LL], pack_stage[PL], st_stage[1]		//	Software pipelined loop://	Stage 1: Load two 8-byte-words of 4 x 16 bit signed source data//	Stage 2: Pack them together to one 8 byte 8 x 8 bit unsigned data//	Stage 3: Store the 8 byte to the destination address and add stride to//	         destination address (to get the next 8 byte line of destination).Loop_16to8copy:	{.mmi			(ld_stage[0]) ld8 src_v1[0] = [src_1], 16		(ld_stage[0]) ld8 src_v2[0] = [src_2], 16		(pack_stage[0]) pack2.uss dst_v[0] = src_v1[LL], src_v2[LL]	}	{.mib		(st_stage[0]) st8 [dst] = dst_v[PL]		(st_stage[0]) add dst = dst, stride		br.ctop.sptk.few .Loop_16to8copy		;;	}	//	*** Restore old LC and PRs ***	mov ar.lc = oldLC	mov pr = oldPR, -1	br.ret.sptk.many b0	.endp transfer_16to8copy_ia64#/////////////////////////////////////////////////////////////////////////////////// transfer_16to8add_ia64//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频自拍偷拍| 亚洲综合av网| 亚洲综合精品自拍| 国产在线精品免费av| 在线精品亚洲一区二区不卡| 亚洲精品在线观| 午夜在线成人av| 一本久久a久久免费精品不卡| 精品国产乱码久久久久久久| 亚洲一区视频在线| kk眼镜猥琐国模调教系列一区二区| 欧美一区二区精品久久911| √…a在线天堂一区| 国产美女在线观看一区| 日韩一区二区三区精品视频| 亚洲亚洲精品在线观看| 99久久精品国产网站| 久久精品网站免费观看| 久久av资源站| 欧美电影免费观看高清完整版| 亚洲在线视频免费观看| 色综合久久久久久久| 国产精品福利一区二区| 成人免费视频免费观看| 国产三级欧美三级日产三级99 | 亚洲欧洲日产国码二区| 麻豆精品一区二区av白丝在线| 欧美男女性生活在线直播观看| 亚洲欧美一区二区三区极速播放| 成人不卡免费av| 亚洲欧洲日韩在线| 91福利视频网站| 一卡二卡三卡日韩欧美| 欧美专区日韩专区| 午夜天堂影视香蕉久久| 欧美日韩免费观看一区二区三区 | 国产精品视频一二三| 国产精品一区2区| 国产欧美日韩三区| 99久久精品国产一区| 亚洲最大成人综合| 欧美卡1卡2卡| 国内一区二区视频| 欧美国产一区二区| 一本到一区二区三区| 一区二区三区精品视频在线| 欧美色图一区二区三区| 午夜日韩在线观看| 精品免费视频.| 高清在线成人网| 亚洲人成人一区二区在线观看 | 91毛片在线观看| 亚洲精品自拍动漫在线| 欧美日本一道本| 寂寞少妇一区二区三区| 中文字幕一区二区三区不卡 | 日本道在线观看一区二区| 亚洲一区二区三区自拍| 91精品国产黑色紧身裤美女| 国产精品18久久久久久久久久久久| 国产欧美一区二区精品性色超碰| 色先锋aa成人| 久久草av在线| 亚洲精品v日韩精品| 日韩一区二区在线观看视频| 国产91对白在线观看九色| 亚洲一区国产视频| 国产欧美1区2区3区| 欧美在线你懂的| 国产.精品.日韩.另类.中文.在线.播放| 亚洲人成小说网站色在线| 日韩女优av电影| 91视频国产观看| 国内精品写真在线观看| 亚洲国产一区视频| 欧美国产日本韩| 日韩欧美二区三区| 色乱码一区二区三区88| 国产高清在线观看免费不卡| 视频一区免费在线观看| 亚洲欧洲美洲综合色网| 精品精品国产高清一毛片一天堂| 色偷偷成人一区二区三区91 | 久久aⅴ国产欧美74aaa| 一区二区三区免费网站| 26uuu亚洲综合色| 欧美精品1区2区3区| 色综合久久中文字幕| 国产成人啪午夜精品网站男同| 视频一区中文字幕| 亚洲图片有声小说| 综合久久综合久久| 亚洲国产精品v| 2020国产精品自拍| 69堂国产成人免费视频| 色婷婷综合久久久久中文| 国产v日产∨综合v精品视频| 日本在线观看不卡视频| 午夜电影一区二区| 一区二区三区成人| 一区二区成人在线| 亚洲精品一二三区| 亚洲免费观看高清完整版在线 | 久久久久九九视频| 日韩午夜在线影院| 91精品欧美一区二区三区综合在| 在线免费观看日韩欧美| 91国产免费观看| 91免费观看在线| 91成人在线观看喷潮| 91高清视频在线| 欧美在线你懂得| 欧美美女黄视频| 日韩视频在线你懂得| 日韩免费观看2025年上映的电影| 欧美一级日韩免费不卡| 精品国产一区二区精华| 精品国产123| 国产欧美日韩精品一区| 国产精品久久久久久亚洲毛片| 国产精品视频第一区| 中文字幕欧美一| 亚洲精品国产一区二区三区四区在线| 一区二区三区小说| 日韩高清不卡在线| 久久精品久久99精品久久| 国产在线不卡一区| 99热在这里有精品免费| 91精品福利视频| 欧美一区二区三区公司| 国产日韩欧美不卡| 亚洲人快播电影网| 国产精品123区| 99精品视频免费在线观看| 91国产福利在线| 日韩欧美一区二区视频| 欧美国产激情二区三区 | 蜜臀av性久久久久蜜臀av麻豆| 精品一区二区国语对白| 懂色中文一区二区在线播放| 色94色欧美sute亚洲线路一ni| 欧美日韩精品高清| 国产亚洲精品bt天堂精选| 亚洲国产精品人人做人人爽| 日本美女一区二区| 国产不卡视频一区| 欧美日韩国产片| 久久久久久日产精品| 亚洲男人的天堂在线aⅴ视频| 日本麻豆一区二区三区视频| 成人黄色在线视频| 欧美一卡二卡在线| 亚洲欧美一区二区三区国产精品 | 久久久三级国产网站| 亚洲品质自拍视频网站| 精品午夜久久福利影院| 色综合天天综合狠狠| 欧美精品一区二区三区一线天视频| 亚洲欧洲成人精品av97| 蜜桃视频第一区免费观看| 91在线免费视频观看| 日韩欧美你懂的| 亚洲一区二区三区影院| 成人网页在线观看| 日韩免费视频一区二区| 亚洲在线视频免费观看| 99久久免费精品| 欧美mv日韩mv国产网站app| 亚洲在线视频一区| 91在线你懂得| 亚洲国产经典视频| 精品一二三四在线| 91精品国产综合久久国产大片| 亚洲男人都懂的| 99在线热播精品免费| 国产三级精品在线| 韩国av一区二区| 日韩一区二区三区在线观看| 亚洲电影在线免费观看| 色综合久久久久久久| 《视频一区视频二区| 成人午夜激情片| 欧美国产激情一区二区三区蜜月 | 日韩高清不卡一区二区| 在线免费不卡视频| 亚洲精品成人在线| 99精品桃花视频在线观看| 国产精品久久久一本精品| 黑人精品欧美一区二区蜜桃| 日韩一区二区三区四区| 免费久久99精品国产| 日韩小视频在线观看专区| 免费观看91视频大全| 日韩欧美专区在线| 麻豆一区二区三区| 久久久精品2019中文字幕之3| a4yy欧美一区二区三区| 国产精品久久久久桃色tv| 成人免费毛片aaaaa**| 亚洲私人影院在线观看|