bnjbvr edited PR #2195 from x64-refactor to main:
- First optimization matches addresses of the form
base+index+offset, whereindexis a constant, and tries to add the constant with offset. This has been proven useful for some temporary variables computations in Spidermonkey (e.g. address of global values).- Second optimization regenerates constants in new vregs in
put_input_to_reg, minimizing their live ranges.There are a few bonus pieces here and there:
- fix a few places where regenerating constants would clobber the flags (b/o xor for 0 constants), by reordering calls to
put_input_in_regso they're before the comparison emission.- fix the generation of R64 constants
- use a mov imm32 sign-extended to reg, whenever possible, when generating an i64 immediate.
See also commit details.
This is up to a 17% speedup in compile times of the embenchen micro benchmarks, and up to 10% reduction in runtime speed.
bnjbvr updated PR #2195 from x64-refactor to main:
- First optimization matches addresses of the form
base+index+offset, whereindexis a constant, and tries to add the constant with offset. This has been proven useful for some temporary variables computations in Spidermonkey (e.g. address of global values).- Second optimization regenerates constants in new vregs in
put_input_to_reg, minimizing their live ranges.There are a few bonus pieces here and there:
- fix a few places where regenerating constants would clobber the flags (b/o xor for 0 constants), by reordering calls to
put_input_in_regso they're before the comparison emission.- fix the generation of R64 constants
- use a mov imm32 sign-extended to reg, whenever possible, when generating an i64 immediate.
See also commit details.
This is up to a 17% speedup in compile times of the embenchen micro benchmarks, and up to 10% reduction in runtime speed.
cfallin submitted PR Review.
cfallin merged PR #2195.
Last updated: Dec 13 2025 at 19:03 UTC