diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-05-15 21:29:52 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-05-15 21:29:52 -0400 |
| commit | 64f4ef75566ef34289e9e6a455b0173e4e58df47 (patch) | |
| tree | 95a63e5af0e3083bb6ee47156429cc461846c960 /test | |
| parent | 5135238f86c3fd3de423f5d04fe22717f2eb59ae (diff) | |
| download | zig-64f4ef75566ef34289e9e6a455b0173e4e58df47.tar.gz zig-64f4ef75566ef34289e9e6a455b0173e4e58df47.zip | |
update ZIR test cases
Diffstat (limited to 'test')
| -rw-r--r-- | test/stage2/zir.zig | 99 |
1 files changed, 61 insertions, 38 deletions
diff --git a/test/stage2/zir.zig b/test/stage2/zir.zig index 9a65e9ab96..78b6d3c1b2 100644 --- a/test/stage2/zir.zig +++ b/test/stage2/zir.zig @@ -12,10 +12,11 @@ pub fn addCases(ctx: *TestContext) void { \\ \\@entry = fn(@fnty, { \\ %a = str("\x32\x08\x01\x0a") - \\ %eptr0 = elemptr(%a, @0) - \\ %eptr1 = elemptr(%a, @1) - \\ %eptr2 = elemptr(%a, @2) - \\ %eptr3 = elemptr(%a, @3) + \\ %aref = ref(%a) + \\ %eptr0 = elemptr(%aref, @0) + \\ %eptr1 = elemptr(%aref, @1) + \\ %eptr2 = elemptr(%aref, @2) + \\ %eptr3 = elemptr(%aref, @3) \\ %v0 = deref(%eptr0) \\ %v1 = deref(%eptr1) \\ %v2 = deref(%eptr2) @@ -34,7 +35,8 @@ pub fn addCases(ctx: *TestContext) void { \\}) \\ \\@9 = str("entry") - \\@10 = export(@9, @entry) + \\@10 = ref(@9) + \\@11 = export(@10, @entry) , \\@0 = primitive(void) \\@1 = fntype([], @0, cc=C) @@ -42,7 +44,8 @@ pub fn addCases(ctx: *TestContext) void { \\ %0 = return() \\}) \\@3 = str("entry") - \\@4 = export(@3, @2) + \\@4 = ref(@3) + \\@5 = export(@4, @2) \\ ); @@ -55,51 +58,71 @@ pub fn addCases(ctx: *TestContext) void { } ctx.addZIRCompareOutput("hello world ZIR", - \\@0 = str("Hello, world!\n") - \\@1 = primitive(noreturn) - \\@2 = primitive(usize) - \\@3 = fntype([], @1, cc=Naked) - \\@4 = int(0) - \\@5 = int(1) - \\@6 = int(231) - \\@7 = str("len") + \\@noreturn = primitive(noreturn) + \\@void = primitive(void) + \\@usize = primitive(usize) + \\@0 = int(0) + \\@1 = int(1) + \\@2 = int(2) + \\@3 = int(3) + \\ + \\@syscall_array = str("syscall") + \\@sysoutreg_array = str("={rax}") + \\@rax_array = str("{rax}") + \\@rdi_array = str("{rdi}") + \\@rcx_array = str("rcx") + \\@r11_array = str("r11") + \\@rdx_array = str("{rdx}") + \\@rsi_array = str("{rsi}") + \\@memory_array = str("memory") + \\@len_array = str("len") \\ - \\@8 = fn(@3, { - \\ %0 = as(@2, @5) ; SYS_write - \\ %1 = as(@2, @5) ; STDOUT_FILENO - \\ %2 = ptrtoint(@0) ; msg ptr - \\ %3 = fieldptr(@0, @7) ; msg len ptr - \\ %4 = deref(%3) ; msg len - \\ %sysoutreg = str("={rax}") - \\ %rax = str("{rax}") - \\ %rdi = str("{rdi}") - \\ %rsi = str("{rsi}") - \\ %rdx = str("{rdx}") - \\ %rcx = str("rcx") - \\ %r11 = str("r11") - \\ %memory = str("memory") - \\ %syscall = str("syscall") - \\ %5 = asm(%syscall, @2, + \\@msg = str("Hello, world!\n") + \\ + \\@start_fnty = fntype([], @noreturn, cc=Naked) + \\@start = fn(@start_fnty, { + \\ %SYS_exit_group = int(231) + \\ %exit_code = as(@usize, @0) + \\ + \\ %syscall = ref(@syscall_array) + \\ %sysoutreg = ref(@sysoutreg_array) + \\ %rax = ref(@rax_array) + \\ %rdi = ref(@rdi_array) + \\ %rcx = ref(@rcx_array) + \\ %rdx = ref(@rdx_array) + \\ %rsi = ref(@rsi_array) + \\ %r11 = ref(@r11_array) + \\ %memory = ref(@memory_array) + \\ + \\ %SYS_write = as(@usize, @1) + \\ %STDOUT_FILENO = as(@usize, @1) + \\ + \\ %msg_ptr = ref(@msg) + \\ %msg_addr = ptrtoint(%msg_ptr) + \\ + \\ %len_name = ref(@len_array) + \\ %msg_len_ptr = fieldptr(%msg_ptr, %len_name) + \\ %msg_len = deref(%msg_len_ptr) + \\ %rc_write = asm(%syscall, @usize, \\ volatile=1, \\ output=%sysoutreg, \\ inputs=[%rax, %rdi, %rsi, %rdx], \\ clobbers=[%rcx, %r11, %memory], - \\ args=[%0, %1, %2, %4]) + \\ args=[%SYS_write, %STDOUT_FILENO, %msg_addr, %msg_len]) \\ - \\ %6 = as(@2, @6) ;SYS_exit_group - \\ %7 = as(@2, @4) ;exit code - \\ %8 = asm(%syscall, @2, + \\ %rc_exit = asm(%syscall, @usize, \\ volatile=1, \\ output=%sysoutreg, \\ inputs=[%rax, %rdi], \\ clobbers=[%rcx, %r11, %memory], - \\ args=[%6, %7]) + \\ args=[%SYS_exit_group, %exit_code]) \\ - \\ %9 = unreachable() - \\}) + \\ %99 = unreachable() + \\}); \\ \\@9 = str("_start") - \\@10 = export(@9, @8) + \\@10 = ref(@9) + \\@11 = export(@10, @start) , \\Hello, world! \\ |
