bnjbvr edited PR #2195 from x64-refactor
to main
:
- First optimization matches addresses of the form
base+index+offset
, whereindex
is 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_reg
so 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
, whereindex
is 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_reg
so 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: Nov 22 2024 at 16:03 UTC