/* sh4 base core most of it is (very) old could use many cleanups, lets hope someone does them */ //Bitwise logical operations // //and , rsh4op(i0010_nnnn_mmmm_1001) { u32 n = GetN(op); u32 m = GetM(op); r[n] &= r[m]; } //xor , rsh4op(i0010_nnnn_mmmm_1010) { u32 n = GetN(op); u32 m = GetM(op); r[n] ^= r[m]; } //or , rsh4op(i0010_nnnn_mmmm_1011) { u32 n = GetN(op); u32 m = GetM(op); r[n] |= r[m]; } //shll2 rsh4op(i0100_nnnn_0000_1000) { u32 n = GetN(op); r[n] <<= 2; } //shll8 rsh4op(i0100_nnnn_0001_1000) {//ToDo : Check This [26/4/05] u32 n = GetN(op); r[n] <<= 8; } //shll16 rsh4op(i0100_nnnn_0010_1000) {//ToDo : Check This [26/4/05] u32 n = GetN(op); r[n] <<= 16; } //shlr2 rsh4op(i0100_nnnn_0000_1001) {//ToDo : Check This [26/4/05] u32 n = GetN(op); r[n] >>= 2; } //shlr8 rsh4op(i0100_nnnn_0001_1001) { //iNimp("shlr8 "); u32 n = GetN(op); r[n] >>= 8; } //shlr16 rsh4op(i0100_nnnn_0010_1001) { u32 n = GetN(op); r[n] >>= 16; } // and #,R0 rsh4op(i1100_1001_iiii_iiii) {//ToDo : Check This [26/4/05] //iNimp("and #,R0"); u32 imm = GetImm8(op); r[0] &= imm; } // xor #,R0 rsh4op(i1100_1010_iiii_iiii) { //iNimp("xor #,R0"); u32 imm = GetImm8(op); r[0] ^= imm; } // or #,R0 rsh4op(i1100_1011_iiii_iiii) {//ToDo : Check This [26/4/05] //iNimp("or #,R0"); u32 imm = GetImm8(op); r[0] |= imm; } //TODO : move it somewhere better //nop rsh4op(i0000_0000_0000_1001) { //no operation xD XD .. i just love this opcode .. //what ? you expected something fancy or smth ? }