https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104394
Bug ID: 104394 Summary: Failure to optimize vector pattern for x < 0 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: gabravier at gmail dot com Target Milestone: --- #include <stdint.h> typedef int32_t v4i32 __attribute__((vector_size(16))); v4i32 get_cmpmask(v4i32 mask) { v4i32 signmask{(int32_t)0x80000000, (int32_t)0x80000000, (int32_t)0x80000000, (int32_t)0x80000000}; return ((signmask & mask) == signmask); } This can be optimized to `return mask < 0;`. This transformation is done by LLVM, but not by GCC.