aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-07-15 16:09:47 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-07-16 10:27:39 -0700
commit15f45e89a751bd2d2dbbbf8d50138f91ce7bf754 (patch)
treecd1dcdab00ea5ac543452a93cf6992d0df43b321 /lib
parentde9c0e45800466e12d68c11f001cea447727fb5a (diff)
downloadzig-15f45e89a751bd2d2dbbbf8d50138f91ce7bf754.tar.gz
zig-15f45e89a751bd2d2dbbbf8d50138f91ce7bf754.zip
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 (limited to 'lib')
-rw-r--r--lib/std/builtin/assembly.zig1
-rw-r--r--lib/std/os/linux/aarch64.zig18
-rw-r--r--lib/std/start.zig2
-rw-r--r--lib/std/valgrind.zig16
4 files changed, 19 insertions, 18 deletions
diff --git a/lib/std/builtin/assembly.zig b/lib/std/builtin/assembly.zig
index b614017209..c368ae45d5 100644
--- 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
index c0d1aabd08..2565e8984c 100644
--- 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
index 9581675750..22ccda1e40 100644
--- 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
index 4dd8dfac74..f12e0a9a7f 100644
--- 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,
};
}