[Bug target/83008] [performance] Is it better to avoid extra instructions in data passing between loops?

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Nov 19 15:32:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83008

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-11-19
     Ever confirmed|0                           |1

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
I now get fir first loop:


a.c:6:5: note: Cost model analysis:                                             
  Vector inside of loop cost: 1120                                              
  Vector prologue cost: 0                                                       
  Vector epilogue cost: 0                                                       
  Scalar iteration cost: 328                                                    
  Scalar outside cost: 0                                                        
  Vector outside cost: 0                                                        
  prologue iterations: 0                                                        
  epilogue iterations: 0                                                        
  Calculated minimum iters for profitability: 0                                 
a.c:6:5: note:   Runtime profitability threshold = 4                            
a.c:6:5: note:   Static estimate profitability threshold = 4                    

For second lop I get:

a.c:20:5: note: type of def: internal                                           
a.c:20:5: note: mark relevant 1, live 0: sum.0_60 = (unsigned int) sum_102;     
a.c:20:5: note: worklist: examine stmt: sum.0_60 = (unsigned int) sum_102;      
a.c:20:5: note: vect_is_simple_use: operand sum_102                             
a.c:20:5: note: def_stmt: sum_102 = PHI <0(6), sum_75(7)>                       
a.c:20:5: note: type of def: unknown                                            
a.c:20:5: note: Unsupported pattern.                                            
a.c:20:5: note: not vectorized: unsupported use in stmt.                        
a.c:20:5: note: unexpected pattern.                               

Is it really that hard to sum values in vector?              

The code does not use AVX512 regs at all.


More information about the Gcc-bugs mailing list