From fc2d477c5ba678ffc854f35e86a66a84cea23fad Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 19 Oct 2020 23:22:43 +0300 Subject: [PATCH] Avoid partial register stall --- ext/opcache/jit/zend_jit_x86.dasc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index bff24c4138..3166d14f3b 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -602,8 +602,10 @@ static void* dasm_labels[zend_lb_MAX]; | mov r0, lval |.endif || if (JIT_G(opt_flags) & allowed_opt_flags & ZEND_JIT_CPU_AVX) { +| vxorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | vcvtsi2sd, xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), r0 || } else { +| xorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | cvtsi2sd, xmm(reg-ZREG_XMM0), r0 || } || } @@ -614,14 +616,18 @@ static void* dasm_labels[zend_lb_MAX]; | SSE_GET_LONG reg, Z_LVAL_P(Z_ZV(addr)) || } else if (Z_MODE(addr) == IS_MEM_ZVAL) { || if (JIT_G(opt_flags) & allowed_opt_flags & ZEND_JIT_CPU_AVX) { +| vxorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | vcvtsi2sd xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), aword [Ra(Z_REG(addr))+Z_OFFSET(addr)] || } else { +| xorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | cvtsi2sd xmm(reg-ZREG_XMM0), aword [Ra(Z_REG(addr))+Z_OFFSET(addr)] || } || } else if (Z_MODE(addr) == IS_REG) { || if (JIT_G(opt_flags) & allowed_opt_flags & ZEND_JIT_CPU_AVX) { +| vxorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | vcvtsi2sd xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0), Ra(Z_REG(addr)) || } else { +| xorps xmm(reg-ZREG_XMM0), xmm(reg-ZREG_XMM0) | cvtsi2sd xmm(reg-ZREG_XMM0), Ra(Z_REG(addr)) || } || } else { -- 2.40.0