Skip to content

Commit b01f56c

Browse files
authored
Create 7008-xnnpack-clang-18.patch
1 parent a3b8a3d commit b01f56c

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
https://github.com/llvm/llvm-project/issues/132013
2+
https://github.com/google/XNNPACK/commit/8a2f5f441833b80806b58b5d704ec8335634182c
3+
4+
--- a/third_party/xnnpack/src/src/xnnpack/simd/f16-avx512fp16.h
5+
+++ b/third_party/xnnpack/src/src/xnnpack/simd/f16-avx512fp16.h
6+
@@ -27,8 +27,21 @@ typedef __m512h xnn_simd_f16_t;
7+
const xnn_simd_f16_t var = _mm512_castsi512_ph(_mm512_set1_epi16(val));
8+
9+
#if XNN_HAVE_FLOAT16
10+
+
11+
+#if defined(__clang__) && (__clang_major__ < 19)
12+
+static XNN_INLINE __m512d xnn_broadcast_16_512_workaround(uint16_t x) {
13+
+ uint32_t bits = (uint32_t)x | ((uint32_t)x) << 16;
14+
+ __asm__ volatile("" : "=m"(bits) : "m"(bits));
15+
+ return _mm512_castsi512_pd(_mm512_set1_epi32(bits));
16+
+}
17+
+#define XNN_SIMD_CONST_F16_FROM_FLOAT(var, val) \
18+
+ const xnn_simd_f16_t var = xnn_broadcast_16_512_workaround( \
19+
+ xnn_float16_to_bits(xnn_float16_from_float(val)))
20+
+#else
21+
#define XNN_SIMD_CONST_F16_FROM_FLOAT(var, val) \
22+
const xnn_simd_f16_t var = _mm512_set1_ph(xnn_float16_from_float(val))
23+
+#endif // Old Clang workaround
24+
+
25+
#else
26+
#define XNN_SIMD_CONST_F16_FROM_FLOAT(var, val) \
27+
XNN_SIMD_CONST_F16_FROM_INT16( \

0 commit comments

Comments
 (0)