Fixup gcc.dg/vect/pr65947-3.c when masked loads are available
The following adds a effective target to properly allow the gcc.dg/vect/pr65947-3.c expected vectorization to be adjusted when run with, say, -march=cascadelake. 2020-10-09 Richard Biener <rguenther@suse.de> gcc/ * doc/sourcebuild.texi (vect_masked_load): Document. gcc/testsuite * lib/target-supports.exp (check_effective_target_vect_masked_load): New effective target. * gcc.dg/vect/pr65947-3.c: Update.
This commit is contained in:
parent
16760e5bf7
commit
8c26cfc6af
3 changed files with 16 additions and 4 deletions
|
@ -1527,6 +1527,9 @@ optabs on vectors.
|
|||
Target supports fully-masked (also known as fully-predicated) loops,
|
||||
so that vector loops can handle partial as well as full vectors.
|
||||
|
||||
@item vect_masked_load
|
||||
Target supports vector masked loads.
|
||||
|
||||
@item vect_masked_store
|
||||
Target supports vector masked stores.
|
||||
|
||||
|
|
|
@ -51,9 +51,10 @@ main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* XFAILed because of the fix for PR97307 which sinks the load of a[i], preventing
|
||||
if-conversion to happen. */
|
||||
/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" { xfail *-*-* } } } */
|
||||
/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" } } */
|
||||
/* Since the fix for PR97307 which sinks the load of a[i], preventing
|
||||
if-conversion to happen, targets that cannot do masked loads only
|
||||
vectorize the inline copy. */
|
||||
/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" { target vect_masked_load } } } */
|
||||
/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" { target { ! vect_masked_load } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "optimizing condition reduction with FOLD_EXTRACT_LAST" 2 "vect" { target vect_fold_extract_last } } } */
|
||||
/* { dg-final { scan-tree-dump-not "condition expression based on integer induction." "vect" } } */
|
||||
|
|
|
@ -7194,6 +7194,14 @@ proc check_effective_target_vect_load_lanes { } {
|
|||
|| [istarget aarch64*-*-*] }}]
|
||||
}
|
||||
|
||||
# Return 1 if the target supports vector masked loads.
|
||||
|
||||
proc check_effective_target_vect_masked_load { } {
|
||||
return [expr { [check_avx_available]
|
||||
|| [check_effective_target_aarch64_sve]
|
||||
|| [istarget amdgcn*-*-*] } ]
|
||||
}
|
||||
|
||||
# Return 1 if the target supports vector masked stores.
|
||||
|
||||
proc check_effective_target_vect_masked_store { } {
|
||||
|
|
Loading…
Add table
Reference in a new issue