https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116509
Bug ID: 116509 Summary: 128bit integer compares can be improved Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Target: aarch64 Take: ``` int ltu(unsigned __int128 a, unsigned __int128 b) { return a < b; } int gtu(unsigned __int128 a, unsigned __int128 b) { return a > b; } int geu(unsigned __int128 a, unsigned __int128 b) { return a >= b; } int leu(unsigned __int128 a, unsigned __int128 b) { return a <= b; } int eq(unsigned __int128 a, unsigned __int128 b) { return a == b; } int ne(unsigned __int128 a, unsigned __int128 b) { return a != b; } int lt(__int128 a, __int128 b) { return a < b; } int gt(__int128 a, __int128 b) { return a > b; } int ge(__int128 a, __int128 b) { return a >= b; } int le(__int128 a, __int128 b) { return a <= b; } ``` These can be handled using ccmp/sbcs instead of what we currently produce.