lib/accy/src/kernel/library/catalog/artifact/specialized/scan.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const std = @import("std");
 2 
 3 const kernel = @import("../../../../root.zig");
 4 const entry = @import("../../../root.zig").entry;
 5 const scan = @import("../../../root.zig").scan;
 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 != scan.prefix_sum_family_version) return error.UnknownKernelLibraryEntry;
14     const instance = scan.prefixSumInstanceFromSpecialization(metadata.specialization) orelse {
15         return error.UnknownKernelLibraryEntry;
16     };
17     const target = try scan.prefixSumFamilyTarget(allocator, instance);
18     defer allocator.free(target);
19     if (!std.mem.eql(u8, metadata.target, target)) return error.UnknownKernelLibraryEntry;
20     return try scan.createPrefixSumFamilyArtifact(allocator, handle, instance, options);
21 }