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

--- Comment #23 from Filip Kastl <pheeck at gcc dot gnu.org> ---
---- testcase.c ----
enum { ST, SB, ET, EB, WT, WB }
LBM_initializeGrid() {
  double *grid;
  grid[ST] = grid[SB] = grid[ET] = grid[EB] =
      grid[WT] = grid[WB] = 1.0 / 36.0;
}
---- ----

Compile with -Ofast -march=znver2 -c -fdump-rtl-all.  In the dump, you should
find:

----------------
Replace:    

(insn 5 2 7 2 (set (reg:V2DF 101)    
        (vec_duplicate:V2DF (mem/u/c:DF (symbol_ref/u:DI ("*.LC1") [flags 0x2])
[0  S8 A64]))) "testcase.c":5:16 7168 {vec_dupv2df}    
     (expr_list:REG_EQUAL (const_vector:V2DF [    
                (const_double:DF
2.7777777777777776235801354687282582744956016540527344e-2
[0x0.e38e38e38e38ep-5]) repeated x2    
            ])    
        (nil)))    

with:    

(insn 5 2 7 2 (set (reg:V2DF 101)    
        (subreg:V2DF (reg:V4DF 104) 0)) "testcase.c":5:16 2429
{movv2df_internal}    
     (expr_list:REG_EQUAL (const_vector:V2DF [    
                (const_double:DF
2.7777777777777776235801354687282582744956016540527344e-2
[0x0.e38e38e38e38ep-5]) repeated x2    
            ])    
        (nil)))    

deferring rescan insn with uid = 5.    

Replace:    

(insn 8 7 10 2 (set (reg:V4DF 103)    
        (vec_duplicate:V4DF (mem/u/c:DF (symbol_ref/u:DI ("*.LC1") [flags 0x2])
[0  S8 A64]))) "testcase.c":4:12 9260 {vec_dupv4df}    
     (expr_list:REG_EQUAL (const_vector:V4DF [    
                (const_double:DF
2.7777777777777776235801354687282582744956016540527344e-2
[0x0.e38e38e38e38ep-5]) repeated x4    
            ])    
        (nil)))    

with:    

(insn 8 7 10 2 (set (reg:V4DF 103)    
        (reg:V4DF 104)) "testcase.c":4:12 2428 {movv4df_internal}    
     (expr_list:REG_EQUAL (const_vector:V4DF [    
                (const_double:DF
2.7777777777777776235801354687282582744956016540527344e-2
[0x0.e38e38e38e38ep-5]) repeated x4    
            ])    
        (nil)))
------------------

Works even on the current master (r16-2091-g20407a41e84044).  I got this from
machine reducing the source files using cvise.

Reply via email to