Lines Matching refs:emit_instr
138 #define emit_instr(ctx, func, ...) \
305 emit_instr(ctx, addiu, MIPS_R_V1, MIPS_R_ZERO, MAX_TAIL_CALL_CNT);
364 emit_instr(ctx, sll, r0, r0, 0);
397 emit_instr(ctx, jr, dest_reg);
403 emit_instr(ctx, nop);
412 emit_instr(ctx, addiu, reg, MIPS_R_ZERO, insn->imm);
417 emit_instr(ctx, lui, reg, upper >> 16);
418 emit_instr(ctx, addiu, reg, reg, lower);
465 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
471 emit_instr(ctx, sll, dst, dst, 0);
477 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, insn->imm);
481 emit_instr(ctx, andi, dst, dst, insn->imm);
485 emit_instr(ctx, ori, dst, dst, insn->imm);
489 emit_instr(ctx, xori, dst, dst, insn->imm);
492 emit_instr(ctx, daddiu, dst, dst, insn->imm);
495 emit_instr(ctx, daddiu, dst, dst, -insn->imm);
498 emit_instr(ctx, dsrl_safe, dst, dst, insn->imm & 0x3f);
501 emit_instr(ctx, srl, dst, dst, insn->imm & 0x1f);
504 emit_instr(ctx, dsll_safe, dst, dst, insn->imm & 0x3f);
507 emit_instr(ctx, sll, dst, dst, insn->imm & 0x1f);
510 emit_instr(ctx, dsra_safe, dst, dst, insn->imm & 0x3f);
513 emit_instr(ctx, sra, dst, dst, insn->imm & 0x1f);
516 emit_instr(ctx, addiu, dst, MIPS_R_ZERO, insn->imm);
519 emit_instr(ctx, addiu, dst, dst, insn->imm);
522 emit_instr(ctx, addiu, dst, dst, -insn->imm);
536 emit_instr(ctx, and, dst, dst, MIPS_R_AT);
540 emit_instr(ctx, or, dst, dst, MIPS_R_AT);
544 emit_instr(ctx, xor, dst, dst, MIPS_R_AT);
547 emit_instr(ctx, daddu, dst, dst, MIPS_R_AT);
550 emit_instr(ctx, dsubu, dst, dst, MIPS_R_AT);
553 emit_instr(ctx, addu, dst, dst, MIPS_R_AT);
556 emit_instr(ctx, subu, dst, dst, MIPS_R_AT);
570 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, (int)value);
573 emit_instr(ctx, lui, dst, (s32)(s16)(value >> 16));
574 emit_instr(ctx, ori, dst, dst, (unsigned int)(value & 0xffff));
584 emit_instr(ctx, dsll_safe, dst, dst, needed_shift);
589 emit_instr(ctx, lui, dst, (s32)(s16)part);
592 emit_instr(ctx, ori, dst,
615 emit_instr(ctx, lwu, MIPS_R_T5, off, MIPS_R_A1);
616 emit_instr(ctx, sltu, MIPS_R_AT, MIPS_R_T5, MIPS_R_A2);
618 emit_instr(ctx, bne, MIPS_R_AT, MIPS_R_ZERO, b_off);
625 emit_instr(ctx, daddiu, MIPS_R_T5, tcc_reg, -1);
627 emit_instr(ctx, bltz, tcc_reg, b_off);
634 emit_instr(ctx, dsll, MIPS_R_T8, MIPS_R_A2, 3);
635 emit_instr(ctx, daddu, MIPS_R_T8, MIPS_R_T8, MIPS_R_A1);
637 emit_instr(ctx, ld, MIPS_R_AT, off, MIPS_R_T8);
639 emit_instr(ctx, beq, MIPS_R_AT, MIPS_R_ZERO, b_off);
641 emit_instr(ctx, nop);
645 emit_instr(ctx, ld, MIPS_R_T9, off, MIPS_R_AT);
647 emit_instr(ctx, daddu, MIPS_R_V1, MIPS_R_T5, MIPS_R_ZERO);
649 emit_instr(ctx, daddiu, MIPS_R_T9, MIPS_R_T9, 4);
701 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
706 emit_instr(ctx, dmulu, dst, dst, MIPS_R_AT);
708 emit_instr(ctx, dmultu, MIPS_R_AT, dst);
709 emit_instr(ctx, mflo, dst);
717 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
718 emit_instr(ctx, dsubu, dst, MIPS_R_ZERO, dst);
727 emit_instr(ctx, sll, dst, dst, 0);
733 emit_instr(ctx, mulu, dst, dst, MIPS_R_AT);
735 emit_instr(ctx, multu, dst, MIPS_R_AT);
736 emit_instr(ctx, mflo, dst);
746 emit_instr(ctx, sll, dst, dst, 0);
748 emit_instr(ctx, subu, dst, MIPS_R_ZERO, dst);
760 emit_instr(ctx, sll, dst, dst, 0);
764 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO);
770 emit_instr(ctx, divu_r6, dst, dst, MIPS_R_AT);
772 emit_instr(ctx, modu, dst, dst, MIPS_R_AT);
775 emit_instr(ctx, divu, dst, MIPS_R_AT);
777 emit_instr(ctx, mflo, dst);
779 emit_instr(ctx, mfhi, dst);
789 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
793 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO);
799 emit_instr(ctx, ddivu_r6, dst, dst, MIPS_R_AT);
801 emit_instr(ctx, modu, dst, dst, MIPS_R_AT);
804 emit_instr(ctx, ddivu, dst, MIPS_R_AT);
806 emit_instr(ctx, mflo, dst);
808 emit_instr(ctx, mfhi, dst);
827 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
831 emit_instr(ctx, daddiu, dst, MIPS_R_SP, MAX_BPF_STACK);
834 emit_instr(ctx, daddiu, MIPS_R_AT, MIPS_R_SP, MAX_BPF_STACK);
844 emit_instr(ctx, daddu, tmp_reg, src, MIPS_R_ZERO);
845 emit_instr(ctx, dinsu, tmp_reg, MIPS_R_ZERO, 32, 32);
851 emit_instr(ctx, daddu, dst, src, MIPS_R_ZERO);
854 emit_instr(ctx, daddu, dst, dst, src);
857 emit_instr(ctx, dsubu, dst, dst, src);
860 emit_instr(ctx, xor, dst, dst, src);
863 emit_instr(ctx, or, dst, dst, src);
866 emit_instr(ctx, and, dst, dst, src);
870 emit_instr(ctx, dmulu, dst, dst, src);
872 emit_instr(ctx, dmultu, dst, src);
873 emit_instr(ctx, mflo, dst);
880 emit_instr(ctx, ddivu_r6,
883 emit_instr(ctx, modu, dst, dst, src);
886 emit_instr(ctx, ddivu, dst, src);
888 emit_instr(ctx, mflo, dst);
890 emit_instr(ctx, mfhi, dst);
893 emit_instr(ctx, dsllv, dst, dst, src);
896 emit_instr(ctx, dsrlv, dst, dst, src);
899 emit_instr(ctx, dsrav, dst, dst, src);
925 emit_instr(ctx, sll, dst, dst, 0);
937 emit_instr(ctx, sll, tmp_reg, src, 0);
943 emit_instr(ctx, addu, dst, src, MIPS_R_ZERO);
946 emit_instr(ctx, addu, dst, dst, src);
949 emit_instr(ctx, subu, dst, dst, src);
952 emit_instr(ctx, xor, dst, dst, src);
955 emit_instr(ctx, or, dst, dst, src);
958 emit_instr(ctx, and, dst, dst, src);
961 emit_instr(ctx, mul, dst, dst, src);
967 emit_instr(ctx, divu_r6, dst, dst, src);
969 emit_instr(ctx, modu, dst, dst, src);
972 emit_instr(ctx, divu, dst, src);
974 emit_instr(ctx, mflo, dst);
976 emit_instr(ctx, mfhi, dst);
979 emit_instr(ctx, sllv, dst, dst, src);
982 emit_instr(ctx, srlv, dst, dst, src);
985 emit_instr(ctx, srav, dst, dst, src);
997 emit_instr(ctx, beq, MIPS_R_ZERO, MIPS_R_ZERO, b_off);
998 emit_instr(ctx, nop);
1032 emit_instr(ctx, sll, MIPS_R_AT, src, 0);
1035 emit_instr(ctx, sll, MIPS_R_AT, dst, 0);
1039 emit_instr(ctx, and, MIPS_R_AT, dst, src);
1044 emit_instr(ctx, dsubu, MIPS_R_AT, dst, src);
1050 emit_instr(ctx, blez, MIPS_R_AT, b_off);
1052 emit_instr(ctx, bgtz, MIPS_R_AT, b_off);
1053 emit_instr(ctx, nop);
1060 emit_instr(ctx, bgtz, MIPS_R_AT, b_off);
1062 emit_instr(ctx, blez, MIPS_R_AT, b_off);
1063 emit_instr(ctx, nop);
1066 emit_instr(ctx, slt, MIPS_R_AT, dst, src);
1072 emit_instr(ctx, dsubu, MIPS_R_T8, dst, src);
1073 emit_instr(ctx, sltu, MIPS_R_AT, dst, src);
1076 emit_instr(ctx, seleqz, MIPS_R_T9,
1079 emit_instr(ctx, movz, MIPS_R_T9,
1081 emit_instr(ctx, movn, MIPS_R_T9,
1084 emit_instr(ctx, or, MIPS_R_AT, MIPS_R_T9, MIPS_R_AT);
1089 emit_instr(ctx, sltu, MIPS_R_AT, dst, src);
1118 emit_instr(ctx, bne, dst, src, b_off);
1120 emit_instr(ctx, beq, dst, src, b_off);
1121 emit_instr(ctx, nop);
1123 emit_instr(ctx, j, target);
1124 emit_instr(ctx, nop);
1142 emit_instr(ctx, beq, dst, src, b_off);
1144 emit_instr(ctx, bne, dst, src, b_off);
1145 emit_instr(ctx, nop);
1147 emit_instr(ctx, j, target);
1148 emit_instr(ctx, nop);
1167 emit_instr(ctx, blez, dst, b_off);
1170 emit_instr(ctx, bltz, dst, b_off);
1173 emit_instr(ctx, bgez, dst, b_off);
1176 emit_instr(ctx, bgtz, dst, b_off);
1179 emit_instr(ctx, nop);
1187 emit_instr(ctx, bgtz, dst, b_off);
1190 emit_instr(ctx, bgez, dst, b_off);
1193 emit_instr(ctx, bltz, dst, b_off);
1196 emit_instr(ctx, blez, dst, b_off);
1199 emit_instr(ctx, nop);
1215 emit_instr(ctx, slti, MIPS_R_AT, dst, (int)t64s);
1221 emit_instr(ctx, slt, MIPS_R_AT, dst, MIPS_R_AT);
1248 emit_instr(ctx, sltu, MIPS_R_AT, dst, MIPS_R_AT);
1263 emit_instr(ctx, bbit0, dst, ffs((u32)insn->imm) - 1, b_off);
1264 emit_instr(ctx, nop);
1270 emit_instr(ctx, bbit1, dst, ffs((u32)insn->imm) - 1, b_off);
1271 emit_instr(ctx, nop);
1276 emit_instr(ctx, and, MIPS_R_AT, dst, MIPS_R_AT);
1292 emit_instr(ctx, j, target);
1294 emit_instr(ctx, b, b_off);
1296 emit_instr(ctx, nop);
1312 emit_instr(ctx, jalr, MIPS_R_RA, MIPS_R_T9);
1314 emit_instr(ctx, nop);
1329 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
1333 emit_instr(ctx, sll, dst, dst, 0);
1343 emit_instr(ctx, wsbh, dst, dst);
1344 emit_instr(ctx, andi, dst, dst, 0xffff);
1347 emit_instr(ctx, wsbh, dst, dst);
1348 emit_instr(ctx, rotr, dst, dst, 16);
1352 emit_instr(ctx, dsbh, dst, dst);
1353 emit_instr(ctx, dshd, dst, dst);
1378 emit_instr(ctx, sb, MIPS_R_AT, mem_off, dst);
1381 emit_instr(ctx, sh, MIPS_R_AT, mem_off, dst);
1384 emit_instr(ctx, sw, MIPS_R_AT, mem_off, dst);
1387 emit_instr(ctx, sd, MIPS_R_AT, mem_off, dst);
1411 emit_instr(ctx, lbu, dst, mem_off, src);
1414 emit_instr(ctx, lhu, dst, mem_off, src);
1417 emit_instr(ctx, lw, dst, mem_off, src);
1420 emit_instr(ctx, ld, dst, mem_off, src);
1451 emit_instr(ctx, daddiu, MIPS_R_T6,
1459 emit_instr(ctx, sll, MIPS_R_AT, src, 0);
1462 emit_instr(ctx, ll, MIPS_R_T8, mem_off, dst);
1463 emit_instr(ctx, addu, MIPS_R_T8, MIPS_R_T8, src);
1464 emit_instr(ctx, sc, MIPS_R_T8, mem_off, dst);
1469 emit_instr(ctx, beq, MIPS_R_T8, MIPS_R_ZERO, -4 * 4);
1470 emit_instr(ctx, nop);
1474 emit_instr(ctx, daddu, MIPS_R_AT, src, MIPS_R_ZERO);
1475 emit_instr(ctx, dinsu, MIPS_R_AT, MIPS_R_ZERO, 32, 32);
1478 emit_instr(ctx, lld, MIPS_R_T8, mem_off, dst);
1479 emit_instr(ctx, daddu, MIPS_R_T8, MIPS_R_T8, src);
1480 emit_instr(ctx, scd, MIPS_R_T8, mem_off, dst);
1481 emit_instr(ctx, beq, MIPS_R_T8, MIPS_R_ZERO, -4 * 4);
1482 emit_instr(ctx, nop);
1488 emit_instr(ctx, sb, src, mem_off, dst);
1491 emit_instr(ctx, sh, src, mem_off, dst);
1494 emit_instr(ctx, sw, src, mem_off, dst);
1498 emit_instr(ctx, daddu, MIPS_R_AT, src, MIPS_R_ZERO);
1499 emit_instr(ctx, dinsu, MIPS_R_AT, MIPS_R_ZERO, 32, 32);
1502 emit_instr(ctx, sd, src, mem_off, dst);