Hi Segher,

 > If you want the const_vector for r97, you should look at the combination
 > that tries *that* insn together with 10 and 12.  Did it try that?  
Why not?

It did not attempt to combine all three, I'm not sure why not, I would 
have expected
it to, they are all in the same basic block.

I don't understand why in the other example
two insns were combined using a constant set by a third insn, but in 
this case three
insns must be combined, perhaps because in this example they are in the
same basic block and in the other example the constant is set outside 
the basic block?

On 14/06/2019 22:34, Segher Boessenkool wrote:
> On Wed, Jun 12, 2019 at 10:52:42AM +0000, Joel Hutton wrote:
>> A summary of the behaviour is:
>> when combining A -> B, the register equivalence notes of A are checked, the 
>> register notes of B are not checked.
>>
>> Is this expected behaviour?
> Yes.
>
> If it would use the notes on B to make the new insns, it would not need A
> *at all*.  This does not make much sense.
>
> A worse problem is that very often it will end up with an insn that cannot
> match, if it did use the note on i3.  combine does not try all ways it can
> transform your code, so it should use the more promising ways.
>
>> Combine does not check the REG_EQUAL note on insn 12, and does not try the 
>> equivalent pattern, using a const_vector instead of register 99.
>>
>> Trying 10 -> 12:
>>     10: r97:V4SF=float(r96:V4SI)
>>        REG_DEAD r96:V4SI
>>     12: r98:V4SF=r97:V4SF*r99:V4SF
>>        REG_DEAD r97:V4SF
>>        REG_EQUAL r97:V4SF*const_vector
>> Failed to match this instruction:
>> (set (reg:V4SF 98 [ D.3422 ])
>>      (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3420 ]))
>>          (reg:V4SF 99)))
> If you want the const_vector for r97, you should look at the combination
> that tries *that* insn together with 10 and 12.  Did it try that?  Why not?
>
>
> Segher
;; Function foo (foo, funcdef_no=0, decl_uid=3407, cgraph_uid=1, symbol_order=0)

starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 6 (  1.2)


foo

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u,1e} r97={1d,1u} 
r98={1d,1u} r99={1d,1u} 
;;    total ref usage 60{31d,28u,1e} in 11{11 regular + 0 call} insns.
;; Reaching defs:
;;  sparse invalidated  
;;  dense invalidated   0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 
18, 19, 22
;;  reg->defs[] map:    0[0,0] 1[1,1] 2[2,2] 3[3,3] 4[4,4] 5[5,5] 6[6,6] 7[7,7] 
8[8,8] 29[9,9] 30[10,10] 31[11,11] 32[12,12] 33[13,13] 34[14,14] 35[15,15] 
36[16,16] 37[17,17] 38[18,18] 39[19,19] 64[20,20] 65[21,21] 66[22,22] 91[23,24] 
94[25,25] 95[26,26] 96[27,27] 97[28,28] 98[29,29] 99[30,30] 

( )->[0]->( 2 )
;; bb 0 artificial_defs: { d0(0){ }d1(1){ }d2(2){ }d3(3){ }d4(4){ }d5(5){ 
}d6(6){ }d7(7){ }d8(8){ }d9(29){ }d10(30){ }d11(31){ }d12(32){ }d13(33){ 
}d14(34){ }d15(35){ }d16(36){ }d17(37){ }d18(38){ }d19(39){ }d20(64){ }d21(65){ 
}}
;; bb 0 artificial_uses: { }
;; lr  in       
;; lr  use      
;; lr  def       0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  in     
;; live  gen     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  kill   
;; rd  in       (0) 
;; rd  gen      (22) 
0[0],1[1],2[2],3[3],4[4],5[5],6[6],7[7],8[8],29[9],30[10],31[11],32[12],33[13],34[14],35[15],36[16],37[17],38[18],39[19],64[20],65[21]
;; rd  kill     (22) 
0[0],1[1],2[2],3[3],4[4],5[5],6[6],7[7],8[8],29[9],30[10],31[11],32[12],33[13],34[14],35[15],36[16],37[17],38[18],39[19],64[20],65[21]
;;  UD chains for artificial uses at top
;; lr  out       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; rd  out      (6) 0[0],1[1],29[9],31[11],64[20],65[21]
;;  UD chains for artificial uses at bottom

( 0 )->[2]->( 3 )
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ d9(bb 0 insn -1) }u1(31){ d11(bb 0 insn -1) 
}u2(64){ d20(bb 0 insn -1) }u3(65){ d21(bb 0 insn -1) }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 98
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 98
;; live  kill   
;; rd  in       (6) 0[0],1[1],29[9],31[11],64[20],65[21]
;; rd  gen      (4) 91[24],94[25],95[26],98[29]
;; rd  kill     (5) 91[23,24],94[25],95[26],98[29]
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; rd  out      (8) 29[9],31[11],64[20],65[21],91[24],94[25],95[26],98[29]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 2 3 )->[3]->( 3 4 )
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ d9(bb 0 insn -1) }u7(31){ d11(bb 0 insn -1) 
}u8(64){ d20(bb 0 insn -1) }u9(65){ d21(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  def       66 [cc] 91 96 97 99
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  gen     66 [cc] 91 96 97 99
;; live  kill   
;; rd  in       (13) 
29[9],31[11],64[20],65[21],66[22],91[23,24],94[25],95[26],96[27],97[28],98[29],99[30]
;; rd  gen      (5) 66[22],91[23],96[27],97[28],99[30]
;; rd  kill     (6) 66[22],91[23,24],96[27],97[28],99[30]
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; rd  out      (8) 29[9],31[11],64[20],65[21],91[23],94[25],95[26],98[29]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 3 )->[4]->( 1 )
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ d9(bb 0 insn -1) }u23(31){ d11(bb 0 insn 
-1) }u24(64){ d20(bb 0 insn -1) }u25(65){ d21(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
;; rd  in       (8) 29[9],31[11],64[20],65[21],91[23],94[25],95[26],98[29]
;; rd  gen      (0) 
;; rd  kill     (0) 
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; rd  out      (4) 29[9],31[11],64[20],65[21]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 4 )->[1]->( )
;; bb 1 artificial_defs: { }
;; bb 1 artificial_uses: { u26(29){ d9(bb 0 insn -1) }u27(31){ d11(bb 0 insn 
-1) }u28(64){ d20(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp]
;; lr  use       29 [x29] 31 [sp] 64 [sfp]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp]
;; live  gen    
;; live  kill   
;; rd  in       (4) 29[9],31[11],64[20],65[21]
;; rd  gen      (0) 
;; rd  kill     (0) 
;;  UD chains for artificial uses at top
;; lr  out      
;; live  out    
;; rd  out      (0) 
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }

Finding needed instructions:
  Adding insn 17 to worklist
  Adding insn 13 to worklist
Finished finding needed instructions:
Processing use of (reg 91 [ ivtmp.14 ]) in insn 13:
  Adding insn 5 to worklist
  Adding insn 14 to worklist
Processing use of (reg 95 [ b ]) in insn 13:
  Adding insn 3 to worklist
Processing use of (reg 99 [ vect__7.8 ]) in insn 13:
  Adding insn 12 to worklist
Processing use of (reg 97 [ vect__5.7 ]) in insn 12:
  Adding insn 11 to worklist
Processing use of (reg 96 [ vect__4.6 ]) in insn 11:
  Adding insn 9 to worklist
Processing use of (reg 98) in insn 11:
  Adding insn 10 to worklist
Processing use of (reg 91 [ ivtmp.14 ]) in insn 9:
Processing use of (reg 94 [ a ]) in insn 9:
  Adding insn 2 to worklist
Processing use of (reg 0 x0) in insn 2:
Processing use of (reg 1 x1) in insn 3:
Processing use of (reg 91 [ ivtmp.14 ]) in insn 14:
Processing use of (reg 66 cc) in insn 17:
  Adding insn 16 to worklist
Processing use of (reg 91 [ ivtmp.14 ]) in insn 16:
starting the processing of deferred insns
ending the processing of deferred insns


foo

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u,1e} r97={1d,1u} 
r98={1d,1u} r99={1d,1u} 
;;    total ref usage 60{31d,28u,1e} in 11{11 regular + 0 call} insns.
(note 6 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 2 6 3 2 (set (reg/v/f:DI 94 [ a ])
        (reg:DI 0 x0 [ a ])) "tmp.c":13:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 0 x0 [ a ])
        (nil)))
(insn 3 2 4 2 (set (reg/v/f:DI 95 [ b ])
        (reg:DI 1 x1 [ b ])) "tmp.c":13:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 1 x1 [ b ])
        (nil)))
(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG)
(insn 5 4 10 2 (set (reg:DI 91 [ ivtmp.14 ])
        (const_int 0 [0])) "tmp.c":13:1 47 {*movdi_aarch64}
     (nil))
(insn 10 5 15 2 (set (reg:V4SF 98)
        (const_vector:V4SF [
                (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
            ])) "tmp.c":16:17 1154 {*aarch64_simd_movv4sf}
     (nil))
(code_label 15 10 8 3 2 (nil) [1 uses])
(note 8 15 9 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 9 8 11 3 (set (reg:V4SF 96 [ vect__4.6 ])
        (mem:V4SF (plus:DI (reg/v/f:DI 94 [ a ])
                (reg:DI 91 [ ivtmp.14 ])) [1 MEM[base: a_11(D), index: 
ivtmp.14_21, offset: 0B]+0 S16 A32])) "tmp.c":16:13 1154 {*aarch64_simd_movv4sf}
     (nil))
(insn 11 9 12 3 (set (reg:V4SF 97 [ vect__5.7 ])
        (mult:V4SF (reg:V4SF 96 [ vect__4.6 ])
            (reg:V4SF 98))) "tmp.c":16:17 1906 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 96 [ vect__4.6 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 96 [ vect__4.6 ])
                (const_vector:V4SF [
                        (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                    ]))
            (nil))))
(insn 12 11 13 3 (set (reg:V4SI 99 [ vect__7.8 ])
        (fix:V4SI (unspec:V4SI [
                    (reg:V4SF 97 [ vect__5.7 ])
                ] UNSPEC_FRINTZ))) "tmp.c":16:10 2028 {lbtruncv4sfv4si2}
     (expr_list:REG_DEAD (reg:V4SF 97 [ vect__5.7 ])
        (nil)))
(insn 13 12 14 3 (set (mem:V4SI (plus:DI (reg/v/f:DI 95 [ b ])
                (reg:DI 91 [ ivtmp.14 ])) [2 MEM[base: b_12(D), index: 
ivtmp.14_21, offset: 0B]+0 S16 A32])
        (reg:V4SI 99 [ vect__7.8 ])) "tmp.c":16:10 1151 {*aarch64_simd_movv4si}
     (expr_list:REG_DEAD (reg:V4SI 99 [ vect__7.8 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ ivtmp.14 ])
        (plus:DI (reg:DI 91 [ ivtmp.14 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ ivtmp.14 ])
            (const_int 4096 [0x1000]))) 448 {cmpdi}
     (nil))
(jump_insn 17 16 18 3 (set (pc)
        (if_then_else (ne (reg:CC 66 cc)
                (const_int 0 [0]))
            (label_ref:DI 15)
            (pc))) 9 {condjump}
     (expr_list:REG_DEAD (reg:CC 66 cc)
        (int_list:REG_BR_PROB 1030792158 (nil)))
 -> 15)
(note 18 17 0 4 [bb 4] NOTE_INSN_BASIC_BLOCK)

;; Function bar (bar, funcdef_no=1, decl_uid=3415, cgraph_uid=2, symbol_order=1)

starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 6 (  1.2)


bar

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u} r97={1d,1u,1e} 
r98={1d,1u} r99={1d,1u} 
;;    total ref usage 60{31d,28u,1e} in 11{11 regular + 0 call} insns.
;; Reaching defs:
;;  sparse invalidated  
;;  dense invalidated   0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 
18, 19, 22
;;  reg->defs[] map:    0[0,0] 1[1,1] 2[2,2] 3[3,3] 4[4,4] 5[5,5] 6[6,6] 7[7,7] 
8[8,8] 29[9,9] 30[10,10] 31[11,11] 32[12,12] 33[13,13] 34[14,14] 35[15,15] 
36[16,16] 37[17,17] 38[18,18] 39[19,19] 64[20,20] 65[21,21] 66[22,22] 91[23,24] 
94[25,25] 95[26,26] 96[27,27] 97[28,28] 98[29,29] 99[30,30] 

( )->[0]->( 2 )
;; bb 0 artificial_defs: { d0(0){ }d1(1){ }d2(2){ }d3(3){ }d4(4){ }d5(5){ 
}d6(6){ }d7(7){ }d8(8){ }d9(29){ }d10(30){ }d11(31){ }d12(32){ }d13(33){ 
}d14(34){ }d15(35){ }d16(36){ }d17(37){ }d18(38){ }d19(39){ }d20(64){ }d21(65){ 
}}
;; bb 0 artificial_uses: { }
;; lr  in       
;; lr  use      
;; lr  def       0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  in     
;; live  gen     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  kill   
;; rd  in       (0) 
;; rd  gen      (22) 
0[0],1[1],2[2],3[3],4[4],5[5],6[6],7[7],8[8],29[9],30[10],31[11],32[12],33[13],34[14],35[15],36[16],37[17],38[18],39[19],64[20],65[21]
;; rd  kill     (22) 
0[0],1[1],2[2],3[3],4[4],5[5],6[6],7[7],8[8],29[9],30[10],31[11],32[12],33[13],34[14],35[15],36[16],37[17],38[18],39[19],64[20],65[21]
;;  UD chains for artificial uses at top
;; lr  out       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; rd  out      (6) 0[0],1[1],29[9],31[11],64[20],65[21]
;;  UD chains for artificial uses at bottom

( 0 )->[2]->( 3 )
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ d9(bb 0 insn -1) }u1(31){ d11(bb 0 insn -1) 
}u2(64){ d20(bb 0 insn -1) }u3(65){ d21(bb 0 insn -1) }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 99
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 99
;; live  kill   
;; rd  in       (6) 0[0],1[1],29[9],31[11],64[20],65[21]
;; rd  gen      (4) 91[24],94[25],95[26],99[30]
;; rd  kill     (5) 91[23,24],94[25],95[26],99[30]
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; rd  out      (8) 29[9],31[11],64[20],65[21],91[24],94[25],95[26],99[30]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 2 3 )->[3]->( 3 4 )
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ d9(bb 0 insn -1) }u7(31){ d11(bb 0 insn -1) 
}u8(64){ d20(bb 0 insn -1) }u9(65){ d21(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  def       66 [cc] 91 96 97 98
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  gen     66 [cc] 91 96 97 98
;; live  kill   
;; rd  in       (13) 
29[9],31[11],64[20],65[21],66[22],91[23,24],94[25],95[26],96[27],97[28],98[29],99[30]
;; rd  gen      (5) 66[22],91[23],96[27],97[28],98[29]
;; rd  kill     (6) 66[22],91[23,24],96[27],97[28],98[29]
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; rd  out      (8) 29[9],31[11],64[20],65[21],91[23],94[25],95[26],99[30]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 3 )->[4]->( 1 )
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ d9(bb 0 insn -1) }u23(31){ d11(bb 0 insn 
-1) }u24(64){ d20(bb 0 insn -1) }u25(65){ d21(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
;; rd  in       (8) 29[9],31[11],64[20],65[21],91[23],94[25],95[26],99[30]
;; rd  gen      (0) 
;; rd  kill     (0) 
;;  UD chains for artificial uses at top
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; rd  out      (4) 29[9],31[11],64[20],65[21]
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }
;;   reg 65 { d21(bb 0 insn -1) }

( 4 )->[1]->( )
;; bb 1 artificial_defs: { }
;; bb 1 artificial_uses: { u26(29){ d9(bb 0 insn -1) }u27(31){ d11(bb 0 insn 
-1) }u28(64){ d20(bb 0 insn -1) }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp]
;; lr  use       29 [x29] 31 [sp] 64 [sfp]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp]
;; live  gen    
;; live  kill   
;; rd  in       (4) 29[9],31[11],64[20],65[21]
;; rd  gen      (0) 
;; rd  kill     (0) 
;;  UD chains for artificial uses at top
;; lr  out      
;; live  out    
;; rd  out      (0) 
;;  UD chains for artificial uses at bottom
;;   reg 29 { d9(bb 0 insn -1) }
;;   reg 31 { d11(bb 0 insn -1) }
;;   reg 64 { d20(bb 0 insn -1) }

Finding needed instructions:
  Adding insn 17 to worklist
  Adding insn 13 to worklist
Finished finding needed instructions:
Processing use of (reg 91 [ ivtmp.32 ]) in insn 13:
  Adding insn 5 to worklist
  Adding insn 14 to worklist
Processing use of (reg 94 [ a ]) in insn 13:
  Adding insn 2 to worklist
Processing use of (reg 98 [ vect__7.26 ]) in insn 13:
  Adding insn 12 to worklist
Processing use of (reg 97 [ vect__5.25 ]) in insn 12:
  Adding insn 10 to worklist
Processing use of (reg 99) in insn 12:
  Adding insn 11 to worklist
Processing use of (reg 96 [ vect__4.24 ]) in insn 10:
  Adding insn 9 to worklist
Processing use of (reg 91 [ ivtmp.32 ]) in insn 9:
Processing use of (reg 95 [ b ]) in insn 9:
  Adding insn 3 to worklist
Processing use of (reg 1 x1) in insn 3:
Processing use of (reg 0 x0) in insn 2:
Processing use of (reg 91 [ ivtmp.32 ]) in insn 14:
Processing use of (reg 66 cc) in insn 17:
  Adding insn 16 to worklist
Processing use of (reg 91 [ ivtmp.32 ]) in insn 16:
starting the processing of deferred insns
ending the processing of deferred insns


bar

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u} r97={1d,1u,1e} 
r98={1d,1u} r99={1d,1u} 
;;    total ref usage 60{31d,28u,1e} in 11{11 regular + 0 call} insns.
(note 6 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 2 6 3 2 (set (reg/v/f:DI 94 [ a ])
        (reg:DI 0 x0 [ a ])) "tmp.c":20:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 0 x0 [ a ])
        (nil)))
(insn 3 2 4 2 (set (reg/v/f:DI 95 [ b ])
        (reg:DI 1 x1 [ b ])) "tmp.c":20:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 1 x1 [ b ])
        (nil)))
(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG)
(insn 5 4 11 2 (set (reg:DI 91 [ ivtmp.32 ])
        (const_int 0 [0])) "tmp.c":20:1 47 {*movdi_aarch64}
     (nil))
(insn 11 5 15 2 (set (reg:V4SF 99)
        (const_vector:V4SF [
                (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
            ])) "tmp.c":23:26 1154 {*aarch64_simd_movv4sf}
     (nil))
(code_label 15 11 8 3 6 (nil) [1 uses])
(note 8 15 9 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 9 8 10 3 (set (reg:V4SI 96 [ vect__4.24 ])
        (mem:V4SI (plus:DI (reg/v/f:DI 95 [ b ])
                (reg:DI 91 [ ivtmp.32 ])) [2 MEM[base: b_11(D), index: 
ivtmp.32_21, offset: 0B]+0 S16 A32])) "tmp.c":23:22 1151 {*aarch64_simd_movv4si}
     (nil))
(insn 10 9 12 3 (set (reg:V4SF 97 [ vect__5.25 ])
        (float:V4SF (reg:V4SI 96 [ vect__4.24 ]))) "tmp.c":23:14 2074 
{floatv4siv4sf2}
     (expr_list:REG_DEAD (reg:V4SI 96 [ vect__4.24 ])
        (nil)))
(insn 12 10 13 3 (set (reg:V4SF 98 [ vect__7.26 ])
        (mult:V4SF (reg:V4SF 97 [ vect__5.25 ])
            (reg:V4SF 99))) "tmp.c":23:26 1906 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 97 [ vect__5.25 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 97 [ vect__5.25 ])
                (const_vector:V4SF [
                        (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
                    ]))
            (nil))))
(insn 13 12 14 3 (set (mem:V4SF (plus:DI (reg/v/f:DI 94 [ a ])
                (reg:DI 91 [ ivtmp.32 ])) [1 MEM[base: a_12(D), index: 
ivtmp.32_21, offset: 0B]+0 S16 A32])
        (reg:V4SF 98 [ vect__7.26 ])) "tmp.c":23:10 1154 {*aarch64_simd_movv4sf}
     (expr_list:REG_DEAD (reg:V4SF 98 [ vect__7.26 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ ivtmp.32 ])
        (plus:DI (reg:DI 91 [ ivtmp.32 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ ivtmp.32 ])
            (const_int 4096 [0x1000]))) 448 {cmpdi}
     (nil))
(jump_insn 17 16 18 3 (set (pc)
        (if_then_else (ne (reg:CC 66 cc)
                (const_int 0 [0]))
            (label_ref:DI 15)
            (pc))) 9 {condjump}
     (expr_list:REG_DEAD (reg:CC 66 cc)
        (int_list:REG_BR_PROB 1030792158 (nil)))
 -> 15)
(note 18 17 0 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
;; Function foo (foo, funcdef_no=0, decl_uid=3407, cgraph_uid=1, symbol_order=0)


Pass statistics of "combine": ----------------

scanning new insn with uid = 33.
rescanning insn with uid = 2.
scanning new insn with uid = 34.
rescanning insn with uid = 3.
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 5 (    1)


foo

Dataflow summary:
def_info->table_size = 31, use_info->table_size = 29
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u,1e} r97={1d,1u} 
r98={1d,1u} r99={1d,1u} r100={1d,1u} r101={1d,1u} 
;;    total ref usage 64{33d,30u,1e} in 13{13 regular + 0 call} insns.

( )->[0]->( 2 )
;; bb 0 artificial_defs: { d0(0){ }d1(1){ }d2(2){ }d3(3){ }d4(4){ }d5(5){ 
}d6(6){ }d7(7){ }d8(8){ }d9(29){ }d10(30){ }d11(31){ }d12(32){ }d13(33){ 
}d14(34){ }d15(35){ }d16(36){ }d17(37){ }d18(38){ }d19(39){ }d20(64){ }d21(65){ 
}}
;; bb 0 artificial_uses: { }
;; lr  in       
;; lr  use      
;; lr  def       0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  in     
;; live  gen     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  kill   
;; lr  out       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]

( 0 )->[2]->( 3 )
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ }u1(31){ }u2(64){ }u3(65){ }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 98 100 101
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 98
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98

( 2 3 )->[3]->( 3 4 )
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ }u7(31){ }u8(64){ }u9(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  def       66 [cc] 91 96 97 99
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  gen     66 [cc] 91 96 97 99
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98

( 3 )->[4]->( 1 )
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ }u23(31){ }u24(64){ }u25(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]

( 4 )->[1]->( )
;; bb 1 artificial_defs: { }
;; bb 1 artificial_uses: { u26(29){ }u27(31){ }u28(64){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp]
;; lr  use       29 [x29] 31 [sp] 64 [sfp]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp]
;; live  gen    
;; live  kill   
;; lr  out      
;; live  out    

Finding needed instructions:
  Adding insn 17 to worklist
  Adding insn 13 to worklist
Finished finding needed instructions:
processing block 4 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap]
processing block 3 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
  Adding insn 16 to worklist
  Adding insn 14 to worklist
  Adding insn 12 to worklist
  Adding insn 11 to worklist
  Adding insn 9 to worklist
processing block 2 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
  Adding insn 10 to worklist
  Adding insn 5 to worklist
  Adding insn 3 to worklist
  Adding insn 34 to worklist
  Adding insn 2 to worklist
  Adding insn 33 to worklist
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 6 (  1.2)
insn_cost 4 for    33: r100:DI=x0:DI
      REG_DEAD x0:DI
insn_cost 4 for     2: r94:DI=r100:DI
      REG_DEAD r100:DI
insn_cost 4 for    34: r101:DI=x1:DI
      REG_DEAD x1:DI
insn_cost 4 for     3: r95:DI=r101:DI
      REG_DEAD r101:DI
insn_cost 4 for     5: r91:DI=0
insn_cost 4 for    10: r98:V4SF=const_vector
insn_cost 8 for     9: r96:V4SF=[r94:DI+r91:DI]
insn_cost 8 for    11: r97:V4SF=r96:V4SF*r98:V4SF
      REG_DEAD r96:V4SF
      REG_EQUAL r96:V4SF*const_vector
insn_cost 8 for    12: r99:V4SI=fix(unspec[r97:V4SF] 23)
      REG_DEAD r97:V4SF
insn_cost 4 for    13: [r95:DI+r91:DI]=r99:V4SI
      REG_DEAD r99:V4SI
insn_cost 4 for    14: r91:DI=r91:DI+0x10
insn_cost 4 for    16: cc:CC=cmp(r91:DI,0x1000)
insn_cost 0 for    17: pc={(cc:CC!=0)?L15:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 1030792158

Trying 9 -> 11:
    9: r96:V4SF=[r94:DI+r91:DI]
   11: r97:V4SF=r96:V4SF*r98:V4SF
      REG_DEAD r96:V4SF
      REG_EQUAL r96:V4SF*const_vector
Failed to match this instruction:
(set (reg:V4SF 97 [ D.3431 ])
    (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3405 ])
                (reg:DI 91 [ D.3438 ])) [1 MEM[base: a_11(D), index: 
ivtmp.14_21, offset: 0B]+0 S16 A32])
        (reg:V4SF 98)))

Trying 11 -> 12:
   11: r97:V4SF=r96:V4SF*r98:V4SF
      REG_DEAD r96:V4SF
      REG_EQUAL r96:V4SF*const_vector
   12: r99:V4SI=fix(unspec[r97:V4SF] 23)
      REG_DEAD r97:V4SF
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3432 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3430 ])
                    (reg:V4SF 98))
            ] UNSPEC_FRINTZ)))

Trying 11 -> 12:
   11: r97:V4SF=r96:V4SF*const_vector
      REG_DEAD r96:V4SF
      REG_EQUAL r96:V4SF*const_vector
   12: r99:V4SI=fix(unspec[r97:V4SF] 23)
      REG_DEAD r97:V4SF
Successfully matched this instruction:
(set (reg:V4SI 99 [ D.3432 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3430 ])
                    (const_vector:V4SF [
                            (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                        ]))
            ] UNSPEC_FRINTZ)))
allowing combination of insns 11 and 12
original costs 8 + 8 = 16
replacement cost 8
deferring deletion of insn with uid = 11.
modifying insn i3    12: r99:V4SI=fix(unspec[r96:V4SF*const_vector] 23)
      REG_DEAD r96:V4SF
deferring rescan insn with uid = 12.

Trying 9 -> 12:
    9: r96:V4SF=[r94:DI+r91:DI]
   12: r99:V4SI=fix(unspec[r96:V4SF*const_vector] 23)
      REG_DEAD r96:V4SF
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3432 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3405 ])
                            (reg:DI 91 [ D.3438 ])) [1 MEM[base: a_11(D), 
index: ivtmp.14_21, offset: 0B]+0 S16 A32])
                    (const_vector:V4SF [
                            (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                        ]))
            ] UNSPEC_FRINTZ)))

Trying 12 -> 13:
   12: r99:V4SI=fix(unspec[r96:V4SF*const_vector] 23)
      REG_DEAD r96:V4SF
   13: [r95:DI+r91:DI]=r99:V4SI
      REG_DEAD r99:V4SI
Failed to match this instruction:
(set (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3406 ])
            (reg:DI 91 [ D.3438 ])) [2 MEM[base: b_12(D), index: ivtmp.14_21, 
offset: 0B]+0 S16 A32])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3430 ])
                    (const_vector:V4SF [
                            (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                        ]))
            ] UNSPEC_FRINTZ)))

Trying 14 -> 16:
   14: r91:DI=r91:DI+0x10
   16: cc:CC=cmp(r91:DI,0x1000)
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3438 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3438 ])
            (plus:DI (reg:DI 91 [ D.3438 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3438 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3438 ])
            (plus:DI (reg:DI 91 [ D.3438 ])
                (const_int 16 [0x10])))
    ])

Trying 16 -> 17:
   16: cc:CC=cmp(r91:DI,0x1000)
   17: pc={(cc:CC!=0)?L15:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 1030792158
Failed to match this instruction:
(set (pc)
    (if_then_else (ne (reg:DI 91 [ D.3438 ])
            (const_int 4096 [0x1000]))
        (label_ref:DI 15)
        (pc)))

Pass statistics of "combine": ----------------
insn-with-note combine: 1

starting the processing of deferred insns
rescanning insn with uid = 12.
ending the processing of deferred insns


foo

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u} r98={1d} 
r99={1d,1u} r100={1d,1u} r101={1d,1u} 
;;    total ref usage 60{32d,28u,0e} in 12{12 regular + 0 call} insns.
;; basic block 2, loop depth 0, count 10737418 (estimated locally), maybe hot
;;  prev block 0, next block 3, flags: (RTL)
;;  pred:       ENTRY [always]  count:10737418 (estimated locally) (FALLTHRU)
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ }u1(31){ }u2(64){ }u3(65){ }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 98 100 101
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 98 100 101
;; live  kill   
(note 6 0 33 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 33 6 2 2 (set (reg:DI 100)
        (reg:DI 0 x0 [ aD.3405 ])) "tmp.c":13:1 -1
     (expr_list:REG_DEAD (reg:DI 0 x0 [ aD.3405 ])
        (nil)))
(insn 2 33 34 2 (set (reg/v/f:DI 94 [ aD.3405 ])
        (reg:DI 100)) "tmp.c":13:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 100)
        (nil)))
(insn 34 2 3 2 (set (reg:DI 101)
        (reg:DI 1 x1 [ bD.3406 ])) "tmp.c":13:1 -1
     (expr_list:REG_DEAD (reg:DI 1 x1 [ bD.3406 ])
        (nil)))
(insn 3 34 4 2 (set (reg/v/f:DI 95 [ bD.3406 ])
        (reg:DI 101)) "tmp.c":13:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 101)
        (nil)))
(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG)
(insn 5 4 10 2 (set (reg:DI 91 [ D.3438 ])
        (const_int 0 [0])) "tmp.c":13:1 47 {*movdi_aarch64}
     (nil))
(insn 10 5 15 2 (set (reg:V4SF 98)
        (const_vector:V4SF [
                (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
            ])) "tmp.c":16:17 1154 {*aarch64_simd_movv4sf}
     (nil))
;;  succ:       3 [always]  count:10737418 (estimated locally) (FALLTHRU)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98

;; basic block 3, loop depth 0, count 268435451 (estimated locally), maybe hot
;;  prev block 2, next block 4, flags: (RTL, MODIFIED)
;;  pred:       2 [always]  count:10737418 (estimated locally) (FALLTHRU)
;;              3 [96.0% (adjusted)]  count:257698033 (estimated locally) 
(DFS_BACK)
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ }u7(31){ }u8(64){ }u9(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; lr  def       66 [cc] 91 96 97 99
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  gen     66 [cc] 91 96 97 99
;; live  kill   
(code_label 15 10 8 3 2 (nil) [1 uses])
(note 8 15 9 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 9 8 11 3 (set (reg:V4SF 96 [ D.3430 ])
        (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3405 ])
                (reg:DI 91 [ D.3438 ])) [1 MEM[base: a_11(D), index: 
ivtmp.14_21, offset: 0B]+0 S16 A32])) "tmp.c":16:13 1154 {*aarch64_simd_movv4sf}
     (nil))
(note 11 9 12 3 NOTE_INSN_DELETED)
(insn 12 11 13 3 (set (reg:V4SI 99 [ D.3432 ])
        (fix:V4SI (unspec:V4SI [
                    (mult:V4SF (reg:V4SF 96 [ D.3430 ])
                        (const_vector:V4SF [
                                (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                            ]))
                ] UNSPEC_FRINTZ))) "tmp.c":16:10 2064 
{*aarch64_fcvtv4sfv4si2_mult}
     (expr_list:REG_DEAD (reg:V4SF 96 [ D.3430 ])
        (nil)))
(insn 13 12 14 3 (set (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3406 ])
                (reg:DI 91 [ D.3438 ])) [2 MEM[base: b_12(D), index: 
ivtmp.14_21, offset: 0B]+0 S16 A32])
        (reg:V4SI 99 [ D.3432 ])) "tmp.c":16:10 1151 {*aarch64_simd_movv4si}
     (expr_list:REG_DEAD (reg:V4SI 99 [ D.3432 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ D.3438 ])
        (plus:DI (reg:DI 91 [ D.3438 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ D.3438 ])
            (const_int 4096 [0x1000]))) 448 {cmpdi}
     (nil))
(jump_insn 17 16 18 3 (set (pc)
        (if_then_else (ne (reg:CC 66 cc)
                (const_int 0 [0]))
            (label_ref:DI 15)
            (pc))) 9 {condjump}
     (expr_list:REG_DEAD (reg:CC 66 cc)
        (int_list:REG_BR_PROB 1030792158 (nil)))
 -> 15)
;;  succ:       3 [96.0% (adjusted)]  count:257698033 (estimated locally) 
(DFS_BACK)
;;              4 [4.0% (adjusted)]  count:10737418 (estimated locally) 
(FALLTHRU,LOOP_EXIT)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 98

;; basic block 4, loop depth 0, count 10737418 (estimated locally), maybe hot
;;  prev block 3, next block 1, flags: (RTL)
;;  pred:       3 [4.0% (adjusted)]  count:10737418 (estimated locally) 
(FALLTHRU,LOOP_EXIT)
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ }u23(31){ }u24(64){ }u25(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
(note 18 17 0 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
;;  succ:       EXIT [always]  count:10737418 (estimated locally) (FALLTHRU)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]


;; Function bar (bar, funcdef_no=1, decl_uid=3415, cgraph_uid=2, symbol_order=1)


Pass statistics of "combine": ----------------

scanning new insn with uid = 23.
rescanning insn with uid = 2.
scanning new insn with uid = 24.
rescanning insn with uid = 3.
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 5 (    1)


bar

Dataflow summary:
def_info->table_size = 31, use_info->table_size = 29
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u} r97={1d,1u,1e} 
r98={1d,1u} r99={1d,1u} r100={1d,1u} r101={1d,1u} 
;;    total ref usage 64{33d,30u,1e} in 13{13 regular + 0 call} insns.

( )->[0]->( 2 )
;; bb 0 artificial_defs: { d0(0){ }d1(1){ }d2(2){ }d3(3){ }d4(4){ }d5(5){ 
}d6(6){ }d7(7){ }d8(8){ }d9(29){ }d10(30){ }d11(31){ }d12(32){ }d13(33){ 
}d14(34){ }d15(35){ }d16(36){ }d17(37){ }d18(38){ }d19(39){ }d20(64){ }d21(65){ 
}}
;; bb 0 artificial_uses: { }
;; lr  in       
;; lr  use      
;; lr  def       0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  in     
;; live  gen     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 [x7] 8 [x8] 
29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 [v5] 38 
[v6] 39 [v7] 64 [sfp] 65 [ap]
;; live  kill   
;; lr  out       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]

( 0 )->[2]->( 3 )
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ }u1(31){ }u2(64){ }u3(65){ }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 99 100 101
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 99
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99

( 2 3 )->[3]->( 3 4 )
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ }u7(31){ }u8(64){ }u9(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  def       66 [cc] 91 96 97 98
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  gen     66 [cc] 91 96 97 98
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99

( 3 )->[4]->( 1 )
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ }u23(31){ }u24(64){ }u25(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]

( 4 )->[1]->( )
;; bb 1 artificial_defs: { }
;; bb 1 artificial_uses: { u26(29){ }u27(31){ }u28(64){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp]
;; lr  use       29 [x29] 31 [sp] 64 [sfp]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp]
;; live  gen    
;; live  kill   
;; lr  out      
;; live  out    

Finding needed instructions:
  Adding insn 17 to worklist
  Adding insn 13 to worklist
Finished finding needed instructions:
processing block 4 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap]
processing block 3 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
  Adding insn 16 to worklist
  Adding insn 14 to worklist
  Adding insn 12 to worklist
  Adding insn 10 to worklist
  Adding insn 9 to worklist
processing block 2 lr out =  29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
  Adding insn 11 to worklist
  Adding insn 5 to worklist
  Adding insn 3 to worklist
  Adding insn 24 to worklist
  Adding insn 2 to worklist
  Adding insn 23 to worklist
df_worklist_dataflow_doublequeue: n_basic_blocks 5 n_edges 5 count 6 (  1.2)
insn_cost 4 for    23: r100:DI=x0:DI
      REG_DEAD x0:DI
insn_cost 4 for     2: r94:DI=r100:DI
      REG_DEAD r100:DI
insn_cost 4 for    24: r101:DI=x1:DI
      REG_DEAD x1:DI
insn_cost 4 for     3: r95:DI=r101:DI
      REG_DEAD r101:DI
insn_cost 4 for     5: r91:DI=0
insn_cost 4 for    11: r99:V4SF=const_vector
insn_cost 8 for     9: r96:V4SI=[r95:DI+r91:DI]
insn_cost 8 for    10: r97:V4SF=float(r96:V4SI)
      REG_DEAD r96:V4SI
insn_cost 8 for    12: r98:V4SF=r97:V4SF*r99:V4SF
      REG_DEAD r97:V4SF
      REG_EQUAL r97:V4SF*const_vector
insn_cost 4 for    13: [r94:DI+r91:DI]=r98:V4SF
      REG_DEAD r98:V4SF
insn_cost 4 for    14: r91:DI=r91:DI+0x10
insn_cost 4 for    16: cc:CC=cmp(r91:DI,0x1000)
insn_cost 0 for    17: pc={(cc:CC!=0)?L15:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 1030792158

Trying 9 -> 10:
    9: r96:V4SI=[r95:DI+r91:DI]
   10: r97:V4SF=float(r96:V4SI)
      REG_DEAD r96:V4SI
Failed to match this instruction:
(set (reg:V4SF 97 [ D.3449 ])
    (float:V4SF (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3414 ])
                (reg:DI 91 [ D.3456 ])) [2 MEM[base: b_11(D), index: 
ivtmp.32_21, offset: 0B]+0 S16 A32])))

Trying 10 -> 12:
   10: r97:V4SF=float(r96:V4SI)
      REG_DEAD r96:V4SI
   12: r98:V4SF=r97:V4SF*r99:V4SF
      REG_DEAD r97:V4SF
      REG_EQUAL r97:V4SF*const_vector
Failed to match this instruction:
(set (reg:V4SF 98 [ D.3450 ])
    (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3448 ]))
        (reg:V4SF 99)))

Trying 12 -> 13:
   12: r98:V4SF=r97:V4SF*r99:V4SF
      REG_DEAD r97:V4SF
      REG_EQUAL r97:V4SF*const_vector
   13: [r94:DI+r91:DI]=r98:V4SF
      REG_DEAD r98:V4SF
Failed to match this instruction:
(set (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3413 ])
            (reg:DI 91 [ D.3456 ])) [1 MEM[base: a_12(D), index: ivtmp.32_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (reg:V4SF 97 [ D.3449 ])
        (reg:V4SF 99)))

Trying 12 -> 13:
   12: r98:V4SF=r97:V4SF*const_vector
      REG_DEAD r97:V4SF
      REG_EQUAL r97:V4SF*const_vector
   13: [r94:DI+r91:DI]=r98:V4SF
      REG_DEAD r98:V4SF
Failed to match this instruction:
(set (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3413 ])
            (reg:DI 91 [ D.3456 ])) [1 MEM[base: a_12(D), index: ivtmp.32_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (reg:V4SF 97 [ D.3449 ])
        (const_vector:V4SF [
                (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
            ])))

Trying 14 -> 16:
   14: r91:DI=r91:DI+0x10
   16: cc:CC=cmp(r91:DI,0x1000)
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3456 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3456 ])
            (plus:DI (reg:DI 91 [ D.3456 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3456 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3456 ])
            (plus:DI (reg:DI 91 [ D.3456 ])
                (const_int 16 [0x10])))
    ])

Trying 16 -> 17:
   16: cc:CC=cmp(r91:DI,0x1000)
   17: pc={(cc:CC!=0)?L15:pc}
      REG_DEAD cc:CC
      REG_BR_PROB 1030792158
Failed to match this instruction:
(set (pc)
    (if_then_else (ne (reg:DI 91 [ D.3456 ])
            (const_int 4096 [0x1000]))
        (label_ref:DI 15)
        (pc)))

Pass statistics of "combine": ----------------

starting the processing of deferred insns
ending the processing of deferred insns


bar

Dataflow summary:
;;  invalidated by call          0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 
[x6] 7 [x7] 8 [x8] 9 [x9] 10 [x10] 11 [x11] 12 [x12] 13 [x13] 14 [x14] 15 [x15] 
16 [x16] 17 [x17] 18 [x18] 30 [x30] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 37 
[v5] 38 [v6] 39 [v7] 48 [v16] 49 [v17] 50 [v18] 51 [v19] 52 [v20] 53 [v21] 54 
[v22] 55 [v23] 56 [v24] 57 [v25] 58 [v26] 59 [v27] 60 [v28] 61 [v29] 62 [v30] 
63 [v31] 66 [cc] 67 [vg] 68 [p0] 69 [p1] 70 [p2] 71 [p3] 72 [p4] 73 [p5] 74 
[p6] 75 [p7] 76 [p8] 77 [p9] 78 [p10] 79 [p11] 80 [p12] 81 [p13] 82 [p14] 83 
[p15]
;;  hardware regs used   31 [sp] 64 [sfp] 65 [ap]
;;  regular block artificial uses        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  eh block artificial uses     29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;;  entry block defs     0 [x0] 1 [x1] 2 [x2] 3 [x3] 4 [x4] 5 [x5] 6 [x6] 7 
[x7] 8 [x8] 29 [x29] 30 [x30] 31 [sp] 32 [v0] 33 [v1] 34 [v2] 35 [v3] 36 [v4] 
37 [v5] 38 [v6] 39 [v7] 64 [sfp] 65 [ap]
;;  exit block uses      29 [x29] 31 [sp] 64 [sfp]
;;  regs ever live       0 [x0] 1 [x1] 66 [cc]
;;  ref usage   r0={1d,1u} r1={1d,1u} r2={1d} r3={1d} r4={1d} r5={1d} r6={1d} 
r7={1d} r8={1d} r29={1d,4u} r30={1d} r31={1d,4u} r32={1d} r33={1d} r34={1d} 
r35={1d} r36={1d} r37={1d} r38={1d} r39={1d} r64={1d,4u} r65={1d,3u} 
r66={1d,1u} r91={2d,4u} r94={1d,1u} r95={1d,1u} r96={1d,1u} r97={1d,1u,1e} 
r98={1d,1u} r99={1d,1u} r100={1d,1u} r101={1d,1u} 
;;    total ref usage 64{33d,30u,1e} in 13{13 regular + 0 call} insns.
;; basic block 2, loop depth 0, count 10737418 (estimated locally), maybe hot
;;  prev block 0, next block 3, flags: (RTL)
;;  pred:       ENTRY [always]  count:10737418 (estimated locally) (FALLTHRU)
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u0(29){ }u1(31){ }u2(64){ }u3(65){ }}
;; lr  in        0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def       91 94 95 99 100 101
;; live  in      0 [x0] 1 [x1] 29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen     91 94 95 99 100 101
;; live  kill   
(note 6 0 23 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 23 6 2 2 (set (reg:DI 100)
        (reg:DI 0 x0 [ aD.3413 ])) "tmp.c":20:1 -1
     (expr_list:REG_DEAD (reg:DI 0 x0 [ aD.3413 ])
        (nil)))
(insn 2 23 24 2 (set (reg/v/f:DI 94 [ aD.3413 ])
        (reg:DI 100)) "tmp.c":20:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 100)
        (nil)))
(insn 24 2 3 2 (set (reg:DI 101)
        (reg:DI 1 x1 [ bD.3414 ])) "tmp.c":20:1 -1
     (expr_list:REG_DEAD (reg:DI 1 x1 [ bD.3414 ])
        (nil)))
(insn 3 24 4 2 (set (reg/v/f:DI 95 [ bD.3414 ])
        (reg:DI 101)) "tmp.c":20:1 47 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:DI 101)
        (nil)))
(note 4 3 5 2 NOTE_INSN_FUNCTION_BEG)
(insn 5 4 11 2 (set (reg:DI 91 [ D.3456 ])
        (const_int 0 [0])) "tmp.c":20:1 47 {*movdi_aarch64}
     (nil))
(insn 11 5 15 2 (set (reg:V4SF 99)
        (const_vector:V4SF [
                (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
            ])) "tmp.c":23:26 1154 {*aarch64_simd_movv4sf}
     (nil))
;;  succ:       3 [always]  count:10737418 (estimated locally) (FALLTHRU)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99

;; basic block 3, loop depth 0, count 268435451 (estimated locally), maybe hot
;;  prev block 2, next block 4, flags: (RTL)
;;  pred:       2 [always]  count:10737418 (estimated locally) (FALLTHRU)
;;              3 [96.0% (adjusted)]  count:257698033 (estimated locally) 
(DFS_BACK)
;; bb 3 artificial_defs: { }
;; bb 3 artificial_uses: { u6(29){ }u7(31){ }u8(64){ }u9(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; lr  def       66 [cc] 91 96 97 98
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  gen     66 [cc] 91 96 97 98
;; live  kill   
(code_label 15 11 8 3 6 (nil) [1 uses])
(note 8 15 9 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 9 8 10 3 (set (reg:V4SI 96 [ D.3448 ])
        (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3414 ])
                (reg:DI 91 [ D.3456 ])) [2 MEM[base: b_11(D), index: 
ivtmp.32_21, offset: 0B]+0 S16 A32])) "tmp.c":23:22 1151 {*aarch64_simd_movv4si}
     (nil))
(insn 10 9 12 3 (set (reg:V4SF 97 [ D.3449 ])
        (float:V4SF (reg:V4SI 96 [ D.3448 ]))) "tmp.c":23:14 2074 
{floatv4siv4sf2}
     (expr_list:REG_DEAD (reg:V4SI 96 [ D.3448 ])
        (nil)))
(insn 12 10 13 3 (set (reg:V4SF 98 [ D.3450 ])
        (mult:V4SF (reg:V4SF 97 [ D.3449 ])
            (reg:V4SF 99))) "tmp.c":23:26 1906 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 97 [ D.3449 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 97 [ D.3449 ])
                (const_vector:V4SF [
                        (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
                    ]))
            (nil))))
(insn 13 12 14 3 (set (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3413 ])
                (reg:DI 91 [ D.3456 ])) [1 MEM[base: a_12(D), index: 
ivtmp.32_21, offset: 0B]+0 S16 A32])
        (reg:V4SF 98 [ D.3450 ])) "tmp.c":23:10 1154 {*aarch64_simd_movv4sf}
     (expr_list:REG_DEAD (reg:V4SF 98 [ D.3450 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ D.3456 ])
        (plus:DI (reg:DI 91 [ D.3456 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ D.3456 ])
            (const_int 4096 [0x1000]))) 448 {cmpdi}
     (nil))
(jump_insn 17 16 18 3 (set (pc)
        (if_then_else (ne (reg:CC 66 cc)
                (const_int 0 [0]))
            (label_ref:DI 15)
            (pc))) 9 {condjump}
     (expr_list:REG_DEAD (reg:CC 66 cc)
        (int_list:REG_BR_PROB 1030792158 (nil)))
 -> 15)
;;  succ:       3 [96.0% (adjusted)]  count:257698033 (estimated locally) 
(DFS_BACK)
;;              4 [4.0% (adjusted)]  count:10737418 (estimated locally) 
(FALLTHRU,LOOP_EXIT)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap] 91 94 95 99

;; basic block 4, loop depth 0, count 10737418 (estimated locally), maybe hot
;;  prev block 3, next block 1, flags: (RTL)
;;  pred:       3 [4.0% (adjusted)]  count:10737418 (estimated locally) 
(FALLTHRU,LOOP_EXIT)
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u22(29){ }u23(31){ }u24(64){ }u25(65){ }}
;; lr  in        29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  use       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; lr  def      
;; live  in      29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  gen    
;; live  kill   
(note 18 17 0 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
;;  succ:       EXIT [always]  count:10737418 (estimated locally) (FALLTHRU)
;; lr  out       29 [x29] 31 [sp] 64 [sfp] 65 [ap]
;; live  out     29 [x29] 31 [sp] 64 [sfp] 65 [ap]


;; Combiner totals: 19 attempts, 13 substitutions (2 requiring new space),
;; 1 successes.

Reply via email to