diff options
author | Richard Biener <rguenther@suse.de> | 2019-10-24 15:01:45 +0000 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2019-10-24 15:01:45 +0000 |
commit | 85059c70fa4dc13ae2b44a14465f6ef8706dfd78 (patch) | |
tree | 575af1eed28449217962628ae5ea192898d39358 /gcc/testsuite | |
parent | c364dc72932961ddfd15f7dd5c146a45cde2743b (diff) |
2019-10-24 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_get_and_check_slp_defs): For reduction
chains try harder with operand swapping and instead of
putting a shifted chain into the reduction operands put
a repetition of the final reduction op there as if we'd
reassociate the expression.
* gcc.dg/vect/slp-reduc-10a.c: New testcase.
* gcc.dg/vect/slp-reduc-10b.c: Likewise.
* gcc.dg/vect/slp-reduc-10c.c: Likewise.
* gcc.dg/vect/slp-reduc-10d.c: Likewise.
* gcc.dg/vect/slp-reduc-10e.c: Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@277406 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c | 82 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c | 82 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c | 82 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c | 82 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c | 82 |
6 files changed, 418 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ee43703ea54..329f244474f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2019-10-24 Richard Biener <rguenther@suse.de> + + * gcc.dg/vect/slp-reduc-10a.c: New testcase. + * gcc.dg/vect/slp-reduc-10b.c: Likewise. + * gcc.dg/vect/slp-reduc-10c.c: Likewise. + * gcc.dg/vect/slp-reduc-10d.c: Likewise. + * gcc.dg/vect/slp-reduc-10e.c: Likewise. + 2019-10-24 Jozef Lawrynowicz <jozef.l@mittosystems.com> * gcc.target/msp430/emulate-slli.c: Skip for -mcpu=msp430. diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c new file mode 100644 index 00000000000..d3c2c2d7f54 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c @@ -0,0 +1,82 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fgimple" } */ + +int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3")) +foo (int * x, int n) +{ + int i; + int sum; + int _1; + long unsigned int _2; + long unsigned int _3; + int * _4; + int _5; + __SIZETYPE__ _7; + __SIZETYPE__ _8; + int * _9; + int _10; + __SIZETYPE__ _11; + __SIZETYPE__ _12; + int * _13; + int _14; + __SIZETYPE__ _15; + __SIZETYPE__ _16; + int * _17; + int _18; + + __BB(2,guessed_local(118111600)): + if (n_21(D) > 0) + goto __BB5(guessed(119453778)); + else + goto __BB7(guessed(14763950)); + + __BB(5,guessed_local(105119324)): + goto __BB3(precise(134217728)); + + __BB(3,loop_header(1),guessed_local(955630224)): + sum_30 = __PHI (__BB5: 0, __BB6: sum_27); + i_32 = __PHI (__BB5: 0, __BB6: i_28); + _1 = i_32 * 4; + _2 = (long unsigned int) _1; + _3 = _2 * 4ul; + _4 = x_23(D) + _3; + _5 = __MEM <int> (_4); + sum_24 = _5 + sum_30; + _7 = _2 + 1ul; + _8 = _7 * 4ul; + _9 = x_23(D) + _8; + _10 = __MEM <int> (_9); + sum_25 = _10 + sum_24; + _11 = _2 + 2ul; + _12 = _11 * 4ul; + _13 = x_23(D) + _12; + _14 = __MEM <int> (_13); + sum_26 = _14 + sum_25; + _15 = _2 + 3ul; + _16 = _15 * 4ul; + _17 = x_23(D) + _16; + _18 = __MEM <int> (_17); + sum_27 = _18 + sum_26; + i_28 = i_32 + 1; + if (n_21(D) > i_28) + goto __BB6(guessed(119453778)); + else + goto __BB8(guessed(14763950)); + + __BB(8,guessed_local(105119324)): + goto __BB4(precise(134217728)); + + __BB(6,guessed_local(850510900)): + goto __BB3(precise(134217728)); + + __BB(7,guessed_local(12992276)): + goto __BB4(precise(134217728)); + + __BB(4,guessed_local(118111601)): + sum_31 = __PHI (__BB7: 0, __BB8: sum_27); + return sum_31; + +} + +/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c new file mode 100644 index 00000000000..6a0d55def30 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c @@ -0,0 +1,82 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fgimple" } */ + +int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3")) +foo (int * x, int n) +{ + int i; + int sum; + int _1; + long unsigned int _2; + long unsigned int _3; + int * _4; + int _5; + __SIZETYPE__ _7; + __SIZETYPE__ _8; + int * _9; + int _100; + __SIZETYPE__ _11; + __SIZETYPE__ _12; + int * _13; + int _14; + __SIZETYPE__ _15; + __SIZETYPE__ _16; + int * _17; + int _18; + + __BB(2,guessed_local(118111600)): + if (n_21(D) > 0) + goto __BB5(guessed(119453778)); + else + goto __BB7(guessed(14763950)); + + __BB(5,guessed_local(105119324)): + goto __BB3(precise(134217728)); + + __BB(3,loop_header(1),guessed_local(955630224)): + sum_30 = __PHI (__BB5: 0, __BB6: sum_27); + i_32 = __PHI (__BB5: 0, __BB6: i_28); + _1 = i_32 * 4; + _2 = (long unsigned int) _1; + _3 = _2 * 4ul; + _4 = x_23(D) + _3; + _5 = __MEM <int> (_4); + sum_24 = _5 + sum_30; + _7 = _2 + 1ul; + _8 = _7 * 4ul; + _9 = x_23(D) + _8; + _100 = __MEM <int> (_9); + sum_25 = sum_24 + _100; + _11 = _2 + 2ul; + _12 = _11 * 4ul; + _13 = x_23(D) + _12; + _14 = __MEM <int> (_13); + sum_26 = _14 + sum_25; + _15 = _2 + 3ul; + _16 = _15 * 4ul; + _17 = x_23(D) + _16; + _18 = __MEM <int> (_17); + sum_27 = _18 + sum_26; + i_28 = i_32 + 1; + if (n_21(D) > i_28) + goto __BB6(guessed(119453778)); + else + goto __BB8(guessed(14763950)); + + __BB(8,guessed_local(105119324)): + goto __BB4(precise(134217728)); + + __BB(6,guessed_local(850510900)): + goto __BB3(precise(134217728)); + + __BB(7,guessed_local(12992276)): + goto __BB4(precise(134217728)); + + __BB(4,guessed_local(118111601)): + sum_31 = __PHI (__BB7: 0, __BB8: sum_27); + return sum_31; + +} + +/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c new file mode 100644 index 00000000000..20df2626764 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c @@ -0,0 +1,82 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fgimple" } */ + +int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3")) +foo (int * x, int n) +{ + int i; + int sum; + int _1; + long unsigned int _2; + long unsigned int _3; + int * _4; + int _5; + __SIZETYPE__ _7; + __SIZETYPE__ _8; + int * _9; + int _10; + __SIZETYPE__ _11; + __SIZETYPE__ _12; + int * _13; + int _100; + __SIZETYPE__ _15; + __SIZETYPE__ _16; + int * _17; + int _18; + + __BB(2,guessed_local(118111600)): + if (n_21(D) > 0) + goto __BB5(guessed(119453778)); + else + goto __BB7(guessed(14763950)); + + __BB(5,guessed_local(105119324)): + goto __BB3(precise(134217728)); + + __BB(3,loop_header(1),guessed_local(955630224)): + sum_30 = __PHI (__BB5: 0, __BB6: sum_27); + i_32 = __PHI (__BB5: 0, __BB6: i_28); + _1 = i_32 * 4; + _2 = (long unsigned int) _1; + _3 = _2 * 4ul; + _4 = x_23(D) + _3; + _5 = __MEM <int> (_4); + sum_24 = _5 + sum_30; + _7 = _2 + 1ul; + _8 = _7 * 4ul; + _9 = x_23(D) + _8; + _10 = __MEM <int> (_9); + sum_25 = _10 + sum_24; + _11 = _2 + 2ul; + _12 = _11 * 4ul; + _13 = x_23(D) + _12; + _100 = __MEM <int> (_13); + sum_26 = sum_25 + _100; + _15 = _2 + 3ul; + _16 = _15 * 4ul; + _17 = x_23(D) + _16; + _18 = __MEM <int> (_17); + sum_27 = _18 + sum_26; + i_28 = i_32 + 1; + if (n_21(D) > i_28) + goto __BB6(guessed(119453778)); + else + goto __BB8(guessed(14763950)); + + __BB(8,guessed_local(105119324)): + goto __BB4(precise(134217728)); + + __BB(6,guessed_local(850510900)): + goto __BB3(precise(134217728)); + + __BB(7,guessed_local(12992276)): + goto __BB4(precise(134217728)); + + __BB(4,guessed_local(118111601)): + sum_31 = __PHI (__BB7: 0, __BB8: sum_27); + return sum_31; + +} + +/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c new file mode 100644 index 00000000000..8a512d5c14d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c @@ -0,0 +1,82 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fgimple" } */ + +int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3")) +foo (int * x, int n) +{ + int i; + int sum; + int _1; + long unsigned int _2; + long unsigned int _3; + int * _4; + int _5; + __SIZETYPE__ _7; + __SIZETYPE__ _8; + int * _9; + int _10; + __SIZETYPE__ _11; + __SIZETYPE__ _12; + int * _13; + int _14; + __SIZETYPE__ _15; + __SIZETYPE__ _16; + int * _17; + int _100; + + __BB(2,guessed_local(118111600)): + if (n_21(D) > 0) + goto __BB5(guessed(119453778)); + else + goto __BB7(guessed(14763950)); + + __BB(5,guessed_local(105119324)): + goto __BB3(precise(134217728)); + + __BB(3,loop_header(1),guessed_local(955630224)): + sum_30 = __PHI (__BB5: 0, __BB6: sum_27); + i_32 = __PHI (__BB5: 0, __BB6: i_28); + _1 = i_32 * 4; + _2 = (long unsigned int) _1; + _3 = _2 * 4ul; + _4 = x_23(D) + _3; + _5 = __MEM <int> (_4); + sum_24 = _5 + sum_30; + _7 = _2 + 1ul; + _8 = _7 * 4ul; + _9 = x_23(D) + _8; + _10 = __MEM <int> (_9); + sum_25 = _10 + sum_24; + _11 = _2 + 2ul; + _12 = _11 * 4ul; + _13 = x_23(D) + _12; + _14 = __MEM <int> (_13); + sum_26 = _14 + sum_25; + _15 = _2 + 3ul; + _16 = _15 * 4ul; + _17 = x_23(D) + _16; + _100 = __MEM <int> (_17); + sum_27 = sum_26 + _100; + i_28 = i_32 + 1; + if (n_21(D) > i_28) + goto __BB6(guessed(119453778)); + else + goto __BB8(guessed(14763950)); + + __BB(8,guessed_local(105119324)): + goto __BB4(precise(134217728)); + + __BB(6,guessed_local(850510900)): + goto __BB3(precise(134217728)); + + __BB(7,guessed_local(12992276)): + goto __BB4(precise(134217728)); + + __BB(4,guessed_local(118111601)): + sum_31 = __PHI (__BB7: 0, __BB8: sum_27); + return sum_31; + +} + +/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c new file mode 100644 index 00000000000..268ec9db77d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c @@ -0,0 +1,82 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fgimple" } */ + +int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3")) +foo (int * x, int n) +{ + int i; + int sum; + int _1; + long unsigned int _2; + long unsigned int _3; + int * _4; + int _100; + __SIZETYPE__ _7; + __SIZETYPE__ _8; + int * _9; + int _10; + __SIZETYPE__ _11; + __SIZETYPE__ _12; + int * _13; + int _14; + __SIZETYPE__ _15; + __SIZETYPE__ _16; + int * _17; + int _18; + + __BB(2,guessed_local(118111600)): + if (n_21(D) > 0) + goto __BB5(guessed(119453778)); + else + goto __BB7(guessed(14763950)); + + __BB(5,guessed_local(105119324)): + goto __BB3(precise(134217728)); + + __BB(3,loop_header(1),guessed_local(955630224)): + sum_30 = __PHI (__BB5: 0, __BB6: sum_27); + i_32 = __PHI (__BB5: 0, __BB6: i_28); + _1 = i_32 * 4; + _2 = (long unsigned int) _1; + _3 = _2 * 4ul; + _4 = x_23(D) + _3; + _100 = __MEM <int> (_4); + sum_24 = sum_30 + _100; + _7 = _2 + 1ul; + _8 = _7 * 4ul; + _9 = x_23(D) + _8; + _10 = __MEM <int> (_9); + sum_25 = _10 + sum_24; + _11 = _2 + 2ul; + _12 = _11 * 4ul; + _13 = x_23(D) + _12; + _14 = __MEM <int> (_13); + sum_26 = _14 + sum_25; + _15 = _2 + 3ul; + _16 = _15 * 4ul; + _17 = x_23(D) + _16; + _18 = __MEM <int> (_17); + sum_27 = _18 + sum_26; + i_28 = i_32 + 1; + if (n_21(D) > i_28) + goto __BB6(guessed(119453778)); + else + goto __BB8(guessed(14763950)); + + __BB(8,guessed_local(105119324)): + goto __BB4(precise(134217728)); + + __BB(6,guessed_local(850510900)): + goto __BB3(precise(134217728)); + + __BB(7,guessed_local(12992276)): + goto __BB4(precise(134217728)); + + __BB(4,guessed_local(118111601)): + sum_31 = __PHI (__BB7: 0, __BB8: sum_27); + return sum_31; + +} + +/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */ |