re PR middle-end/25125 ((short) ((int)(unsigned short) + (int)) is done in the wrong type)
PR tree-optimization/25125 * gcc.dg/vect/wrapv-vect-7.c, gcc.dg/vect/wrapv-vect-reduc-2char.c, gcc.dg/vect/wrapv-vect-reduc-2short.c: New tests. From-SVN: r111452
This commit is contained in:
parent
afa38a953b
commit
cd683f6da5
4 changed files with 154 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2006-02-26 Dorit Nuzman <dorit@il.ibm.com>
|
||||
|
||||
PR tree-optimization/25125
|
||||
* gcc.dg/vect/wrapv-vect-7.c, gcc.dg/vect/wrapv-vect-reduc-2char.c,
|
||||
gcc.dg/vect/wrapv-vect-reduc-2short.c: New tests.
|
||||
|
||||
2006-02-26 Dorit Nuzman <dorit@il.ibm.com>
|
||||
|
||||
PR tree-optimizations/26359
|
||||
|
|
51
gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
Normal file
51
gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
Normal file
|
@ -0,0 +1,51 @@
|
|||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "tree-vect.h"
|
||||
|
||||
#define N 128
|
||||
|
||||
int main1 ()
|
||||
{
|
||||
int i;
|
||||
short sa[N];
|
||||
short sb[N];
|
||||
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
sb[i] = 5;
|
||||
}
|
||||
|
||||
/* check results: */
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
if (sb[i] != 5)
|
||||
abort ();
|
||||
}
|
||||
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
sa[i] = sb[i] + (short)100;
|
||||
}
|
||||
|
||||
/* check results: */
|
||||
for (i = 0; i < N; i++)
|
||||
{
|
||||
if (sa[i] != 105)
|
||||
abort ();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
check_vect ();
|
||||
|
||||
return main1 ();
|
||||
}
|
||||
|
||||
/* Fails for 32-bit targets that don't vectorize PLUS. */
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
49
gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
Normal file
49
gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "tree-vect.h"
|
||||
|
||||
#define N 16
|
||||
#define DIFF 121
|
||||
|
||||
void main1 (signed char x, signed char max_result, signed char min_result)
|
||||
{
|
||||
int i;
|
||||
signed char b[N] = {1,2,3,6,8,10,12,14,16,18,20,22,24,26,28,30};
|
||||
signed char c[N] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
|
||||
signed char diff = 2;
|
||||
signed char max = x;
|
||||
signed char min = x;
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
diff += (signed char)(b[i] - c[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
max = max < c[i] ? c[i] : max;
|
||||
}
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
min = min > c[i] ? c[i] : min;
|
||||
}
|
||||
|
||||
/* check results: */
|
||||
if (diff != DIFF)
|
||||
abort ();
|
||||
if (max != max_result)
|
||||
abort ();
|
||||
if (min != min_result)
|
||||
abort ();
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
check_vect ();
|
||||
|
||||
main1 (100, 100, 1);
|
||||
main1 (0, 15, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
48
gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
Normal file
48
gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
Normal file
|
@ -0,0 +1,48 @@
|
|||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "tree-vect.h"
|
||||
|
||||
#define N 16
|
||||
#define DIFF 242
|
||||
|
||||
void main1 (short x, short max_result, short min_result)
|
||||
{
|
||||
int i;
|
||||
short b[N] = {1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
|
||||
short c[N] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
|
||||
short diff = 2;
|
||||
short max = x;
|
||||
short min = x;
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
diff += (short)(b[i] - c[i]);
|
||||
}
|
||||
for (i = 0; i < N; i++) {
|
||||
max = max < c[i] ? c[i] : max;
|
||||
}
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
min = min > c[i] ? c[i] : min;
|
||||
}
|
||||
|
||||
/* check results: */
|
||||
if (diff != DIFF)
|
||||
abort ();
|
||||
if (max != max_result)
|
||||
abort ();
|
||||
if (min != min_result)
|
||||
abort ();
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
check_vect ();
|
||||
|
||||
main1 (100, 100, 1);
|
||||
main1 (0, 15, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
Loading…
Add table
Reference in a new issue