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

--- Comment #3 from Joel Hutton <joelh at gcc dot gnu.org> ---
Seems like the 'vect' pass is vectorizing a 'MASK_STORE' to a 'SCATTER_STORE'
and ignoring the mask.

1292 testcase.c:7:29: note:  vect_is_simple_use: operand 0, type of def:
constant$
1293 testcase.c:7:29: note:  created new init_stmt: vect_cst__65 = { 0, 0, 0, 0
};$
1294 testcase.c:7:29: note:  add new stmt: mask__60.11_66 = vect_cst__64 ==
vect_cst__65;$
1295 testcase.c:7:29: note:  ------>vectorizing statement: _61 = &a[_10];$
1296 testcase.c:7:29: note:  ------>vectorizing statement: .MASK_STORE (_61,
128B, _60, _31);$
1297 testcase.c:7:29: note:  transform statement.$
1298 testcase.c:7:29: note:  vect_is_simple_use: operand l_23(D) == 0, type of
def: internal$
1299 testcase.c:7:29: note:  vect_is_simple_use: vectype vector(4)
<signed-boolean:8>$
1300 testcase.c:7:29: note:  vect_is_simple_use: operand (long intD.9) j_24(D),
type of def: internal$
1301 testcase.c:7:29: note:  vect_is_simple_use: vectype vector(4) long int$
1302 Applying pattern match.pd:139, generic-match.c:24056$
1303 Applying pattern match.pd:139, generic-match.c:24056$
1304 testcase.c:7:29: note:  transform store. ncopies = 1$
1305 testcase.c:7:29: note:  vect_get_vec_defs_for_operand: _31$
1306 testcase.c:7:29: note:  vect_is_simple_use: operand (long intD.9) j_24(D),
type of def: internal$
1307 testcase.c:7:29: note:    def_stmt =  _31 = (long int) j_24(D);$
1308 testcase.c:7:29: note:  vect_get_vec_defs_for_operand: _60$
1309 testcase.c:7:29: note:  vect_is_simple_use: operand l_23(D) == 0, type of
def: internal$
1310 testcase.c:7:29: note:    def_stmt =  _60 = l_23(D) == 0;$
1311 testcase.c:7:29: note:  create integer_type-pointer variable to type: long
int  vectorizing a pointer ref: MEM[(long int *)&a]$
1312 Applying pattern match.pd:139, generic-match.c:27580$
1313 testcase.c:7:29: note:  created &a$
1314 testcase.c:7:29: note:  add new stmt: .SCATTER_STORE (vectp_a.12_67, { 0,
32, 64, 96 }, 1, vect__31.10_63);$



before:

112   <bb 4> [local count: 858993458]:$
113   # i_39 = PHI <i_26(17), 0(3)>$
114   # ivtmp_16 = PHI <ivtmp_7(17), 4(3)>$
115   _1 = (int) i_39;$
116   _2 = (long int) j_24(D);$
117   _45 = l_23(D) == 0;$
118   _46 = &a[_1];$
119   .MASK_STORE (_46, 128B, _45, _2);$
120   i.0_3 = (unsigned short) i_39;$
121   _4 = i.0_3 + 4;$
122   i_26 = (short int) _4;$
123   ivtmp_7 = ivtmp_16 - 1;$
124   if (ivtmp_7 != 0)$
125     goto <bb 17>; [75.00%]$
126   else$
127     goto <bb 7>; [25.00%]$
128 $
129   <bb 17> [local count: 644245087]:$
130   goto <bb 4>; [100.00%]$
131 $
132   <bb 7> [local count: 214748368]:$
133   h_22 = h_33 + 1;$
134   if (_14 > h_22)$
135     goto <bb 16>; [89.00%]$
136   else$
137     goto <bb 19>; [11.00%]$


after:

1525   # PT = null { D.3608 } (nonlocal)$
1526   # ALIGN = 32, MISALIGN = 0$
1527   # vectp_a.12_67 = PHI <&aD.3608(21), vectp_a.12_68(26)>$
1528   # ivtmp_70 = PHI <0(21), ivtmp_71(26)>$
1529   _10 = (intD.7) i_9;$
1530   vect__31.10_63 = (vector(4) long intD.9) vect_cst__62;$
1531   _31 = (long intD.9) j_24(D);$
1532   mask__60.11_66 = vect_cst__64 == vect_cst__65;$
1533   _60 = l_23(D) == 0;$
1534   # PT = null { D.3608 } (nonlocal)$
1535   _61 = &aD.3608[_10];$
1536   # .MEM_69 = VDEF <.MEM_13>$
1537   # USE = anything~$
1538   # CLB = anything~$
1539   .SCATTER_STORE (vectp_a.12_67, { 0, 32, 64, 96 }, 1, vect__31.10_63);$
1540   # RANGE [0, 14] NONZERO 12$
1541   i.0_27 = (unsigned short) i_9;$
1542   # RANGE [4, 18] NONZERO 28$
1543   _28 = i.0_27 + 4;$
1544   # RANGE [4, 18] NONZERO 28$
1545   i_29 = (short intD.18) _28;$
1546   ivtmp_30 = ivtmp_11 - 1;$
1547   # PT = null { D.3608 } (nonlocal)$
1548   # ALIGN = 32, MISALIGN = 0$
1549   vectp_a.12_68 = vectp_a.12_67 + 128;$
1550   ivtmp_71 = ivtmp_70 + 1;$
1551   if (ivtmp_71 < 1)$
1552     goto <bb 26>; [0.00%]$
1553   else$
1554     goto <bb 40>; [100.00%]$
1555 ;;    succ:       26 [never (adjusted)]  count:0 (estimated locally)
(TRUE_VALUE,EXECUTABLE)$
1556 ;;                40 [always (adjusted)]  count:214748371 (estimated
locally) (FALSE_VALUE,EXECUTABLE)$
1557 $
1558 ;;   basic block 26, loop depth 4, count 0 (estimated locally)$
1559 ;;    prev block 22, next block 40, flags: (NEW, VISITED)$
1560 ;;    pred:       22 [never (adjusted)]  count:0 (estimated locally)
(TRUE_VALUE,EXECUTABLE)$
1561   goto <bb 22>; [100.00%]$

Reply via email to