2
2
const fl = @import ("./fastlanez.zig" );
3
3
const std = @import ("std" );
4
4
5
+ // Transpose
6
+ comptime {
7
+ for (.{ u8 , u16 , u32 , u64 }) | E | {
8
+ const FL = fl .FastLanez (E );
9
+ const Wrapper = struct {
10
+ fn transpose (in : * const FL.Vector , out : * FL.Vector ) callconv (.C ) void {
11
+ // TODO(ngates): check the performance of this. We may want tranpose to operate on pointers.
12
+ out .* = FL .transpose (in .* );
13
+ }
14
+
15
+ fn untranspose (in : * const FL.Vector , out : * FL.Vector ) callconv (.C ) void {
16
+ out .* = FL .untranspose (in .* );
17
+ }
18
+ };
19
+ @export (Wrapper .transpose , .{ .name = "fl_transpose_" ++ @typeName (E ) });
20
+ @export (Wrapper .untranspose , .{ .name = "fl_untranspose_" ++ @typeName (E ) });
21
+ }
22
+ }
23
+
5
24
// BitPacking
6
25
comptime {
7
26
const BitPacking = @import ("./bitpacking.zig" ).BitPacking ;
@@ -21,3 +40,30 @@ comptime {
21
40
}
22
41
}
23
42
}
43
+
44
+ // Delta
45
+ comptime {
46
+ const Delta = @import ("./delta.zig" ).Delta ;
47
+ for (.{ u8 , i8 , u16 , i16 , u32 , i32 , u64 , i64 }) | E | {
48
+ const FL = fl .FastLanez (E );
49
+ const D = Delta (FL );
50
+
51
+ const Wrapper = struct {
52
+ fn encode (
53
+ in : * const FL.Vector ,
54
+ base : * FL.BaseVector ,
55
+ out : * FL.Vector ,
56
+ ) callconv (.C ) void {
57
+ D .encode (base , in , out );
58
+ FL .store (base , 0 , FL .load (out , FL .T - 1 ));
59
+ }
60
+
61
+ fn decode (base : * const FL.BaseVector , in : * const FL.Vector , out : * FL.Vector ) callconv (.C ) void {
62
+ D .decode (base , in , out );
63
+ }
64
+ };
65
+
66
+ @export (Wrapper .encode , .{ .name = "fl_delta_encode_" ++ @typeName (E ) });
67
+ @export (Wrapper .decode , .{ .name = "fl_delta_decode_" ++ @typeName (E ) });
68
+ }
69
+ }
0 commit comments