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) {...@@ -4,6 +4,7 @@ pub const Clobbers = switch (@import("builtin").cpu.arch) {
4 /// addresses other than those derived from input pointer provenance.4 /// addresses other than those derived from input pointer provenance.
5 memory: bool = false,5 memory: bool = false,
66
7 /// Condition codes. Subset of the bits in `eflags` and `rflags`.
7 cc: bool = false,8 cc: bool = false,
8 dirflag: bool = false,9 dirflag: bool = false,
9 eflags: bool = false,10 eflags: bool = false,
lib/std/os/linux/aarch64.zig+9-9
...@@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {...@@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {
18 return asm volatile ("svc #0"18 return asm volatile ("svc #0"
19 : [ret] "={x0}" (-> usize),19 : [ret] "={x0}" (-> usize),
20 : [number] "{x8}" (@intFromEnum(number)),20 : [number] "{x8}" (@intFromEnum(number)),
21 : .{ .memory = true, .cc = true });21 : .{ .memory = true });
22}22}
2323
24pub fn syscall1(number: SYS, arg1: usize) usize {24pub fn syscall1(number: SYS, arg1: usize) usize {
...@@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {...@@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
26 : [ret] "={x0}" (-> usize),26 : [ret] "={x0}" (-> usize),
27 : [number] "{x8}" (@intFromEnum(number)),27 : [number] "{x8}" (@intFromEnum(number)),
28 [arg1] "{x0}" (arg1),28 [arg1] "{x0}" (arg1),
29 : .{ .memory = true, .cc = true });29 : .{ .memory = true });
30}30}
3131
32pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {32pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
...@@ -35,7 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {...@@ -35,7 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
35 : [number] "{x8}" (@intFromEnum(number)),35 : [number] "{x8}" (@intFromEnum(number)),
36 [arg1] "{x0}" (arg1),36 [arg1] "{x0}" (arg1),
37 [arg2] "{x1}" (arg2),37 [arg2] "{x1}" (arg2),
38 : .{ .memory = true, .cc = true });38 : .{ .memory = true });
39}39}
4040
41pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {41pub 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 {...@@ -45,7 +45,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
45 [arg1] "{x0}" (arg1),45 [arg1] "{x0}" (arg1),
46 [arg2] "{x1}" (arg2),46 [arg2] "{x1}" (arg2),
47 [arg3] "{x2}" (arg3),47 [arg3] "{x2}" (arg3),
48 : .{ .memory = true, .cc = true });48 : .{ .memory = true });
49}49}
5050
51pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {51pub 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)...@@ -56,7 +56,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
56 [arg2] "{x1}" (arg2),56 [arg2] "{x1}" (arg2),
57 [arg3] "{x2}" (arg3),57 [arg3] "{x2}" (arg3),
58 [arg4] "{x3}" (arg4),58 [arg4] "{x3}" (arg4),
59 : .{ .memory = true, .cc = true });59 : .{ .memory = true });
60}60}
6161
62pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {62pub 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,...@@ -68,7 +68,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
68 [arg3] "{x2}" (arg3),68 [arg3] "{x2}" (arg3),
69 [arg4] "{x3}" (arg4),69 [arg4] "{x3}" (arg4),
70 [arg5] "{x4}" (arg5),70 [arg5] "{x4}" (arg5),
71 : .{ .memory = true, .cc = true });71 : .{ .memory = true });
72}72}
7373
74pub fn syscall6(74pub fn syscall6(
...@@ -89,7 +89,7 @@ pub fn syscall6(...@@ -89,7 +89,7 @@ pub fn syscall6(
89 [arg4] "{x3}" (arg4),89 [arg4] "{x3}" (arg4),
90 [arg5] "{x4}" (arg5),90 [arg5] "{x4}" (arg5),
91 [arg6] "{x5}" (arg6),91 [arg6] "{x5}" (arg6),
92 : .{ .memory = true, .cc = true });92 : .{ .memory = true });
93}93}
9494
95pub fn clone() callconv(.naked) usize {95pub fn clone() callconv(.naked) usize {
...@@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn {...@@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
141 \\ svc #0141 \\ svc #0
142 :142 :
143 : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),143 : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
144 : .{ .memory = true, .cc = true }),144 : .{ .memory = true }),
145 else => asm volatile (145 else => asm volatile (
146 \\ svc #0146 \\ svc #0
147 :147 :
148 : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),148 : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
149 : .{ .memory = true, .cc = true }),149 : .{ .memory = true }),
150 }150 }
151}151}
152152
lib/std/start.zig+1-1
...@@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn {...@@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn {
145 :145 :
146 : [number] "{x8}" (93),146 : [number] "{x8}" (93),
147 [arg1] "{x0}" (code),147 [arg1] "{x0}" (code),
148 : .{ .memory = true, .cc = true });148 : .{ .memory = true });
149 },149 },
150 .sparc64 => {150 .sparc64 => {
151 asm volatile ("ta 0x6d"151 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:...@@ -17,7 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
17 : [_] "={r3}" (-> usize),17 : [_] "={r3}" (-> usize),
18 : [_] "{r4}" (args),18 : [_] "{r4}" (args),
19 [_] "{r3}" (default),19 [_] "{r3}" (default),
20 : .{ .cc = true, .memory = true }),20 : .{ .memory = true }),
21 .aarch64, .aarch64_be => asm volatile (21 .aarch64, .aarch64_be => asm volatile (
22 \\ ror x12, x12, #3 ; ror x12, x12, #1322 \\ ror x12, x12, #3 ; ror x12, x12, #13
23 \\ ror x12, x12, #51 ; ror x12, x12, #6123 \\ ror x12, x12, #51 ; ror x12, x12, #61
...@@ -25,7 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -25,7 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
25 : [_] "={x3}" (-> usize),25 : [_] "={x3}" (-> usize),
26 : [_] "{x4}" (args),26 : [_] "{x4}" (args),
27 [_] "{x3}" (default),27 [_] "{x3}" (default),
28 : .{ .cc = true, .memory = true }),28 : .{ .memory = true }),
29 .mips, .mipsel => asm volatile (29 .mips, .mipsel => asm volatile (
30 \\ srl $0, $0, 1330 \\ srl $0, $0, 13
31 \\ srl $0, $0, 2931 \\ srl $0, $0, 29
...@@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
51 : [_] "={r3}" (-> usize),51 : [_] "={r3}" (-> usize),
52 : [_] "{r4}" (args),52 : [_] "{r4}" (args),
53 [_] "{r3}" (default),53 [_] "{r3}" (default),
54 : .{ .cc = true, .memory = true }),54 : .{ .memory = true }),
55 .powerpc64, .powerpc64le => asm volatile (55 .powerpc64, .powerpc64le => asm volatile (
56 \\ rotldi 0, 0, 3 ; rotldi 0, 0, 1356 \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
57 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 5157 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51
...@@ -59,7 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -59,7 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
59 : [_] "={r3}" (-> usize),59 : [_] "={r3}" (-> usize),
60 : [_] "{r4}" (args),60 : [_] "{r4}" (args),
61 [_] "{r3}" (default),61 [_] "{r3}" (default),
62 : .{ .cc = true, .memory = true }),62 : .{ .memory = true }),
63 .riscv64 => asm volatile (63 .riscv64 => asm volatile (
64 \\ .option push64 \\ .option push
65 \\ .option norvc65 \\ .option norvc
...@@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
72 : [_] "={a3}" (-> usize),72 : [_] "={a3}" (-> usize),
73 : [_] "{a4}" (args),73 : [_] "{a4}" (args),
74 [_] "{a3}" (default),74 [_] "{a3}" (default),
75 : .{ .cc = true, .memory = true }),75 : .{ .memory = true }),
76 .s390x => asm volatile (76 .s390x => asm volatile (
77 \\ lr %%r15, %%r1577 \\ lr %%r15, %%r15
78 \\ lr %%r1, %%r178 \\ lr %%r1, %%r1
...@@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
82 : [_] "={r3}" (-> usize),82 : [_] "={r3}" (-> usize),
83 : [_] "{r2}" (args),83 : [_] "{r2}" (args),
84 [_] "{r3}" (default),84 [_] "{r3}" (default),
85 : .{ .cc = true, .memory = true }),85 : .{ .memory = true }),
86 .x86 => asm volatile (86 .x86 => asm volatile (
87 \\ roll $3, %%edi ; roll $13, %%edi87 \\ roll $3, %%edi ; roll $13, %%edi
88 \\ roll $29, %%edi ; roll $19, %%edi88 \\ roll $29, %%edi ; roll $19, %%edi
...@@ -90,7 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -90,7 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
90 : [_] "={edx}" (-> usize),90 : [_] "={edx}" (-> usize),
91 : [_] "{eax}" (args),91 : [_] "{eax}" (args),
92 [_] "{edx}" (default),92 [_] "{edx}" (default),
93 : .{ .cc = true, .memory = true }),93 : .{ .memory = true }),
94 .x86_64 => asm volatile (94 .x86_64 => asm volatile (
95 \\ rolq $3, %%rdi ; rolq $13, %%rdi95 \\ rolq $3, %%rdi ; rolq $13, %%rdi
96 \\ rolq $61, %%rdi ; rolq $51, %%rdi96 \\ rolq $61, %%rdi ; rolq $51, %%rdi
...@@ -98,7 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:...@@ -98,7 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
98 : [_] "={rdx}" (-> usize),98 : [_] "={rdx}" (-> usize),
99 : [_] "{rax}" (args),99 : [_] "{rax}" (args),
100 [_] "{rdx}" (default),100 [_] "{rdx}" (default),
101 : .{ .cc = true, .memory = true }),101 : .{ .memory = true }),
102 else => default,102 else => default,
103 };103 };
104}104}