Commit 29defd705d
Changed files (6)
std
special
src/codegen.cpp
@@ -2088,10 +2088,9 @@ static LLVMValueRef ir_render_asm(CodeGen *g, IrExecutable *executable, IrInstru
}
LLVMTypeRef function_type = LLVMFunctionType(ret_type, param_types, (unsigned)input_and_output_count, false);
- bool is_x86 = (g->zig_target.arch.arch == ZigLLVM_x86 || g->zig_target.arch.arch == ZigLLVM_x86_64);
bool is_volatile = asm_expr->is_volatile || (asm_expr->output_list.length == 0);
- LLVMValueRef asm_fn = ZigLLVMConstInlineAsm(function_type, buf_ptr(&llvm_template),
- buf_ptr(&constraint_buf), is_volatile, false, is_x86);
+ LLVMValueRef asm_fn = LLVMConstInlineAsm(function_type, buf_ptr(&llvm_template),
+ buf_ptr(&constraint_buf), is_volatile, false);
return LLVMBuildCall(g->builder, asm_fn, param_values, (unsigned)input_and_output_count, "");
}
@@ -4805,9 +4804,6 @@ static void gen_global_asm(CodeGen *g) {
if ((err = os_fetch_file_path(asm_file, &contents))) {
zig_panic("Unable to read %s: %s", buf_ptr(asm_file), err_str(err));
}
- if (g->zig_target.arch.arch == ZigLLVM_x86 || g->zig_target.arch.arch == ZigLLVM_x86_64) {
- buf_append_str(&g->global_asm, ".intel_syntax noprefix\n");
- }
buf_append_buf(&g->global_asm, &contents);
}
}
src/zig_llvm.cpp
@@ -186,18 +186,6 @@ LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *A
return wrap(unwrap(B)->Insert(call_inst));
}
-LLVMValueRef ZigLLVMConstInlineAsm(LLVMTypeRef Ty, const char *AsmString,
- const char *Constraints, bool HasSideEffects, bool IsAlignStack, bool is_x86)
-{
- if (is_x86) {
- return wrap(InlineAsm::get(dyn_cast<FunctionType>(unwrap(Ty)), AsmString,
- Constraints, HasSideEffects, IsAlignStack, InlineAsm::AD_Intel));
- } else {
- return wrap(InlineAsm::get(dyn_cast<FunctionType>(unwrap(Ty)), AsmString,
- Constraints, HasSideEffects, IsAlignStack));
- }
-}
-
void ZigLLVMFnSetSubprogram(LLVMValueRef fn, ZigLLVMDISubprogram *subprogram) {
assert( isa<Function>(unwrap(fn)) );
Function *unwrapped_function = reinterpret_cast<Function*>(unwrap(fn));
src/zig_llvm.hpp
@@ -40,9 +40,6 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args,
unsigned NumArgs, unsigned CC, bool always_inline, const char *Name);
-LLVMValueRef ZigLLVMConstInlineAsm(LLVMTypeRef Ty, const char *AsmString,
- const char *Constraints, bool HasSideEffects, bool IsAlignStack, bool is_x86);
-
LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
LLVMAtomicOrdering failure_ordering);
std/os/linux_i386.zig
@@ -420,20 +420,20 @@ pub const F_GETOWN_EX = 16;
pub const F_GETOWNER_UIDS = 17;
pub inline fn syscall0(number: usize) -> usize {
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number))
}
pub inline fn syscall1(number: usize, arg1: usize) -> usize {
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1))
}
pub inline fn syscall2(number: usize, arg1: usize, arg2: usize) -> usize {
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1),
@@ -441,7 +441,7 @@ pub inline fn syscall2(number: usize, arg1: usize, arg2: usize) -> usize {
}
pub inline fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) -> usize {
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1),
@@ -450,7 +450,7 @@ pub inline fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) ->
}
pub inline fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize) -> usize {
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1),
@@ -462,7 +462,7 @@ pub inline fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg
pub inline fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize,
arg4: usize, arg5: usize) -> usize
{
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1),
@@ -475,7 +475,7 @@ pub inline fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize,
pub inline fn syscall6(number: usize, arg1: usize, arg2: usize, arg3: usize,
arg4: usize, arg5: usize, arg6: usize) -> usize
{
- asm volatile ("int 80h"
+ asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize)
: [number] "{eax}" (number),
[arg1] "{ebx}" (arg1),
std/special/bootstrap.zig
@@ -19,10 +19,10 @@ export nakedcc fn _start() -> noreturn {
switch (@compileVar("arch")) {
Arch.x86_64 => {
- argc_ptr = asm("lea %[argc], [rsp]": [argc] "=r" (-> &usize));
+ argc_ptr = asm("lea (%%rsp), %[argc]": [argc] "=r" (-> &usize));
},
Arch.i386 => {
- argc_ptr = asm("lea %[argc], [esp]": [argc] "=r" (-> &usize));
+ argc_ptr = asm("lea (%%esp), %[argc]": [argc] "=r" (-> &usize));
},
else => @compileError("unsupported arch"),
}
test/assemble_and_link.zig
@@ -7,18 +7,17 @@ pub fn addCases(cases: &tests.CompareOutputContext) {
\\.globl _start
\\
\\_start:
- \\ mov rax, 1
- \\ mov rdi, 1
- \\ lea rsi, msg
- \\ mov rdx, 14
+ \\ mov $1, %rax
+ \\ mov $1, %rdi
+ \\ mov $msg, %rsi
+ \\ mov $14, %rdx
\\ syscall
\\
- \\ mov rax, 60
- \\ mov rdi, 0
+ \\ mov $60, %rax
+ \\ mov $0, %rdi
\\ syscall
\\
\\.data
- \\
\\msg:
\\ .ascii "Hello, world!\n"
, "Hello, world!\n");