[HN Gopher] Compilers, Hands-Off My Hands-On Optimizations (2016...
       ___________________________________________________________________
        
       Compilers, Hands-Off My Hands-On Optimizations (2016) [pdf]
        
       Author : mpweiher
       Score  : 14 points
       Date   : 2022-07-05 19:27 UTC (3 hours ago)
        
 (HTM) web link (users.ece.cmu.edu)
 (TXT) w3m dump (users.ece.cmu.edu)
        
       | boulos wrote:
       | Even at the time, this was no longer really applicable on Sandy
       | Bridge and beyond. The point of their volatile macros was just to
       | prevent reordering. It _can_ matter, but it 's pretty rare.
       | 
       | From the last paragraph before the Conclusion:
       | 
       | > On the Nehalem there is a significant performance differ- ence
       | between the two implementations on both compilers. Even though
       | both implementations have the same instruc- tion order, the
       | compiler reorders the intrinsic implementa- tion, but does so
       | sub-optimally. On the Sandy Bridge the performance difference is
       | slight. We examined the assem- bly code generated by both the icc
       | and gcc and in the two cases ordering of the instructions are not
       | the same as the initial ordering, so the intrinsics do not
       | maintain the order- ing. In the previous experiment (Figure 12)
       | the ordering was not close enough to an optimal one and from the
       | compiler scheduled implementation the compiler did not achieve
       | the same performance as the expert. We suspect that because of
       | its large reorder windows, the Sandy Bridge is less sensitive to
       | the instruction order than the Nehalem.
        
       | delusional wrote:
       | Am I understanding correctly that the contribution here is using
       | macros to define volatile inline asm blocks in C? That seems
       | pretty thin to me considering that there's no comparison to a raw
       | asm assembled and linked executable.
        
       ___________________________________________________________________
       (page generated 2022-07-05 23:01 UTC)