Extended Description
define i64 @test(i64* %p) {
%x = atomicrmw sub i64* %p, i64 1 seq_cst
ret i64 %x
}
Under -mcpu=znver1 results in:
pushq %rax
.cfi_def_cfa_offset 16
movl $1, %esi
movl $5, %edx
callq __atomic_fetch_sub_8
popq %rcx
.cfi_def_cfa_offset 8
retq
While it should produce a "lock xaddq" instruction.
This issue was introduced in https://reviews.llvm.org/D59576, where the CMPXCHG8B feature flag was not added to ZNFeatures.