Re: [PATCH] Rearrange SLP nodes with duplicate statements. [PR98138]

2024-06-10 Thread Manolis Tsamis
On Wed, Jun 5, 2024 at 11:07 AM Richard Biener wrote: > > On Tue, 4 Jun 2024, Manolis Tsamis wrote: > > > This change adds a function that checks for SLP nodes with multiple > > occurrences > > of the same statement (e.g. {A, B, A, B, ...}) and tries to rea

Re: [PATCH v2] Target-independent store forwarding avoidance.

2024-06-10 Thread Manolis Tsamis
On Sun, Jun 9, 2024 at 5:29 PM Jeff Law wrote: > > > > On 6/7/24 4:31 PM, Jeff Law wrote: > > > > > I've actually added it to my tester just to see if there's any fallout. > > It'll take a week to churn through the long running targets that > > bootstrap in QEMU, but the crosses should have data

Re: [PATCH v2] Target-independent store forwarding avoidance.

2024-06-10 Thread Manolis Tsamis
On Sat, Jun 8, 2024 at 1:31 AM Jeff Law wrote: > > > > On 6/6/24 4:10 AM, Manolis Tsamis wrote: > > This pass detects cases of expensive store forwarding and tries to avoid > > them > > by reordering the stores and using suitable bit insertion sequences. &g

Re: [PATCH] [RFC] Target-independent store forwarding avoidance. [PR48696] Target-independent store forwarding avoidance.

2024-06-06 Thread Manolis Tsamis
On Fri, May 24, 2024 at 9:27 AM Richard Biener wrote: > > On Thu, 23 May 2024, Manolis Tsamis wrote: > > > This pass detects cases of expensive store forwarding and tries to avoid > > them > > by reordering the stores and using suitable bit insertion sequences. >

[PATCH v2] Target-independent store forwarding avoidance.

2024-06-06 Thread Manolis Tsamis
-2.c: New test. * gcc.target/aarch64/avoid-store-forwarding-3.c: New test. * gcc.target/aarch64/avoid-store-forwarding-4.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v2: - Allow modes that are not scalar_int_mode. - Introduce simple costing to avoid

Re: [PATCH v4 1/3] [RFC] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2024-06-05 Thread Manolis Tsamis
On Wed, Jun 5, 2024 at 2:00 PM Richard Sandiford wrote: > > Sorry for the slow review. > > Manolis Tsamis writes: > > This is an extension of what was done in PR106590. > > > > Currently if a sequence generated in noce_convert_multiple_sets clobbers the > >

[PATCH] Rearrange SLP nodes with duplicate statements. [PR98138]

2024-06-04 Thread Manolis Tsamis
-off-by: Manolis Tsamis --- .../aarch64/vect-slp-two-operator.c | 42 gcc/tree-vect-slp.cc | 234 ++ 2 files changed, 276 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/vect-slp-two-operator.c diff --git a/gcc/testsuite

[PING] [PATCH v4 3/3] [RFC] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2024-06-03 Thread Manolis Tsamis
(struct noce_multiple_sets_info): Introduce new struct noce_multiple_sets_info to store info for noce_convert_multiple_sets. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ifcvt_multiple_sets_rewire.c: New test. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc

[PING] [PATCH v4 1/3] [RFC] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2024-06-03 Thread Manolis Tsamis
): Use modified_in_p instead. (noce_convert_multiple_sets_1): Don't use seq2 if it clobbers cc_cmp. Refactor the code that sets read_comparison. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc | 106 --- 1 file

[PING] [PATCH v4 0/3] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2024-06-03 Thread Manolis Tsamis
unnecessary hardcoded list of allowed ops in bb_ok_for_noce_convert_multiple_sets. - Set need_cmov based on BB live_out instead of REG_DEAD notes. - Fix preexisting issues and improve the code that sets read_comparison. Manolis Tsamis (3): [RFC] ifcvt: handle sequences

[PING] [PATCH v4 2/3] [RFC] ifcvt: Allow more operations in multiple set if conversion

2024-06-03 Thread Manolis Tsamis
/ifcvt_multiple_sets_arithm.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v4: - Remove unnecessary hardcoded list of allowed ops in bb_ok_for_noce_convert_multiple_sets. - Set need_cmov based on BB live_out instead of REG_DEAD notes. - Fix preexisting issues and improve

Re: [PATCH] [RFC] Target-independent store forwarding avoidance. [PR48696] Target-independent store forwarding avoidance.

2024-05-30 Thread Manolis Tsamis
On Fri, May 24, 2024 at 9:27 AM Richard Biener wrote: > > On Thu, 23 May 2024, Manolis Tsamis wrote: > > > This pass detects cases of expensive store forwarding and tries to avoid > > them > > by reordering the stores and using suitable bit insertion sequences. >

[PATCH v2] MATCH: Look through VIEW_CONVERT when folding VEC_PERM_EXPRs.

2024-05-24 Thread Manolis Tsamis
: * gcc.dg/fold-perm-2.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v2: Use TYPE_SIZE (TREE_TYPE (TREE_TYPE (@))) instead of element_precision (@). gcc/match.pd | 14 -- gcc/testsuite/gcc.dg/fold-perm-2.c | 16 2 files changed, 24

Re: [PATCH] MATCH: Look through VIEW_CONVERT when folding VEC_PERM_EXPRs.

2024-05-24 Thread Manolis Tsamis
-dump "VEC_PERM_EXPR.*{ 2, 7, 5, 0 }" "fre1" } } */ +/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 1 "fre1" } } */ -- 2.44.0 On Fri, May 24, 2024 at 11:30 AM Richard Biener wrote: > > On Fri, 24 May 2024, Manolis Tsamis wrote: > > >

Re: [PATCH] MATCH: Look through VIEW_CONVERT when folding VEC_PERM_EXPRs.

2024-05-24 Thread Manolis Tsamis
On Fri, May 24, 2024 at 10:46 AM Richard Biener wrote: > > On Fri, 24 May 2024, Manolis Tsamis wrote: > > > On Fri, May 24, 2024 at 9:31 AM Richard Biener wrote: > > > > > > On Wed, 22 May 2024, Manolis Tsamis wrote: > > > > > > > The match.

Re: [PATCH] MATCH: Look through VIEW_CONVERT when folding VEC_PERM_EXPRs.

2024-05-24 Thread Manolis Tsamis
On Fri, May 24, 2024 at 9:31 AM Richard Biener wrote: > > On Wed, 22 May 2024, Manolis Tsamis wrote: > > > The match.pd patterns to merge two vector permutes into one fail when a > > potentially no-op view convert expressions is between the two permutes. > > This ch

[PATCH] [RFC] Target-independent store forwarding avoidance. [PR48696] Target-independent store forwarding avoidance.

2024-05-23 Thread Manolis Tsamis
-off-by: Manolis Tsamis --- gcc/Makefile.in | 1 + gcc/avoid-store-forwarding.cc | 554 ++ gcc/common.opt| 4 + gcc/params.opt| 4 + gcc/passes.def

[PATCH] MATCH: Look through VIEW_CONVERT when folding VEC_PERM_EXPRs.

2024-05-22 Thread Manolis Tsamis
: * gcc.dg/fold-perm-2.c: New test. Signed-off-by: Manolis Tsamis --- gcc/match.pd | 14 -- gcc/testsuite/gcc.dg/fold-perm-2.c | 16 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/fold-perm-2.c diff --git

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-17 Thread Manolis Tsamis
On Fri, May 17, 2024 at 12:22 PM Richard Biener wrote: > > On Fri, 17 May 2024, Manolis Tsamis wrote: > > > Hi Richard, > > > > While I was re-testing the latest version of this patch I noticed that > > it FAILs an AArch64 test, gcc.target/aarch64/subsp.c. W

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-17 Thread Manolis Tsamis
a way to solve the regression. Any thoughts on this? Thanks, Manolis On Thu, May 16, 2024 at 11:15 AM Richard Biener wrote: > > On Tue, May 14, 2024 at 10:58 AM Manolis Tsamis > wrote: > > > > New patch with the requested changes can be found below. > > > > I

Re: [PATCH v4 0/3] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2024-05-14 Thread Manolis Tsamis
Pinging this for GCC15. Thanks On Tue, Apr 23, 2024 at 1:47 PM Manolis Tsamis wrote: > > > noce_convert_multiple_sets has been introduced and extended over time to > handle > if conversion for blocks with multiple sets. Currently this is focused on > register moves an

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-14 Thread Manolis Tsamis
o(int *a, int j) +{ + int k = j - 1; + return a[j - 1] == a[k]; +} + +int bar(int *a, int j) +{ + int k = j - 1; + return ([j + 1] - 2) == [k]; +} -- 2.44.0 On Tue, Apr 23, 2024 at 1:33 PM Manolis Tsamis wrote: > > The original motivation for this pattern was that the following function d

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-02 Thread Manolis Tsamis
On Thu, May 2, 2024 at 4:00 PM Richard Biener wrote: > > On Tue, 23 Apr 2024, Manolis Tsamis wrote: > > > The original motivation for this pattern was that the following function > > does > > not fold to 'return 1': > > > > int foo(int *a, int j) > >

Re: [PATCH v4 2/3] [RFC] ifcvt: Allow more operations in multiple set if conversion

2024-04-30 Thread Manolis Tsamis
On Thu, Apr 25, 2024 at 2:40 AM Hans-Peter Nilsson wrote: > > On Tue, 23 Apr 2024, Manolis Tsamis wrote: > > diff --git a/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_arithm.c > > b/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_arithm.c > ... > > +/*

Re: [PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2024-04-23 Thread Manolis Tsamis
On Thu, Nov 23, 2023 at 11:01 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > The existing implementation of need_cmov_or_rewire and > > noce_convert_multiple_sets_1 assumes that sets are either REG or SUBREG. > > This commit enchances them so they can han

Re: [PATCH v3 2/4] ifcvt: Allow more operations in multiple set if conversion

2024-04-23 Thread Manolis Tsamis
On Thu, Oct 19, 2023 at 10:46 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > Currently the operations allowed for if conversion of a basic block with > > multiple sets are few, namely REG, SUBREG and CONST_INT (as controlled by > > bb_ok_for_no

Re: [PATCH v3 1/4] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2024-04-23 Thread Manolis Tsamis
On Thu, Oct 19, 2023 at 10:41 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > This is an extension of what was done in PR106590. > > > > Currently if a sequence generated in noce_convert_multiple_sets clobbers the > > condition rtx (cc_cmp or rev_

[PATCH v4 2/3] [RFC] ifcvt: Allow more operations in multiple set if conversion

2024-04-23 Thread Manolis Tsamis
/ifcvt_multiple_sets_arithm.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v4: - Remove unnecessary hardcoded list of allowed ops in bb_ok_for_noce_convert_multiple_sets. - Set need_cmov based on BB live_out instead of REG_DEAD notes. - Fix preexisting issues and improve

[PATCH v4 3/3] [RFC] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2024-04-23 Thread Manolis Tsamis
(struct noce_multiple_sets_info): Introduce new struct noce_multiple_sets_info to store info for noce_convert_multiple_sets. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ifcvt_multiple_sets_rewire.c: New test. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc

[PATCH v4 1/3] [RFC] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2024-04-23 Thread Manolis Tsamis
): Use modified_in_p instead. (noce_convert_multiple_sets_1): Don't use seq2 if it clobbers cc_cmp. Refactor the code that sets read_comparison. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc | 106 --- 1 file

[PATCH v4 0/3] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2024-04-23 Thread Manolis Tsamis
unnecessary hardcoded list of allowed ops in bb_ok_for_noce_convert_multiple_sets. - Set need_cmov based on BB live_out instead of REG_DEAD notes. - Fix preexisting issues and improve the code that sets read_comparison. Manolis Tsamis (3): [RFC] ifcvt: handle sequences

[PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-04-23 Thread Manolis Tsamis
-by: Manolis Tsamis --- gcc/match.pd| 30 ++ gcc/testsuite/gcc.dg/pr109393.c | 16 2 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr109393.c diff --git a/gcc/match.pd b/gcc/match.pd index d401e7503e6..13c828ba70d

Re: [PATCH] Add extra copy of the ifcombine pass after pre [PR102793]

2024-04-05 Thread Manolis Tsamis
On Fri, Apr 5, 2024 at 3:43 PM Richard Biener wrote: > > On Fri, Apr 5, 2024 at 2:28 PM Manolis Tsamis wrote: > > > > If we consider code like: > > > > if (bar1 == x) > > return foo(); > > if (bar2 != y) > > return foo(); >

[PATCH] Add extra copy of the ifcombine pass after pre [PR102793]

2024-04-05 Thread Manolis Tsamis
: Change flag to -fno-tree-ifcombine. * gcc.dg/uninit-pred-6_c.c: Remove inconsistent check. * gcc.target/aarch64/pr102793.c: New test. Signed-off-by: Manolis Tsamis --- gcc/common.opt | 4 +++ gcc/doc/invoke.texi | 5 gcc

Re: [PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-12-07 Thread Manolis Tsamis
On Thu, Nov 23, 2023 at 11:01 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > The existing implementation of need_cmov_or_rewire and > > noce_convert_multiple_sets_1 assumes that sets are either REG or SUBREG. > > This commit enchances them so they can han

Re: [PATCH v7] Implement new RTL optimizations pass: fold-mem-offsets.

2023-11-28 Thread Manolis Tsamis
On Tue, Nov 28, 2023 at 12:53 PM Jakub Jelinek wrote: > > On Tue, Nov 28, 2023 at 11:45:58AM +0200, Manolis Tsamis wrote: > > > But, while get_single_def_in_bb checks for > > > if (DF_INSN_LUID (def) > DF_INSN_LUID (insn)) > > > return NULL;

Re: [PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-28 Thread Manolis Tsamis
On Tue, Nov 28, 2023 at 12:12 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > On Thu, Nov 23, 2023 at 11:01 PM Richard Sandiford > > wrote: > >> > >> Manolis Tsamis writes: > >> > The existing implementation of need_cmov_or_rewire

Re: [PATCH v7] Implement new RTL optimizations pass: fold-mem-offsets.

2023-11-28 Thread Manolis Tsamis
Hi Jakub, Thanks a lot for tracking this down and providing both testcases and a fix. Some thoughts below. On Mon, Nov 27, 2023 at 10:52 PM Jakub Jelinek wrote: > > On Mon, Oct 16, 2023 at 01:11:01PM -0600, Jeff Law wrote: > > > gcc/ChangeLog: > > > > > > * Makefile.in: Add

Re: [PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-28 Thread Manolis Tsamis
On Thu, Nov 23, 2023 at 11:01 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > The existing implementation of need_cmov_or_rewire and > > noce_convert_multiple_sets_1 assumes that sets are either REG or SUBREG. > > This commit enchances them so they can han

Re: [PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
I have bootstrapped and checked for no testsuite regressions on x86 and aarch64. Thanks, Manolis On Tue, Nov 21, 2023 at 8:00 PM Manolis Tsamis wrote: > > The existing implementation of need_cmov_or_rewire and > noce_convert_multiple_sets_1 assumes that sets are either REG

Re: [PATCH v3 3/4] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
I have made this independent from the rest of the series, cleaned up some comments and moved some code to its original position. Re-submitted as https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637660.html. Manolis On Mon, Nov 13, 2023 at 2:40 PM Manolis Tsamis wrote: > > H

Re: [PATCH v3 4/4] ifcvt: Remove obsolete code for subreg handling in noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
Retested, made independent of the rest of the series and submitted as https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637662.html. Manolis On Mon, Nov 13, 2023 at 2:43 PM Manolis Tsamis wrote: > > Yes, my finding back then was that this is leftover code from the > initial imple

Re: [PATCH v2] ifcvt: Remove obsolete code for subreg handling in noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
Bootstrapped and tested on x86 and aarch64. This only assumes that the mode of what simplify_replace_rtx returns is the same with its first argument. Thanks, Manolis On Tue, Nov 21, 2023 at 8:04 PM Manolis Tsamis wrote: > > This code used to handle SUBREG for register replacement when

[PATCH v2] ifcvt: Remove obsolete code for subreg handling in noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
(noce_convert_multiple_sets_1): Remove old code. Signed-off-by: Manolis Tsamis --- Changes in v2: - Made standalone patch. gcc/ifcvt.cc | 38 -- 1 file changed, 38 deletions(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index a0af553b9ff..be42609a848 100644 --- a/gcc

[PATCH v2] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-21 Thread Manolis Tsamis
(struct noce_multiple_sets_info): Introduce new struct noce_multiple_sets_info to store info for noce_convert_multiple_sets. Signed-off-by: Manolis Tsamis --- Changes in v2: - Made standalone patch. - Better comments, some more checks. gcc/ifcvt.cc | 252

Re: [PATCH v3 2/4] ifcvt: Allow more operations in multiple set if conversion

2023-11-13 Thread Manolis Tsamis
On Thu, Oct 19, 2023 at 10:46 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > Currently the operations allowed for if conversion of a basic block with > > multiple sets are few, namely REG, SUBREG and CONST_INT (as controlled by > > bb_ok_for_no

Re: [PATCH v3 4/4] ifcvt: Remove obsolete code for subreg handling in noce_convert_multiple_sets

2023-11-13 Thread Manolis Tsamis
:03 AM Jeff Law wrote: > > > > On 8/30/23 04:14, Manolis Tsamis wrote: > > This code used to handle register replacement issues with SUBREG before > > simplify_replace_rtx was introduced. This should not be needed anymore as > > new_val has the correct mod

Re: [PATCH v3 3/4] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-11-13 Thread Manolis Tsamis
Hi Jeff, Indeed, that sounds like a good idea. I will make this separate and send it after the required testing. I'll see what can be done about a testcase. Best, Manolis On Sat, Nov 11, 2023 at 1:20 AM Jeff Law wrote: > > > > On 8/30/23 04:13, Manolis Tsamis wrote: >

Re: [PATCH v3 0/4] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-10-19 Thread Manolis Tsamis
Hi all, Pinging once more ( https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628820.html). Manolis On Mon, Sep 18, 2023 at 11:18 AM Manolis Tsamis wrote: > > Kind ping for V3 of these ifcvt changes > https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628820.html > > Th

Re: [PATCH v7] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-16 Thread Manolis Tsamis
This version has been bootstrapped and tested to cause no regressions in both x86 and Aarch64. Manolis On Mon, Oct 16, 2023 at 9:01 PM Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory offset calculations > by moving them from add immediate ins

Re: [PATCH v6] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-16 Thread Manolis Tsamis
On Tue, Oct 10, 2023 at 5:15 PM Jeff Law wrote: > > > > On 10/10/23 05:59, Manolis Tsamis wrote: > > >> It's a code quality issue as long as we don't transform the code into > >> movl $0, -18874240, at which point it would become a correctness issue. > >>

[PATCH v7] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-16 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v7

Re: [PATCH v6] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-10 Thread Manolis Tsamis
On Fri, Oct 6, 2023 at 8:57 PM Jeff Law wrote: > > > > On 10/6/23 08:17, Manolis Tsamis wrote: > SNIP > >> So I was ready to ACK, but realized there weren't any testresults for a > >> primary platform mentioned. So I ran this on x86. > >> > &g

Re: [PATCH v6] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-06 Thread Manolis Tsamis
On Thu, Oct 5, 2023 at 1:05 AM Jeff Law wrote: > > > > On 10/3/23 05:45, Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory offset calculations > > by moving them from add immediate instructions to the memory loads/stores. > >

Re: [PATCH v6] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-06 Thread Manolis Tsamis
On Thu, Oct 5, 2023 at 5:54 PM Jeff Law wrote: > > > > On 10/3/23 05:45, Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory offset calculations > > > + > > +/* If INSN is a root memory instruction then compute a potentially new &

Re: [PATCH v5] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-03 Thread Manolis Tsamis
On Fri, Sep 29, 2023 at 10:22 PM Jeff Law wrote: > > > > On 9/12/23 04:13, Manolis Tsamis wrote: > > >>> + > >>> +/* Get the single reaching definition of an instruction inside a BB. > >>> + The definition is desired for REG used in INSN. >

[PATCH v6] Implement new RTL optimizations pass: fold-mem-offsets.

2023-10-03 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v6

Re: [PATCH v3 0/4] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-09-18 Thread Manolis Tsamis
Kind ping for V3 of these ifcvt changes https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628820.html Thanks, Manolis On Wed, Aug 30, 2023 at 1:14 PM Manolis Tsamis wrote: > > > noce_convert_multiple_sets has been introduced and extended over time to > handle > if conver

Re: [PATCH v5] Implement new RTL optimizations pass: fold-mem-offsets.

2023-09-12 Thread Manolis Tsamis
On Tue, Sep 12, 2023 at 3:47 AM Jeff Law wrote: > > > > On 9/9/23 02:46, Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory offset calculations > > by moving them from add immediate instructions to the memory loads/stores. > >

Re: [PATCH v5] Implement new RTL optimizations pass: fold-mem-offsets.

2023-09-09 Thread Manolis Tsamis
: 97 548: 101 557: 9 AArch64: 500: 71 502: 318 505: 0 520: 23 523: 205 525: 73 531: 7 541: 56 548: 0 557: 2 x86-64: 500: 8 502: 16 505: 0 520: 4 523: 5 525: 2 531: 0 541: 0 548: 0 557: 0 Thanks, Manolis On Sat, Sep 9, 2023 at 11:47 AM Manolis Tsamis

[PATCH v5] Implement new RTL optimizations pass: fold-mem-offsets.

2023-09-09 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v5

Re: [x86_64 PATCH] Improve __int128 argument passing (in ix86_expand_move).

2023-09-01 Thread Manolis Tsamis
regards, > Roger > -- > > > -Original Message- > > From: Manolis Tsamis > > Sent: 01 September 2023 11:45 > > To: Uros Bizjak > > Cc: Roger Sayle ; gcc-patches@gcc.gnu.org > > Subject: Re: [x86_64 PATCH] Improve __int128 argument passing (in &g

Re: [x86_64 PATCH] Improve __int128 argument passing (in ix86_expand_move).

2023-09-01 Thread Manolis Tsamis
Hi Roger, I've (accidentally) found a codegen regression that I bisected down to this patch. For these two functions: typedef struct { float minx, miny; float maxx, maxy; } AABB; int TestOverlap(AABB a, AABB b) { return a.minx <= b.maxx && a.miny <= b.maxy && a.maxx >= b.minx

Re: [PATCH v2 0/2] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-08-30 Thread Manolis Tsamis
On Tue, Jul 18, 2023 at 9:38 PM Richard Sandiford wrote: > > Manolis Tsamis writes: > > On Tue, Jul 18, 2023 at 1:12 AM Richard Sandiford > > wrote: > >> > >> Manolis Tsamis writes: > >> > noce_convert_multiple_sets has been int

[PATCH v3 3/4] ifcvt: Handle multiple rewired regs and refactor noce_convert_multiple_sets

2023-08-30 Thread Manolis Tsamis
(struct noce_multiple_sets_info): Introduce new struct noce_multiple_sets_info to store info for noce_convert_multiple_sets. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ifcvt_multiple_sets_rewire.c: New test. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc

[PATCH v3 4/4] ifcvt: Remove obsolete code for subreg handling in noce_convert_multiple_sets

2023-08-30 Thread Manolis Tsamis
): Remove old code. Signed-off-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc | 38 -- 1 file changed, 38 deletions(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index ecc0cbabef9..3b4b873612c 100644 --- a/gcc/ifcvt.cc +++ b/gcc/ifcvt.cc @@ -3449,44

[PATCH v3 2/4] ifcvt: Allow more operations in multiple set if conversion

2023-08-30 Thread Manolis Tsamis
/ifcvt_multiple_sets_arithm.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v3: - Add SCALAR_INT_MODE_P check in bb_ok_for_noce_convert_multiple_sets. - Allow rewiring of multiple regs. - Refactor code with noce_multiple_sets_info. - Remove old code for subregs. gcc/ifcvt.cc

[PATCH v3 1/4] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2023-08-30 Thread Manolis Tsamis
-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc | 49 +++-- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index a0af553b9ff..3273aeca125 100644 --- a/gcc/ifcvt.cc +++ b/gcc/ifcvt.cc @@ -3375,20

[PATCH v3 0/4] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-08-30 Thread Manolis Tsamis
SCALAR_INT_MODE_P check in bb_ok_for_noce_convert_multiple_sets. - Allow rewiring of multiple regs. - Refactor code with noce_multiple_sets_info. - Remove old code for subregs. Manolis Tsamis (4): ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

Re: [PATCH v4] Implement new RTL optimizations pass: fold-mem-offsets.

2023-08-10 Thread Manolis Tsamis
r changes the testcase will still fold insn 39). Please let me know If you have any other feedback on this. Thanks! Manolis On Wed, Aug 9, 2023 at 7:22 PM Jeff Law wrote: > > > > On 8/7/23 08:33, Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory

Re: [PATCH v3] Implement new RTL optimizations pass: fold-mem-offsets.

2023-08-07 Thread Manolis Tsamis
I have sent out a new v4 of this (https://gcc.gnu.org/pipermail/gcc-patches/2023-August/626502.html). In the new version I both restore the INSN_CODE as mentioned here and I also call recog when I commit the offset change (because there may be a change from no offset to some offsets). I have also

[PATCH v4] Implement new RTL optimizations pass: fold-mem-offsets.

2023-08-07 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v4

[PATCH] cprop_hardreg: Allow more propagation of the stack pointer.

2023-08-07 Thread Manolis Tsamis
function. (find_oldest_value_reg): Inline stack_pointer_rtx check. (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check. Signed-off-by: Manolis Tsamis --- gcc/regcprop.cc | 56 - 1 file changed, 23 insertions(+), 33 deletions

Re: RISC-V: Folding memory for FP + constant case

2023-08-05 Thread Manolis Tsamis
Hi Jeff, Thanks for all the info! Then I'll prepare/test a patch that removes this regcprop limitation and send it out. I have already tested that this change is enough to make fmo optimize leela as well. Manolis On Fri, Aug 4, 2023 at 7:23 PM Jeff Law wrote: > > > > On 8/4/23 03

Re: RISC-V: Folding memory for FP + constant case

2023-08-04 Thread Manolis Tsamis
Hi all, It is true that regcprop currently does not propagate sp and hence leela is not optimized, but from what I see this should be something we can address. The reason that the propagation fails is this check that I have added when I introduced maybe_copy_reg_attrs: else if (REG_POINTER

Re: [PATCH v1] [RFC] Improve folding for comparisons with zero in tree-ssa-forwprop.

2023-08-02 Thread Manolis Tsamis
Hi all, I'm pinging to discuss again if we want to move this forward for GCC14. I did some testing again and I haven't been able to find obvious regressions, including testing the code from PR86270 and PR70359 that Richard mentioned. I still believe that zero can be considered a special case

Re: [PATCH v3] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-19 Thread Manolis Tsamis
Hi Vineet, Jeff, On Wed, Jul 19, 2023 at 7:31 AM Jeff Law wrote: > > > > On 7/18/23 17:42, Vineet Gupta wrote: > > Hi Manolis, > > > > On 7/18/23 11:01, Jeff Law via Gcc-patches wrote: > >> Vineet @ Rivos has indicated he stumbled across an ICE with the V3 > >> code. Hopefully he'll get a

Re: [PATCH v3] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-18 Thread Manolis Tsamis
On Fri, Jul 14, 2023 at 8:35 AM Jeff Law wrote: > > > > On 7/13/23 09:05, Manolis Tsamis wrote: > > In this version I have made f-m-o able to also eliminate constant > > moves in addition to the add constant instructions. > > This increases the number of simp

Re: [PATCH v2 0/2] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-07-18 Thread Manolis Tsamis
Hi Richard, Thanks for your insightful reply. On Tue, Jul 18, 2023 at 1:12 AM Richard Sandiford wrote: > > Manolis Tsamis writes: > > noce_convert_multiple_sets has been introduced and extended over time to > > handle > > if conversion for blocks with multiple sets. C

Re: [PATCH v3] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-13 Thread Manolis Tsamis
functions to test whether the newly synthesized memory instruction is valid. Any ideas on how to solve this issue is appreciated. Manolis On Thu, Jul 13, 2023 at 5:13 PM Manolis Tsamis wrote: > > This is a new RTL pass that tries to optimize memory offset calculations > by moving them

Re: [PATCH v2] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-13 Thread Manolis Tsamis
On Wed, Jul 12, 2023 at 5:14 PM Jeff Law wrote: > > > > On 7/12/23 03:12, Manolis Tsamis wrote: > > On Mon, Jul 10, 2023 at 12:58 AM Hans-Peter Nilsson > > wrote: > >> > >> On Sun, 9 Jul 2023, Hans-Peter Nilsson wrote: > >&

[PATCH v3] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-13 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v3

Re: [PATCH 2/2] ifcvt: Allow more operations in multiple set if conversion

2023-07-13 Thread Manolis Tsamis
I resent this with just the change in the comment. OK to merge? Manolis On Tue, Jul 4, 2023 at 5:32 PM Manolis Tsamis wrote: > > On Mon, Jul 3, 2023 at 12:12 PM Robin Dapp wrote: > > > > Hi Manolis, > > > > that looks like a nice enhancement of what's already po

[PATCH v2 2/2] ifcvt: Allow more operations in multiple set if conversion

2023-07-13 Thread Manolis Tsamis
/ifcvt_multiple_sets_arithm.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v2: - Change "conditional moves" to "conditional instructions" in bb_ok_for_noce_convert_multiple_sets's comment. gcc/ifcvt.cc | 60 ++

[PATCH v2 1/2] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2023-07-13 Thread Manolis Tsamis
-by: Manolis Tsamis --- (no changes since v1) gcc/ifcvt.cc | 49 +++-- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index a0af553b9ff..3273aeca125 100644 --- a/gcc/ifcvt.cc +++ b/gcc/ifcvt.cc @@ -3375,20

[PATCH v2 0/2] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-07-13 Thread Manolis Tsamis
"conditional moves" to "conditional instructions" in bb_ok_for_noce_convert_multiple_sets's comment. Manolis Tsamis (2): ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets ifcvt: Allow more operations in multiple set if conve

Re: [PATCH v2] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-12 Thread Manolis Tsamis
On Mon, Jul 10, 2023 at 12:58 AM Hans-Peter Nilsson wrote: > > On Sun, 9 Jul 2023, Hans-Peter Nilsson wrote: > > > On Thu, 15 Jun 2023, Manolis Tsamis wrote: > > > > > This is a new RTL pass that tries to optimize memory offset calculations > > > by movi

Re: [PATCH v2] Implement new RTL optimizations pass: fold-mem-offsets.

2023-07-12 Thread Manolis Tsamis
On Mon, Jul 10, 2023 at 12:37 AM Hans-Peter Nilsson wrote: > > On Thu, 15 Jun 2023, Manolis Tsamis wrote: > > > This is a new RTL pass that tries to optimize memory offset calculations > > by moving them from add immediate instructions to the memory loads/stores. > > F

Re: [PATCH 2/2] ifcvt: Allow more operations in multiple set if conversion

2023-07-04 Thread Manolis Tsamis
On Mon, Jul 3, 2023 at 12:12 PM Robin Dapp wrote: > > Hi Manolis, > > that looks like a nice enhancement of what's already possible. The concern > I had some years back already was that this function would eventually > grow and cannibalize on some of what the other functions in ifcvt already >

[PATCH 2/2] ifcvt: Allow more operations in multiple set if conversion

2023-07-01 Thread Manolis Tsamis
/ifcvt_multiple_sets_arithm.c: New test. Signed-off-by: Manolis Tsamis --- gcc/ifcvt.cc | 60 +++-- .../aarch64/ifcvt_multiple_sets_arithm.c | 67 +++ 2 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 gcc/testsuite/gcc.target

[PATCH 1/2] ifcvt: handle sequences that clobber flags in noce_convert_multiple_sets

2023-07-01 Thread Manolis Tsamis
-by: Manolis Tsamis --- gcc/ifcvt.cc | 49 +++-- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index 0b180b4568f..fd1ce8a1049 100644 --- a/gcc/ifcvt.cc +++ b/gcc/ifcvt.cc @@ -3373,20 +3373,6

[PATCH 0/2] ifcvt: Allow if conversion of arithmetic in basic blocks with multiple sets

2023-07-01 Thread Manolis Tsamis
. Tested on aarch64 and x64; On x64 some tests that use __builtin_rint are failing with an ICE but I believe that it's not an issue of this change. force_operand crashes when (and:DF (not:DF (reg:DF 88)) (reg/v:DF 83 [ x ])) is provided through emit_conditional_move. Manolis Tsamis (2): ifcvt

Re: [PATCH 2/2] cprop_hardreg: Enable propagation of the stack pointer if possible.

2023-06-19 Thread Manolis Tsamis
On Mon, Jun 19, 2023 at 7:57 PM Thiago Jung Bauermann wrote: > > > Hello Manolis, > > Philipp Tomsich writes: > > > On Thu, 8 Jun 2023 at 00:18, Jeff Law wrote: > >> > >> On 5/25/23 06:35, Manolis Tsamis wrote: > >> > Propagation of th

Re: [PATCH 1/2] Implementation of new RISCV optimizations pass: fold-mem-offsets.

2023-06-15 Thread Manolis Tsamis
unnecessary verbosity in some comments. Thanks, Manolis On Tue, Jun 13, 2023 at 12:58 AM Jeff Law wrote: > > > > On 6/12/23 01:32, Manolis Tsamis wrote: > > >> > >>> + for (ref_link = ref_chain; ref_link; ref_link = ref_link->next) > >>> +

[PATCH v2] Implement new RTL optimizations pass: fold-mem-offsets.

2023-06-15 Thread Manolis Tsamis
. * fold-mem-offsets.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fold-mem-offsets-1.c: New test. * gcc.target/riscv/fold-mem-offsets-2.c: New test. * gcc.target/riscv/fold-mem-offsets-3.c: New test. Signed-off-by: Manolis Tsamis --- Changes in v2

Re: [PATCH 0/2] RISC-V: New pass to optimize calculation of offsets for memory operations.

2023-06-15 Thread Manolis Tsamis
On Thu, Jun 15, 2023 at 6:04 PM Jeff Law wrote: > > > > On 5/25/23 07:42, Jeff Law wrote: > > > Thanks Manolis. Do you happen to know if this includes the fixes I > > passed along to Philipp a few months back? My recollection is one fixed > > stale DF data which prevented an ICE during

Re: [PATCH 1/2] Implementation of new RISCV optimizations pass: fold-mem-offsets.

2023-06-12 Thread Manolis Tsamis
On Sat, Jun 10, 2023 at 6:49 PM Jeff Law wrote: > > > > On 5/25/23 06:35, Manolis Tsamis wrote: > > Implementation of the new RISC-V optimization pass for memory offset > > calculations, documentation and testcases. > > > > gcc/ChangeLog: > > > >

Re: [PATCH 1/2] Implementation of new RISCV optimizations pass: fold-mem-offsets.

2023-06-12 Thread Manolis Tsamis
On Thu, Jun 8, 2023 at 8:37 AM Jeff Law wrote: > > > > On 5/25/23 06:35, Manolis Tsamis wrote: > > Implementation of the new RISC-V optimization pass for memory offset > > calculations, documentation and testcases. > > > > gcc/ChangeLog: > > > >

Re: [PATCH 1/2] Implementation of new RISCV optimizations pass: fold-mem-offsets.

2023-06-12 Thread Manolis Tsamis
On Fri, Jun 9, 2023 at 3:57 AM Jeff Law wrote: > > > > On 5/25/23 06:35, Manolis Tsamis wrote: > > Implementation of the new RISC-V optimization pass for memory offset > > calculations, documentation and testcases. > > > > gcc/ChangeLog: > > > >

Re: [PATCH 2/2] cprop_hardreg: Enable propagation of the stack pointer if possible.

2023-06-08 Thread Manolis Tsamis
Hi Jeff, Yes that one has changed; I changed the implementation based on your feedback. Thanks, Manolis On Thu, Jun 8, 2023 at 1:18 AM Jeff Law wrote: > > > > On 5/25/23 06:35, Manolis Tsamis wrote: > > Propagation of the stack pointer in cprop_hardreg is currenty forbidde

  1   2   >