authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-15 16:09:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-16 10:27:39-07:00
log15f45e89a751bd2d2dbbbf8d50138f91ce7bf754
treecd1dcdab00ea5ac543452a93cf6992d0df43b321
parentde9c0e45800466e12d68c11f001cea447727fb5a

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.

4 files changed, 19 insertions(+), 18 deletions(-)

lib/std/builtin/assembly.zig+1
......@@ -4,6 +4,7 @@ pub const Clobbers = switch (@import("builtin").cpu.arch) {
44 /// addresses other than those derived from input pointer provenance.
55 memory: bool = false,
66
7 /// Condition codes. Subset of the bits in `eflags` and `rflags`.
78 cc: bool = false,
89 dirflag: bool = false,
910 eflags: bool = false,
lib/std/os/linux/aarch64.zig+9-9
......@@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {
1818 return asm volatile ("svc #0"
1919 : [ret] "={x0}" (-> usize),
2020 : [number] "{x8}" (@intFromEnum(number)),
21 : .{ .memory = true, .cc = true });
21 : .{ .memory = true });
2222}
2323
2424pub fn syscall1(number: SYS, arg1: usize) usize {
......@@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
2626 : [ret] "={x0}" (-> usize),
2727 : [number] "{x8}" (@intFromEnum(number)),
2828 [arg1] "{x0}" (arg1),
29 : .{ .memory = true, .cc = true });
29 : .{ .memory = true });
3030}
3131
3232pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
......@@ -35,7 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
3535 : [number] "{x8}" (@intFromEnum(number)),
3636 [arg1] "{x0}" (arg1),
3737 [arg2] "{x1}" (arg2),
38 : .{ .memory = true, .cc = true });
38 : .{ .memory = true });
3939}
4040
4141pub 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 {
4545 [arg1] "{x0}" (arg1),
4646 [arg2] "{x1}" (arg2),
4747 [arg3] "{x2}" (arg3),
48 : .{ .memory = true, .cc = true });
48 : .{ .memory = true });
4949}
5050
5151pub 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)
5656 [arg2] "{x1}" (arg2),
5757 [arg3] "{x2}" (arg3),
5858 [arg4] "{x3}" (arg4),
59 : .{ .memory = true, .cc = true });
59 : .{ .memory = true });
6060}
6161
6262pub 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,
6868 [arg3] "{x2}" (arg3),
6969 [arg4] "{x3}" (arg4),
7070 [arg5] "{x4}" (arg5),
71 : .{ .memory = true, .cc = true });
71 : .{ .memory = true });
7272}
7373
7474pub fn syscall6(
......@@ -89,7 +89,7 @@ pub fn syscall6(
8989 [arg4] "{x3}" (arg4),
9090 [arg5] "{x4}" (arg5),
9191 [arg6] "{x5}" (arg6),
92 : .{ .memory = true, .cc = true });
92 : .{ .memory = true });
9393}
9494
9595pub fn clone() callconv(.naked) usize {
......@@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
141141 \\ svc #0
142142 :
143143 : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
144 : .{ .memory = true, .cc = true }),
144 : .{ .memory = true }),
145145 else => asm volatile (
146146 \\ svc #0
147147 :
148148 : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
149 : .{ .memory = true, .cc = true }),
149 : .{ .memory = true }),
150150 }
151151}
152152
lib/std/start.zig+1-1
......@@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn {
145145 :
146146 : [number] "{x8}" (93),
147147 [arg1] "{x0}" (code),
148 : .{ .memory = true, .cc = true });
148 : .{ .memory = true });
149149 },
150150 .sparc64 => {
151151 asm volatile ("ta 0x6d"
lib/std/valgrind.zig+8-8
......@@ -17,7 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
1717 : [_] "={r3}" (-> usize),
1818 : [_] "{r4}" (args),
1919 [_] "{r3}" (default),
20 : .{ .cc = true, .memory = true }),
20 : .{ .memory = true }),
2121 .aarch64, .aarch64_be => asm volatile (
2222 \\ ror x12, x12, #3 ; ror x12, x12, #13
2323 \\ ror x12, x12, #51 ; ror x12, x12, #61
......@@ -25,7 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
2525 : [_] "={x3}" (-> usize),
2626 : [_] "{x4}" (args),
2727 [_] "{x3}" (default),
28 : .{ .cc = true, .memory = true }),
28 : .{ .memory = true }),
2929 .mips, .mipsel => asm volatile (
3030 \\ srl $0, $0, 13
3131 \\ srl $0, $0, 29
......@@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
5151 : [_] "={r3}" (-> usize),
5252 : [_] "{r4}" (args),
5353 [_] "{r3}" (default),
54 : .{ .cc = true, .memory = true }),
54 : .{ .memory = true }),
5555 .powerpc64, .powerpc64le => asm volatile (
5656 \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
5757 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51
......@@ -59,7 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
5959 : [_] "={r3}" (-> usize),
6060 : [_] "{r4}" (args),
6161 [_] "{r3}" (default),
62 : .{ .cc = true, .memory = true }),
62 : .{ .memory = true }),
6363 .riscv64 => asm volatile (
6464 \\ .option push
6565 \\ .option norvc
......@@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
7272 : [_] "={a3}" (-> usize),
7373 : [_] "{a4}" (args),
7474 [_] "{a3}" (default),
75 : .{ .cc = true, .memory = true }),
75 : .{ .memory = true }),
7676 .s390x => asm volatile (
7777 \\ lr %%r15, %%r15
7878 \\ lr %%r1, %%r1
......@@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
8282 : [_] "={r3}" (-> usize),
8383 : [_] "{r2}" (args),
8484 [_] "{r3}" (default),
85 : .{ .cc = true, .memory = true }),
85 : .{ .memory = true }),
8686 .x86 => asm volatile (
8787 \\ roll $3, %%edi ; roll $13, %%edi
8888 \\ roll $29, %%edi ; roll $19, %%edi
......@@ -90,7 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
9090 : [_] "={edx}" (-> usize),
9191 : [_] "{eax}" (args),
9292 [_] "{edx}" (default),
93 : .{ .cc = true, .memory = true }),
93 : .{ .memory = true }),
9494 .x86_64 => asm volatile (
9595 \\ rolq $3, %%rdi ; rolq $13, %%rdi
9696 \\ rolq $61, %%rdi ; rolq $51, %%rdi
......@@ -98,7 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
9898 : [_] "={rdx}" (-> usize),
9999 : [_] "{rax}" (args),
100100 [_] "{rdx}" (default),
101 : .{ .cc = true, .memory = true }),
101 : .{ .memory = true }),
102102 else => default,
103103 };
104104}