📄 ppc_vec.c
字号:
/* 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 + -