Lines Matching refs:def

1788 static void ir_emit_binop_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
1795 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
1796 ir_reg op1_reg = ctx->regs[def][1];
1797 ir_reg op2_reg = ctx->regs[def][2];
1834 tmp_reg = ctx->regs[def][3];
1840 tmp_reg = ctx->regs[def][3];
1848 tmp_reg = ctx->regs[def][3];
1867 tmp_reg = ctx->regs[def][3];
1932 if (IR_REG_SPILLED(ctx->regs[def][0])) {
1933 ir_emit_store(ctx, type, def, def_reg);
1937 static void ir_emit_min_max_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
1944 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
1945 ir_reg op1_reg = ctx->regs[def][1];
1946 ir_reg op2_reg = ctx->regs[def][2];
1997 if (IR_REG_SPILLED(ctx->regs[def][0])) {
1998 ir_emit_store(ctx, type, def, def_reg);
2002 static void ir_emit_overflow(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2006 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2019 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2020 ir_emit_store(ctx, insn->type, def, def_reg);
2024 static void ir_emit_overflow_and_branch(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_…
2067 static void ir_emit_reg_binop_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2134 static void ir_emit_mul_div_mod_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2140 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2141 ir_reg op1_reg = ctx->regs[def][1];
2166 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2167 ir_emit_store(ctx, type, def, def_reg);
2171 static void ir_emit_sdiv_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2177 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2178 ir_reg op1_reg = ctx->regs[def][1];
2179 ir_reg op2_reg = ctx->regs[def][2];
2224 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2225 ir_emit_store(ctx, type, def, def_reg);
2229 static void ir_emit_smod_pwr2(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2235 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2236 ir_reg op1_reg = ctx->regs[def][1];
2237 ir_reg tmp_reg = ctx->regs[def][3];
2269 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2270 ir_emit_store(ctx, type, def, def_reg);
2274 static void ir_emit_shift(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2279 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2280 ir_reg op1_reg = ctx->regs[def][1];
2281 ir_reg op2_reg = ctx->regs[def][2];
2330 tmp_reg = ctx->regs[def][3];
2355 tmp_reg = ctx->regs[def][3];
2363 tmp_reg = ctx->regs[def][3];
2374 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2375 ir_emit_store(ctx, type, def, def_reg);
2379 static void ir_emit_shift_const(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2386 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2387 ir_reg op1_reg = ctx->regs[def][1];
2430 tmp_reg = ctx->regs[def][3];
2434 tmp_reg = ctx->regs[def][3];
2447 tmp_reg = ctx->regs[def][3];
2451 tmp_reg = ctx->regs[def][3];
2459 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2460 ir_emit_store(ctx, type, def, def_reg);
2464 static void ir_emit_op_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2470 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2471 ir_reg op1_reg = ctx->regs[def][1];
2515 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2516 ir_emit_store(ctx, type, def, def_reg);
2520 static void ir_emit_ctpop(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2526 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2527 ir_reg op1_reg = ctx->regs[def][1];
2528 ir_reg tmp_reg = ctx->regs[def][2];
2568 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2569 ir_emit_store(ctx, type, def, def_reg);
2573 static void ir_emit_op_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2579 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2580 ir_reg op1_reg = ctx->regs[def][1];
2604 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2605 ir_emit_store(ctx, insn->type, def, def_reg);
2609 static void ir_emit_binop_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2616 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2617 ir_reg op1_reg = ctx->regs[def][1];
2618 ir_reg op2_reg = ctx->regs[def][2];
2653 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2654 ir_emit_store(ctx, insn->type, def, def_reg);
2721 static void ir_emit_cmp_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2729 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2730 ir_reg op1_reg = ctx->regs[def][1];
2731 ir_reg op2_reg = ctx->regs[def][2];
2752 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2753 ir_emit_store(ctx, insn->type, def, def_reg);
2759 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2760 ir_emit_store(ctx, insn->type, def, def_reg);
2804 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2805 ir_emit_store(ctx, insn->type, def, def_reg);
2852 static void ir_emit_cmp_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
2856 ir_op op = ir_emit_cmp_fp_common(ctx, def, insn);
2857 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
2858 //??? ir_reg tmp_reg = ctx->regs[def][3]; // TODO: take into account vs flag
2895 if (IR_REG_SPILLED(ctx->regs[def][0])) {
2896 ir_emit_store(ctx, insn->type, def, def_reg);
2900 static void ir_emit_jmp_true(ir_ctx *ctx, uint32_t b, ir_ref def, uint32_t next_block)
2912 static void ir_emit_jmp_false(ir_ctx *ctx, uint32_t b, ir_ref def, uint32_t next_block)
2959 static void ir_emit_jcc(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t next_block, ui…
3059 static void ir_emit_cmp_and_branch_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t…
3086 ir_emit_jmp_false(ctx, b, def, next_block);
3090 ir_emit_jmp_true(ctx, b, def, next_block);
3103 ir_emit_jcc(ctx, b, def, insn, next_block, op, 1);
3106 static void ir_emit_cmp_and_branch_fp(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t …
3109 ir_emit_jcc(ctx, b, def, insn, next_block, op, 0);
3112 static void ir_emit_if_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn, uint32_t next_block)
3115 ir_reg op2_reg = ctx->regs[def][2];
3148 ir_emit_jcc(ctx, b, def, insn, next_block, IR_NE, 1);
3151 static void ir_emit_cond(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3160 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3161 ir_reg op1_reg = ctx->regs[def][1];
3162 ir_reg op2_reg = ctx->regs[def][2];
3163 ir_reg op3_reg = ctx->regs[def][3];
3209 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3210 ir_emit_store(ctx, type, def, def_reg);
3254 static void ir_emit_sext(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3260 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3261 ir_reg op1_reg = ctx->regs[def][1];
3322 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3323 ir_emit_store(ctx, dst_type, def, def_reg);
3327 static void ir_emit_zext(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3333 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3334 ir_reg op1_reg = ctx->regs[def][1];
3369 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3370 ir_emit_store(ctx, dst_type, def, def_reg);
3374 static void ir_emit_trunc(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3380 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3381 ir_reg op1_reg = ctx->regs[def][1];
3402 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3403 ir_emit_store(ctx, dst_type, def, def_reg);
3407 static void ir_emit_bitcast(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3413 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3414 ir_reg op1_reg = ctx->regs[def][1];
3499 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3500 ir_emit_store(ctx, dst_type, def, def_reg);
3504 static void ir_emit_int2fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3510 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3511 ir_reg op1_reg = ctx->regs[def][1];
3564 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3565 ir_emit_store(ctx, dst_type, def, def_reg);
3569 static void ir_emit_fp2int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3575 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3576 ir_reg op1_reg = ctx->regs[def][1];
3618 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3619 ir_emit_store(ctx, dst_type, def, def_reg);
3623 static void ir_emit_fp2fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3629 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3630 ir_reg op1_reg = ctx->regs[def][1];
3649 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3650 ir_emit_store(ctx, dst_type, def, def_reg);
3654 static void ir_emit_copy_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3657 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3658 ir_reg op1_reg = ctx->regs[def][1];
3672 ir_emit_store(ctx, type, def, op1_reg);
3676 if (def_reg != IR_REG_NONE && IR_REG_SPILLED(ctx->regs[def][0])) {
3677 ir_emit_store(ctx, type, def, def_reg);
3681 static void ir_emit_copy_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3684 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3685 ir_reg op1_reg = ctx->regs[def][1];
3699 ir_emit_store(ctx, type, def, op1_reg);
3703 if (def_reg != IR_REG_NONE && IR_REG_SPILLED(ctx->regs[def][0])) {
3704 ir_emit_store(ctx, type, def, def_reg);
3708 static void ir_emit_vaddr(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3713 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3720 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3721 ir_emit_store(ctx, type, def, def_reg);
3725 static void ir_emit_vload(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3729 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3738 if (def_reg == IR_REG_NONE && ir_is_same_mem_var(ctx, def, var_insn->op3)) {
3743 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3744 ir_emit_store(ctx, type, def, def_reg);
3810 static void ir_emit_load_int(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3813 ir_reg op2_reg = ctx->regs[def][2];
3814 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3817 if (ctx->use_lists[def].count == 1) {
3835 mem = ir_fuse_addr(ctx, def, insn->op2);
3836 if (IR_REG_SPILLED(ctx->regs[def][0]) && ir_is_same_spill_slot(ctx, def, mem)) {
3837 if (!ir_may_avoid_spill_load(ctx, def, def)) {
3845 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3846 ir_emit_store(ctx, type, def, def_reg);
3850 static void ir_emit_load_fp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3853 ir_reg op2_reg = ctx->regs[def][2];
3854 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3857 if (ctx->use_lists[def].count == 1) {
3875 mem = ir_fuse_addr(ctx, def, insn->op2);
3876 if (IR_REG_SPILLED(ctx->regs[def][0]) && ir_is_same_spill_slot(ctx, def, mem)) {
3877 if (!ir_may_avoid_spill_load(ctx, def, def)) {
3885 if (IR_REG_SPILLED(ctx->regs[def][0])) {
3886 ir_emit_store(ctx, type, def, def_reg);
3971 static void ir_emit_rload(ir_ctx *ctx, ir_ref def, ir_insn *insn)
3977 if (ctx->vregs[def]
3978 && ctx->live_intervals[ctx->vregs[def]]
3979 && ctx->live_intervals[ctx->vregs[def]]->stack_spill_pos != -1) {
3980 ir_emit_store(ctx, type, def, src_reg);
3983 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
3989 if (!insn->op3 || !ir_is_same_spill_slot(ctx, def, IR_MEM_BO(ctx->spill_base, insn->op3))) {
3990 ir_emit_store(ctx, type, def, src_reg);
4001 if (IR_REG_SPILLED(ctx->regs[def][0])
4002 && (!insn->op3 || !ir_is_same_spill_slot(ctx, def, IR_MEM_BO(ctx->spill_base, insn->op3)))) {
4003 ir_emit_store(ctx, type, def, def_reg);
4033 static void ir_emit_alloca(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4037 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4039 if (ctx->use_lists[def].count == 1) {
4064 ir_reg op2_reg = ctx->regs[def][2];
4080 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4081 ir_emit_store(ctx, insn->type, def, def_reg);
4084 ir_emit_store(ctx, IR_ADDR, def, IR_REG_STACK_POINTER);
4088 static void ir_emit_afree(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4109 ir_reg op2_reg = ctx->regs[def][2];
4125 static void ir_emit_block_begin(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4129 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4133 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4134 ir_emit_store(ctx, IR_ADDR, def, def_reg);
4138 static void ir_emit_block_end(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4142 ir_reg op2_reg = ctx->regs[def][2];
4153 static void ir_emit_frame_addr(ir_ctx *ctx, ir_ref def)
4157 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
4164 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4165 ir_emit_store(ctx, IR_ADDR, def, def_reg);
4169 static void ir_emit_va_start(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4176 ir_reg op2_reg = ctx->regs[def][2];
4177 ir_reg tmp_reg = ctx->regs[def][3];
4208 ir_reg op2_reg = ctx->regs[def][2];
4209 ir_reg tmp_reg = ctx->regs[def][3];
4269 static void ir_emit_va_copy(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4274 ir_reg tmp_reg = ctx->regs[def][1];
4275 ir_reg op2_reg = ctx->regs[def][2];
4276 ir_reg op3_reg = ctx->regs[def][3];
4307 ir_reg tmp_reg = ctx->regs[def][1];
4308 ir_reg op2_reg = ctx->regs[def][2];
4309 ir_reg op3_reg = ctx->regs[def][3];
4346 static void ir_emit_va_arg(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4352 ir_reg def_reg = ctx->regs[def][0];
4353 ir_reg op2_reg = ctx->regs[def][2];
4354 ir_reg tmp_reg = ctx->regs[def][3];
4373 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4374 ir_emit_store(ctx, type, def, def_reg);
4380 ir_reg def_reg = ctx->regs[def][0];
4381 ir_reg op2_reg = ctx->regs[def][2];
4382 ir_reg tmp_reg = ctx->regs[def][3];
4432 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4433 ir_emit_store(ctx, type, def, def_reg);
4438 static void ir_emit_switch(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
4485 op1_reg = ctx->regs[def][1];
4486 op2_reg = ctx->regs[def][2];
4487 tmp_reg = ctx->regs[def][3];
4648 static int32_t ir_emit_arguments(ir_ctx *ctx, ir_ref def, ir_insn *insn, ir_reg tmp_reg)
4711 src_reg = ir_get_alocated_reg(ctx, def, j);
4777 src_reg = ir_get_alocated_reg(ctx, def, j);
4842 static void ir_emit_call_ex(ir_ctx *ctx, ir_ref def, ir_insn *insn, int32_t used_stack)
4858 ir_reg op2_reg = ctx->regs[def][2];
4875 def_reg = IR_REG_NUM(ctx->regs[def][0]);
4880 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4881 ir_emit_store(ctx, insn->type, def, def_reg);
4883 } else if (ctx->use_lists[def].count > 1) {
4884 ir_emit_store(ctx, insn->type, def, IR_REG_INT_RET1);
4888 def_reg = IR_REG_NUM(ctx->regs[def][0]);
4893 if (IR_REG_SPILLED(ctx->regs[def][0])) {
4894 ir_emit_store(ctx, insn->type, def, def_reg);
4896 } else if (ctx->use_lists[def].count > 1) {
4897 ir_emit_store(ctx, insn->type, def, IR_REG_FP_RET1);
4903 static void ir_emit_call(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4905 int32_t used_stack = ir_emit_arguments(ctx, def, insn, ctx->regs[def][1]);
4906 ir_emit_call_ex(ctx, def, insn, used_stack);
4909 static void ir_emit_tailcall(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4913 int32_t used_stack = ir_emit_arguments(ctx, def, insn, ctx->regs[def][1]);
4916 ir_emit_call_ex(ctx, def, insn, used_stack);
4933 ir_reg op2_reg = ctx->regs[def][2];
4944 static void ir_emit_ijmp(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4948 ir_reg op2_reg = ctx->regs[def][2];
4970 static void ir_emit_guard(ir_ctx *ctx, ir_ref def, ir_insn *insn)
4974 ir_reg op2_reg = ctx->regs[def][2];
5116 static void ir_emit_guard_cmp_int(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
5179 static void ir_emit_guard_cmp_fp(ir_ctx *ctx, uint32_t b, ir_ref def, ir_insn *insn)
5190 static void ir_emit_guard_overflow(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5221 static void ir_emit_tls(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5226 ir_reg reg = IR_REG_NUM(ctx->regs[def][0]);
5228 if (ctx->use_lists[def].count == 1) {
5255 if (IR_REG_SPILLED(ctx->regs[def][0])) {
5256 ir_emit_store(ctx, IR_ADDR, def, reg);
5260 static void ir_emit_exitcall(ir_ctx *ctx, ir_ref def, ir_insn *insn)
5264 ir_reg def_reg = IR_REG_NUM(ctx->regs[def][0]);
5325 if (IR_REG_SPILLED(ctx->regs[def][0])) {
5326 ir_emit_store(ctx, insn->type, def, def_reg);