authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-15 21:29:52-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-15 21:29:52-04:00
log64f4ef75566ef34289e9e6a455b0173e4e58df47
tree95a63e5af0e3083bb6ee47156429cc461846c960
parent5135238f86c3fd3de423f5d04fe22717f2eb59ae

update ZIR test cases


1 files changed, 61 insertions(+), 38 deletions(-)

test/stage2/zir.zig+61-38
...@@ -12,10 +12,11 @@ pub fn addCases(ctx: *TestContext) void {...@@ -12,10 +12,11 @@ pub fn addCases(ctx: *TestContext) void {
12 \\12 \\
13 \\@entry = fn(@fnty, {13 \\@entry = fn(@fnty, {
14 \\ %a = str("\x32\x08\x01\x0a")14 \\ %a = str("\x32\x08\x01\x0a")
15 \\ %eptr0 = elemptr(%a, @0)15 \\ %aref = ref(%a)
16 \\ %eptr1 = elemptr(%a, @1)16 \\ %eptr0 = elemptr(%aref, @0)
17 \\ %eptr2 = elemptr(%a, @2)17 \\ %eptr1 = elemptr(%aref, @1)
18 \\ %eptr3 = elemptr(%a, @3)18 \\ %eptr2 = elemptr(%aref, @2)
19 \\ %eptr3 = elemptr(%aref, @3)
19 \\ %v0 = deref(%eptr0)20 \\ %v0 = deref(%eptr0)
20 \\ %v1 = deref(%eptr1)21 \\ %v1 = deref(%eptr1)
21 \\ %v2 = deref(%eptr2)22 \\ %v2 = deref(%eptr2)
...@@ -34,7 +35,8 @@ pub fn addCases(ctx: *TestContext) void {...@@ -34,7 +35,8 @@ pub fn addCases(ctx: *TestContext) void {
34 \\})35 \\})
35 \\36 \\
36 \\@9 = str("entry")37 \\@9 = str("entry")
37 \\@10 = export(@9, @entry)38 \\@10 = ref(@9)
39 \\@11 = export(@10, @entry)
38 ,40 ,
39 \\@0 = primitive(void)41 \\@0 = primitive(void)
40 \\@1 = fntype([], @0, cc=C)42 \\@1 = fntype([], @0, cc=C)
...@@ -42,7 +44,8 @@ pub fn addCases(ctx: *TestContext) void {...@@ -42,7 +44,8 @@ pub fn addCases(ctx: *TestContext) void {
42 \\ %0 = return()44 \\ %0 = return()
43 \\})45 \\})
44 \\@3 = str("entry")46 \\@3 = str("entry")
45 \\@4 = export(@3, @2)47 \\@4 = ref(@3)
48 \\@5 = export(@4, @2)
46 \\49 \\
47 );50 );
4851
...@@ -55,51 +58,71 @@ pub fn addCases(ctx: *TestContext) void {...@@ -55,51 +58,71 @@ pub fn addCases(ctx: *TestContext) void {
55 }58 }
5659
57 ctx.addZIRCompareOutput("hello world ZIR",60 ctx.addZIRCompareOutput("hello world ZIR",
58 \\@0 = str("Hello, world!\n")61 \\@noreturn = primitive(noreturn)
59 \\@1 = primitive(noreturn)62 \\@void = primitive(void)
60 \\@2 = primitive(usize)63 \\@usize = primitive(usize)
61 \\@3 = fntype([], @1, cc=Naked)64 \\@0 = int(0)
62 \\@4 = int(0)65 \\@1 = int(1)
63 \\@5 = int(1)66 \\@2 = int(2)
64 \\@6 = int(231)67 \\@3 = int(3)
65 \\@7 = str("len")68 \\
69 \\@syscall_array = str("syscall")
70 \\@sysoutreg_array = str("={rax}")
71 \\@rax_array = str("{rax}")
72 \\@rdi_array = str("{rdi}")
73 \\@rcx_array = str("rcx")
74 \\@r11_array = str("r11")
75 \\@rdx_array = str("{rdx}")
76 \\@rsi_array = str("{rsi}")
77 \\@memory_array = str("memory")
78 \\@len_array = str("len")
66 \\79 \\
67 \\@8 = fn(@3, {80 \\@msg = str("Hello, world!\n")
68 \\ %0 = as(@2, @5) ; SYS_write81 \\
69 \\ %1 = as(@2, @5) ; STDOUT_FILENO82 \\@start_fnty = fntype([], @noreturn, cc=Naked)
70 \\ %2 = ptrtoint(@0) ; msg ptr83 \\@start = fn(@start_fnty, {
71 \\ %3 = fieldptr(@0, @7) ; msg len ptr84 \\ %SYS_exit_group = int(231)
72 \\ %4 = deref(%3) ; msg len85 \\ %exit_code = as(@usize, @0)
73 \\ %sysoutreg = str("={rax}")86 \\
74 \\ %rax = str("{rax}")87 \\ %syscall = ref(@syscall_array)
75 \\ %rdi = str("{rdi}")88 \\ %sysoutreg = ref(@sysoutreg_array)
76 \\ %rsi = str("{rsi}")89 \\ %rax = ref(@rax_array)
77 \\ %rdx = str("{rdx}")90 \\ %rdi = ref(@rdi_array)
78 \\ %rcx = str("rcx")91 \\ %rcx = ref(@rcx_array)
79 \\ %r11 = str("r11")92 \\ %rdx = ref(@rdx_array)
80 \\ %memory = str("memory")93 \\ %rsi = ref(@rsi_array)
81 \\ %syscall = str("syscall")94 \\ %r11 = ref(@r11_array)
82 \\ %5 = asm(%syscall, @2,95 \\ %memory = ref(@memory_array)
96 \\
97 \\ %SYS_write = as(@usize, @1)
98 \\ %STDOUT_FILENO = as(@usize, @1)
99 \\
100 \\ %msg_ptr = ref(@msg)
101 \\ %msg_addr = ptrtoint(%msg_ptr)
102 \\
103 \\ %len_name = ref(@len_array)
104 \\ %msg_len_ptr = fieldptr(%msg_ptr, %len_name)
105 \\ %msg_len = deref(%msg_len_ptr)
106 \\ %rc_write = asm(%syscall, @usize,
83 \\ volatile=1,107 \\ volatile=1,
84 \\ output=%sysoutreg,108 \\ output=%sysoutreg,
85 \\ inputs=[%rax, %rdi, %rsi, %rdx],109 \\ inputs=[%rax, %rdi, %rsi, %rdx],
86 \\ clobbers=[%rcx, %r11, %memory],110 \\ clobbers=[%rcx, %r11, %memory],
87 \\ args=[%0, %1, %2, %4])111 \\ args=[%SYS_write, %STDOUT_FILENO, %msg_addr, %msg_len])
88 \\112 \\
89 \\ %6 = as(@2, @6) ;SYS_exit_group113 \\ %rc_exit = asm(%syscall, @usize,
90 \\ %7 = as(@2, @4) ;exit code
91 \\ %8 = asm(%syscall, @2,
92 \\ volatile=1,114 \\ volatile=1,
93 \\ output=%sysoutreg,115 \\ output=%sysoutreg,
94 \\ inputs=[%rax, %rdi],116 \\ inputs=[%rax, %rdi],
95 \\ clobbers=[%rcx, %r11, %memory],117 \\ clobbers=[%rcx, %r11, %memory],
96 \\ args=[%6, %7])118 \\ args=[%SYS_exit_group, %exit_code])
97 \\119 \\
98 \\ %9 = unreachable()120 \\ %99 = unreachable()
99 \\})121 \\});
100 \\122 \\
101 \\@9 = str("_start")123 \\@9 = str("_start")
102 \\@10 = export(@9, @8)124 \\@10 = ref(@9)
125 \\@11 = export(@10, @start)
103 ,126 ,
104 \\Hello, world!127 \\Hello, world!
105 \\128 \\