Hi Segher,

> I'll need some compilable source code to investigate this.  That means
> compilable for*me*, so with some target that is in trunk.

I'm not sure I can trigger this on trunk. I've attached a minimal patch, which
adds a pattern which can trigger the behaviour, and 2 c files: foo.c matches a
similar pattern which *can* be combined, bar.c should match the added pattern,
but does not. I believe it is due to some register equivalence problem.

> What you want isn't the kind of optimisation combine does at all.  You 
> probably want to look at something like cprop; or look at how this 
> code is generated, that doesn't seem optimal.

foo.c is a very similar case handled by combine, and bar.c can be handled if
the predicate checking that it is a const_vector is removed, which makes me
think it is a register equivalence issue.

from foo.c.263r.combine:
        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] 25)
              REG_DEAD r97:V4SF
        Successfully matched this instruction:
        (set (reg:V4SI 99 [ D.3424 ])
            (fix:V4SI (unspec:V4SI [
                        (mult:V4SF (reg:V4SF 96 [ D.3422 ])
                            (const_vector:V4SF [
                                    (const_double:SF 4.0e+0 [0x0.8p+3]) 
repeated x4
                                ]))
                    ] UNSPEC_FRINTZ)))


from bar.c.263r.combine:
        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.3424 ])
            (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ]))
                (reg:V4SF 99)))
I would expect combine to try this pattern:
        (set (reg:V4SF 98 [ D.3424 ])
            (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ]))
                (const_vector:V4SF [
                        (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4
                                ])))

but it does not.

In both cases the constant vector is set outside the basic block, but in the
'foo' case, combine successfully matches the pattern using register
equivalence, while in the 'bar' case in does not.

testcases compiled with:
  aarch64-none-elf-gcc -S -mcpu=cortex-a53 -O2 -ftree-vectorize -fno-inline 
-fdump-rtl-all -fno-vect-cost-model -dp -fdump-rtl-combine-all 
-fdump-tree-optimized -o - [foo.c/bar.c]

$gcc -v
COLLECT_GCC=$INSTALL/bin/aarch64-none-elf-gcc
COLLECT_LTO_WRAPPER=$INSTALL/libexec/gcc/aarch64-none-elf/10.0.0/lto-wrapper
Target: aarch64-none-elf
Configured with: src/gcc/configure --target=aarch64-none-elf --prefix=$INSTALL/ 
--with-gmp=$BUILD/host-tools --with-mpfr=$BUILD/host-tools 
--with-mpc=$BUILD/host-tools --with-isl=$BUILD/host-tools --disable-shared 
--disable-nls --disable-threads --disable-tls --enable-checking=yes 
--enable-languages=c,c++,fortran --with-newlib --with-pkgversion=unknown
Thread model: single
gcc version 10.0.0 20190612 (experimental) (unknown)

From 7e744509575030ca5b3fa6042d02d27171fbfbfd Mon Sep 17 00:00:00 2001
From: Joel Hutton <joel.hut...@arm.com>
Date: Tue, 11 Jun 2019 10:10:07 +0100
Subject: [PATCH] Minimal pattern to demonstrate combine behaviour

---
 gcc/config/aarch64/aarch64-protos.h |  1 +
 gcc/config/aarch64/aarch64-simd.md  | 13 +++++++++++++
 gcc/config/aarch64/aarch64.c        |  6 ++++++
 gcc/config/aarch64/predicates.md    |  3 +++
 4 files changed, 23 insertions(+)

diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index a0723266f22..ff1787c37ed 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -483,6 +483,7 @@ enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx);
 enum reg_class aarch64_regno_regclass (unsigned);
 int aarch64_asm_preferred_eh_data_format (int, int);
 int aarch64_fpconst_pow_of_2 (rtx);
+int aarch64_fp_const_vec (rtx);
 machine_mode aarch64_hard_regno_caller_save_mode (unsigned, unsigned,
 						       machine_mode);
 int aarch64_uxt_size (int, HOST_WIDE_INT);
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
index d4c48d2aa61..698b49c006f 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -2133,6 +2133,19 @@
   "TARGET_SIMD"
   {})
 
+(define_insn "*aarch64_combine_scvtf"
+  [(set (match_operand 0 "register_operand" "=w")
+	(mult
+	 (float
+	  (match_operand 1 "" "w"))
+	 (match_operand 2 "aarch64_fp_const_vec" ""))
+	)]
+  ""
+  {
+    return "test_match";
+  }
+)
+
 (define_insn "<optab><fcvt_target><VHSDF:mode>2"
   [(set (match_operand:VHSDF 0 "register_operand" "=w")
 	(FLOATUORS:VHSDF
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 83453d03095..f836246e184 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -18327,6 +18327,12 @@ aarch64_fpconst_pow_of_2 (rtx x)
   return exact_log2 (real_to_integer (r));
 }
 
+int
+aarch64_fp_const_vec (rtx x)
+{
+  return GET_CODE (x) == CONST_VECTOR;
+}
+
 /* If X is a vector of equal CONST_DOUBLE values and that value is
    Y, return the aarch64_fpconst_pow_of_2 of Y.  Otherwise return -1.  */
 
diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md
index 10100ca830a..8fece3811b9 100644
--- a/gcc/config/aarch64/predicates.md
+++ b/gcc/config/aarch64/predicates.md
@@ -101,6 +101,9 @@
 (define_predicate "aarch64_fp_vec_pow2"
   (match_test "aarch64_vec_fpconst_pow_of_2 (op) > 0"))
 
+(define_predicate "aarch64_fp_const_vec"
+  (match_test "aarch64_fp_const_vec (op)"))
+
 (define_predicate "aarch64_sve_cnt_immediate"
   (and (match_code "const_poly_int")
        (match_test "aarch64_sve_cnt_immediate_p (op)")))
-- 
2.17.1

void
bar (float *a, int *b)
{
  int i;
  for (i = 0; i < 1024; i++)
    a[i] = (((float)b[i])/ 4.0f);
}
void
foo (float *a, int *b)
{
  int i;
  for (i = 0; i < 1024; i++)
    b[i] = a[i] * 4.0f;
}
;; Function bar (bar, funcdef_no=0, decl_uid=3409, 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)


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.13 ]) 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.7 ]) in insn 13:
  Adding insn 12 to worklist
Processing use of (reg 97 [ vect__5.6 ]) 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.5 ]) in insn 10:
  Adding insn 9 to worklist
Processing use of (reg 91 [ ivtmp.13 ]) 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.13 ]) in insn 14:
Processing use of (reg 66 cc) in insn 17:
  Adding insn 16 to worklist
Processing use of (reg 91 [ ivtmp.13 ]) 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 ])) "bar.c":3: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 ])) "bar.c":3: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.13 ])
        (const_int 0 [0])) "bar.c":3: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
            ])) "bar.c":6:26 1149 {*aarch64_simd_movv4sf}
     (nil))
(code_label 15 11 8 3 2 (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.5 ])
        (mem:V4SI (plus:DI (reg/v/f:DI 95 [ b ])
                (reg:DI 91 [ ivtmp.13 ])) [1 MEM[base: b_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])) "bar.c":6:22 1146 {*aarch64_simd_movv4si}
     (nil))
(insn 10 9 12 3 (set (reg:V4SF 97 [ vect__5.6 ])
        (float:V4SF (reg:V4SI 96 [ vect__4.5 ]))) "bar.c":6:14 2070 
{floatv4siv4sf2}
     (expr_list:REG_DEAD (reg:V4SI 96 [ vect__4.5 ])
        (nil)))
(insn 12 10 13 3 (set (reg:V4SF 98 [ vect__7.7 ])
        (mult:V4SF (reg:V4SF 97 [ vect__5.6 ])
            (reg:V4SF 99))) "bar.c":6:26 1901 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 97 [ vect__5.6 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 97 [ vect__5.6 ])
                (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.13 ])) [2 MEM[base: a_12(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
        (reg:V4SF 98 [ vect__7.7 ])) "bar.c":6:10 1149 {*aarch64_simd_movv4sf}
     (expr_list:REG_DEAD (reg:V4SF 98 [ vect__7.7 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ ivtmp.13 ])
        (plus:DI (reg:DI 91 [ ivtmp.13 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ ivtmp.13 ])
            (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=0, decl_uid=3409, 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)


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 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    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.3423 ])
    (float:V4SF (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3408 ])
                (reg:DI 91 [ D.3430 ])) [1 MEM[base: b_11(D), index: 
ivtmp.13_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.3424 ])
    (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ]))
        (reg:V4SF 99)))

Trying 9, 10 -> 12:
    9: r96:V4SI=[r95:DI+r91:DI]
   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.3424 ])
    (mult:V4SF (float:V4SF (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3408 ])
                    (reg:DI 91 [ D.3430 ])) [1 MEM[base: b_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32]))
        (reg:V4SF 99)))
Failed to match this instruction:
(set (reg:V4SF 97 [ D.3423 ])
    (float:V4SF (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3408 ])
                (reg:DI 91 [ D.3430 ])) [1 MEM[base: b_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])))

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.3407 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: a_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (reg:V4SF 97 [ D.3423 ])
        (reg:V4SF 99)))

Trying 10, 12 -> 13:
   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
   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.3407 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: a_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ]))
        (reg:V4SF 99)))
Successfully matched this instruction:
(set (reg:V4SF 98 [ D.3424 ])
    (float:V4SF (reg:V4SI 96 [ D.3422 ])))
Failed to match this instruction:
(set (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: a_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (reg:V4SF 98 [ D.3424 ])
        (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.3407 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: a_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (mult:V4SF (reg:V4SF 97 [ D.3423 ])
        (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.3430 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3430 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (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.3430 ])
            (const_int 4096 [0x1000]))
        (label_ref:DI 15)
        (pc)))

Trying 14, 16 -> 17:
   14: r91:DI=r91:DI+0x10
   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:
(parallel [
        (set (pc)
            (if_then_else (ne (reg:DI 91 [ D.3430 ])
                    (const_int 4080 [0xff0]))
                (label_ref:DI 15)
                (pc)))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (pc)
            (if_then_else (ne (reg:DI 91 [ D.3430 ])
                    (const_int 4080 [0xff0]))
                (label_ref:DI 15)
                (pc)))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])

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 33 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 33 6 2 2 (set (reg:DI 100)
        (reg:DI 0 x0 [ aD.3407 ])) "bar.c":3:1 -1
     (expr_list:REG_DEAD (reg:DI 0 x0 [ aD.3407 ])
        (nil)))
(insn 2 33 34 2 (set (reg/v/f:DI 94 [ aD.3407 ])
        (reg:DI 100)) "bar.c":3: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.3408 ])) "bar.c":3:1 -1
     (expr_list:REG_DEAD (reg:DI 1 x1 [ bD.3408 ])
        (nil)))
(insn 3 34 4 2 (set (reg/v/f:DI 95 [ bD.3408 ])
        (reg:DI 101)) "bar.c":3: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.3430 ])
        (const_int 0 [0])) "bar.c":3: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
            ])) "bar.c":6:26 1149 {*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 2 (nil) [1 uses])
(note 8 15 9 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 9 8 10 3 (set (reg:V4SI 96 [ D.3422 ])
        (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3408 ])
                (reg:DI 91 [ D.3430 ])) [1 MEM[base: b_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])) "bar.c":6:22 1146 {*aarch64_simd_movv4si}
     (nil))
(insn 10 9 12 3 (set (reg:V4SF 97 [ D.3423 ])
        (float:V4SF (reg:V4SI 96 [ D.3422 ]))) "bar.c":6:14 2070 
{floatv4siv4sf2}
     (expr_list:REG_DEAD (reg:V4SI 96 [ D.3422 ])
        (nil)))
(insn 12 10 13 3 (set (reg:V4SF 98 [ D.3424 ])
        (mult:V4SF (reg:V4SF 97 [ D.3423 ])
            (reg:V4SF 99))) "bar.c":6:26 1901 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 97 [ D.3423 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 97 [ D.3423 ])
                (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.3407 ])
                (reg:DI 91 [ D.3430 ])) [2 MEM[base: a_12(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
        (reg:V4SF 98 [ D.3424 ])) "bar.c":6:10 1149 {*aarch64_simd_movv4sf}
     (expr_list:REG_DEAD (reg:V4SF 98 [ D.3424 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ D.3430 ])
        (plus:DI (reg:DI 91 [ D.3430 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ D.3430 ])
            (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: 9 attempts, 9 substitutions (2 requiring new space),
;; 0 successes.
;; Function foo (foo, funcdef_no=0, decl_uid=3409, 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.13 ]) 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.7 ]) in insn 13:
  Adding insn 12 to worklist
Processing use of (reg 97 [ vect__5.6 ]) in insn 12:
  Adding insn 11 to worklist
Processing use of (reg 96 [ vect__4.5 ]) 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.13 ]) 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.13 ]) in insn 14:
Processing use of (reg 66 cc) in insn 17:
  Adding insn 16 to worklist
Processing use of (reg 91 [ ivtmp.13 ]) 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 ])) "foo.c":3: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 ])) "foo.c":3: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.13 ])
        (const_int 0 [0])) "foo.c":3: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
            ])) "foo.c":6:17 1149 {*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.5 ])
        (mem:V4SF (plus:DI (reg/v/f:DI 94 [ a ])
                (reg:DI 91 [ ivtmp.13 ])) [1 MEM[base: a_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])) "foo.c":6:13 1149 {*aarch64_simd_movv4sf}
     (nil))
(insn 11 9 12 3 (set (reg:V4SF 97 [ vect__5.6 ])
        (mult:V4SF (reg:V4SF 96 [ vect__4.5 ])
            (reg:V4SF 98))) "foo.c":6:17 1901 {mulv4sf3}
     (expr_list:REG_DEAD (reg:V4SF 96 [ vect__4.5 ])
        (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 96 [ vect__4.5 ])
                (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.7 ])
        (fix:V4SI (unspec:V4SI [
                    (reg:V4SF 97 [ vect__5.6 ])
                ] UNSPEC_FRINTZ))) "foo.c":6:10 2023 {lbtruncv4sfv4si2}
     (expr_list:REG_DEAD (reg:V4SF 97 [ vect__5.6 ])
        (nil)))
(insn 13 12 14 3 (set (mem:V4SI (plus:DI (reg/v/f:DI 95 [ b ])
                (reg:DI 91 [ ivtmp.13 ])) [2 MEM[base: b_12(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
        (reg:V4SI 99 [ vect__7.7 ])) "foo.c":6:10 1146 {*aarch64_simd_movv4si}
     (expr_list:REG_DEAD (reg:V4SI 99 [ vect__7.7 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ ivtmp.13 ])
        (plus:DI (reg:DI 91 [ ivtmp.13 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ ivtmp.13 ])
            (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=3409, 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] 25)
      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.3423 ])
    (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), index: 
ivtmp.13_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] 25)
      REG_DEAD r97:V4SF
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3424 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3422 ])
                    (reg:V4SF 98))
            ] UNSPEC_FRINTZ)))

Trying 9, 11 -> 12:
    9: r96:V4SF=[r94:DI+r91:DI]
   11: r97:V4SF=r96:V4SF*r98:V4SF
      REG_DEAD r96:V4SF
      REG_EQUAL r96:V4SF*const_vector
   12: r99:V4SI=fix(unspec[r97:V4SF] 25)
      REG_DEAD r97:V4SF
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3424 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                            (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), 
index: ivtmp.13_21, offset: 0B]+0 S16 A32])
                    (reg:V4SF 98))
            ] UNSPEC_FRINTZ)))
Failed to match this instruction:
(set (reg:V4SI 97 [ D.3423 ])
    (unspec:V4SI [
            (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                        (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
                (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] 25)
      REG_DEAD r97:V4SF
Successfully matched this instruction:
(set (reg:V4SI 99 [ D.3424 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3422 ])
                    (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] 25)
      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] 25)
      REG_DEAD r96:V4SF
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3424 ])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                            (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), 
index: ivtmp.13_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] 25)
      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.3408 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: b_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (reg:V4SF 96 [ D.3422 ])
                    (const_vector:V4SF [
                            (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                        ]))
            ] UNSPEC_FRINTZ)))

Trying 9, 12 -> 13:
    9: r96:V4SF=[r94:DI+r91:DI]
   12: r99:V4SI=fix(unspec[r96:V4SF*const_vector] 25)
      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.3408 ])
            (reg:DI 91 [ D.3430 ])) [2 MEM[base: b_12(D), index: ivtmp.13_21, 
offset: 0B]+0 S16 A32])
    (fix:V4SI (unspec:V4SI [
                (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                            (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), 
index: ivtmp.13_21, offset: 0B]+0 S16 A32])
                    (const_vector:V4SF [
                            (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                        ]))
            ] UNSPEC_FRINTZ)))
Failed to match this instruction:
(set (reg:V4SI 99 [ D.3424 ])
    (unspec:V4SI [
            (mult:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                        (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
                (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.3430 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:CC 66 cc)
            (compare:CC (reg:DI 91 [ D.3430 ])
                (const_int 4080 [0xff0])))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (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.3430 ])
            (const_int 4096 [0x1000]))
        (label_ref:DI 15)
        (pc)))

Trying 14, 16 -> 17:
   14: r91:DI=r91:DI+0x10
   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:
(parallel [
        (set (pc)
            (if_then_else (ne (reg:DI 91 [ D.3430 ])
                    (const_int 4080 [0xff0]))
                (label_ref:DI 15)
                (pc)))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])
Failed to match this instruction:
(parallel [
        (set (pc)
            (if_then_else (ne (reg:DI 91 [ D.3430 ])
                    (const_int 4080 [0xff0]))
                (label_ref:DI 15)
                (pc)))
        (set (reg:DI 91 [ D.3430 ])
            (plus:DI (reg:DI 91 [ D.3430 ])
                (const_int 16 [0x10])))
    ])

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.3407 ])) "foo.c":3:1 -1
     (expr_list:REG_DEAD (reg:DI 0 x0 [ aD.3407 ])
        (nil)))
(insn 2 33 34 2 (set (reg/v/f:DI 94 [ aD.3407 ])
        (reg:DI 100)) "foo.c":3: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.3408 ])) "foo.c":3:1 -1
     (expr_list:REG_DEAD (reg:DI 1 x1 [ bD.3408 ])
        (nil)))
(insn 3 34 4 2 (set (reg/v/f:DI 95 [ bD.3408 ])
        (reg:DI 101)) "foo.c":3: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.3430 ])
        (const_int 0 [0])) "foo.c":3: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
            ])) "foo.c":6:17 1149 {*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.3422 ])
        (mem:V4SF (plus:DI (reg/v/f:DI 94 [ aD.3407 ])
                (reg:DI 91 [ D.3430 ])) [1 MEM[base: a_11(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])) "foo.c":6:13 1149 {*aarch64_simd_movv4sf}
     (nil))
(note 11 9 12 3 NOTE_INSN_DELETED)
(insn 12 11 13 3 (set (reg:V4SI 99 [ D.3424 ])
        (fix:V4SI (unspec:V4SI [
                    (mult:V4SF (reg:V4SF 96 [ D.3422 ])
                        (const_vector:V4SF [
                                (const_double:SF 4.0e+0 [0x0.8p+3]) repeated x4
                            ]))
                ] UNSPEC_FRINTZ))) "foo.c":6:10 2059 
{*aarch64_fcvtv4sfv4si2_mult}
     (expr_list:REG_DEAD (reg:V4SF 96 [ D.3422 ])
        (nil)))
(insn 13 12 14 3 (set (mem:V4SI (plus:DI (reg/v/f:DI 95 [ bD.3408 ])
                (reg:DI 91 [ D.3430 ])) [2 MEM[base: b_12(D), index: 
ivtmp.13_21, offset: 0B]+0 S16 A32])
        (reg:V4SI 99 [ D.3424 ])) "foo.c":6:10 1146 {*aarch64_simd_movv4si}
     (expr_list:REG_DEAD (reg:V4SI 99 [ D.3424 ])
        (nil)))
(insn 14 13 16 3 (set (reg:DI 91 [ D.3430 ])
        (plus:DI (reg:DI 91 [ D.3430 ])
            (const_int 16 [0x10]))) 112 {*adddi3_aarch64}
     (nil))
(insn 16 14 17 3 (set (reg:CC 66 cc)
        (compare:CC (reg:DI 91 [ D.3430 ])
            (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]


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

Reply via email to