亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美电影一区| 伊人性伊人情综合网| 亚洲人成电影网站色mp4| 亚洲成人精品一区| 成人高清在线视频| 7777精品伊人久久久大香线蕉完整版| 国产亚洲午夜高清国产拍精品 | 97精品国产露脸对白| 欧美精品777| 亚洲精品视频一区| 国产不卡高清在线观看视频| 日韩欧美国产一二三区| 亚洲一级在线观看| 91一区二区三区在线播放| 久久综合狠狠综合| 久久99久久久欧美国产| 欧美天堂亚洲电影院在线播放| 国产精品视频yy9299一区| 国产在线精品一区二区夜色 | 色婷婷久久99综合精品jk白丝| 久久亚洲捆绑美女| 免费在线观看日韩欧美| 欧美日韩国产另类一区| 一区二区三区欧美在线观看| 9i在线看片成人免费| 国产欧美久久久精品影院| 国产一区二区免费视频| 欧美精品一区二区不卡 | 粉嫩av一区二区三区粉嫩| 久久久91精品国产一区二区精品| 麻豆精品一二三| 日韩欧美中文字幕一区| 蜜乳av一区二区三区| 日韩一级片网站| 人人精品人人爱| 日韩精品中文字幕在线一区| 日本一区中文字幕| 日韩视频免费观看高清在线视频| 日韩精品欧美成人高清一区二区| 欧美精品xxxxbbbb| 狠狠色丁香久久婷婷综合_中| 欧美大片顶级少妇| 国产精品一区二区久久精品爱涩| 国产无一区二区| 在线成人av影院| 麻豆91小视频| 国产亚洲视频系列| 99精品久久99久久久久| 亚洲精品欧美激情| 在线播放91灌醉迷j高跟美女| 日本不卡视频在线观看| 久久亚洲一区二区三区四区| 成人av网站在线| 亚洲自拍偷拍综合| 日韩三级视频在线观看| 国产一区二区三区免费播放| 国产精品久久久久久久久搜平片| 日本韩国欧美一区| 日本va欧美va精品| 日本一区二区三区在线不卡| 一本大道av伊人久久综合| 视频在线在亚洲| 欧美激情一区二区在线| 欧美亚一区二区| 韩国在线一区二区| 亚洲激情五月婷婷| 日韩欧美高清一区| 91香蕉视频mp4| 免费成人av在线播放| 国产精品久久久久久久浪潮网站| 欧美精品成人一区二区三区四区| 国产99久久久精品| 天天影视涩香欲综合网| 欧美激情中文字幕一区二区| 欧美视频精品在线观看| 国产传媒一区在线| 亚洲v日本v欧美v久久精品| 国产欧美一区二区三区鸳鸯浴 | 黄一区二区三区| 亚洲精品国产高清久久伦理二区 | 欧美军同video69gay| 国产精品99久久不卡二区| 亚洲电影第三页| 国产精品乱人伦| 精品久久人人做人人爱| 欧美亚洲综合另类| 成人黄色片在线观看| 麻豆极品一区二区三区| 亚洲国产中文字幕| 国产精品久久久久永久免费观看| 日韩亚洲欧美综合| 在线精品视频小说1| 丁香婷婷综合色啪| 久久99国内精品| 日韩二区三区四区| 樱花影视一区二区| 国产欧美视频一区二区三区| 91麻豆精品国产自产在线观看一区| av不卡一区二区三区| 国产精品一区二区在线观看不卡| 日韩av电影一区| 亚洲综合色区另类av| 中文字幕一区二区三区不卡| 一区二区国产盗摄色噜噜| 中文字幕乱码一区二区免费| 久久亚洲免费视频| 久久亚洲捆绑美女| 2022国产精品视频| 精品国产91乱码一区二区三区 | 最新欧美精品一区二区三区| 欧美国产视频在线| 国产午夜精品在线观看| 久久这里只有精品6| 国产亚洲精品7777| 久久久久久**毛片大全| 久久精品一区二区三区四区| 久久蜜桃一区二区| 国产亚洲美州欧州综合国| 久久久99精品免费观看| 国产欧美精品在线观看| 综合在线观看色| 亚洲免费视频中文字幕| 亚洲激情六月丁香| 亚洲国产精品欧美一二99| 亚洲成人av福利| 午夜一区二区三区在线观看| 日韩精品一级二级| 久99久精品视频免费观看| 国产在线视视频有精品| 东方aⅴ免费观看久久av| 99综合电影在线视频| 色综合色综合色综合色综合色综合| 91蜜桃在线观看| 欧美日韩精品综合在线| 欧美xxxxxxxxx| 亚洲国产精品成人久久综合一区| 国产精品超碰97尤物18| 一个色在线综合| 蜜臀国产一区二区三区在线播放 | 国产精品视频线看| 日韩一区日韩二区| 香港成人在线视频| 国产乱子轮精品视频| 99国产精品久久久| 欧美日韩中文字幕精品| 欧美videossexotv100| 国产欧美一区二区精品性色超碰| 亚洲欧美一区二区久久| 肉丝袜脚交视频一区二区| 宅男在线国产精品| 久久久不卡影院| 亚洲成人动漫av| 高清不卡一区二区| 欧美久久免费观看| 中文字幕精品一区| 天天色综合天天| 成人教育av在线| 日韩色视频在线观看| 国产精品天干天干在观线| 午夜电影网一区| 成人精品视频一区二区三区 | 国产偷国产偷亚洲高清人白洁 | 亚洲天堂免费看| 麻豆国产精品一区二区三区| 91美女在线视频| 久久网站热最新地址| 亚洲午夜激情网站| 成人免费视频一区| 久久在线观看免费| 亚瑟在线精品视频| av一区二区三区在线| 欧美成人一区二区| 午夜精品久久久久久久久| 99久久精品费精品国产一区二区| 日韩女优视频免费观看| 亚洲午夜成aⅴ人片| 91免费看`日韩一区二区| 久久综合精品国产一区二区三区 | 国产a视频精品免费观看| 4438成人网| 亚洲高清一区二区三区| 色综合天天做天天爱| 亚洲精品乱码久久久久久日本蜜臀| 秋霞成人午夜伦在线观看| 91久久人澡人人添人人爽欧美| 国产日韩欧美精品一区| 久久99精品一区二区三区 | 国产精品久久三区| 国产在线麻豆精品观看| 欧美变态口味重另类| 日韩激情视频在线观看| 欧美日韩亚洲综合在线| 亚洲日本成人在线观看| eeuss鲁片一区二区三区在线看| 久久精品亚洲精品国产欧美 | 日韩激情av在线| 777久久久精品| 男人操女人的视频在线观看欧美| 欧美群妇大交群中文字幕| 亚洲午夜久久久久久久久电影院|