⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppc_vec.c

📁 SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具
💻 C
📖 第 1 页 / 共 5 页
字号:
/*	vmrghw		Vector Merge High Word *	v.197 */void ppc_opc_vmrghw(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_W(r, 0) = VECT_W(gCPU.vr[vrA], 0);	VECT_W(r, 1) = VECT_W(gCPU.vr[vrB], 0);	VECT_W(r, 2) = VECT_W(gCPU.vr[vrA], 1);	VECT_W(r, 3) = VECT_W(gCPU.vr[vrB], 1);	gCPU.vr[vrD] = r;}/*	vmrglb		Vector Merge Low Byte *	v.198 */void ppc_opc_vmrglb(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_B(r, 0) = VECT_B(gCPU.vr[vrA], 8);	VECT_B(r, 1) = VECT_B(gCPU.vr[vrB], 8);	VECT_B(r, 2) = VECT_B(gCPU.vr[vrA], 9);	VECT_B(r, 3) = VECT_B(gCPU.vr[vrB], 9);	VECT_B(r, 4) = VECT_B(gCPU.vr[vrA],10);	VECT_B(r, 5) = VECT_B(gCPU.vr[vrB],10);	VECT_B(r, 6) = VECT_B(gCPU.vr[vrA],11);	VECT_B(r, 7) = VECT_B(gCPU.vr[vrB],11);	VECT_B(r, 8) = VECT_B(gCPU.vr[vrA],12);	VECT_B(r, 9) = VECT_B(gCPU.vr[vrB],12);	VECT_B(r,10) = VECT_B(gCPU.vr[vrA],13);	VECT_B(r,11) = VECT_B(gCPU.vr[vrB],13);	VECT_B(r,12) = VECT_B(gCPU.vr[vrA],14);	VECT_B(r,13) = VECT_B(gCPU.vr[vrB],14);	VECT_B(r,14) = VECT_B(gCPU.vr[vrA],15);	VECT_B(r,15) = VECT_B(gCPU.vr[vrB],15);	gCPU.vr[vrD] = r;}/*	vmrglh		Vector Merge Low Half Word *	v.199 */void ppc_opc_vmrglh(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = VECT_H(gCPU.vr[vrA], 4);	VECT_H(r, 1) = VECT_H(gCPU.vr[vrB], 4);	VECT_H(r, 2) = VECT_H(gCPU.vr[vrA], 5);	VECT_H(r, 3) = VECT_H(gCPU.vr[vrB], 5);	VECT_H(r, 4) = VECT_H(gCPU.vr[vrA], 6);	VECT_H(r, 5) = VECT_H(gCPU.vr[vrB], 6);	VECT_H(r, 6) = VECT_H(gCPU.vr[vrA], 7);	VECT_H(r, 7) = VECT_H(gCPU.vr[vrB], 7);	gCPU.vr[vrD] = r;}/*	vmrglw		Vector Merge Low Word *	v.200 */void ppc_opc_vmrglw(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_W(r, 0) = VECT_W(gCPU.vr[vrA], 2);	VECT_W(r, 1) = VECT_W(gCPU.vr[vrB], 2);	VECT_W(r, 2) = VECT_W(gCPU.vr[vrA], 3);	VECT_W(r, 3) = VECT_W(gCPU.vr[vrB], 3);	gCPU.vr[vrD] = r;}/*	vspltb		Vector Splat Byte *	v.245 */void ppc_opc_vspltb(){	VECTOR_DEBUG;	int vrD, vrB;	uint32 uimm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, uimm, vrB);	/* The documentation doesn't stipulate what a value higher than 0xf	 *   will do.  Thus, this is by default an undefined value.  We	 *   are thus doing this the fastest way that won't crash us.	 */	val = VECT_B(gCPU.vr[vrB], uimm & 0xf);	val |= (val << 8);	val |= (val << 16);	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	vsplth		Vector Splat Half Word *	v.246 */void ppc_opc_vsplth(){	VECTOR_DEBUG;	int vrD, vrB;	uint32 uimm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, uimm, vrB);	/* The documentation doesn't stipulate what a value higher than 0x7	 *   will do.  Thus, this is by default an undefined value.  We	 *   are thus doing this the fastest way that won't crash us.	 */	val = VECT_H(gCPU.vr[vrB], uimm & 0x7);	val |= (val << 16);	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	vspltw		Vector Splat Word *	v.250 */void ppc_opc_vspltw(){	VECTOR_DEBUG;	int vrD, vrB;	uint32 uimm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, uimm, vrB);	/* The documentation doesn't stipulate what a value higher than 0x3	 *   will do.  Thus, this is by default an undefined value.  We	 *   are thus doing this the fastest way that won't crash us.	 */	val = VECT_W(gCPU.vr[vrB], uimm & 0x3);	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	vspltisb	Vector Splat Immediate Signed Byte *	v.247 */void ppc_opc_vspltisb(){	VECTOR_DEBUG_COMMON;	int vrD, vrB;	uint32 simm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, simm, vrB);	PPC_OPC_ASSERT(vrB==0);	val = (simm & 0x10) ? (simm | 0xE0) : simm;	val |= (val << 8);	val |= (val << 16);	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	vspltish	Vector Splat Immediate Signed Half Word *	v.248 */void ppc_opc_vspltish(){	VECTOR_DEBUG_COMMON;	int vrD, vrB;	uint32 simm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, simm, vrB);	PPC_OPC_ASSERT(vrB==0);	val = (simm & 0x10) ? (simm | 0xFFE0) : simm;	val |= (val << 16);	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	vspltisw	Vector Splat Immediate Signed Word *	v.249 */void ppc_opc_vspltisw(){	VECTOR_DEBUG_COMMON;	int vrD, vrB;	uint32 simm;	uint64 val;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, simm, vrB);	PPC_OPC_ASSERT(vrB==0);	val = (simm & 0x10) ? (simm | 0xFFFFFFE0) : simm;	val |= (val << 32);	gCPU.vr[vrD].d[0] = val;	gCPU.vr[vrD].d[1] = val;}/*	mfvscr		Move from Vector Status and Control Register *	v.129 */void ppc_opc_mfvscr(){	VECTOR_DEBUG_COMMON;	int vrD, vrA, vrB;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	PPC_OPC_ASSERT(vrB==0);	VECT_W(gCPU.vr[vrD], 3) = gCPU.vscr;	VECT_W(gCPU.vr[vrD], 2) = 0;	VECT_D(gCPU.vr[vrD], 0) = 0;}/*	mtvscr		Move to Vector Status and Control Register *	v.130 */void ppc_opc_mtvscr(){	VECTOR_DEBUG_COMMON;	int vrD, vrA, vrB;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	PPC_OPC_ASSERT(vrD==0);	gCPU.vscr = VECT_W(gCPU.vr[vrB], 3);}/*	vpkuhum		Vector Pack Unsigned Half Word Unsigned Modulo *	v.224 */void ppc_opc_vpkuhum(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_B(r, 0) = VECT_B(gCPU.vr[vrA], 1);	VECT_B(r, 1) = VECT_B(gCPU.vr[vrA], 3);	VECT_B(r, 2) = VECT_B(gCPU.vr[vrA], 5);	VECT_B(r, 3) = VECT_B(gCPU.vr[vrA], 7);	VECT_B(r, 4) = VECT_B(gCPU.vr[vrA], 9);	VECT_B(r, 5) = VECT_B(gCPU.vr[vrA],11);	VECT_B(r, 6) = VECT_B(gCPU.vr[vrA],13);	VECT_B(r, 7) = VECT_B(gCPU.vr[vrA],15);	VECT_B(r, 8) = VECT_B(gCPU.vr[vrB], 1);	VECT_B(r, 9) = VECT_B(gCPU.vr[vrB], 3);	VECT_B(r,10) = VECT_B(gCPU.vr[vrB], 5);	VECT_B(r,11) = VECT_B(gCPU.vr[vrB], 7);	VECT_B(r,12) = VECT_B(gCPU.vr[vrB], 9);	VECT_B(r,13) = VECT_B(gCPU.vr[vrB],11);	VECT_B(r,14) = VECT_B(gCPU.vr[vrB],13);	VECT_B(r,15) = VECT_B(gCPU.vr[vrB],15);	gCPU.vr[vrD] = r;}/*	vpkuwum		Vector Pack Unsigned Word Unsigned Modulo *	v.226 */void ppc_opc_vpkuwum(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = VECT_H(gCPU.vr[vrA], 1);	VECT_H(r, 1) = VECT_H(gCPU.vr[vrA], 3);	VECT_H(r, 2) = VECT_H(gCPU.vr[vrA], 5);	VECT_H(r, 3) = VECT_H(gCPU.vr[vrA], 7);	VECT_H(r, 4) = VECT_H(gCPU.vr[vrB], 1);	VECT_H(r, 5) = VECT_H(gCPU.vr[vrB], 3);	VECT_H(r, 6) = VECT_H(gCPU.vr[vrB], 5);	VECT_H(r, 7) = VECT_H(gCPU.vr[vrB], 7);	gCPU.vr[vrD] = r;}/*	vpkpx		Vector Pack Pixel32 *	v.219 */void ppc_opc_vpkpx(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = PACK_PIXEL(VECT_W(gCPU.vr[vrA], 0));	VECT_H(r, 1) = PACK_PIXEL(VECT_W(gCPU.vr[vrA], 1));	VECT_H(r, 2) = PACK_PIXEL(VECT_W(gCPU.vr[vrA], 2));	VECT_H(r, 3) = PACK_PIXEL(VECT_W(gCPU.vr[vrA], 3));	VECT_H(r, 4) = PACK_PIXEL(VECT_W(gCPU.vr[vrB], 0));	VECT_H(r, 5) = PACK_PIXEL(VECT_W(gCPU.vr[vrB], 1));	VECT_H(r, 6) = PACK_PIXEL(VECT_W(gCPU.vr[vrB], 2));	VECT_H(r, 7) = PACK_PIXEL(VECT_W(gCPU.vr[vrB], 3));	gCPU.vr[vrD] = r;}/*	vpkuhus		Vector Pack Unsigned Half Word Unsigned Saturate *	v.225 */void ppc_opc_vpkuhus(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_B(r, 0) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 0));	VECT_B(r, 1) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 1));	VECT_B(r, 2) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 2));	VECT_B(r, 3) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 3));	VECT_B(r, 4) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 4));	VECT_B(r, 5) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 5));	VECT_B(r, 6) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 6));	VECT_B(r, 7) = SATURATE_UB(VECT_H(gCPU.vr[vrA], 7));	VECT_B(r, 8) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 0));	VECT_B(r, 9) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 1));	VECT_B(r,10) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 2));	VECT_B(r,11) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 3));	VECT_B(r,12) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 4));	VECT_B(r,13) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 5));	VECT_B(r,14) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 6));	VECT_B(r,15) = SATURATE_UB(VECT_H(gCPU.vr[vrB], 7));	gCPU.vr[vrD] = r;}/*	vpkshss		Vector Pack Signed Half Word Signed Saturate *	v.220 */void ppc_opc_vpkshss(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_B(r, 0) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 0));	VECT_B(r, 1) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 1));	VECT_B(r, 2) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 2));	VECT_B(r, 3) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 3));	VECT_B(r, 4) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 4));	VECT_B(r, 5) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 5));	VECT_B(r, 6) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 6));	VECT_B(r, 7) = SATURATE_SB(VECT_H(gCPU.vr[vrA], 7));	VECT_B(r, 8) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 0));	VECT_B(r, 9) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 1));	VECT_B(r,10) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 2));	VECT_B(r,11) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 3));	VECT_B(r,12) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 4));	VECT_B(r,13) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 5));	VECT_B(r,14) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 6));	VECT_B(r,15) = SATURATE_SB(VECT_H(gCPU.vr[vrB], 7));	gCPU.vr[vrD] = r;}/*	vpkuwus		Vector Pack Unsigned Word Unsigned Saturate *	v.227 */void ppc_opc_vpkuwus(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = SATURATE_UH(VECT_W(gCPU.vr[vrA], 0));	VECT_H(r, 1) = SATURATE_UH(VECT_W(gCPU.vr[vrA], 1));	VECT_H(r, 2) = SATURATE_UH(VECT_W(gCPU.vr[vrA], 2));	VECT_H(r, 3) = SATURATE_UH(VECT_W(gCPU.vr[vrA], 3));	VECT_H(r, 4) = SATURATE_UH(VECT_W(gCPU.vr[vrB], 0));	VECT_H(r, 5) = SATURATE_UH(VECT_W(gCPU.vr[vrB], 1));	VECT_H(r, 6) = SATURATE_UH(VECT_W(gCPU.vr[vrB], 2));	VECT_H(r, 7) = SATURATE_UH(VECT_W(gCPU.vr[vrB], 3));	gCPU.vr[vrD] = r;}/*	vpkswss		Vector Pack Signed Word Signed Saturate *	v.222 */void ppc_opc_vpkswss(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = SATURATE_SH(VECT_W(gCPU.vr[vrA], 0));	VECT_H(r, 1) = SATURATE_SH(VECT_W(gCPU.vr[vrA], 1));	VECT_H(r, 2) = SATURATE_SH(VECT_W(gCPU.vr[vrA], 2));	VECT_H(r, 3) = SATURATE_SH(VECT_W(gCPU.vr[vrA], 3));	VECT_H(r, 4) = SATURATE_SH(VECT_W(gCPU.vr[vrB], 0));	VECT_H(r, 5) = SATURATE_SH(VECT_W(gCPU.vr[vrB], 1));	VECT_H(r, 6) = SATURATE_SH(VECT_W(gCPU.vr[vrB], 2));	VECT_H(r, 7) = SATURATE_SH(VECT_W(gCPU.vr[vrB], 3));	gCPU.vr[vrD] = r;}/*	vpkshus		Vector Pack Signed Half Word Unsigned Saturate *	v.221 */void ppc_opc_vpkshus(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_B(r, 0) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 0));	VECT_B(r, 1) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 1));	VECT_B(r, 2) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 2));	VECT_B(r, 3) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 3));	VECT_B(r, 4) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 4));	VECT_B(r, 5) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 5));	VECT_B(r, 6) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 6));	VECT_B(r, 7) = SATURATE_USB(VECT_H(gCPU.vr[vrA], 7));	VECT_B(r, 8) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 0));	VECT_B(r, 9) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 1));	VECT_B(r,10) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 2));	VECT_B(r,11) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 3));	VECT_B(r,12) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 4));	VECT_B(r,13) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 5));	VECT_B(r,14) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 6));	VECT_B(r,15) = SATURATE_USB(VECT_H(gCPU.vr[vrB], 7));	gCPU.vr[vrD] = r;}/*	vpkswus		Vector Pack Signed Word Unsigned Saturate *	v.223 */void ppc_opc_vpkswus(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	VECT_H(r, 0) = SATURATE_USH(VECT_W(gCPU.vr[vrA], 0));	VECT_H(r, 1) = SATURATE_USH(VECT_W(gCPU.vr[vrA], 1));	VECT_H(r, 2) = SATURATE_USH(VECT_W(gCPU.vr[vrA], 2));	VECT_H(r, 3) = SATURATE_USH(VECT_W(gCPU.vr[vrA], 3));	VECT_H(r, 4) = SATURATE_USH(VECT_W(gCPU.vr[vrB], 0));	VECT_H(r, 5) = SATURATE_USH(VECT_W(gCPU.vr[vrB], 1));	VECT_H(r, 6) = SATURATE_USH(VECT_W(gCPU.vr[vrB], 2));	VECT_H(r, 7) = SATURATE_USH(VECT_W(gCPU.vr[vrB], 3));	gCPU.vr[vrD] = r;}/*	vupkhsb		Vector Unpack High Signed Byte *	v.277 */void ppc_opc_vupkhsb(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_SH(r, 0) = VECT_SB(gCPU.vr[vrB], 0);	VECT_SH(r, 1) = VECT_SB(gCPU.vr[vrB], 1);	VECT_SH(r, 2) = VECT_SB(gCPU.vr[vrB], 2);	VECT_SH(r, 3) = VECT_SB(gCPU.vr[vrB], 3);	VECT_SH(r, 4) = VECT_SB(gCPU.vr[vrB], 4);	VECT_SH(r, 5) = VECT_SB(gCPU.vr[vrB], 5);	VECT_SH(r, 6) = VECT_SB(gCPU.vr[vrB], 6);	VECT_SH(r, 7) = VECT_SB(gCPU.vr[vrB], 7);	gCPU.vr[vrD] = r;}/*	vupkhpx		Vector Unpack High Pixel32 *	v.279 */void ppc_opc_vupkhpx(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_W(r, 0) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 0));	VECT_W(r, 1) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 1));	VECT_W(r, 2) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 2));	VECT_W(r, 3) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 3));		gCPU.vr[vrD] = r;}/*	vupkhsh		Vector Unpack High Signed Half Word *	v.278 */void ppc_opc_vupkhsh(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_SW(r, 0) = VECT_SH(gCPU.vr[vrB], 0);	VECT_SW(r, 1) = VECT_SH(gCPU.vr[vrB], 1);	VECT_SW(r, 2) = VECT_SH(gCPU.vr[vrB], 2);	VECT_SW(r, 3) = VECT_SH(gCPU.vr[vrB], 3);	gCPU.vr[vrD] = r;}/*	vupklsb		Vector Unpack Low Signed Byte *	v.280 */void ppc_opc_vupklsb(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_SH(r, 0) = VECT_SB(gCPU.vr[vrB], 8);	VECT_SH(r, 1) = VECT_SB(gCPU.vr[vrB], 9);	VECT_SH(r, 2) = VECT_SB(gCPU.vr[vrB],10);	VECT_SH(r, 3) = VECT_SB(gCPU.vr[vrB],11);	VECT_SH(r, 4) = VECT_SB(gCPU.vr[vrB],12);	VECT_SH(r, 5) = VECT_SB(gCPU.vr[vrB],13);	VECT_SH(r, 6) = VECT_SB(gCPU.vr[vrB],14);	VECT_SH(r, 7) = VECT_SB(gCPU.vr[vrB],15);	gCPU.vr[vrD] = r;}/*	vupklpx		Vector Unpack Low Pixel32 *	v.279 */void ppc_opc_vupklpx(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_W(r, 0) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 4));	VECT_W(r, 1) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 5));	VECT_W(r, 2) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 6));	VECT_W(r, 3) = UNPACK_PIXEL(VECT_H(gCPU.vr[vrB], 7));	gCPU.vr[vrD] = r;}/*	vupklsh		Vector Unpack Low Signed Half Word *	v.281 */void ppc_opc_vupklsh(){	VECTOR_DEBUG;	int vrD, vrA, vrB;	Vector_t r;	PPC_OPC_TEMPL_X(gCPU.current_opc, vrD, vrA, vrB);	PPC_OPC_ASSERT(vrA==0);	VECT_SW(r, 0) = VECT_SH(gCPU.vr[vrB], 4);	VECT_SW(r, 1) = VECT_SH(gCPU.vr[vrB], 5);	VECT_SW(r, 2) = VECT_SH(gCPU.vr[vrB], 6);	VECT_SW(r, 3) = VECT_SH(gCPU.vr[vrB], 7);	gCPU.vr[vrD] = r;}/*	vaddubm		Vector Add Unsigned Byte Modulo *	v.141 */

⌨️ 快捷键说明

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