mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-07-31 04:39:01 +00:00
mitchell's touchups
- benchmark: avoid buffers to avoid a memcpy - build: keep frame pointers on macOS. There was some debug changes from Zig 0.15 and this helps. Also, Apple actually requires/expects x29 to always be a frame pointer. - build/macos: force libSystem symbols instead of compiler-rt - global: add InitOpts.tool so that ghostty-gen/bench can parse their own actions in `+action` - quirks: provide our own vectorized memset. see the comment for more details why. - synthetic: fix UB by accessing global.io before it was initialized - terminal/hash_map: force inline for unique repr types. Zig 0.15 inlined and 0.16 doesn't, measured a huge slowdown in hyperlink benchmarks. - terminal: add explicit `@Vector` usage for storing a run of identical cells as well as for scanning printable cells. This auto-vectorized in Zig 0.15 but not in Zig 0.16. This produces the same assembly. - unicode: properties and LUT need power-of-two backing integer to avoid bad LLVM codegen
This commit is contained in:
@@ -9,6 +9,18 @@ pub const index_of = @import("index_of.zig");
|
||||
pub const vt = @import("vt.zig");
|
||||
pub const codepointWidth = codepoint_width.codepointWidth;
|
||||
|
||||
/// The number of vector lanes to use for manually vectorized hot
|
||||
/// loops operating on elements of type T, or null if the target has
|
||||
/// no usable SIMD support and a plain scalar loop should be used
|
||||
/// instead (e.g. wasm32 without simd128).
|
||||
///
|
||||
/// This is twice the native vector width so that each iteration works
|
||||
/// two vector registers, giving better instruction-level parallelism.
|
||||
pub fn lanes(comptime T: type) ?comptime_int {
|
||||
const native = std.simd.suggestVectorLength(T) orelse return null;
|
||||
return native * 2;
|
||||
}
|
||||
|
||||
test {
|
||||
@import("std").testing.refAllDecls(@This());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user