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
..
array_compare.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
bad_int.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
bad_link_name.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
bool_bitand.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
condition_not_bool.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
cpu_attr_name.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
cpu_has_name.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
cpu_wide_vector.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
defer_return.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
div_zero_const.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
div_zero_runtime.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
each_readonly.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
empty_array.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
error_not_fallible.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
error_outside_return.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
float_to_int.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
forgot_import.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
free_value.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
index_range.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
lib_hint.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
lib_hint.h
Finch 1.0.0
2026-10-08 18:21:06 +02:00
literal_too_big.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
loop_var_readonly.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
map_add_while_looping.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
map_empty_literal.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
map_float_key.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
map_missing_key.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
method_field_clash.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
method_loop_readonly.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
method_missing.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
missing_header.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
missing_lib.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
missing_return.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
mixed_signs.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
module_missing.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
module_not_imported.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
no_main.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
non_ascii_name.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
null_value.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
old_function_syntax.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
or_block_value.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
or_cannot_fail.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
pop_empty.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
push_type.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
redeclare.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
str_null.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
str_plus_int.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
struct_count.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
struct_no_field.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
struct_self.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
try_outside_fallible.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
two_statements.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
type_mismatch.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
unclosed_brace.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
undefined_var.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
unhandled_error.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
unreachable.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
untyped_null.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
untyped_ptr.fch
Rename the Finch file extension from .fn to .fch
2026-10-08 19:27:42 +02:00
vec_intdiv.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00
vec_lane_index.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00
vec_lanes.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00
vec_less.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
vec_load_end.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00
vec_mix.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00
vec_shuffle_range.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
vec_shuffle_var.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
vec_type.fch
Vector types (SIMD): f32x8, i8x32, f64x4 and the rest; --cpu native
2026-11-01 13:50:35 +00:00