Commit 4f15b6a2 by Andreas Krebbel Committed by Andreas Krebbel

New target check: vect_peeling_profitable

gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* doc/sourcebuild.texi: Document vect_peeling_profitable.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* g++.dg/vect/slp-pr56812.cc: xfail for targets which don't want
	vector loop peeling.
	* lib/target-supports.exp (check_effective_target_vect_peeling_profitable):
	New proc.

From-SVN: r253407
parent 30d027da
2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* doc/sourcebuild.texi: Document vect_peeling_profitable.
2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* doc/sourcebuild.texi: Document vect_intdouble_cvt and
vect_doubleint_cvt.
......@@ -1404,6 +1404,9 @@ Target supports a vector misalign access.
@item vect_no_align
Target does not support a vector alignment mechanism.
@item vect_peeling_profitable
Target might require to peel loops for alignment purposes.
@item vect_no_int_min_max
Target does not support a vector min and max instruction on @code{int}.
......
2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* g++.dg/vect/slp-pr56812.cc: xfail for targets which don't want
vector loop peeling.
* lib/target-supports.exp (check_effective_target_vect_peeling_profitable):
New proc.
2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gcc.dg/vect/pr66251.c: Replace vect_floatint_cvt with
vect_doubleint_cvt and vect_intfloat_cvt with vect_intdouble_cvt.
* gcc.dg/vect/vect-floatint-conversion-2.c: Replace
......
......@@ -17,4 +17,6 @@ void mydata::Set (float x)
data[i] = x;
}
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
/* For targets without vector loop peeling the loop becomes cheap
enough to be vectorized. */
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { xfail { ! vect_peeling_profitable } } } } */
......@@ -3277,6 +3277,28 @@ proc check_effective_target_vect_floatuint_cvt { } {
return $et_vect_floatuint_cvt_saved($et_index)
}
# Return 1 if peeling for alignment might be profitable on the target
#
proc check_effective_target_vect_peeling_profitable { } {
global et_vect_peeling_profitable_saved
global et_index
if [info exists et_vect_peeling_profitable_saved($et_index)] {
verbose "check_effective_target_vect_peeling_profitable: using cached result" 2
} else {
set et_vect_peeling_profitable_saved($et_index) 1
if { ([istarget s390*-*-*]
&& [check_effective_target_s390_vx]) } {
set et_vect_peeling_profitable_saved($et_index) 0
}
}
verbose "check_effective_target_vect_peeling_profitable:\
returning $et_vect_peeling_profitable_saved($et_index)" 2
return $et_vect_peeling_profitable_saved($et_index)
}
# Return 1 if the target supports #pragma omp declare simd, 0 otherwise.
#
# This won't change for different subtargets so cache the result.
......
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