Hi, Sergey, Thanks for the fixes! LGTM On 15.01.2025 16:10, Sergey Kaplun wrote: > Hi, Sergey! > Thanks for the review! > Updated the commit message and force-pushed the branch. > > On 14.01.25, Sergey Bronnikov wrote: >> Hi, Sergey, >> >> thanks for the patch! >> >> LGTM with a minor comment >> >> Sergey >> >> On 13.01.2025 18:17, Sergey Kaplun wrote: >>> From: Mike Pall >>> >>> (cherry picked from commit 0eddcbead2d67c16dcd4039a6765b9d2fc8ea631) >>> >>> This patch does the following refactoring: >>> 1) Drops optimizations for the Intel Atom CPU [1]: removes the >>> `JIT_F_LEA_AGU` flag and related optimizations. The considerations >>> for the use of LEA are complex and very CPU-specific, mostly >>> dependent on the number of operands. Mostly, it isn't worth it due to >>> the extra register pressure and/or extra instructions. >> I would say explicitly that `JIT_F_LEA_AGU` is used in "Well, yes, that >> applies to the original and obsolete Atom architecture. Today "Intel >> Atom" is just a trade name for reduced-performance implementations of >> the current Intel architecture." >> >> as Mike explained in LUAJIT#24. So there are no any risks for tarantool >> users >> >> regarding performance degradation. > Added, as you suggested. The new commit message is the following: > > | Cleanup CPU detection and tuning for old CPUs. > | > | (cherry picked from commit 0eddcbead2d67c16dcd4039a6765b9d2fc8ea631) > | > | This patch does the following refactoring: > | 1) Drops optimizations for the Intel Atom CPU [1]: removes the > | `JIT_F_LEA_AGU` flag and related optimizations. The considerations > | for the use of LEA are complex and very CPU-specific, mostly > | dependent on the number of operands. Mostly, it isn't worth it due to > | the extra register pressure and/or extra instructions. > | Be aware that it applies to the original and obsolete Atom > | architecture. Today "Intel Atom" is just a trade name for > | reduced-performance implementations of the current Intel > | architecture. > | 2) Drops optimizations for the AMD K8, K10 CPU [2][3]: removes the > | `JIT_F_PREFER_IMUL` flag and related optimizations. > | 3) Refactors JIT flags defined in the . Now all CPU-specific > | JIT flags are defined as the left shift of `JIT_F_CPU` instead of > | hardcoded constants, similar for the optimization flags. > | 4) Adds detection of the ARM8 CPU. > | 5) Drops the check for SSE2 since the VM already presumes CPU supports > | it. > | 6) Adds checks for `__ARM_ARCH`[4] macro in . > | 7) Drops outdated comment in the amalgamation file about memory > | requirements. > | > | Sergey Kaplun: > | * added the description for the patch > | > | [1]:https://en.wikipedia.org/wiki/Intel_Atom > | [2]:https://en.wikipedia.org/wiki/AMD_K8 > | [3]:https://en.wikipedia.org/wiki/AMD_K10 > | [4]:https://developer.arm.com/documentation/dui0774/l/Other-Compiler-specific-Features/Predefined-macros > | > | Part of tarantool/tarantool#10709 > >>> 2) Drops optimizations for the AMD K8, K10 CPU [2][3]: removes the >>> `JIT_F_PREFER_IMUL` flag and related optimizations. >>> 3) Refactors JIT flags defined in the . Now all CPU-specific >>> JIT flags are defined as the left shift of `JIT_F_CPU` instead of >>> hardcoded constants, similar for the optimization flags. >>> 4) Adds detection of the ARM8 CPU. >>> 5) Drops the check for SSE2 since the VM already presumes CPU supports >>> it. >>> 6) Adds checks for `__ARM_ARCH`[4] macro in . >>> 7) Drops outdated comment in the amalgamation file about memory >>> requirements. >>> >>> Sergey Kaplun: >>> * added the description for the patch >>> >>> [1]:https://en.wikipedia.org/wiki/Intel_Atom >>> [2]:https://en.wikipedia.org/wiki/AMD_K8 >>> [3]:https://en.wikipedia.org/wiki/AMD_K10 >>> [4]:https://developer.arm.com/documentation/dui0774/l/Other-Compiler-specific-Features/Predefined-macros >>> >>> Part of tarantool/tarantool#10709 >>> --- > >