//! SPDX-FileCopyrightText: 2013-2026 Frank Denis <j@pureftpd.org>
//! SPDX-License-Identifier: ISC
-
-/** 8 arrays of 3 arrays of 12 values of 4 bytes */
-const stride = 8 * 3 * 12 * 4
-
export function base (pos: i32): usize {
- const start: usize = pos * stride
+ const start: usize = (pos << 10) + (pos << 7) // 1152 = 4 bytes * 12 values * 3 fe * 8 ge
return changetype<usize>(_base) + start
}
fe_cmov(t.xy2d, u.xy2d, b)
}
-const ge_cmov8_precomp_buffer: usize = changetype<usize>(new StaticArray<i32>(1152)) // 4 bytes * 12 values * 3 fields * 8 groups
+const ge_cmov8_precomp_buffer: usize = changetype<usize>(new StaticArray<i32>(288)) // 12 values * 3 fields * 8 groups
const ge_cmov8_minust: ge_precomp = new ge_precomp()
const ge_cmov8_precomp: StaticArray<ge_precomp> = StaticArray.fromArray<ge_precomp>([
new ge_precomp(),
memory.copy(ge_cmov8_precomp_buffer, base(pos), 1152)
ge_precomp_0(t)
- for (let i: i8 = 0; i < 8; i++) {
+ for (let i = 0; i < 8; i++) {
const ptr = ge_cmov8_precomp_buffer + (i * 144) // 4 bytes * 12 values * 3 fields
memory.copy(changetype<usize>(ge_cmov8_precomp[i].yplusx), ptr, 48)
memory.copy(changetype<usize>(ge_cmov8_precomp[i].yminusx), ptr + 48, 48)
memory.copy(changetype<usize>(ge_cmov8_precomp[i].xy2d), ptr + 96, 48)
- ge_cmov(t, ge_cmov8_precomp[i], equal(babs, i + 1))
+ ge_cmov(t, ge_cmov8_precomp[i], equal(babs, i8(i + 1)))
}
fe_copy(minust.yplusx, t.yminusx)