Commit c689ce1e by Richard Biener Committed by Richard Biener

revert: [multiple changes]

2015-06-17  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/66251
	* tree-vect-stmts.c (vectorizable_store): Fix gathering of vectorized
	stmts for SLP strided stores.

	* gfortran.fortran-torture/compile/pr66251-2.f90: New testcase.

	Revert
	2015-05-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/66251
	* tree-vect-stmts.c (vectorizable_conversion): Properly
	set STMT_VINFO_VEC_STMT even for the SLP case.

	2015-05-26  Michael Matz  <matz@suse.de>

	PR middle-end/66251
	* tree-vect-stmts.c (vect_create_vectorized_demotion_stmts): Always set
	STMT_VINFO_VEC_STMT, also with SLP.

From-SVN: r224545
parent 74c7484e
2015-06-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/66251
* tree-vect-stmts.c (vectorizable_store): Fix gathering of vectorized
stmts for SLP strided stores.
Revert
2015-05-22 Richard Biener <rguenther@suse.de>
PR tree-optimization/66251
* tree-vect-stmts.c (vectorizable_conversion): Properly
set STMT_VINFO_VEC_STMT even for the SLP case.
2015-05-26 Michael Matz <matz@suse.de>
PR middle-end/66251
* tree-vect-stmts.c (vect_create_vectorized_demotion_stmts): Always set
STMT_VINFO_VEC_STMT, also with SLP.
2015-06-16 Uros Bizjak <ubizjak@gmail.com> 2015-06-16 Uros Bizjak <ubizjak@gmail.com>
PR target/56766 PR target/56766
......
2015-06-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/66251
* gfortran.fortran-torture/compile/pr66251-2.f90: New testcase.
2015-06-16 Paolo Carlini <paolo.carlini@oracle.com> 2015-06-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59682 PR c++/59682
......
subroutine mv(m,nc,irp,ja,val,x,ldx,y,ldy,acc)
use iso_fortran_env
implicit none
integer, parameter :: ipk_ = int32
integer, parameter :: spk_ = real32
complex(spk_), parameter :: czero=(0.0_spk_,0.0_spk_)
integer(ipk_), intent(in) :: m,ldx,ldy,nc,irp(*),ja(*)
complex(spk_), intent(in) :: x(ldx,*),val(*)
complex(spk_), intent(inout) :: y(ldy,*)
complex(spk_), intent(inout) :: acc(*)
integer(ipk_) :: i,j,k, ir, jc
do i=1,m
acc(1:nc) = czero
do j=irp(i), irp(i+1)-1
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
enddo
y(i,1:nc) = -acc(1:nc)
end do
end subroutine mv
...@@ -3370,7 +3370,8 @@ vect_create_vectorized_demotion_stmts (vec<tree> *vec_oprnds, ...@@ -3370,7 +3370,8 @@ vect_create_vectorized_demotion_stmts (vec<tree> *vec_oprnds,
(or in STMT_VINFO_RELATED_STMT chain). */ (or in STMT_VINFO_RELATED_STMT chain). */
if (slp_node) if (slp_node)
SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt); SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
else
{
if (!*prev_stmt_info) if (!*prev_stmt_info)
STMT_VINFO_VEC_STMT (stmt_info) = new_stmt; STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
else else
...@@ -3379,6 +3380,7 @@ vect_create_vectorized_demotion_stmts (vec<tree> *vec_oprnds, ...@@ -3379,6 +3380,7 @@ vect_create_vectorized_demotion_stmts (vec<tree> *vec_oprnds,
*prev_stmt_info = vinfo_for_stmt (new_stmt); *prev_stmt_info = vinfo_for_stmt (new_stmt);
} }
} }
}
/* For multi-step demotion operations we first generate demotion operations /* For multi-step demotion operations we first generate demotion operations
from the source type to the intermediate types, and then combine the from the source type to the intermediate types, and then combine the
...@@ -3955,7 +3957,8 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, ...@@ -3955,7 +3957,8 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
if (slp_node) if (slp_node)
SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt); SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
else
{
if (!prev_stmt_info) if (!prev_stmt_info)
STMT_VINFO_VEC_STMT (stmt_info) = new_stmt; STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
else else
...@@ -3963,6 +3966,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, ...@@ -3963,6 +3966,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
prev_stmt_info = vinfo_for_stmt (new_stmt); prev_stmt_info = vinfo_for_stmt (new_stmt);
} }
} }
}
*vec_stmt = STMT_VINFO_VEC_STMT (stmt_info); *vec_stmt = STMT_VINFO_VEC_STMT (stmt_info);
break; break;
...@@ -5327,9 +5331,23 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, ...@@ -5327,9 +5331,23 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
/* We've set op and dt above, from gimple_assign_rhs1(stmt), /* We've set op and dt above, from gimple_assign_rhs1(stmt),
and first_stmt == stmt. */ and first_stmt == stmt. */
if (j == 0) if (j == 0)
{
if (slp)
{
vect_get_vec_defs (op, NULL_TREE, stmt, &vec_oprnds, NULL,
slp_node, -1);
vec_oprnd = vec_oprnds[0];
}
else
vec_oprnd = vect_get_vec_def_for_operand (op, first_stmt, NULL); vec_oprnd = vect_get_vec_def_for_operand (op, first_stmt, NULL);
}
else
{
if (slp)
vec_oprnd = vec_oprnds[j];
else else
vec_oprnd = vect_get_vec_def_for_stmt_copy (dt, vec_oprnd); vec_oprnd = vect_get_vec_def_for_stmt_copy (dt, vec_oprnd);
}
for (i = 0; i < nstores; i++) for (i = 0; i < nstores; i++)
{ {
...@@ -5359,7 +5377,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, ...@@ -5359,7 +5377,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
vect_finish_stmt_generation (stmt, incr, gsi); vect_finish_stmt_generation (stmt, incr, gsi);
running_off = newoff; running_off = newoff;
if (j == 0 && i == i) if (j == 0 && i == 0)
STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = assign; STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = assign;
else else
STMT_VINFO_RELATED_STMT (prev_stmt_info) = assign; STMT_VINFO_RELATED_STMT (prev_stmt_info) = assign;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment