]> granicus.if.org Git - php/commitdiff
Fixed IS_32BIT/IS_SIGNED_32BIT mess
authorDmitry Stogov <dmitry@zend.com>
Wed, 9 Dec 2020 14:16:54 +0000 (17:16 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 9 Dec 2020 14:16:54 +0000 (17:16 +0300)
ext/opcache/jit/zend_jit_x86.dasc

index c2e261df34cc9aee3d0fa32a4e5b6b9c07916404..ff70f96ba5f977b74a1f1d3ef71426b4f15c24fa 100644 (file)
@@ -165,7 +165,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.section code, cold_code, jmp_table
 
-#define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff)
+#define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0x7fffffff)
 
 #define IS_SIGNED_32BIT(val) ((((intptr_t)(val)) <= 0x7fffffff) && (((intptr_t)(val)) >= (-2147483647 - 1)))
 
@@ -188,7 +188,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro LOAD_ADDR, reg, addr
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      mov reg, ((ptrdiff_t)addr)    // 0x48 0xc7 0xc0 <imm-32-bit>
 ||             } else {
 |                      mov64 reg, ((ptrdiff_t)addr)  // 0x48 0xb8 <imm-64-bit>
@@ -249,7 +249,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro ADDR_OP1, addr_ins, addr, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      addr_ins ((ptrdiff_t)addr)
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -262,7 +262,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro ADDR_OP2_2, addr_ins, op1, addr, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      addr_ins op1, ((ptrdiff_t)addr)
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -289,7 +289,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro MEM_OP1, mem_ins, prefix, addr, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      mem_ins prefix [addr]
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -302,7 +302,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro MEM_OP2_1, mem_ins, prefix, addr, op2, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      mem_ins prefix [addr], op2
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -315,7 +315,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro MEM_OP2_2, mem_ins, op1, prefix, addr, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      mem_ins op1, prefix [addr]
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -346,7 +346,7 @@ static void* dasm_labels[zend_lb_MAX];
 
 |.macro MEM_OP3_3, mem_ins, op1, op2, prefix, addr, tmp_reg
 |      .if X64
-||             if (IS_32BIT(addr)) {
+||             if (IS_SIGNED_32BIT(addr)) {
 |                      mem_ins op1, op2, prefix [addr]
 ||             } else {
 |                      mov64 tmp_reg, ((ptrdiff_t)addr)
@@ -581,7 +581,7 @@ static void* dasm_labels[zend_lb_MAX];
 |.macro SSE_AVX_OP, sse_ins, avx_ins, reg, addr
 ||     if (Z_MODE(addr) == IS_CONST_ZVAL) {
 |              .if X64
-||                     if (IS_32BIT(Z_ZV(addr))) {
+||                     if (IS_SIGNED_32BIT(Z_ZV(addr))) {
 |                              SSE_AVX_INS sse_ins, avx_ins, xmm(reg-ZREG_XMM0), qword [Z_ZV(addr)]
 ||                     } else {
 |                              LOAD_ADDR r0, Z_ZV(addr)
@@ -654,7 +654,7 @@ static void* dasm_labels[zend_lb_MAX];
 ||     if (Z_MODE(addr) != IS_REG || reg != Z_REG(addr)) {
 ||             if (Z_MODE(addr) == IS_CONST_ZVAL) {
 |                      .if X64
-||                             if (IS_32BIT(Z_ZV(addr))) {
+||                             if (IS_SIGNED_32BIT(Z_ZV(addr))) {
 |                                      SSE_AVX_INS movsd, vmovsd, xmm(reg-ZREG_XMM0), qword [Z_ZV(addr)]
 ||                             } else {
 |                                      LOAD_ADDR r0, Z_ZV(addr)
@@ -924,7 +924,7 @@ static void* dasm_labels[zend_lb_MAX];
 |                                      xorps xmm(dst_reg-ZREG_XMM0), xmm(dst_reg-ZREG_XMM0)
 ||                             }
 |                      .if X64
-||                     } else if (!IS_32BIT(zv)) {
+||                     } else if (!IS_SIGNED_32BIT(zv)) {
 |                              mov64 Ra(tmp_reg), ((uintptr_t)zv)
 |                              SSE_AVX_INS movsd, vmovsd, xmm(dst_reg-ZREG_XMM0), qword [Ra(tmp_reg)]
 |                      .endif
@@ -978,7 +978,7 @@ static void* dasm_labels[zend_lb_MAX];
 |                                      xorps xmm(dst_reg-ZREG_XMM0), xmm(dst_reg-ZREG_XMM0)
 ||                             }
 |                      .if X64
-||                     } else if (!IS_32BIT(zv)) {
+||                     } else if (!IS_SIGNED_32BIT(zv)) {
 |                              mov64 Ra(tmp_reg), ((uintptr_t)zv)
 |                              SSE_AVX_INS movsd, vmovsd, xmm(dst_reg-ZREG_XMM0), qword [Ra(tmp_reg)]
 |                      .endif
@@ -3130,7 +3130,7 @@ static int zend_jit_trace_begin(dasm_State **Dst, uint32_t trace_num, zend_jit_t
 #if ZTS
        if (1) {
 #else
-       if ((sizeof(void*) == 8 && !IS_32BIT(&EG(jit_trace_num)))) {
+       if ((sizeof(void*) == 8 && !IS_SIGNED_32BIT(&EG(jit_trace_num)))) {
 #endif
                /* assignment to EG(jit_trace_num) shouldn't clober CPU register used by deoptimizer */
                if (parent) {
@@ -6053,7 +6053,7 @@ static int zend_jit_assign_to_variable(dasm_State    **Dst,
                                                        zval *zv = Z_ZV(val_addr);
 
                                                        if (Z_TYPE_P(zv) == IS_DOUBLE) {
-                                                               if (Z_DVAL_P(zv) == 0 || IS_32BIT(zv)) {
+                                                               if (Z_DVAL_P(zv) == 0 || IS_SIGNED_32BIT(zv)) {
                                                                        keep_gc = 1;
                                                                }
                                                        } else if (IS_SIGNED_32BIT(Z_LVAL_P(zv))) {
@@ -15331,7 +15331,7 @@ static zend_bool zend_needs_extra_reg_for_const(const zend_op *opline, zend_ucha
 |.if X64
 ||     if (op_type == IS_CONST) {
 ||             zval *zv = RT_CONSTANT(opline, op);
-||             if (Z_TYPE_P(zv) == IS_DOUBLE && Z_DVAL_P(zv) != 0 && !IS_32BIT(zv)) {
+||             if (Z_TYPE_P(zv) == IS_DOUBLE && Z_DVAL_P(zv) != 0 && !IS_SIGNED_32BIT(zv)) {
 ||                     return 1;
 ||             } else if (Z_TYPE_P(zv) == IS_LONG && !IS_SIGNED_32BIT(Z_LVAL_P(zv))) {
 ||                     return 1;
@@ -15676,7 +15676,7 @@ static zend_regset zend_jit_get_scratch_regset(const zend_op *opline, const zend
 #if ZTS
                        ZEND_REGSET_INCL(regset, ZREG_R0);
 #else
-                       if ((sizeof(void*) == 8 && !IS_32BIT(&EG(vm_interrupt)))) {
+                       if ((sizeof(void*) == 8 && !IS_SIGNED_32BIT(&EG(vm_interrupt)))) {
                                ZEND_REGSET_INCL(regset, ZREG_R0);
                        }
 #endif
@@ -15689,7 +15689,7 @@ static zend_regset zend_jit_get_scratch_regset(const zend_op *opline, const zend
 #if ZTS
                        ZEND_REGSET_INCL(regset, ZREG_R0);
 #else
-                       if ((sizeof(void*) == 8 && !IS_32BIT(&EG(vm_interrupt)))) {
+                       if ((sizeof(void*) == 8 && !IS_SIGNED_32BIT(&EG(vm_interrupt)))) {
                                ZEND_REGSET_INCL(regset, ZREG_R0);
                        }
 #endif