From 17e07532908dfd39ea8eb0815aaae951946505bf Mon Sep 17 00:00:00 2001 From: dorit Date: Sun, 26 Feb 2006 12:55:43 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111452 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 +++ gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c | 51 ++++++++++++++++++++++ gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c | 49 +++++++++++++++++++++ .../gcc.dg/vect/wrapv-vect-reduc-2short.c | 48 ++++++++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c create mode 100644 gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c create mode 100644 gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b75722d..3040961 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2006-02-26 Dorit Nuzman + 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 + PR tree-optimizations/26359 * gcc.dg/vect/vect.exp: Compile tests prefixed with "dump-tree-dceloop" with -fdump-tree-dceloop-details. diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c new file mode 100644 index 0000000..ffc5eac --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c @@ -0,0 +1,51 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#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" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c new file mode 100644 index 0000000..aecf8a5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c @@ -0,0 +1,49 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#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" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c new file mode 100644 index 0000000..4476c83 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c @@ -0,0 +1,48 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#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" } } */ -- 2.7.4