Lines Matching refs:def
1790 static void ir_emit_binop_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
1797 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
1798 ir_reg op1_reg = ctx->regs[def][1];
1799 ir_reg op2_reg = ctx->regs[def][2];
1836 tmp_reg = ctx->regs[def][3];
1842 tmp_reg = ctx->regs[def][3];
1850 tmp_reg = ctx->regs[def][3];
1869 tmp_reg = ctx->regs[def][3];
1934 if (IR_REG_SPILLED(ctx->regs[def][0])) {
1935 ir_emit_store(ctx, type, def, def_reg);
1939 static void ir_emit_min_max_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
1946 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
1947 ir_reg op1_reg = ctx->regs[def][1];
1948 ir_reg op2_reg = ctx->regs[def][2];
1999 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2000 ir_emit_store(ctx, type, def, def_reg);
2004 static void ir_emit_overflow(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2008 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2021 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2022 ir_emit_store(ctx, insn->type, def, def_reg);
2026 static void ir_emit_overflow_and_branch(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_…
2069 static void ir_emit_reg_binop_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2136 static void ir_emit_mul_div_mod_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2142 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2143 ir_reg op1_reg = ctx->regs[def][1];
2168 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2169 ir_emit_store(ctx, type, def, def_reg);
2173 static void ir_emit_sdiv_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2179 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2180 ir_reg op1_reg = ctx->regs[def][1];
2181 ir_reg op2_reg = ctx->regs[def][2];
2226 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2227 ir_emit_store(ctx, type, def, def_reg);
2231 static void ir_emit_smod_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2237 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2238 ir_reg op1_reg = ctx->regs[def][1];
2239 ir_reg tmp_reg = ctx->regs[def][3];
2271 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2272 ir_emit_store(ctx, type, def, def_reg);
2276 static void ir_emit_shift(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2281 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2282 ir_reg op1_reg = ctx->regs[def][1];
2283 ir_reg op2_reg = ctx->regs[def][2];
2332 tmp_reg = ctx->regs[def][3];
2357 tmp_reg = ctx->regs[def][3];
2365 tmp_reg = ctx->regs[def][3];
2376 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2377 ir_emit_store(ctx, type, def, def_reg);
2381 static void ir_emit_shift_const(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2388 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2389 ir_reg op1_reg = ctx->regs[def][1];
2432 tmp_reg = ctx->regs[def][3];
2436 tmp_reg = ctx->regs[def][3];
2449 tmp_reg = ctx->regs[def][3];
2453 tmp_reg = ctx->regs[def][3];
2461 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2462 ir_emit_store(ctx, type, def, def_reg);
2466 static void ir_emit_op_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2472 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2473 ir_reg op1_reg = ctx->regs[def][1];
2517 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2518 ir_emit_store(ctx, type, def, def_reg);
2522 static void ir_emit_ctpop(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2528 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2529 ir_reg op1_reg = ctx->regs[def][1];
2530 ir_reg tmp_reg = ctx->regs[def][2];
2570 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2571 ir_emit_store(ctx, type, def, def_reg);
2575 static void ir_emit_op_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2581 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2582 ir_reg op1_reg = ctx->regs[def][1];
2606 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2607 ir_emit_store(ctx, insn->type, def, def_reg);
2611 static void ir_emit_binop_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2618 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2619 ir_reg op1_reg = ctx->regs[def][1];
2620 ir_reg op2_reg = ctx->regs[def][2];
2655 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2656 ir_emit_store(ctx, insn->type, def, def_reg);
2723 static void ir_emit_cmp_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2731 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2732 ir_reg op1_reg = ctx->regs[def][1];
2733 ir_reg op2_reg = ctx->regs[def][2];
2754 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2755 ir_emit_store(ctx, insn->type, def, def_reg);
2761 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2762 ir_emit_store(ctx, insn->type, def, def_reg);
2806 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2807 ir_emit_store(ctx, insn->type, def, def_reg);
2854 static void ir_emit_cmp_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2858 ir_op op = ir_emit_cmp_fp_common(ctx, def, insn);
2859 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2860 //??? ir_reg tmp_reg = ctx->regs[def][3]; // TODO: take into account vs flag
2897 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2898 ir_emit_store(ctx, insn->type, def, def_reg);
2902 static void ir_emit_jmp_true(ir_ctx *ctx, uint32_t b, ir_ref def, uint32_t next_block)
2914 static void ir_emit_jmp_false(ir_ctx *ctx, uint32_t b, ir_ref def, uint32_t next_block)
2961 static void ir_emit_jcc(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t next_block, ui…
3061 static void ir_emit_cmp_and_branch_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t…
3088 ir_emit_jmp_false(ctx, b, def, next_block);
3092 ir_emit_jmp_true(ctx, b, def, next_block);
3105 ir_emit_jcc(ctx, b, def, insn, next_block, op, 1);
3108 static void ir_emit_cmp_and_branch_fp(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t …
3111 ir_emit_jcc(ctx, b, def, insn, next_block, op, 0);
3114 static void ir_emit_if_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t next_block)
3117 ir_reg op2_reg = ctx->regs[def][2];
3150 ir_emit_jcc(ctx, b, def, insn, next_block, IR_NE, 1);
3153 static void ir_emit_cond(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3162 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3163 ir_reg op1_reg = ctx->regs[def][1];
3164 ir_reg op2_reg = ctx->regs[def][2];
3165 ir_reg op3_reg = ctx->regs[def][3];
3211 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3212 ir_emit_store(ctx, type, def, def_reg);
3256 static void ir_emit_sext(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3262 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3263 ir_reg op1_reg = ctx->regs[def][1];
3324 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3325 ir_emit_store(ctx, dst_type, def, def_reg);
3329 static void ir_emit_zext(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3335 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3336 ir_reg op1_reg = ctx->regs[def][1];
3371 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3372 ir_emit_store(ctx, dst_type, def, def_reg);
3376 static void ir_emit_trunc(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3382 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3383 ir_reg op1_reg = ctx->regs[def][1];
3404 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3405 ir_emit_store(ctx, dst_type, def, def_reg);
3409 static void ir_emit_bitcast(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3415 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3416 ir_reg op1_reg = ctx->regs[def][1];
3501 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3502 ir_emit_store(ctx, dst_type, def, def_reg);
3506 static void ir_emit_int2fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3512 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3513 ir_reg op1_reg = ctx->regs[def][1];
3566 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3567 ir_emit_store(ctx, dst_type, def, def_reg);
3571 static void ir_emit_fp2int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3577 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3578 ir_reg op1_reg = ctx->regs[def][1];
3620 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3621 ir_emit_store(ctx, dst_type, def, def_reg);
3625 static void ir_emit_fp2fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3631 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3632 ir_reg op1_reg = ctx->regs[def][1];
3651 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3652 ir_emit_store(ctx, dst_type, def, def_reg);
3656 static void ir_emit_copy_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3659 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3660 ir_reg op1_reg = ctx->regs[def][1];
3674 ir_emit_store(ctx, type, def, op1_reg);
3678 if (def_reg != IR_REG_NONE && IR_REG_SPILLED(ctx->regs[def][0])) {
3679 ir_emit_store(ctx, type, def, def_reg);
3683 static void ir_emit_copy_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3686 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3687 ir_reg op1_reg = ctx->regs[def][1];
3701 ir_emit_store(ctx, type, def, op1_reg);
3705 if (def_reg != IR_REG_NONE && IR_REG_SPILLED(ctx->regs[def][0])) {
3706 ir_emit_store(ctx, type, def, def_reg);
3710 static void ir_emit_vaddr(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3715 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3722 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3723 ir_emit_store(ctx, type, def, def_reg);
3727 static void ir_emit_vload(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3731 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3736 if (ctx->use_lists[def].count == 1) {
3744 if (def_reg == IR_REG_NONE && ir_is_same_mem_var(ctx, def, var_insn->op3)) {
3749 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3750 ir_emit_store(ctx, type, def, def_reg);
3816 static void ir_emit_load_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3819 ir_reg op2_reg = ctx->regs[def][2];
3820 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3823 if (ctx->use_lists[def].count == 1) {
3841 mem = ir_fuse_addr(ctx, def, insn->op2);
3842 if (IR_REG_SPILLED(ctx->regs[def][0]) && ir_is_same_spill_slot(ctx, def, mem)) {
3843 if (!ir_may_avoid_spill_load(ctx, def, def)) {
3851 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3852 ir_emit_store(ctx, type, def, def_reg);
3856 static void ir_emit_load_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3859 ir_reg op2_reg = ctx->regs[def][2];
3860 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3863 if (ctx->use_lists[def].count == 1) {
3881 mem = ir_fuse_addr(ctx, def, insn->op2);
3882 if (IR_REG_SPILLED(ctx->regs[def][0]) && ir_is_same_spill_slot(ctx, def, mem)) {
3883 if (!ir_may_avoid_spill_load(ctx, def, def)) {
3891 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3892 ir_emit_store(ctx, type, def, def_reg);
3977 static void ir_emit_rload(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3983 if (ctx->vregs[def]
3984 && ctx->live_intervals[ctx->vregs[def]]
3985 && ctx->live_intervals[ctx->vregs[def]]->stack_spill_pos != -1) {
3986 ir_emit_store(ctx, type, def, src_reg);
3989 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3995 if (!insn->op3 || !ir_is_same_spill_slot(ctx, def, IR_MEM_BO(ctx->spill_base, insn->op3))) {
3996 ir_emit_store(ctx, type, def, src_reg);
4007 if (IR_REG_SPILLED(ctx->regs[def][0])
4008 && (!insn->op3 || !ir_is_same_spill_slot(ctx, def, IR_MEM_BO(ctx->spill_base, insn->op3)))) {
4009 ir_emit_store(ctx, type, def, def_reg);
4039 static void ir_emit_alloca(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4043 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4045 if (ctx->use_lists[def].count == 1) {
4070 ir_reg op2_reg = ctx->regs[def][2];
4086 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4087 ir_emit_store(ctx, insn->type, def, def_reg);
4090 ir_emit_store(ctx, IR_ADDR, def, IR_REG_STACK_POINTER);
4094 static void ir_emit_afree(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4115 ir_reg op2_reg = ctx->regs[def][2];
4131 static void ir_emit_block_begin(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4135 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4137 if (ctx->use_lists[def].count == 1) {
4143 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4144 ir_emit_store(ctx, IR_ADDR, def, def_reg);
4148 static void ir_emit_block_end(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4152 ir_reg op2_reg = ctx->regs[def][2];
4163 static void ir_emit_frame_addr(ir_ctx *ctx, ir_ref def)
4167 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4174 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4175 ir_emit_store(ctx, IR_ADDR, def, def_reg);
4179 static void ir_emit_va_start(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4186 ir_reg op2_reg = ctx->regs[def][2];
4187 ir_reg tmp_reg = ctx->regs[def][3];
4218 ir_reg op2_reg = ctx->regs[def][2];
4219 ir_reg tmp_reg = ctx->regs[def][3];
4279 static void ir_emit_va_copy(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4284 ir_reg tmp_reg = ctx->regs[def][1];
4285 ir_reg op2_reg = ctx->regs[def][2];
4286 ir_reg op3_reg = ctx->regs[def][3];
4317 ir_reg tmp_reg = ctx->regs[def][1];
4318 ir_reg op2_reg = ctx->regs[def][2];
4319 ir_reg op3_reg = ctx->regs[def][3];
4356 static void ir_emit_va_arg(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4362 ir_reg def_reg = ctx->regs[def][0];
4363 ir_reg op2_reg = ctx->regs[def][2];
4364 ir_reg tmp_reg = ctx->regs[def][3];
4383 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4384 ir_emit_store(ctx, type, def, def_reg);
4390 ir_reg def_reg = ctx->regs[def][0];
4391 ir_reg op2_reg = ctx->regs[def][2];
4392 ir_reg tmp_reg = ctx->regs[def][3];
4442 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4443 ir_emit_store(ctx, type, def, def_reg);
4448 static void ir_emit_switch(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
4495 op1_reg = ctx->regs[def][1];
4496 op2_reg = ctx->regs[def][2];
4497 tmp_reg = ctx->regs[def][3];
4658 static int32_t ir_emit_arguments(ir_ctx *ctx, ir_ref def, ir_insn *insn, ir_reg tmp_reg)
4721 src_reg = ir_get_alocated_reg(ctx, def, j);
4787 src_reg = ir_get_alocated_reg(ctx, def, j);
4852 static void ir_emit_call_ex(ir_ctx *ctx, ir_ref def, ir_insn *insn, int32_t used_stack)
4868 ir_reg op2_reg = ctx->regs[def][2];
4885 def_reg = IR_REG_NUM(ctx->regs[def][0]);
4890 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4891 ir_emit_store(ctx, insn->type, def, def_reg);
4893 } else if (ctx->use_lists[def].count > 1) {
4894 ir_emit_store(ctx, insn->type, def, IR_REG_INT_RET1);
4898 def_reg = IR_REG_NUM(ctx->regs[def][0]);
4903 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4904 ir_emit_store(ctx, insn->type, def, def_reg);
4906 } else if (ctx->use_lists[def].count > 1) {
4907 ir_emit_store(ctx, insn->type, def, IR_REG_FP_RET1);
4913 static void ir_emit_call(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4915 int32_t used_stack = ir_emit_arguments(ctx, def, insn, ctx->regs[def][1]);
4916 ir_emit_call_ex(ctx, def, insn, used_stack);
4919 static void ir_emit_tailcall(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4923 int32_t used_stack = ir_emit_arguments(ctx, def, insn, ctx->regs[def][1]);
4926 ir_emit_call_ex(ctx, def, insn, used_stack);
4943 ir_reg op2_reg = ctx->regs[def][2];
4954 static void ir_emit_ijmp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4958 ir_reg op2_reg = ctx->regs[def][2];
4980 static void ir_emit_guard(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4984 ir_reg op2_reg = ctx->regs[def][2];
5126 static void ir_emit_guard_cmp_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
5189 static void ir_emit_guard_cmp_fp(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
5200 static void ir_emit_guard_overflow(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5231 static void ir_emit_tls(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5236 ir_reg reg = IR_REG_NUM(ctx->regs[def][0]);
5238 if (ctx->use_lists[def].count == 1) {
5273 if (IR_REG_SPILLED(ctx->regs[def][0])) {
5274 ir_emit_store(ctx, IR_ADDR, def, reg);
5278 static void ir_emit_exitcall(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5282 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
5343 if (IR_REG_SPILLED(ctx->regs[def][0])) {
5344 ir_emit_store(ctx, insn->type, def, def_reg);