mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-07 09:17:29 +00:00
Use "lea" to add/sub register with constant
This commit is contained in:
1 parent
a459799910
commit
77d0587fdb
1 file changed
+15
@@ -3826,6 +3826,21 @@ static int zend_jit_math_long_long(dasm_State **Dst,
|
||||
is_power_of_two(Z_LVAL_P(Z_ZV(op2_addr))))) {
|
||||
| GET_ZVAL_LVAL result_reg, op1_addr
|
||||
| shr Ra(result_reg), floor_log2(Z_LVAL_P(Z_ZV(op2_addr)))
|
||||
} else if (opcode == ZEND_ADD &&
|
||||
!may_overflow &&
|
||||
Z_MODE(op1_addr) == IS_REG &&
|
||||
Z_MODE(op2_addr) == IS_CONST_ZVAL) {
|
||||
| lea Ra(result_reg), [Ra(Z_REG(op1_addr))+Z_LVAL_P(Z_ZV(op2_addr))]
|
||||
} else if (opcode == ZEND_ADD &&
|
||||
!may_overflow &&
|
||||
Z_MODE(op2_addr) == IS_REG &&
|
||||
Z_MODE(op1_addr) == IS_CONST_ZVAL) {
|
||||
| lea Ra(result_reg), [Ra(Z_REG(op2_addr))+Z_LVAL_P(Z_ZV(op1_addr))]
|
||||
} else if (opcode == ZEND_SUB &&
|
||||
!may_overflow &&
|
||||
Z_MODE(op1_addr) == IS_REG &&
|
||||
Z_MODE(op2_addr) == IS_CONST_ZVAL) {
|
||||
| lea Ra(result_reg), [Ra(Z_REG(op1_addr))-Z_LVAL_P(Z_ZV(op2_addr))]
|
||||
} else {
|
||||
| GET_ZVAL_LVAL result_reg, op1_addr
|
||||
if (same_ops && opcode != ZEND_DIV) {
|
||||
|
||||
Reference in new issue
Block a user