From 8360d8edfed6ec6292fc1e2ee0009ff508136c93 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Tue, 18 Aug 2026 03:16:04 +0200 Subject: [PATCH] [Phi] fixing compilation error from `_mm512_set1_epi32` and fixing zlint issue --- src/phi/PhiDeviceMemory.zig | 2 +- src/phi/mic/Memory.c | 2 +- src/phi/mic/avx/Fill.c | 10 ++++++---- src/phi/mic/avx/Intrinsic.h | 14 ++++++++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/phi/mic/avx/Intrinsic.h diff --git a/src/phi/PhiDeviceMemory.zig b/src/phi/PhiDeviceMemory.zig index 3c805a8..3cb4029 100644 --- a/src/phi/PhiDeviceMemory.zig +++ b/src/phi/PhiDeviceMemory.zig @@ -67,7 +67,7 @@ pub fn create(device: *PhiDevice, allocator: std.mem.Allocator, size: vk.DeviceS errdefer device.interface.device_allocator.allocator().free(backing); const offset = device.transport.registerHostMemory(backing) catch return VkError.OutOfHostMemory; - errdefer device.transport.unregisterHostMemory(offset, backing.len) catch {}; + errdefer device.transport.unregisterHostMemory(offset, backing.len) catch @panic("Caught an error while handling an error"); const request: proto.PhiMapHostMemoryRequest = .{ .scif_offset = offset, diff --git a/src/phi/mic/Memory.c b/src/phi/mic/Memory.c index 748e324..19e6f4d 100644 --- a/src/phi/mic/Memory.c +++ b/src/phi/mic/Memory.c @@ -71,7 +71,7 @@ int HandleNewMemory(PhiEndpoint endpoint, const PhiMessageHeader* header) return SendReply(endpoint, header, &reply, sizeof(reply)); } - Memory* memory; + Memory* memory = NULL; if(header->type == PHI_PACKET_ALLOC_MEMORY) { diff --git a/src/phi/mic/avx/Fill.c b/src/phi/mic/avx/Fill.c index 4c378dd..80dd1d1 100644 --- a/src/phi/mic/avx/Fill.c +++ b/src/phi/mic/avx/Fill.c @@ -1,10 +1,12 @@ #include #include +#include + // Dst must be 64-byte aligned -void PhiFill256KNC(void* dst, uint32_t value) +void AvxFill256(void* dst, uint32_t value) { - __m512i v = _mm512_set1_epi32((int)value); + __m512i v = _mm512_set1_epi32_knc((int)value); uint8_t* d = (uint8_t*)dst; @@ -15,9 +17,9 @@ void PhiFill256KNC(void* dst, uint32_t value) } // Dst must be 64-byte aligned -void PhiFill64KNC(void* dst, uint32_t value) +void AvxFill64(void* dst, uint32_t value) { - __m512i v = _mm512_set1_epi32((int)value); + __m512i v = _mm512_set1_epi32_knc((int)value); _mm512_store_epi32(dst, v); } diff --git a/src/phi/mic/avx/Intrinsic.h b/src/phi/mic/avx/Intrinsic.h new file mode 100644 index 0000000..8c3dd8a --- /dev/null +++ b/src/phi/mic/avx/Intrinsic.h @@ -0,0 +1,14 @@ +#ifndef APE_PHI_AVX_INTRINSIC_H +#define APE_PHI_AVX_INTRINSIC_H + +#include +#include + +static inline __attribute__((always_inline)) __m512i _mm512_set1_epi32_knc(uint32_t value) +{ + __m512i result; + __asm__("vpbroadcastd %1, %0" : "=x"(result) : "m"(value)); + return result; +} + +#endif