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 (reg:DI 85 [ mask ])) (mem/v:DI (reg:DI 88) [-1 S8 A64])) (const_int 3 [0x3]) ] UNSPECV_ATOMIC_OP)) (clobber (scratch:DI)) ]) which are exactly the semantics of ldclrl but our patterns don't match that