@@ -62,17 +62,7 @@ static float tkv_fp16_to_fp32(uint16_t h) {
6262 return bits .f ;
6363}
6464
65- /* ============================================================
66- * QJL random entry helper (must match tq_qjl.c exactly)
67- * ============================================================ */
68-
69- static float tkv_qjl_random_entry (int dim_idx , int sketch_idx ) {
70- uint32_t h = (uint32_t )(dim_idx * 2654435761u + sketch_idx * 340573321u );
71- h ^= h >> 16 ;
72- h *= 0x45d9f3b ;
73- h ^= h >> 16 ;
74- return (h & 1 ) ? 1.0f : -1.0f ;
75- }
65+ /* (tkv_qjl_random_entry removed — dead code, QJL residual dropped in Variant F) */
7666
7767/* ============================================================
7868 * Block seed: deterministic per-block seed based on position
@@ -84,24 +74,6 @@ static float tkv_qjl_random_entry(int dim_idx, int sketch_idx) {
8474 * Bit packing helpers for codebook indices
8575 * ============================================================ */
8676
87- /* Pack 2-bit indices: 4 values per byte, LSB-first */
88- static void pack_2bit (const uint8_t * indices , uint8_t * packed , int n ) {
89- memset (packed , 0 , (size_t )((n + 3 ) / 4 ));
90- for (int i = 0 ; i < n ; i ++ ) {
91- int byte_idx = i / 4 ;
92- int bit_pos = (i % 4 ) * 2 ;
93- packed [byte_idx ] |= (uint8_t )((indices [i ] & 0x03 ) << bit_pos );
94- }
95- }
96-
97- static void unpack_2bit (const uint8_t * packed , uint8_t * indices , int n ) {
98- for (int i = 0 ; i < n ; i ++ ) {
99- int byte_idx = i / 4 ;
100- int bit_pos = (i % 4 ) * 2 ;
101- indices [i ] = (packed [byte_idx ] >> bit_pos ) & 0x03 ;
102- }
103- }
104-
10577/* Pack 3-bit indices: using LSB-first bit-stream packing */
10678static void pack_3bit (const uint8_t * indices , uint8_t * packed , int n ) {
10779 int total_bytes = (n * 3 + 7 ) / 8 ;
@@ -118,37 +90,9 @@ static void pack_3bit(const uint8_t* indices, uint8_t* packed, int n) {
11890 }
11991}
12092
121- static void unpack_3bit (const uint8_t * packed , uint8_t * indices , int n ) {
122- for (int i = 0 ; i < n ; i ++ ) {
123- int bit_offset = i * 3 ;
124- int byte_idx = bit_offset / 8 ;
125- int bit_pos = bit_offset % 8 ;
126- uint16_t val = (uint16_t )packed [byte_idx ];
127- if (bit_pos > 5 && byte_idx + 1 < (n * 3 + 7 ) / 8 ) {
128- val |= (uint16_t )packed [byte_idx + 1 ] << 8 ;
129- }
130- indices [i ] = (uint8_t )((val >> bit_pos ) & 0x07 );
131- }
132- }
93+ /* (unpack_3bit removed — dead code, only pack_3bit is called) */
13394
134- /* ============================================================
135- * QJL sign hash on residual (simplified, inline)
136- * ============================================================ */
137-
138- static void compute_qjl_signs (const float * residual , uint8_t * signs ,
139- int dim , int n_sketch ) {
140- int hash_bytes = n_sketch / 8 ;
141- memset (signs , 0 , (size_t )hash_bytes );
142- for (int s = 0 ; s < n_sketch ; s ++ ) {
143- float proj = 0.0f ;
144- for (int d = 0 ; d < dim ; d ++ ) {
145- proj += residual [d ] * tkv_qjl_random_entry (d , s );
146- }
147- if (proj > 0.0f ) {
148- signs [s / 8 ] |= (uint8_t )(1 << (s % 8 ));
149- }
150- }
151- }
95+ /* (compute_qjl_signs removed — dead code, QJL residual was dropped in Variant F) */
15296
15397/* ============================================================
15498 * Internal: MSE-only dequantize in rotated space (shared helper)
@@ -1319,19 +1263,7 @@ static void pack_5bit(const uint8_t* indices, uint8_t* packed, int n) {
13191263 }
13201264}
13211265
1322- static void unpack_5bit (const uint8_t * packed , uint8_t * indices , int n ) {
1323- int total_bytes = (n * 5 + 7 ) / 8 ;
1324- for (int i = 0 ; i < n ; i ++ ) {
1325- int bit_offset = i * 5 ;
1326- int byte_idx = bit_offset / 8 ;
1327- int bit_pos = bit_offset % 8 ;
1328- uint16_t val = (uint16_t )packed [byte_idx ];
1329- if (bit_pos > 3 && byte_idx + 1 < total_bytes ) {
1330- val |= (uint16_t )packed [byte_idx + 1 ] << 8 ;
1331- }
1332- indices [i ] = (uint8_t )((val >> bit_pos ) & 0x1F );
1333- }
1334- }
1266+ /* (unpack_5bit removed — dead code, 5b dequant uses inline uint64 reads) */
13351267
13361268void tq_turbo_kv_5b_quantize_ref (const float * src , void * dst , int n ) {
13371269 block_tq_turbo_kv_5b * block = (block_tq_turbo_kv_5b * )dst ;
0 commit comments