[Bug target/113856] `(vect64 float){1.0f, 0}` code generation could just be `fmov sN, 1.0f`

2024-02-15 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113856

--- Comment #3 from Andrew Pinski  ---
I should note that the one place where `{1.0, 0.0}` shows up is the use with
complex :). I found it on accident while understanding why I was getting a
failure with `libgomp.c-c++-common/reduction-*.c` where I would also match on
accident `{1.0, 0.0, 1.0, 0.0}`.

[Bug target/113856] `(vect64 float){1.0f, 0}` code generation could just be `fmov sN, 1.0f`

2024-02-14 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113856

--- Comment #2 from Andrew Pinski  ---
Note for:
```
#define vect128 __attribute__((vector_size(16) ))

vect128  float f1()
{
  return (vect64 float){1.0f, 1.0f, 0.0f, 0.0f};
}
```

Should also be able to do:
```
fmov v0.2s, 1.0
```

The instruction here does zero the upper parts of the register too.
I have a patch for that too.

[Bug target/113856] `(vect64 float){1.0f, 0}` code generation could just be `fmov sN, 1.0f`

2024-02-14 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113856

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |pinskia at gcc dot 
gnu.org
 Ever confirmed|0   |1
   Last reconfirmed||2024-02-15

--- Comment #1 from Andrew Pinski  ---
I have a patch.

[Bug target/113856] `(vect64 float){1.0f, 0}` code generation could just be `fmov sN, 1.0f`

2024-02-09 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113856

Andrew Pinski  changed:

   What|Removed |Added

   Severity|normal  |enhancement