This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug testsuite/31589] gcc.dg/vect failures due to missing target specifiers



------- Comment #2 from dorit at il dot ibm dot com  2007-04-17 20:10 -------
> 2 more are under investigation:
> no-section-anchors-vect-69.c
> vect-reduc-dot-u16a.c

In the first testcase, the vectorizer can only prove that the data reference in
the third loop is aligned on 8 bytes. This is enough for targets like ia64 in
which the vector size is 8 bytes, and therefore we don't need to peel in order
to force alignment for this loop. So overall in this testcase we peel only
twice. On targets that require 16byte alignment, a guaranteed 8bytes alignment
is not enough, and therefore we peel this loop to align the data-reference (and
overall in the testcase we peel 3 times).  

I guess the way to solve this is to add a keyword that lists the targets with
8byte-wide-vectors and targets with 16byte-wide-vectors, or just hard code the
targets that are expected to fail/pass here. I'll sleep on it and supply a
patch soon.


The second test needs the same fix as a lot of the other tests: 
add { target vect_pack_mod } to the check.  This is because the loop in main
has a cast from int to short in it.  However, in this testcase we already have
two target keywords that we are checking:
 { target { vect_short_mult && vect_widen_sum_hi_to_si } }, 
and I don't think the testsuite engine currently provides the flexibility to
and a third keyword, so I suggest to just change the loop slightly to avoid the
cast (it's not the point of this testcase anyway):

Index: vect-reduc-dot-u16a.c
===================================================================
--- vect-reduc-dot-u16a.c       (revision 123909)
+++ vect-reduc-dot-u16a.c       (working copy)
@@ -30,7 +30,7 @@
 int main (void)
 {
   unsigned int dot1;
-  int i;
+  unsigned short i;

   check_vect ();


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31589


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]