/php-src/Zend/Optimizer/ |
H A D | zend_ssa.h | 181 ssa_op->op1_def = -1; in zend_ssa_remove_op1_def() 188 ssa_op->op2_def = -1; in zend_ssa_remove_op2_def() 195 ssa_op += use; in END_EXTERN_C() 226 return ssa_op->op1_use == var && ssa_op->op2_use != var; in zend_ssa_is_no_val_use() 229 return ssa_op->op2_use == var && ssa_op->op1_use != var; in zend_ssa_is_no_val_use() 234 return ssa_op->op1_use != var && ssa_op->op2_use != var; in zend_ssa_is_no_val_use() 243 zend_ssa_rename_var_uses(ssa, ssa_op->op1_def, ssa_op->op1_use, 1); in zend_ssa_rename_defs_of_instr() 246 ssa_op->op1_def = -1; in zend_ssa_rename_defs_of_instr() 250 zend_ssa_rename_var_uses(ssa, ssa_op->op2_def, ssa_op->op2_use, 1); in zend_ssa_rename_defs_of_instr() 253 ssa_op->op2_def = -1; in zend_ssa_rename_defs_of_instr() [all …]
|
H A D | zend_inference.h | 48 ssa_op->opN##_use >= 0 && \ 49 ssa->var_info[ssa_op->opN##_use].has_range); \ 64 ssa_op->opN##_use >= 0 && \ 65 ssa->var_info[ssa_op->opN##_use].has_range) { \ 81 ssa_op->opN##_use >= 0 && \ 98 ssa_op->opN##_use >= 0 && \ 115 ssa_op->opN##_use >= 0 && \ 200 #define OP1_DATA_INFO() (_ssa_op1_info(op_array, ssa, (opline+1), ssa_op ? (ssa_op+1) : NULL)) in DEFINE_SSA_OP_INFO() 201 #define OP2_DATA_INFO() (_ssa_op2_info(op_array, ssa, (opline+1), ssa_op ? (ssa_op+1) : NULL)) in DEFINE_SSA_OP_INFO() 205 #define OP1_DATA_DEF_INFO() (_ssa_op1_def_info(op_array, ssa, (opline+1), ssa_op ? (ssa_op+1) : NU… in DEFINE_SSA_OP_INFO() [all …]
|
H A D | ssa_integrity.c | 47 || (ssa_op->op2_use == check) in is_used_by_op() 54 || (ssa_op->op2_def == check) in is_defined_by_op() 211 if (ssa_op->op1_use < 0 && ssa_op->op1_def < 0) { in ssa_verify_integrity() 215 if (ssa_op->op1_use >= 0 || ssa_op->op1_def >= 0) { in ssa_verify_integrity() 220 if (ssa_op->op2_use < 0 && ssa_op->op2_def < 0) { in ssa_verify_integrity() 224 if (ssa_op->op2_use >= 0 || ssa_op->op2_def >= 0) { in ssa_verify_integrity() 229 if (ssa_op->result_use < 0 && ssa_op->result_def < 0) { in ssa_verify_integrity() 233 if (ssa_op->result_use >= 0 || ssa_op->result_def >= 0) { in ssa_verify_integrity() 238 if (ssa_op->op1_use >= 0) { in ssa_verify_integrity() 255 if (ssa_op->op2_use >= 0) { in ssa_verify_integrity() [all …]
|
H A D | dce.c | 186 if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def)) { in may_have_side_effects() 217 return is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def); in may_have_side_effects() 219 return is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def) in may_have_side_effects() 223 if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def) in may_have_side_effects() 229 ssa_op++; in may_have_side_effects() 241 if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def) in may_have_side_effects() 298 if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op1_use) in add_operands_to_worklists() 307 if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op2_use) in add_operands_to_worklists() 428 if (!try_remove_var_def(ctx, ssa_op->op1_use, ssa_op->op1_use_chain, opline)) { in dce_instr() 507 if (ssa_op->op1_def >= 0 in may_break_varargs() [all …]
|
H A D | zend_inference.c | 1450 if (ssa_op->op1_def == var || ssa_op->op2_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range() 1468 ssa_op++; in zend_inference_propagate_range() 2539 ssa_op--; in _zend_update_type_info() 2650 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info() 2696 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info() 2981 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info() 3010 ssa_op++; in _zend_update_type_info() 3031 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info() 3044 ssa_op++; in _zend_update_type_info() 3059 ssa_op++; in _zend_update_type_info() [all …]
|
H A D | sccp.c | 294 if (ssa_op->op1_use == var && can_replace_op1(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op1() 1228 ssa_op++; in sccp_visit_instr() 1662 if (ssa_op->result_def < 0 || IS_BOT(&ctx->values[ssa_op->result_def])) { in sccp_visit_instr() 1721 if (ssa_op->result_def < 0 || IS_BOT(&ctx->values[ssa_op->result_def])) { in sccp_visit_instr() 2142 if (ssa_op->op1_def >= 0 || ssa_op->op2_def >= 0) { in try_remove_definition() 2276 if ((ssa_op->op2_use >= 0 && !value_known(&ctx->values[ssa_op->op2_use])) in try_remove_definition() 2320 if (ssa_op->op2_use != ssa_op->op1_use) { in try_remove_definition() 2354 zend_ssa_rename_var_uses(ssa, ssa_op->op1_def, ssa_op->op1_use, 1); in try_remove_definition() 2412 if (ssa_op->op1_use != ssa_op->op2_use) { in replace_constant_operands() 2415 ssa_op->op2_use_chain = ssa_op->op1_use_chain; in replace_constant_operands() [all …]
|
H A D | zend_ssa.c | 1284 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->result_use); in zend_ssa_remove_instr() 1289 if (ssa_op->op1_use != ssa_op->op2_use) { in zend_ssa_remove_instr() 1290 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op1_use); in zend_ssa_remove_instr() 1292 ssa_op->op2_use_chain = ssa_op->op1_use_chain; in zend_ssa_remove_instr() 1294 ssa_op->op1_use = -1; in zend_ssa_remove_instr() 1298 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op2_use); in zend_ssa_remove_instr() 1299 ssa_op->op2_use = -1; in zend_ssa_remove_instr() 1439 ssa_op->op1_use = -1; in zend_ssa_remove_uses_of_var() 1619 ssa_op->res_use_chain = ssa_op->op1_use_chain; in zend_ssa_rename_var_uses() 1625 ssa_op->res_use_chain = ssa_op->op2_use_chain; in zend_ssa_rename_var_uses() [all …]
|
H A D | scdf.c | 124 zend_ssa_op *ssa_op = &ssa->ops[i]; in scdf_solve() local 127 ssa_op--; in scdf_solve() 129 scdf->handlers.visit_instr(scdf, opline, ssa_op); in scdf_solve() 134 scdf->handlers.mark_feasible_successors(scdf, block_num, block, opline, ssa_op); in scdf_solve() 188 scdf_ctx *scdf, const zend_op *opline, const zend_ssa_op *ssa_op) { in is_live_loop_var_free() argument 193 int var = ssa_op->op1_use; in is_live_loop_var_free() 238 zend_ssa_op *ssa_op = &scdf->ssa->ops[i]; in cleanup_loop_var_free_block() local 240 || is_live_loop_var_free(scdf, opline, ssa_op)) { in cleanup_loop_var_free_block() 246 zend_ssa_remove_defs_of_instr(ssa, ssa_op); in cleanup_loop_var_free_block() 247 zend_ssa_remove_instr(ssa, opline, ssa_op); in cleanup_loop_var_free_block()
|
H A D | escape_analysis.c | 152 zend_ssa_op *ssa_op = ssa->ops + def; in is_allocation_def() local 155 if (ssa_op->result_def == var) { in is_allocation_def() 197 } else if (ssa_op->op1_def == var) { in is_allocation_def() 273 zend_ssa_op *ssa_op = ssa->ops + use; in is_escape_use() local 276 if (ssa_op->op1_use == var) { in is_escape_use() 331 ssa_op--; in is_escape_use() 334 || (ssa_op->op1_def >= 0 && ssa->vars[ssa_op->op1_def].alias)) { in is_escape_use() 345 if (ssa_op->op2_use == var) { in is_escape_use() 350 || (ssa_op->op1_def >= 0 && ssa->vars[ssa_op->op1_def].alias)) { in is_escape_use() 366 if (ssa_op->result_use == var) { in is_escape_use()
|
H A D | dfa_pass.c | 387 if ((ssa_op->op1_def >= 0 && ssa->vars[ssa_op->op1_def].var == var) || in variable_defined_or_used_in_range() 388 (ssa_op->op2_def >= 0 && ssa->vars[ssa_op->op2_def].var == var) || in variable_defined_or_used_in_range() 389 (ssa_op->result_def >= 0 && ssa->vars[ssa_op->result_def].var == var) || in variable_defined_or_used_in_range() 390 (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].var == var) || in variable_defined_or_used_in_range() 391 (ssa_op->op2_use >= 0 && ssa->vars[ssa_op->op2_use].var == var) || in variable_defined_or_used_in_range() 392 (ssa_op->result_use >= 0 && ssa->vars[ssa_op->result_use].var == var) in variable_defined_or_used_in_range() 484 ssa_op->op1_use = -1; in zend_dfa_optimize_calls() 769 zend_ssa_op *ssa_op; in zend_dfa_optimize_jmps() local 783 ssa_op = ssa->ops + op_num; in zend_dfa_optimize_jmps() 1104 zend_ssa_op *ssa_op; in zend_dfa_optimize_op_array() local [all …]
|
H A D | zend_dump.c | 448 if (!ssa_op || ssa_op->result_use < 0) { in zend_dump_op() 450 if (ssa_op && ssa_op->result_def >= 0) { in zend_dump_op() 625 if (ssa_op) { in zend_dump_op() 630 } else if (ssa_op->op1_def < 0) { in zend_dump_op() 638 if (ssa_op) { in zend_dump_op() 686 if (ssa_op) { in zend_dump_op() 699 if (ssa_op) { in zend_dump_op() 736 } else if (ssa_op && ssa_op->result_use >= 0) { in zend_dump_op() 738 if (ssa_op) { in zend_dump_op() 748 if (ssa_op) { in zend_dump_op() [all …]
|
H A D | scdf.h | 40 struct _scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op); 45 zend_op *opline, zend_ssa_op *ssa_op);
|
H A D | zend_dump.h | 37 …ck *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op);
|
H A D | zend_optimizer.c | 1352 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_redo_pass_two_ex() local 1439 if (ssa_op->op1_use >= 0) { in zend_redo_pass_two_ex() 1440 opline->op1_use_type = ssa->var_info[ssa_op->op1_use].type; in zend_redo_pass_two_ex() 1442 if (ssa_op->op2_use >= 0) { in zend_redo_pass_two_ex() 1443 opline->op2_use_type = ssa->var_info[ssa_op->op2_use].type; in zend_redo_pass_two_ex() 1445 if (ssa_op->result_use >= 0) { in zend_redo_pass_two_ex() 1448 if (ssa_op->op1_def >= 0) { in zend_redo_pass_two_ex() 1449 opline->op1_def_type = ssa->var_info[ssa_op->op1_def].type; in zend_redo_pass_two_ex() 1451 if (ssa_op->op2_def >= 0) { in zend_redo_pass_two_ex() 1454 if (ssa_op->result_def >= 0) { in zend_redo_pass_two_ex() [all …]
|
/php-src/ext/opcache/jit/ |
H A D | zend_jit_trace.c | 2971 zend_jit_trace_use_var(idx, ssa_op->op1_use, ssa_op->op1_def, ssa_op->op1_use_chain, in zend_jit_trace_allocate_registers() 2997 && ssa_op->op2_use != ssa_op->op1_use in zend_jit_trace_allocate_registers() 3003 zend_jit_trace_use_var(idx, ssa_op->op2_use, ssa_op->op2_def, ssa_op->op2_use_chain, in zend_jit_trace_allocate_registers() 3012 && ssa_op->result_use != ssa_op->op1_use in zend_jit_trace_allocate_registers() 3013 && ssa_op->result_use != ssa_op->op2_use in zend_jit_trace_allocate_registers() 3107 zend_jit_trace_use_var(idx, ssa_op->op1_use, ssa_op->op1_def, ssa_op->op1_use_chain, in zend_jit_trace_allocate_registers() 3392 && ssa_op->op2_use != ssa_op->op1_use in zend_jit_trace_cleanup_stack() 3400 && ssa_op->result_use != ssa_op->op1_use in zend_jit_trace_cleanup_stack() 3401 && ssa_op->result_use != ssa_op->op2_use in zend_jit_trace_cleanup_stack() 3823 if ((ssa_op-1)->op1_def == ssa_op->op2_use) { in zend_jit_may_skip_comparison() [all …]
|
H A D | zend_jit.c | 251 if (ssa_op) ssa_op += offset; \ 261 ADVANCE_SSA_OP(ssa_op, 1); in zend_jit_needs_call_chain() 331 ADVANCE_SSA_OP(ssa_op, 1); in zend_jit_needs_call_chain() 394 ADVANCE_SSA_OP(ssa_op, 1); in zend_jit_needs_call_chain() 408 ADVANCE_SSA_OP(ssa_op, 1); in zend_jit_needs_call_chain() 434 ADVANCE_SSA_OP(ssa_op, 1); in zend_jit_needs_call_chain() 879 res = ssa_op->op1_def; in zend_may_overflow() 894 res = ssa_op->op1_def; in zend_may_overflow() 969 res = ssa_op->op1_def; in zend_may_overflow() 996 res = ssa_op->op1_def; in zend_may_overflow() [all …]
|
H A D | zend_jit_internal.h | 80 #define OP_REG_ADDR(opline, ssa_op, type, op, _ssa_op) \ argument 81 ((ctx.ra && (ssa_op)->_ssa_op >= 0 && ctx.ra[(ssa_op)->_ssa_op].ref) ? \ 82 ZEND_ADDR_REG((ssa_op)->_ssa_op) : \ 95 OP_REG_ADDR(opline, ssa_op, op1_type, op1, op1_use) 97 OP_REG_ADDR(opline, ssa_op, op2_type, op2, op2_use) 99 OP_REG_ADDR(opline, ssa_op, result_type, result, result_def) 101 OP_REG_ADDR(opline + 1, ssa_op + 1, op1_type, op1, op1_use) 104 OP_REG_ADDR(opline, ssa_op, op1_type, op1, op1_def) 106 OP_REG_ADDR(opline, ssa_op, op2_type, op2, op2_def) 108 OP_REG_ADDR(opline, ssa_op, result_type, result, result_use) [all …]
|
H A D | zend_jit_ir.c | 9316 if (ssa->var_info && ssa_op->op2_use >= 0) { 12443 && (ssa_op+1)->op1_use == ssa_op->result_def 14190 if (ssa->var_info && ssa_op->op1_use >= 0) { 14192 ssa->var_info[ssa_op->op1_use].ce = ce; 14513 && (ssa_op+1)->op1_use == ssa_op->result_def 14695 ssa->var_info[ssa_op->op1_use].ce = ce; 14700 ssa->var_info[ssa_op->op1_def].ce = ce; 15045 ssa->var_info[ssa_op->op1_use].ce = ce; 15050 ssa->var_info[ssa_op->op1_def].ce = ce; 15468 ssa->var_info[ssa_op->op1_use].ce = ce; [all …]
|