[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-05-06 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #10 from Andrew Pinski --- Patch posted: https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650833.html

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-04-24 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #9 from Andrew Pinski --- Created attachment 58022 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58022=edit Patch which I tested I still need to add the testcases and finish up the commit message and changelogs. I will do

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-04-24 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #8 from Andrew Pinski --- (In reply to Andrew Pinski from comment #7) > here is a testcase for the fcsel usage for integer cmov: A slightly better example where there is no use of inline-asm or forcing to specific registers: ```

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-04-24 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #7 from Andrew Pinski --- here is a testcase for the fcsel usage for integer cmov: ``` void foo (int a, int *b) { int t = a ? 11 : 22; register int tt __asm__("s0"); tt = t; asm("":"+w"(tt)); *b = tt; } ```

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-04-24 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #6 from Andrew Pinski --- here is a testcase for the fcsel usage for integer: ``` void foo (int a, double *b) { double t = a ? 1.0 : 200.0; register double tt __asm__("x0"); tt = t; asm("":"+r"(tt)); *b = tt; } ```

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2024-04-23 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #5 from Andrew Pinski --- So adding the `r` alternative to *cmov_insn (GPF) works kinda of but then we seem to have a register allocation issue. Even this still causes FPREGS from being chosen: ``` void foo (int a, double *b) {

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2023-11-17 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 Andrew Pinski changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2020-12-30 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 Andrew Pinski changed: What|Removed |Added Last reconfirmed||2020-12-30 Version|unknown

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2020-12-30 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #2 from Andrew Pinski --- (In reply to ktkachov from comment #1) > Or a =r,r,r alternative to the FCSEL pattern instead... Should most likely add the r alternative to *cmov_insn (GPF) and the w alternative to *cmov_insn (ALLI). So

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2020-12-30 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 Andrew Pinski changed: What|Removed |Added Severity|normal |enhancement CC|

[Bug target/98477] aarch64: Unnecessary GPR -> FPR moves for conditional select

2020-12-30 Thread ktkachov at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98477 --- Comment #1 from ktkachov at gcc dot gnu.org --- Or a =r,r,r alternative to the FCSEL pattern instead...