-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Jit arm64 #6982
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Jit arm64 #6982
Changes from all commits
Commits
Show all changes
195 commits
Select commit
Hold shift + click to select a range
ba43682
Initial support of JIT/arm64
shqking f3ba648
Hybrid use of registers
shqking f4f56f6
Support failed JIT test case: assign_002.phpt
shqking a70fd3f
Support failed JIT test case: assign_010.phpt
shqking 653de5d
Support failed JIT test case: assign_012.phpt
shqking d7cfa32
Support failed JIT test case: assign_027.phpt
shqking ba9bc3a
Support failed JIT test case: assign_024.phpt
shqking 4816d0d
Support failed JIT test case: assign_022.phpt
shqking 006d443
Support failed JIT test case: assign_025.phpt
shqking d8d7932
Support failed JIT test case: assign_026.phpt
shqking de21c29
Support failed JIT test case: assign_dim_op_001.phpt
shqking 35f253a
Support failed JIT test case: assign_dim_002.phpt
shqking 79f35b4
Support failed JIT test case: assign_static_prop_001.phpt
shqking 5ac51a5
Support failed JIT test case: assign_036.phpt
shqking d0829f8
Support failed JIT test case: assign_035.phpt
shqking f3bba0b
Support failed JIT test case: fetch_dim_func_args_001.phpt
shqking 81ad6a0
Support failed JIT test case: fetch_dim_r_002.phpt
shqking b02c0d1
Support failed JIT test case: fetch_dim_rw_001.phpt
shqking 77c394e
Support failed JIT test case: fetch_obj_004.phpt
shqking 64d647a
Support failed JIT test case: fetch_obj_002.phpt
shqking 501a114
Support failed JIT test case: fetch_obj_003.phpt
shqking ecd7b53
Replace --SKIPIF-- by --EXTENSIONS--
dstogov 9ac405d
JIT/AArch64: INIT_FCALL and DO_FCALL support for optimized function c…
dstogov a7fba63
Add necessary assertions on range for INIT_FCALL and DO_FCALL
shqking de06cba
Fix one bug in macro IF_GC_MAY_NOT_LEAK
shqking 4244562
Support failed JIT test case: fetch_obj_001.phpt
shqking b32926f
Support failed JIT test case: cmp_001.phpt
shqking 10ee8b0
Support failed JIT test case: cmp_002.phpt
shqking a00ab83
Support failed JIT test case: cmp_004.phpt
shqking 4b79f5b
Support failed JIT test case: cmp_003.phpt
shqking bbb7bbf
Support failed JIT test case: shift_left_001.phpt
shqking e02b273
Support failed JIT test case: shift_left_002.phpt
shqking 72a43d6
Support failed JIT test case: shift_right_001.phpt
shqking ad59423
Support failed JIT test case: shift_right_003.phpt
shqking d5de3b0
Support failed JIT test case: mod_001.phpt
shqking 7a4a461
Support failed JIT test case: send_ref_001.phpt
shqking 43a72ec
Support failed JIT test case: send_val_001.phpt
shqking 613af25
Support failed JIT test case: send_var_ex_001.phpt
shqking f177ef8
Support failed JIT test case: jmpz_001.phpt
shqking 3fa5551
Support failed JIT test case: jmpz_ex_001.phpt
shqking 04a28a2
Support failed JIT test case: reg_alloc_003.phpt
shqking 4d9fab6
Support failed JIT test case: reg_alloc_002.phpt
shqking d25ee30
Replace "brk #0" with "NIY" (Not Implemented Yet) macro
dstogov 6f9ca89
Use NIY_STUB instead of NIY in stubs
dstogov af999b4
Avoid useless "flags" byte extraction (it was inspired by unsuitable x86
dstogov 2f4208e
Trmporary disable PROFITABILITY_CHECKS for better test coverage
dstogov d74c652
Added tests for ASSIGN
dstogov 46d7f02
Support for most "uncommon" ASSIGN cases
dstogov eaf8135
Support for missed case in zend_jit_tail_handler().
dstogov b462265
Support for IS_LONG SUB and XOR.
dstogov 93c42f2
Support for bitwise operations with the same operands ($a ^ $a)
dstogov b4bf1d0
Support for bitwise operations with non-integer arguments
dstogov ee72128
Support for RECV/RECV_INIT
dstogov 73e1f6e
Support for passing extra arguments.
dstogov 9158774
Support for most cases of BOOL/BOOL_NOT/JMPZNZ/JMP[N]Z_EX
dstogov 2b254a8
Support for DOUBLE math
dstogov ecce8ca
Updates for commits between 121a0f7 and 12dcf34
shqking d36e589
Remove the duplicate macro DOUBLE_GET_ZVAL_DVAL
shqking 5d9e641
Revisit the encoding of immediate
shqking 483de70
Support for LONG math (except of MUL overflow detection)
dstogov f512742
Remove dead conditions
dstogov 95f1e4d
Fixed possible incorrect assumption if constant is a power of 2.
dstogov 3218d0e
Support for INC/DEC
dstogov e091f7c
Support for CONCAT
dstogov 8c68b36
Support for comparison opcodes
dstogov 948b3d8
Support for BOOL/BOOL_NOT with DOUBLE operand
dstogov 04fc674
Fixed copy/paste error
dstogov 4f36e23
Support for IS_IDENTICAL/IS_NOT_IDENTICAL
dstogov 84470b7
Support for FETCH_DIM* and ASSIGN_DIM (exception handling is incomplete)
dstogov 8b3a28c
Don't use FPR1 for consistency with x86
dstogov 575b1b7
Fixed incorrect register usage
dstogov 44ff89e
Fixed copy/paste error
dstogov 117945c
Accurate RETVAL register usage
dstogov ef01820
Support for ISSET_DIM
dstogov fd76e4c
Support for ASSIGN_OP
dstogov 4156337
Support for ASSIGN_DIM_OP
dstogov 38a7896
Support LONG MUL with overflow detection
shqking 290e8a1
Support for SEND_VAL/SEND_VAR/SEND_REF/CHECK_FUNC_ARG/CHECK_UNDEF_ARGS
dstogov 6e33f5b
Support for more cases in INIT_METHOD_CALL, DO_FCALL* and RETURN
dstogov de06ea3
Get rid of some NIY traps in DynADM macros
dstogov c6c8a13
Support for ECHO with non-constant operand
dstogov 062c8c5
Support for missed IS_NOT_IDENTICAL cases
dstogov a02355f
Support for FREE and FE_FREE
dstogov 9102c86
Support for DEFINED
dstogov 15e4451
Support for STRLEN and COUNT
dstogov ca4c3e6
Support for moving between allocated registers
dstogov 769aedc
Support for FE_RESET and FE_FETCH
dstogov 69a3446
Fixed reference-countoing. Use 32-bit registers.
dstogov f353dd4
Support for FETCH_CONST
dstogov 2166c67
Support for TYPE_CHECK
dstogov d45c8d0
Support for BIND_GLOBAL
dstogov 95f0d3d
Support for FETCH_THIS, FETCH_OBJ, ASSIGN_OBJ and ASSIGN_OBJ_OP
dstogov 026af85
Get rid of testing NIY_STUBs
dstogov 1770d9d
Support for PRE/POST_INC/DEC_OBJ
dstogov 0b4decb
Get rid of NIY in spill code
dstogov 54ff3d6
Support for VERIFY_RETURN_TYPE, ISSET_ISEMPTY_CV, IN_ARRAY and ADD with
dstogov 98595ba
Implement exceptional stubs
dstogov 70dc50c
Get rid of NYI in call/return sequences
dstogov 27c70fa
Temporary diable JIT for SWITCH and MATCH instructions (SWITCH should
dstogov bb5a4c4
Fixed INC/DEC_PROP (tests/classes/incdec_property_*.phpt)
dstogov ef4fb1a
Fixed load of incorrect size
dstogov 684e9e8
Fixed map_ptr resolution
dstogov fffc3e0
Fixed compilation warnings
dstogov 23579b1
Support for interupts
dstogov f8d1a69
Fixed type check
dstogov abfdf7c
Wrong register
dstogov 685ea2a
Fixed condition and avoid usage of non-temporary registers
dstogov eb3f6f5
Disable unsuitable optimization
dstogov f916800
Fixed incorrect efree()
dstogov e27eec0
Create C call frames for helper functions that perform nested calls
dstogov ed1a375
Fixed type checks and return value handling
dstogov 80c7567
Optimizing LONG MUL to SHIFT: refine the trigger condition and add ov…
shqking d0a35a8
Remove the TODO comments for DOUBLE CMP
shqking 2febcc4
Support failed test case: switch_jumptable.phpt
shqking 3ba9f5a
Fix the encoding of immediate for logical instructions
shqking 6b8b8c4
Add the helper to check whether an immediate is valid for logical ins…
shqking 23e0f36
Added missed UNDEF_OPLINE_RESULT
dstogov e93acac
typo
dstogov 7707391
Duplicate return
dstogov bd4d780
Missed instruction
dstogov 51497de
Make bit helpers to be inline
dstogov 576f4ee
Use "red zone" for HYBRID VM.
dstogov 7fac916
Disable "red zone" usage (it leads to crashes).
dstogov af748cd
Support for ZTS
dstogov c2e9ffa
Enable register allocator (it was disabled because ZREG_NUM wasn't
dstogov 39ca5f4
Fixed some compilation warnings
dstogov d185883
Remove the unnecessary 'bvs' check for IS_NOT_IDENTICAL case
shqking 59c3019
Optimizing LONG MUL to SHIFT: add overflow detection for x86
shqking b08a2d2
Support ZEND_JIT_ON_PROF_REQUEST mode
shqking 3b325ca
Support ZEND_JIT_ON_HOT_COUNTERS mode
shqking ae6cce3
Implement obvious trace side exits
dstogov 3e30872
Fixed incorrect register usage
dstogov 9ab8d53
Implement trace patching
dstogov ea75099
Fix incorrect macro LDR_STR_PIMM
shqking 203bd0f
Add the missing parts for macros ZVAL_COPY_CONST and ZVAL_COPY_CONST_2
shqking bf5312b
Fixed assertion
dstogov dff047f
Support for tracin JIT (incomplete, but abble to run Zend/bench.php)
dstogov cb9925f
Support for tracing JIT
dstogov dfae2fb
Fixed register allocation.
dstogov e599da5
Attempt to fix Windows build
dstogov df8f1a1
ZREG_REG0 is not available in x86 build
dstogov d0eb8ec
Use TST_32_WITH_CONST macro
dstogov 99c738e
Remove useless SAFE_MEM_ACC_WITH_UOFFSET*
dstogov a72dbda
Fixed signed/unsigned comparison mess
dstogov 4418fdb
Revisit 32-bit logical operations with constants
shqking 770cc44
Moved tests from ext/opcache/tests/jit/arm64 to ext/opcache/tests/jit
dstogov 7df7b63
Fixed signed/unsigned comparison mess and add one missing case
dstogov 7539a1e
Temporary disable PROFITABILITY_CHECKS for better test coverage and to
dstogov 2b17ea2
Skip 64-bit related tests on 32-bit platforms
dstogov 5f2695d
Don't optimize MUL into SHIFT if we have to check for overflow
dstogov 1ff2a6c
Improve code for MUL overflow detection (less instructions and less
dstogov 90a2cfc
Optimize AArch64 code generator
dstogov 749361f
Introduce CMP_64_WITH_CONST/CMP_64_WITH_CONST_32/CMP_32_WITH_CONST ma…
dstogov 4128c7b
Introduce ADD_SUB_64_WITH_CONST/ADD_SUB_64_WITH_CONST_32/ADD_SUB_32_W…
dstogov f294dd6
Use less temporary registers
dstogov dc6cd83
Use single instruction
dstogov a700819
Imroved code for CV initialization
dstogov 13131f6
Imroved code for constants loading
dstogov d0be78f
Use B/BL intead of BR/BLR if possible
dstogov 943361e
Fix compilation warning
dstogov 6102bf7
Use proper macro
dstogov 167ca3e
'lea' -> 'add'
dstogov 15c134b
Don't use TMP3 except ZTS
shqking b8db3a6
Use ADD_SUB_IMM for macros ADD_SUB_*_WITH_CONST*
shqking 34e9c6b
Use macros CMP_*_WITH_CONST if possible
shqking 5d7cb19
Remove the deprecated macros
shqking 449ddf1
Improve macro LONG_ADD_SUB_WITH_IMM
shqking 7f7c3c8
Use fewer temporary registers if possible
shqking d6b9430
Fix commit 6e344ed: temporary register should be kept for GET_ZVAL_LVAL
shqking 0616615
Fixed profile based JIT (opcache.jit=1225)
dstogov 24cfa42
Revert the macro uses for Z_TYPE_P(val) in commit 1fff62b
shqking e8b6dae
Fixed JIT failure on Zend/tests/bug43175.phpt ZTS build, CALL VM.
dstogov 3e2517b
Fix compilation warnings
dstogov e0e292d
Use better code for prologue and fix code generaion for "return -1".
dstogov ca9ec95
Peephole Code Optimization:
dstogov f2f2904
Fixed incorrect stack size calculation (sizeof(zval) == 16)
dstogov d88f21f
Fix commit 8143a49: macro ADD_SUB_64_WITH_CONST_32 should be used
shqking 287d996
Fixed incorrect range check (missed sign bit)
dstogov 272edad
Reenable PROFITABILITY_CHECKS
dstogov dbd0bfc
Implemented AArch64 support for GDB/JIT interface.
dstogov 8ab1f6b
Fixed JIT memory usage debug info (opcache.jit_debug=0x200)
dstogov f6df3b0
Allow to print JIT assemble without binary addresses (opcache.jit_deb…
dstogov b61697e
Remove unused TMP4. Use intra-precedure call scratch registers for TM…
dstogov 416b3bb
Use better code for trace exits. Don't store CPU registers that can't…
dstogov 60436b3
Use symbolic labels for BL and ADR instructions
dstogov dc89a2d
Fixed ZTS build.
dstogov 9aa463c
DynASM/ARM64: Add abiulity to plug-in generation of veneers to perfor…
dstogov 303ec3c
Generate veneers to perform long jumps.
dstogov dcbf25f
JIT/AArch64: disable register allocation for expected ++/-- overflow …
dstogov cd443ec
Fixed format specifier
dstogov 835280b
Fix "store to misaligned address" ASAN warnings
dstogov 0ebf7cc
Fixed JIT failure after overflow detection (bench.php failure in 32-bit
dstogov 8f6bea4
Fixed possible failure when repair after overflow detection
dstogov e1e5aed
Remove unnecessary #ifdef
dstogov 7210c31
Fixed zend_long_is_power_of_two/zend_long_floor_log2 mess
dstogov File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.