lib/accy/src/kernel/library/catalog/artifact/specialized/segmented.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2
3 const kernel = @import("../../../../root.zig");
4 const entry = @import("../../../root.zig").entry;
5 const segmented = @import("../../../root.zig").segmented;
6
7 pub fn create(
8 allocator: std.mem.Allocator,
9 handle: kernel.BackendHandle,
10 metadata: entry.Metadata,
11 options: entry.ArtifactOptions,
12 ) !kernel.OwnedKernelCallArtifact {
13 if (metadata.version != segmented.segment_sum_family_version) return error.UnknownKernelLibraryEntry;
14 const instance = segmented.segmentSumInstanceFromSpecialization(metadata.specialization) orelse {
15 return error.UnknownKernelLibraryEntry;
16 };
17 const target = try segmented.segmentSumFamilyTarget(allocator, instance);
18 defer allocator.free(target);
19 if (!std.mem.eql(u8, metadata.target, target)) return error.UnknownKernelLibraryEntry;
20 return try segmented.createSegmentSumFamilyArtifact(allocator, handle, instance, options);
21 }