On x86_64 systems, assembly files are included in the build
(see https://github.com/llvm/llvm-project/blob/1095870e8ceddc5371f446f4e7c3473f89a461cd/llvm/lib/Support/BLAKE3/CMakeLists.txt#L63).
These assembly files files add symbols.       

On i386  systems, the assembly files are not included but the symbols are never used.
(see https://github.com/llvm/llvm-project/blob/1095870e8ceddc5371f446f4e7c3473f89a461cd/llvm/lib/Support/BLAKE3/CMakeLists.txt#L14).

On i386/x86_64 universal builds, the symbols are used but do not exist, causing a link error.

This patch attempts to prevent the use of nonexistent symbols.

See https://github.com/llvm/llvm-project/issues/59965

--- a/llvm/lib/Support/BLAKE3/blake3_impl.h	2022-11-29 03:05:58.000000000 -0700
+++ b/llvm/lib/Support/BLAKE3/blake3_impl.h	2023-01-11 11:28:42.000000000 -0700
@@ -78,6 +78,13 @@
 #define MAX_SIMD_DEGREE 1
 #endif
 
+#if defined(__i386__)
+#define BLAKE3_NO_AVX512
+#define BLAKE3_NO_AVX2
+#define BLAKE3_NO_SSE41
+#define BLAKE3_NO_SSE2
+#endif
+
 // There are some places where we want a static size that's equal to the
 // MAX_SIMD_DEGREE, but also at least 2.
 #define MAX_SIMD_DEGREE_OR_2 (MAX_SIMD_DEGREE > 2 ? MAX_SIMD_DEGREE : 2)
