zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 15f45e89a751bd2d2dbbbf8d50138f91ce7bf754 (tree)
parent de9c0e45800466e12d68c11f001cea447727fb5a
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Tue, 15 Jul 2025 16:09:47 -0700

remove condition codes

LLVM always assumes these are on. Zig backends do not observe them.

If Zig backends want to start using them, they can be introduced, one
arch at a time, with proper documentation.

Diffstat:
Mlib/std/builtin/assembly.zig | 1+
Mlib/std/os/linux/aarch64.zig | 18+++++++++---------
Mlib/std/start.zig | 2+-
Mlib/std/valgrind.zig | 16++++++++--------
4 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/lib/std/builtin/assembly.zig b/lib/std/builtin/assembly.zig @@ -4,6 +4,7 @@ pub const Clobbers = switch (@import("builtin").cpu.arch) { /// addresses other than those derived from input pointer provenance. memory: bool = false, + /// Condition codes. Subset of the bits in `eflags` and `rflags`. cc: bool = false, dirflag: bool = false, eflags: bool = false, diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig @@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("svc #0" : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -35,7 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -45,7 +45,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -56,7 +56,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -68,7 +68,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn syscall6( @@ -89,7 +89,7 @@ pub fn syscall6( [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), [arg6] "{x5}" (arg6), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ svc #0 : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), - : .{ .memory = true, .cc = true }), + : .{ .memory = true }), else => asm volatile ( \\ svc #0 : : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), - : .{ .memory = true, .cc = true }), + : .{ .memory = true }), } } diff --git a/lib/std/start.zig b/lib/std/start.zig @@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn { : : [number] "{x8}" (93), [arg1] "{x0}" (code), - : .{ .memory = true, .cc = true }); + : .{ .memory = true }); }, .sparc64 => { asm volatile ("ta 0x6d" diff --git a/lib/std/valgrind.zig b/lib/std/valgrind.zig @@ -17,7 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .aarch64, .aarch64_be => asm volatile ( \\ ror x12, x12, #3 ; ror x12, x12, #13 \\ ror x12, x12, #51 ; ror x12, x12, #61 @@ -25,7 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={x3}" (-> usize), : [_] "{x4}" (args), [_] "{x3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .mips, .mipsel => asm volatile ( \\ srl $0, $0, 13 \\ srl $0, $0, 29 @@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .powerpc64, .powerpc64le => asm volatile ( \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51 @@ -59,7 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .riscv64 => asm volatile ( \\ .option push \\ .option norvc @@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={a3}" (-> usize), : [_] "{a4}" (args), [_] "{a3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .s390x => asm volatile ( \\ lr %%r15, %%r15 \\ lr %%r1, %%r1 @@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r2}" (args), [_] "{r3}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .x86 => asm volatile ( \\ roll $3, %%edi ; roll $13, %%edi \\ roll $29, %%edi ; roll $19, %%edi @@ -90,7 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={edx}" (-> usize), : [_] "{eax}" (args), [_] "{edx}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), .x86_64 => asm volatile ( \\ rolq $3, %%rdi ; rolq $13, %%rdi \\ rolq $61, %%rdi ; rolq $51, %%rdi @@ -98,7 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={rdx}" (-> usize), : [_] "{rax}" (args), [_] "{rdx}" (default), - : .{ .cc = true, .memory = true }), + : .{ .memory = true }), else => default, }; }