[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread rguenther at suse dot de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #16 from rguenther at suse dot de --- On Thu, 7 Mar 2024, gjl at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 > > --- Comment #14 from Georg-Johann Lay --- > The code in the example is not a perfect

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #15 from Andrew Pinski --- Note one thing that might help is define an alternative for bswap that takes a memory operand and just do the load that way. That will definitely help in the original code.

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #14 from Georg-Johann Lay --- The code in the example is not a perfect bswap, it needs additional shuffling of bytes. The tree passes must know that bswap is not a perfect fit. There must be *some* criterion that depends on the per

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #13 from Richard Biener --- (In reply to Georg-Johann Lay from comment #12) > (In reply to Richard Biener from comment #10) > > I think the target controls the "libcall" ABI that's used for calls to > > libgcc, > > You have a pointe

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #12 from Georg-Johann Lay --- (In reply to Richard Biener from comment #10) > I think the target controls the "libcall" ABI that's used for calls to > libgcc, You have a pointer how to do it or an example? IIRC I looked into it quit

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #11 from Richard Biener --- diff --git a/gcc/gimple-ssa-store-merging.cc b/gcc/gimple-ssa-store-merging.cc index 42b68abf61b..c9d4662656f 100644 --- a/gcc/gimple-ssa-store-merging.cc +++ b/gcc/gimple-ssa-store-merging.cc @@ -170,6 +1

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 Richard Biener changed: What|Removed |Added CC||sayle at gcc dot gnu.org --- Comment #

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #9 from Georg-Johann Lay --- ...and I don't see why a register allocator would or should fix flaws from tree optimizers.

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-07 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #8 from Georg-Johann Lay --- (In reply to Richard Biener from comment #7) > Note I do understand what you are saying, just the middle-end in detecting > and using __builtin_bswap32 does what it does everywhere else - it checks > whet

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #7 from Richard Biener --- Note I do understand what you are saying, just the middle-end in detecting and using __builtin_bswap32 does what it does everywhere else - it checks whether the target implements the operation. The middle-

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread rguenther at suse dot de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #6 from rguenther at suse dot de --- > Am 06.03.2024 um 17:12 schrieb gjl at gcc dot gnu.org > : > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 > > --- Comment #5 from Georg-Johann Lay --- > (In reply to Richard Biener

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #5 from Georg-Johann Lay --- (In reply to Richard Biener from comment #4) > So bswap on a value is just register shuffling, right? The point is that there is no need for bswap in the first place, just have a look at the code that v1

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 Richard Biener changed: What|Removed |Added CC||rguenth at gcc dot gnu.org,

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread gjl at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #3 from Georg-Johann Lay --- (In reply to Richard Biener from comment #1) > but somehow we end up doing a libcall? It's not a libcall in the GCC sense, for the compiler it's just an ordinary insn. The backend then prints this as a

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 --- Comment #2 from Richard Biener --- Looking at avr.md there's no bswap implementation, only the libcall. Why expose it this way? I suppose the pattern was added to get bswap recognition, so this is what you get if you do that?

[Bug target/114252] Introducing bswapsi reduces code performance

2024-03-06 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114252 Richard Biener changed: What|Removed |Added Ever confirmed|0 |1 Last reconfirmed|