[Bug target/82439] New: [AArch64] Missing (x | y) == x simplifications
wilco at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Oct 5 12:26:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82439
Bug ID: 82439
Summary: [AArch64] Missing (x | y) == x simplifications
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: wilco at gcc dot gnu.org
Target Milestone: ---
The following logical simplifications are missing on targets with a bitclear
instruction:
(x | y) == x -> (y & ~x) == 0
(x & y) == y -> (y & ~x) == 0
Simple testcase (f1 should generate the same as f2):
int f1(int x, int y) { return (x | y) == x; }
int f2(int x, int y) { return (y & ~x) == 0; }
f1:
orr w1, w0, w1
cmp w1, w0
cset w0, eq
ret
f2:
bics wzr, w1, w0
cset w0, eq
ret
More information about the Gcc-bugs
mailing list