code wiki / (root) / nx_simd_usat_shift_test.nx

nx_simd_usat_shift_test.nx

buildroot/runtime/nx_simd_usat_shift_test.nx

6510 B159 linesdepth 6pulls 8 transitivereach 0 importersview sourcekind gate/prooftopic simd
docsdependenciesstructsconstsfunctions

about

nx_simd_usat_shift_test.nx -- unsigned saturating arith + per-lane shifts (i16x16). Two primitive families exercised in one smoke: vsaddu / vssubu -- unsigned saturating add/sub. Required for RGBA channel data (signed sat would clip at 32767 instead of 65535, mangling bright channels). Maps to vpaddusw/vpsubusw on x86 and vsaddu.vv/vssubu.vv on RV-V. vsll / vsrl / vsra -- per-lane immediate shifts. Image processing channel shuffles (pack ARGB into 5-6-5), crypto round shifts, fast pow-of-2 multiply/divide. Maps to vpsllw/vpsrlw/vpsraw on x86 and vsll.vx/vsrl.vx/vsra.vx on RV-V.

dependencies 2 imports · 0 importers

nx_kernel_v2.nx nx_log.nx nx_simd_usat_shift_test.nx

imports: nx_kernel_v2.nxnx_log.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main t1_vsaddu_clamp_high pack4_i16 t2_vssubu_clamp_low pack4_i16 ↻ t3_vsll_shift_left pack4_i16 ↻ t4_vsrl_shift_right_logica pack4_i16 ↻ t5_vsra_shift_right_arithm pack4_i16 ↻

structs

none

consts

none

functions

18func pack4_i16(a: i64, b: i64, c: i64, d: i64) -> i64
25func t1_vsaddu_clamp_high() -> i64
called by 1: main calls 1: pack4_i16
55func t2_vssubu_clamp_low() -> i64
called by 1: main calls 1: pack4_i16
87func t3_vsll_shift_left() -> i64
called by 1: main calls 1: pack4_i16
107func t4_vsrl_shift_right_logical() -> i64
called by 1: main calls 1: pack4_i16
126func t5_vsra_shift_right_arithmetic() -> i64
called by 1: main calls 1: pack4_i16
144func main() -> nx_exit