* microMIPS is kind of more fun...
         */
        if (mm_insn_16bit(ip->word >> 16)) {
-               if (ip->mm16_r5_format.opcode == mm_pool16c_op &&
-                   ip->mm16_r5_format.rt == mm_jr16_op)
+               if ((ip->mm16_r5_format.opcode == mm_pool16c_op &&
+                   (ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op))
                        return 1;
                return 0;
        }
        if (ip->r_format.opcode != mm_pool32a_op ||
                        ip->r_format.func != mm_pool32axf_op)
                return 0;
-       return ((ip->u_format.uimmediate >> 6) & GENMASK(9, 0)) == mm_jalr_op;
+       return ((ip->u_format.uimmediate >> 6) & mm_jalr_op) == mm_jalr_op;
 #else
        if (ip->j_format.opcode == j_op)
                return 1;