Server IP : 104.21.38.3 / Your IP : 172.69.176.7 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/php/82/src/ext/opcache/jit/ |
Upload File : |
/* +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | https://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [email protected] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov <[email protected]> | +----------------------------------------------------------------------+ */ #ifndef HAVE_JIT_X86_H #define HAVE_JIT_X86_H typedef enum _zend_reg { ZREG_NONE = -1, ZREG_R0, ZREG_R1, ZREG_R2, ZREG_R3, ZREG_R4, ZREG_R5, ZREG_R6, ZREG_R7, #if defined(__x86_64__) || defined(_WIN64) ZREG_R8, ZREG_R9, ZREG_R10, ZREG_R11, ZREG_R12, ZREG_R13, ZREG_R14, ZREG_R15, #endif ZREG_XMM0, ZREG_XMM1, ZREG_XMM2, ZREG_XMM3, ZREG_XMM4, ZREG_XMM5, ZREG_XMM6, ZREG_XMM7, #if defined(__x86_64__) || defined(_WIN64) ZREG_XMM8, ZREG_XMM9, ZREG_XMM10, ZREG_XMM11, ZREG_XMM12, ZREG_XMM13, ZREG_XMM14, ZREG_XMM15, #endif ZREG_NUM, ZREG_THIS, /* used for delayed FETCH_THIS deoptimization */ /* pseudo constants used by deoptimizer */ ZREG_LONG_MIN_MINUS_1, ZREG_LONG_MIN, ZREG_LONG_MAX, ZREG_LONG_MAX_PLUS_1, ZREG_NULL, ZREG_ZVAL_TRY_ADDREF, ZREG_ZVAL_COPY_GPR0, } zend_reg; typedef struct _zend_jit_registers_buf { #if defined(__x86_64__) || defined(_WIN64) uint64_t gpr[16]; /* general purpose integer register */ double fpr[16]; /* floating point registers */ #else uint32_t gpr[8]; /* general purpose integer register */ double fpr[8]; /* floating point registers */ #endif } zend_jit_registers_buf; #define ZREG_FIRST_FPR ZREG_XMM0 #define ZREG_COPY ZREG_R0 #define ZREG_RAX ZREG_R0 #define ZREG_RCX ZREG_R1 #define ZREG_RDX ZREG_R2 #define ZREG_RBX ZREG_R3 #define ZREG_RSP ZREG_R4 #define ZREG_RBP ZREG_R5 #define ZREG_RSI ZREG_R6 #define ZREG_RDI ZREG_R7 #ifdef _WIN64 # define ZREG_FP ZREG_R14 # define ZREG_IP ZREG_R15 #elif defined(__x86_64__) # define ZREG_FP ZREG_R14 # define ZREG_IP ZREG_R15 #else # define ZREG_FP ZREG_RSI # define ZREG_IP ZREG_RDI #endif #define ZREG_RX ZREG_IP typedef uint32_t zend_regset; #define ZEND_REGSET_64BIT 0 #ifdef _WIN64 # define ZEND_REGSET_FIXED \ (ZEND_REGSET(ZREG_RSP) | ZEND_REGSET(ZREG_R14) | ZEND_REGSET(ZREG_R15)) # define ZEND_REGSET_GP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_R0, ZREG_R15), ZEND_REGSET_FIXED) # define ZEND_REGSET_FP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_XMM0, ZREG_XMM15), ZEND_REGSET_FIXED) # define ZEND_REGSET_SCRATCH \ (ZEND_REGSET(ZREG_RAX) | ZEND_REGSET(ZREG_RDX) | ZEND_REGSET(ZREG_RCX) | ZEND_REGSET_INTERVAL(ZREG_R8, ZREG_R11) | ZEND_REGSET_FP) # define ZEND_REGSET_PRESERVED \ (ZEND_REGSET(ZREG_RBX) | ZEND_REGSET(ZREG_RBP) | ZEND_REGSET(ZREG_R12) | ZEND_REGSET(ZREG_R13) | ZEND_REGSET(ZREG_RDI) | ZEND_REGSET(ZREG_RSI)) #elif defined(__x86_64__) # define ZEND_REGSET_FIXED \ (ZEND_REGSET(ZREG_RSP) | ZEND_REGSET(ZREG_R14) | ZEND_REGSET(ZREG_R15)) # define ZEND_REGSET_GP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_R0, ZREG_R15), ZEND_REGSET_FIXED) # define ZEND_REGSET_FP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_XMM0, ZREG_XMM15), ZEND_REGSET_FIXED) # define ZEND_REGSET_SCRATCH \ (ZEND_REGSET(ZREG_RAX) | ZEND_REGSET(ZREG_RDI) | ZEND_REGSET(ZREG_RSI) | ZEND_REGSET(ZREG_RDX) | ZEND_REGSET(ZREG_RCX) | ZEND_REGSET_INTERVAL(ZREG_R8, ZREG_R11) | ZEND_REGSET_FP) # define ZEND_REGSET_PRESERVED \ (ZEND_REGSET(ZREG_RBX) | ZEND_REGSET(ZREG_RBP) | ZEND_REGSET(ZREG_R12) | ZEND_REGSET(ZREG_R13)) #else # define ZEND_REGSET_FIXED \ (ZEND_REGSET(ZREG_RSP) | ZEND_REGSET(ZREG_RSI) | ZEND_REGSET(ZREG_RDI)) # define ZEND_REGSET_GP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_R0, ZREG_R7), ZEND_REGSET_FIXED) # define ZEND_REGSET_FP \ ZEND_REGSET_DIFFERENCE(ZEND_REGSET_INTERVAL(ZREG_XMM0, ZREG_XMM7), ZEND_REGSET_FIXED) # define ZEND_REGSET_SCRATCH \ (ZEND_REGSET(ZREG_RAX) | ZEND_REGSET(ZREG_RCX) | ZEND_REGSET(ZREG_RDX) | ZEND_REGSET_FP) # define ZEND_REGSET_PRESERVED \ (ZEND_REGSET(ZREG_RBX) | ZEND_REGSET(ZREG_RBP)) #endif #define ZEND_REGSET_LOW_PRIORITY \ (ZEND_REGSET(ZREG_R0) | ZEND_REGSET(ZREG_R1) | ZEND_REGSET(ZREG_XMM0) | ZEND_REGSET(ZREG_XMM1)) #endif /* ZEND_JIT_X86_H */