https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114741
Bug ID: 114741 Summary: [14 regression] aarch64 sve: unnecessary fmov for scalar int bit operations Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: nsz at gcc dot gnu.org Target Milestone: --- void foo(unsigned i, unsigned *p) { *p = i & 1; } with gcc -march=armv8-a+sve -O2 compiles to foo: fmov s31, w0 and z31.s, z31.s, #1 str s31, [x1] ret instead of foo: and w0, w0, 1 str w0, [x1] ret it is wrong with -mcpu=generic but good e.g. with -mcpu=neoverse-v1