mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
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.
This commit is contained in:
parent
de9c0e4580
commit
15f45e89a7
@ -4,6 +4,7 @@ pub const Clobbers = switch (@import("builtin").cpu.arch) {
|
|||||||
/// addresses other than those derived from input pointer provenance.
|
/// addresses other than those derived from input pointer provenance.
|
||||||
memory: bool = false,
|
memory: bool = false,
|
||||||
|
|
||||||
|
/// Condition codes. Subset of the bits in `eflags` and `rflags`.
|
||||||
cc: bool = false,
|
cc: bool = false,
|
||||||
dirflag: bool = false,
|
dirflag: bool = false,
|
||||||
eflags: bool = false,
|
eflags: bool = false,
|
||||||
|
|||||||
@ -18,7 +18,7 @@ pub fn syscall0(number: SYS) usize {
|
|||||||
return asm volatile ("svc #0"
|
return asm volatile ("svc #0"
|
||||||
: [ret] "={x0}" (-> usize),
|
: [ret] "={x0}" (-> usize),
|
||||||
: [number] "{x8}" (@intFromEnum(number)),
|
: [number] "{x8}" (@intFromEnum(number)),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn syscall1(number: SYS, arg1: usize) usize {
|
pub fn syscall1(number: SYS, arg1: usize) usize {
|
||||||
@ -26,7 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
|
|||||||
: [ret] "={x0}" (-> usize),
|
: [ret] "={x0}" (-> usize),
|
||||||
: [number] "{x8}" (@intFromEnum(number)),
|
: [number] "{x8}" (@intFromEnum(number)),
|
||||||
[arg1] "{x0}" (arg1),
|
[arg1] "{x0}" (arg1),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
|
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)),
|
: [number] "{x8}" (@intFromEnum(number)),
|
||||||
[arg1] "{x0}" (arg1),
|
[arg1] "{x0}" (arg1),
|
||||||
[arg2] "{x1}" (arg2),
|
[arg2] "{x1}" (arg2),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
|
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),
|
[arg1] "{x0}" (arg1),
|
||||||
[arg2] "{x1}" (arg2),
|
[arg2] "{x1}" (arg2),
|
||||||
[arg3] "{x2}" (arg3),
|
[arg3] "{x2}" (arg3),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
|
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),
|
[arg2] "{x1}" (arg2),
|
||||||
[arg3] "{x2}" (arg3),
|
[arg3] "{x2}" (arg3),
|
||||||
[arg4] "{x3}" (arg4),
|
[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 {
|
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),
|
[arg3] "{x2}" (arg3),
|
||||||
[arg4] "{x3}" (arg4),
|
[arg4] "{x3}" (arg4),
|
||||||
[arg5] "{x4}" (arg5),
|
[arg5] "{x4}" (arg5),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn syscall6(
|
pub fn syscall6(
|
||||||
@ -89,7 +89,7 @@ pub fn syscall6(
|
|||||||
[arg4] "{x3}" (arg4),
|
[arg4] "{x3}" (arg4),
|
||||||
[arg5] "{x4}" (arg5),
|
[arg5] "{x4}" (arg5),
|
||||||
[arg6] "{x5}" (arg6),
|
[arg6] "{x5}" (arg6),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clone() callconv(.naked) usize {
|
pub fn clone() callconv(.naked) usize {
|
||||||
@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
|
|||||||
\\ svc #0
|
\\ svc #0
|
||||||
:
|
:
|
||||||
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
|
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
|
||||||
: .{ .memory = true, .cc = true }),
|
: .{ .memory = true }),
|
||||||
else => asm volatile (
|
else => asm volatile (
|
||||||
\\ svc #0
|
\\ svc #0
|
||||||
:
|
:
|
||||||
: [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
|
: [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
|
||||||
: .{ .memory = true, .cc = true }),
|
: .{ .memory = true }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -145,7 +145,7 @@ fn exit2(code: usize) noreturn {
|
|||||||
:
|
:
|
||||||
: [number] "{x8}" (93),
|
: [number] "{x8}" (93),
|
||||||
[arg1] "{x0}" (code),
|
[arg1] "{x0}" (code),
|
||||||
: .{ .memory = true, .cc = true });
|
: .{ .memory = true });
|
||||||
},
|
},
|
||||||
.sparc64 => {
|
.sparc64 => {
|
||||||
asm volatile ("ta 0x6d"
|
asm volatile ("ta 0x6d"
|
||||||
|
|||||||
@ -17,7 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
|
|||||||
: [_] "={r3}" (-> usize),
|
: [_] "={r3}" (-> usize),
|
||||||
: [_] "{r4}" (args),
|
: [_] "{r4}" (args),
|
||||||
[_] "{r3}" (default),
|
[_] "{r3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.aarch64, .aarch64_be => asm volatile (
|
.aarch64, .aarch64_be => asm volatile (
|
||||||
\\ ror x12, x12, #3 ; ror x12, x12, #13
|
\\ ror x12, x12, #3 ; ror x12, x12, #13
|
||||||
\\ ror x12, x12, #51 ; ror x12, x12, #61
|
\\ 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),
|
: [_] "={x3}" (-> usize),
|
||||||
: [_] "{x4}" (args),
|
: [_] "{x4}" (args),
|
||||||
[_] "{x3}" (default),
|
[_] "{x3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.mips, .mipsel => asm volatile (
|
.mips, .mipsel => asm volatile (
|
||||||
\\ srl $0, $0, 13
|
\\ srl $0, $0, 13
|
||||||
\\ srl $0, $0, 29
|
\\ srl $0, $0, 29
|
||||||
@ -51,7 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
|
|||||||
: [_] "={r3}" (-> usize),
|
: [_] "={r3}" (-> usize),
|
||||||
: [_] "{r4}" (args),
|
: [_] "{r4}" (args),
|
||||||
[_] "{r3}" (default),
|
[_] "{r3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.powerpc64, .powerpc64le => asm volatile (
|
.powerpc64, .powerpc64le => asm volatile (
|
||||||
\\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
|
\\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
|
||||||
\\ rotldi 0, 0, 61 ; rotldi 0, 0, 51
|
\\ 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),
|
: [_] "={r3}" (-> usize),
|
||||||
: [_] "{r4}" (args),
|
: [_] "{r4}" (args),
|
||||||
[_] "{r3}" (default),
|
[_] "{r3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.riscv64 => asm volatile (
|
.riscv64 => asm volatile (
|
||||||
\\ .option push
|
\\ .option push
|
||||||
\\ .option norvc
|
\\ .option norvc
|
||||||
@ -72,7 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
|
|||||||
: [_] "={a3}" (-> usize),
|
: [_] "={a3}" (-> usize),
|
||||||
: [_] "{a4}" (args),
|
: [_] "{a4}" (args),
|
||||||
[_] "{a3}" (default),
|
[_] "{a3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.s390x => asm volatile (
|
.s390x => asm volatile (
|
||||||
\\ lr %%r15, %%r15
|
\\ lr %%r15, %%r15
|
||||||
\\ lr %%r1, %%r1
|
\\ lr %%r1, %%r1
|
||||||
@ -82,7 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
|
|||||||
: [_] "={r3}" (-> usize),
|
: [_] "={r3}" (-> usize),
|
||||||
: [_] "{r2}" (args),
|
: [_] "{r2}" (args),
|
||||||
[_] "{r3}" (default),
|
[_] "{r3}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.x86 => asm volatile (
|
.x86 => asm volatile (
|
||||||
\\ roll $3, %%edi ; roll $13, %%edi
|
\\ roll $3, %%edi ; roll $13, %%edi
|
||||||
\\ roll $29, %%edi ; roll $19, %%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),
|
: [_] "={edx}" (-> usize),
|
||||||
: [_] "{eax}" (args),
|
: [_] "{eax}" (args),
|
||||||
[_] "{edx}" (default),
|
[_] "{edx}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
.x86_64 => asm volatile (
|
.x86_64 => asm volatile (
|
||||||
\\ rolq $3, %%rdi ; rolq $13, %%rdi
|
\\ rolq $3, %%rdi ; rolq $13, %%rdi
|
||||||
\\ rolq $61, %%rdi ; rolq $51, %%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),
|
: [_] "={rdx}" (-> usize),
|
||||||
: [_] "{rax}" (args),
|
: [_] "{rax}" (args),
|
||||||
[_] "{rdx}" (default),
|
[_] "{rdx}" (default),
|
||||||
: .{ .cc = true, .memory = true }),
|
: .{ .memory = true }),
|
||||||
else => default,
|
else => default,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user