On Wed, 2023-12-13 at 14:17 +0800, Jiahao Xu wrote:
> This test was extracted from the hot functions of 526.blender_r. Setting
> LOGICAL_OP_NON_SHORT_CIRCUIT to 0 resulted in a 26% decrease in dynamic
> instruction count and a 13.4% performance improvement. After applying
> the patch mentioned above, the assembly code looks much better with
> LOGICAL_OP_NON_SHORT_CIRCUIT=1, bringing an 11% improvement to 526.
> Based on this, setting LOGICAL_OP_NON_SHORT_CIRCUIT to 0 further
> improved the performance of 526 by 3%. The definition of
> LOGICAL_OP_NON_SHORT_CIRCUIT determines how gimple is generated, while
> the optimizations you made determine how rtl is generated. They are not
> conflicting and combining them would yield better results. Currently, I
> have only tested it on 526, and I will continue testing its impact on
> the entire SPEC 2017 suite.
The problem with LOGICAL_OP_NON_SHORT_CIRCUIT = 0 is it may regress
fixed-point only code. In practice the usage of -ffast-math is very
rare ("real" Linux packages invoking floating-point operations often
just malfunction with it) and it seems not good to regress common cases
with uncommon cases.
--
Xi Ruoyao <[email protected]>
School of Aerospace Science and Technology, Xidian University