Finch/tests/run
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude 04f1f94a21
Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix
- comparisons of vectors give masks (boolxN): select(m, a, b), m.any/all/count, & | ^ !;
  f32x8(list, i, fill) and v.store_part(list, i) for the end of a list (masked load/store)
- v.shuffle(constant lanes), v.lo(), v.hi(), concat(a, b), table.lookup(indices):
  pshufb / vpshufb on x86 (SSSE3 and up), tbl on ARM64 (checked in the assembly, LLVM 18 and 21)
- acc.dot_add(a, b): i32 lanes gain 4 byte products each, exactly; vpdpbusd with AVX-VNNI or AVX-512 VNNI,
  usdot/sdot/udot on ARM64, the sum written out elsewhere (pmaddwd); run here with all three paths agreeing
- @cpu("avx2,fma") fn: LLVM target-features for one function (+evex512 for AVX-512, which LLVM 18+ needs);
  cpu_has("avx2"): CPUID + XGETBV on x86, hwcaps on Linux ARM64, sysctl on macOS; a wide vector can't be passed
  between functions with different @cpu (its registers differ), and the compiler says so
- the compiler asks clang which features --cpu means (its predefined macros, cached), so dot_add picks the instruction
- Nix's clang wrapper dropped -march=native in nix-shell (reproduced): finch tells it NIX_ENFORCE_NO_NATIVE=0, shell.nix too,
  and warns if --cpu native still made no difference

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Psc42moPLwP43Cmb9oZqSR
2026-11-01 15:41:47 +00:00
..
abi.c Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
abi.h Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
basics.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
basics.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
bits.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
bits.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
c_pointers.fch OpenGL and Vulkan examples; ptr(int)/int(ptr); trailing commas in calls; drop .fn hint 2026-10-08 19:37:34 +02:00
c_pointers.out OpenGL and Vulkan examples; ptr(int)/int(ptr); trailing commas in calls; drop .fn hint 2026-10-08 19:37:34 +02:00
c_structs.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
c_structs.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
cimport.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
cimport.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
control.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
control.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
defer.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
defer.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
dot_int8.fch Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
dot_int8.out Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
early_exit.fch Fix the two known limits: adding map keys while looping over the map is a runtime error; temporaries held by an expression are freed when try / or-blocks leave early. err usable after or, inner err shadows outer. 2026-10-25 19:13:46 +01:00
early_exit.out Fix the two known limits: adding map keys while looping over the map is a runtime error; temporaries held by an expression are freed when try / or-blocks leave early. err usable after or, inner err shadows outer. 2026-10-25 19:13:46 +01:00
errors.fch Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
errors.out Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
exitcode.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
exitcode.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
files.fch Windows support (wip): target layer, Microsoft x64 ABI, portable runtime, CI 2026-10-08 20:46:51 +02:00
files.out Windows support (wip): target layer, Microsoft x64 ABI, portable runtime, CI 2026-10-08 20:46:51 +02:00
floatbits.fch Floats as written, never fused; fma and muladd; f32/f64 bits, f16 and bf16 2026-11-01 15:25:40 +00:00
floatbits.out Floats as written, never fused; fma and muladd; f32/f64 bits, f16 and bf16 2026-11-01 15:25:40 +00:00
functions.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
functions.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
geometry.fch Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
input.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
input.in Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
input.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
maps.fch Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
maps.out Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
masks.fch Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
masks.out Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
memory.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
memory.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
methods.fch Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
methods.out Finch 2.4.0: methods, maps, errors as values; str() of any value; macOS and ARM64 docs; Kate support 2026-10-09 01:11:12 +02:00
methods_basic.fch boot: methods (fn T.m, self by address, mutation analysis), str() of any value 2026-10-25 19:13:46 +01:00
methods_basic.out boot: methods (fn T.m, self by address, mutation analysis), str() of any value 2026-10-25 19:13:46 +01:00
modules.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
modules.out Struct defaults apply inside structs; exit() ends an or-block; 1e9 literals; x * 2.0 stays f32; floats print as the shortest exact text; str(x, digits) 2026-10-29 09:14:58 +01:00
pointers.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
pointers.out Windows support (wip): target layer, Microsoft x64 ABI, portable runtime, CI 2026-10-08 20:46:51 +02:00
ptr_value_field.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
ptr_value_field.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
shapes.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
shuffles.fch Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
shuffles.out Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
structs_arrays_strings.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
structs_arrays_strings.out Structs, arrays, owned strings, memory model, modules, debug info 2026-10-08 18:57:37 +02:00
types.fch Rename the Finch file extension from .fn to .fch 2026-10-08 19:27:42 +02:00
types.out Finch 1.0.0 2026-10-08 18:21:06 +02:00
vectors.fch Vectors for kernels: masks and select, shuffles and byte lookup, dot_add, @cpu and cpu_has; --cpu native on Nix 2026-11-01 15:41:47 +00:00
vectors.out Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native 2026-11-01 13:50:35 +00:00