Os-vect-95.c: New test.
* gcc.dg/vect/Os-vect-95.c: New test. * gcc.dg/vect/vect-95.c: Same. From-SVN: r103942
This commit is contained in:
parent
c12cc93047
commit
6e8ed38e7d
3 changed files with 137 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2005-09-06 Keith Besaw <kbesaw@us.ibm.com>
|
||||
|
||||
* gcc.dg/vect/Os-vect-95.c: New test.
|
||||
* gcc.dg/vect/vect-95.c: Same.
|
||||
|
||||
2005-09-06 Keith Besaw <kbesaw@us.ibm.com>
|
||||
|
||||
* gcc.dg/vect/vect-29.c: Update xfail testing.
|
||||
|
|
62
gcc/testsuite/gcc.dg/vect/Os-vect-95.c
Normal file
62
gcc/testsuite/gcc.dg/vect/Os-vect-95.c
Normal file
|
@ -0,0 +1,62 @@
|
|||
/* { dg-require-effective-target vect_float } */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "tree-vect.h"
|
||||
|
||||
#define N 256
|
||||
|
||||
typedef float afloat __attribute__ ((__aligned__(16)));
|
||||
|
||||
void bar (float *pd, float *pa, float *pb, float *pc)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* check results: */
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
if (pa[i] != (pb[i] * pc[i]))
|
||||
abort ();
|
||||
if (pd[i] != 5.0)
|
||||
abort ();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
pa[i] = pb[i] * pc[i];
|
||||
pd[i] = 5.0;
|
||||
}
|
||||
|
||||
bar (pd,pa,pb,pc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
int i;
|
||||
afloat a[N];
|
||||
afloat d[N+1];
|
||||
float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
|
||||
float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
|
||||
|
||||
check_vect ();
|
||||
|
||||
main1 (N,&d[1],a,b,c);
|
||||
main1 (N-2,&d[1],a,b,c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
70
gcc/testsuite/gcc.dg/vect/vect-95.c
Normal file
70
gcc/testsuite/gcc.dg/vect/vect-95.c
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* { dg-require-effective-target vect_float } */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "tree-vect.h"
|
||||
|
||||
#define N 256
|
||||
|
||||
typedef float afloat __attribute__ ((__aligned__(16)));
|
||||
|
||||
void bar (float *pd, float *pa, float *pb, float *pc)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* check results: */
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
if (pa[i] != (pb[i] * pc[i]))
|
||||
abort ();
|
||||
if (pd[i] != 5.0)
|
||||
abort ();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
pa[i] = pb[i] * pc[i];
|
||||
pd[i] = 5.0;
|
||||
}
|
||||
|
||||
bar (pd,pa,pb,pc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
int i;
|
||||
afloat a[N];
|
||||
afloat d[N+1];
|
||||
float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
|
||||
float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
|
||||
|
||||
check_vect ();
|
||||
|
||||
main1 (N,&d[1],a,b,c);
|
||||
main1 (N-2,&d[1],a,b,c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
|
||||
|
||||
/* For targets that support unaligned loads we version for the two unaligned stores and
|
||||
generate misaligned accesses for the loads. For targets that don't support unaligned
|
||||
loads we version for all four accesses. */
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail vect_no_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } }
|
||||
/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
Loading…
Add table
Reference in a new issue