[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2022-01-27 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 Andrew Pinski changed: What|Removed |Added Known to work||9.1.0 Resolution|---

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2017-09-21 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 Andrew Pinski changed: What|Removed |Added Status|ASSIGNED|NEW Assignee|pinskia at gcc

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-07-13 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #9 from Andrew Pinski --- (In reply to Andrew Pinski from comment #7) > I have not done a bootstrap/test yet but I can do it on a machine which has > LSE support in a few minutes. Note this patch causes many failures but none in gcc

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-18 Thread dhowells at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #8 from dhowells at redhat dot com --- (In reply to Andrew Pinski from comment #7) > Created attachment 38509 [details] > Full fix which needs full testing This is looking good: 0058 : 58: 12001403and

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-17 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #7 from Andrew Pinski --- Created attachment 38509 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38509=edit Full fix which needs full testing I think I have a full fix. Basically there is no reason why we can't expand

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-17 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #6 from ktkachov at gcc dot gnu.org --- (In reply to ktkachov from comment #5) > In the foo_clear_bit_unlock case combine tries to match: > (parallel [ > (set (mem/v:DI (reg:DI 88) [-1 S8 A64]) >

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-17 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #5 from ktkachov at gcc dot gnu.org --- In the foo_clear_bit_unlock case combine tries to match: (parallel [ (set (mem/v:DI (reg:DI 88) [-1 S8 A64]) (unspec_volatile:DI [ (and:DI (not:DI

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-17 Thread dhowells at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #4 from dhowells at redhat dot com --- That looks better here: 007c : 7c: d2a00801mov x1, #0x40 // #4194304 80: f8611001ldclrl x1, x1, [x0] 84: d65f03c0ret

[Bug target/71153] aarch64 LSE __atomic_fetch_and() generates inversion for constants

2016-05-16 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153 --- Comment #3 from Andrew Pinski --- The other way of fixing this is to expose the NOT in RTL before register allocator. That is harder but still doable.