You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[JIT] Enable EGPRs in JIT by adding REX2 encoding to the backend. (#106557)
* 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.
0 commit comments