Files

80 lines
2.8 KiB
Go

// Copyright (C) 2026, Lux Industries Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//
// luts.go — FROZEN integer LUTs, byte-identical to the GPU/C++ kernels
// (ops/aivm/softmax_i8/cpu/exp_lut.h, swiglu_i8/cpu/silu_lut.h). Embedded as exact
// constants (NOT recomputed via Go math — that would diverge in the last ULP and
// break consensus). Regenerating must reproduce these exact values.
package inference
var aivmExpLUT = [256]int32{
65536, 62757, 60097, 57549, 55109, 52773, 50535, 48393,
46341, 44376, 42495, 40693, 38968, 37316, 35734, 34219,
32768, 31379, 30048, 28774, 27554, 26386, 25268, 24196,
23170, 22188, 21247, 20347, 19484, 18658, 17867, 17109,
16384, 15689, 15024, 14387, 13777, 13193, 12634, 12098,
11585, 11094, 10624, 10173, 9742, 9329, 8933, 8555,
8192, 7845, 7512, 7194, 6889, 6597, 6317, 6049,
5793, 5547, 5312, 5087, 4871, 4664, 4467, 4277,
4096, 3922, 3756, 3597, 3444, 3298, 3158, 3025,
2896, 2774, 2656, 2543, 2435, 2332, 2233, 2139,
2048, 1961, 1878, 1798, 1722, 1649, 1579, 1512,
1448, 1387, 1328, 1272, 1218, 1166, 1117, 1069,
1024, 981, 939, 899, 861, 825, 790, 756,
724, 693, 664, 636, 609, 583, 558, 535,
512, 490, 470, 450, 431, 412, 395, 378,
362, 347, 332, 318, 304, 292, 279, 267,
256, 245, 235, 225, 215, 206, 197, 189,
181, 173, 166, 159, 152, 146, 140, 134,
128, 123, 117, 112, 108, 103, 99, 95,
91, 87, 83, 79, 76, 73, 70, 67,
64, 61, 59, 56, 54, 52, 49, 47,
45, 43, 41, 40, 38, 36, 35, 33,
32, 31, 29, 28, 27, 26, 25, 24,
23, 22, 21, 20, 19, 18, 17, 17,
16, 15, 15, 14, 13, 13, 12, 12,
11, 11, 10, 10, 10, 9, 9, 8,
8, 8, 7, 7, 7, 6, 6, 6,
6, 5, 5, 5, 5, 5, 4, 4,
4, 4, 4, 4, 3, 3, 3, 3,
3, 3, 3, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1,
}
var aivmSiluLUT = [256]int32{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -2, -2,
-2, -2, -2, -2, -2, -2, -2, -2,
-2, -2, -2, -3, -3, -3, -3, -3,
-3, -3, -3, -3, -3, -4, -4, -4,
-4, -4, -4, -4, -4, -4, -4, -4,
-4, -4, -4, -4, -4, -4, -4, -4,
-4, -4, -4, -4, -4, -4, -3, -3,
-3, -3, -2, -2, -2, -1, -1, 0,
0, 1, 1, 2, 2, 3, 4, 4,
5, 6, 7, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 78,
79, 80, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127,
}