Commit 15f45e89a7

Andrew Kelley <andrew@ziglang.org>
2025-07-16 01:09:47
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.
1 parent de9c0e4
Changed files (4)
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,
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 }),
     }
 }
 
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"
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,
     };
 }