-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[JIT] Enable EGPRs in JIT by adding REX2 encoding to the backend. (#1…
…06557) * Ruihan: POC with REX2 Update comments. Merge the REX2 changes into the original legacy emit path bug fix: Set REX2.W with correct mask code. register encoding and prefix emitting logics. Add REX2 prefix emit logic bug fixes Add Stress mode for REX2 encoding and some bug fixes resolve comments: 1. add assertion check for UD opcodes. 2. add checks for EGPRs. Add REX2 to emitOutputAM, and let LEA to be REX2 compatible. Add REX2.X encoding for SIB byte But fixes: add REX2 prefix on the path in RI where MOV is specially handled. Enable REX2 encoding for `movups` fixed bugs in REX2 prefix emitting logic when working with map 1 instructions, and enabled REX2 for POPCNT legacy map index-er bug fixes some clean-up Adding initial APX unit testing path. Adding a coredistools dll that has LLVM APX disasm capability. It must be coppied into a CORE_ROOT manually. clean up work for REX2 narrow the REX2 scope to `sub` only some clean up based on the comments. bug fix resolve comment * resolve comments * refactor register encoding for REX2 * merge REX2 path to legacy path * Enable REX2 in more instructions. * Avoid repeatedly estimate the size of REX2 prefix * Enable REX2 encoding on RI and SV path - SV path is mostly for debugging purposes Added encoding unit tests for instructions with immediates * Add rex2 support to rotate and shift. * CR session. * Testing infra updates: assert REX2 is enabled. Code refactoring: AddX86PrefixIfNeeded. * revert rcl_N and rcr_N, tp and latency data for these instructions is missing in JIT, may indicate these instructions are not being used in JIT, drop them for now. * partially enable REX2 on emitOutputAM, case covered: R_AR and AR_R. * Adding unit tests. * push, pop, inc, dec, neg, not, xadd, shld, shrd, cmpxchg, setcc, bswap. * bug fix for bswap * bt * xchg, idiv * Make sure add REX2 prefix if register encoding for EGPRs are being called before adding any prefix. * Ensure code size is correctly computed in R_R_I path. * clean up * Change all AddSimdPrefix to AddX86Prefix Refactor REX2 encoding stress logics. * div, mulEAX * filter out test from REX2 encoding when using ACC form. (this will have side effect that the estimated code will go up and mismatch with actual code size.) * Make sure REX prefix will not be added when emitting with REX2. * resolve comments. * make sure the APX debug knob is only available under debug build. * clean up some out-dated code. * enable movsxd * Enable "Call" * Enable "JMP" * resolve merge errors * formatting * remote coredistools.dll for internal tests only * bug fix * resolve comments * add more emitter tests. * resolve comments. * clean up some comments and tweak the REX2 stress logic * clean up * formatting. * resolve comments.
- Loading branch information
1 parent
d108be1
commit 3410c76
Showing
11 changed files
with
974 additions
and
161 deletions.
There are no files selected for viewing
This file contains 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 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 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 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 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 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.