diff --git a/src/arm64/bitmanipulation.h b/src/arm64/bitmanipulation.h index b3d609fee..a8447104c 100644 --- a/src/arm64/bitmanipulation.h +++ b/src/arm64/bitmanipulation.h @@ -50,9 +50,8 @@ really_inline int count_ones(uint64_t input_num) { really_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) { #ifdef _MSC_VER - // todo: this might fail under visual studio for ARM - return _addcarry_u64(0, value1, value2, - reinterpret_cast(result)); + *result = value1 + value2; + return *result < value1; #else return __builtin_uaddll_overflow(value1, value2, (unsigned long long *)result);