短くにゃれ

昔はこんにゃ感じだったにゃ。*1

register ccUINT32 op = m_nOpecode;
register ccUINT32 target_addr = m_nReg[15] + (((ccUINT32)(((ccINT32)(op << 8)) >> 6)) | ((op >> 23) & 0x2));

m_nReg[15] = target_addr
m_nReg[14] = m_nNextInstructAddress; 		/* 次の命令のアドレス */

これをにゃ、レジスタをint4個にゃにしてにゃ無駄に4個計算させるようにゃにするとにゃ、

m_nReg[15].vu32 = spu_add( m_nReg[15].vu32, (vec_uint4)spu_or( spu_rlmaska( spu_sl( m_nOpecode.v32, (vec_uint4){ 8, 8, 8, 8 } ), (vec_int4){ -6, -6, -6, -6 } ), spu_and( spu_rlmask( m_nOpecode.v32, (vec_int4){ -23, -23, -23, -23 } ), (vec_int4){ 2, 2, 2, 2 } ) ) );
m_nReg[14].vu32 = m_nNextInstructAddress.vu32; 				/* 次の命令のアドレス */

こんにゃ感じにゃに。ゴチャゴチャしてるけど……こっちにゃほうが命令数が減ってしかも早いのですにゃ。
いまさらにゃんですけどにゃ、Cellは変ですにゃね*2

*1:BLXっていうARMv5T以降の命令部分

*2: