diff -Nru orig/duckdb/src/duckdb/third_party/fast_float/fast_float/fast_float.h patched/duckdb/src/duckdb/third_party/fast_float/fast_float/fast_float.h
--- orig/duckdb/src/duckdb/third_party/fast_float/fast_float/fast_float.h	2023-11-14 11:57:47.000000000 +0100
+++ patched/duckdb/src/duckdb/third_party/fast_float/fast_float/fast_float.h	2024-02-05 17:09:25.738564100 +0100
@@ -242,7 +242,7 @@
 fastfloat_really_inline value128 full_multiplication(uint64_t a,
                                                      uint64_t b) {
   value128 answer;
-#ifdef _M_ARM64
+#if defined(FASTFLOAT_VISUAL_STUDIO) && defined(_M_ARM64)
   // ARM64 has native support for 64-bit multiplications, no need to emulate
   answer.high = __umulh(a, b);
   answer.low = a * b;
diff -Nru orig/duckdb/src/duckdb/third_party/thrift/thrift/thrift-config.h patched/duckdb/src/duckdb/third_party/thrift/thrift/thrift-config.h
--- orig/duckdb/src/duckdb/third_party/thrift/thrift/thrift-config.h	2023-11-14 11:57:47.000000000 +0100
+++ patched/duckdb/src/duckdb/third_party/thrift/thrift/thrift-config.h	2024-02-05 17:09:25.747582500 +0100
@@ -22,7 +22,7 @@
 
 
 #ifdef _WIN32
-#if defined(_M_IX86) || defined(_M_X64)
+#if defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64)
 #define ARITHMETIC_RIGHT_SHIFT 1
 #define SIGNED_RIGHT_SHIFT_IS 1
 #endif
