| ... | @@ -65,74 +65,148 @@ pub fn addCases(ctx: *TestContext) void { | ... | @@ -65,74 +65,148 @@ pub fn addCases(ctx: *TestContext) void { |
| 65 | return; | 65 | return; |
| 66 | } | 66 | } |
| 67 | | 67 | |
| 68 | ctx.addZIRCompareOutput("hello world ZIR", | 68 | ctx.addZIRCompareOutput( |
| 69 | \\@noreturn = primitive(noreturn) | 69 | "hello world ZIR, update msg", |
| 70 | \\@void = primitive(void) | 70 | &[_][]const u8{ |
| 71 | \\@usize = primitive(usize) | 71 | \\@noreturn = primitive(noreturn) |
| 72 | \\@0 = int(0) | 72 | \\@void = primitive(void) |
| 73 | \\@1 = int(1) | 73 | \\@usize = primitive(usize) |
| 74 | \\@2 = int(2) | 74 | \\@0 = int(0) |
| 75 | \\@3 = int(3) | 75 | \\@1 = int(1) |
| 76 | \\ | 76 | \\@2 = int(2) |
| 77 | \\@syscall_array = str("syscall") | 77 | \\@3 = int(3) |
| 78 | \\@sysoutreg_array = str("={rax}") | 78 | \\ |
| 79 | \\@rax_array = str("{rax}") | 79 | \\@syscall_array = str("syscall") |
| 80 | \\@rdi_array = str("{rdi}") | 80 | \\@sysoutreg_array = str("={rax}") |
| 81 | \\@rcx_array = str("rcx") | 81 | \\@rax_array = str("{rax}") |
| 82 | \\@r11_array = str("r11") | 82 | \\@rdi_array = str("{rdi}") |
| 83 | \\@rdx_array = str("{rdx}") | 83 | \\@rcx_array = str("rcx") |
| 84 | \\@rsi_array = str("{rsi}") | 84 | \\@r11_array = str("r11") |
| 85 | \\@memory_array = str("memory") | 85 | \\@rdx_array = str("{rdx}") |
| 86 | \\@len_array = str("len") | 86 | \\@rsi_array = str("{rsi}") |
| 87 | \\ | 87 | \\@memory_array = str("memory") |
| 88 | \\@msg = str("Hello, world!\n") | 88 | \\@len_array = str("len") |
| 89 | \\ | 89 | \\ |
| 90 | \\@start_fnty = fntype([], @noreturn, cc=Naked) | 90 | \\@msg = str("Hello, world!\n") |
| 91 | \\@start = fn(@start_fnty, { | 91 | \\ |
| 92 | \\ %SYS_exit_group = int(231) | 92 | \\@start_fnty = fntype([], @noreturn, cc=Naked) |
| 93 | \\ %exit_code = as(@usize, @0) | 93 | \\@start = fn(@start_fnty, { |
| 94 | \\ | 94 | \\ %SYS_exit_group = int(231) |
| 95 | \\ %syscall = ref(@syscall_array) | 95 | \\ %exit_code = as(@usize, @0) |
| 96 | \\ %sysoutreg = ref(@sysoutreg_array) | 96 | \\ |
| 97 | \\ %rax = ref(@rax_array) | 97 | \\ %syscall = ref(@syscall_array) |
| 98 | \\ %rdi = ref(@rdi_array) | 98 | \\ %sysoutreg = ref(@sysoutreg_array) |
| 99 | \\ %rcx = ref(@rcx_array) | 99 | \\ %rax = ref(@rax_array) |
| 100 | \\ %rdx = ref(@rdx_array) | 100 | \\ %rdi = ref(@rdi_array) |
| 101 | \\ %rsi = ref(@rsi_array) | 101 | \\ %rcx = ref(@rcx_array) |
| 102 | \\ %r11 = ref(@r11_array) | 102 | \\ %rdx = ref(@rdx_array) |
| 103 | \\ %memory = ref(@memory_array) | 103 | \\ %rsi = ref(@rsi_array) |
| 104 | \\ | 104 | \\ %r11 = ref(@r11_array) |
| 105 | \\ %SYS_write = as(@usize, @1) | 105 | \\ %memory = ref(@memory_array) |
| 106 | \\ %STDOUT_FILENO = as(@usize, @1) | 106 | \\ |
| 107 | \\ | 107 | \\ %SYS_write = as(@usize, @1) |
| 108 | \\ %msg_ptr = ref(@msg) | 108 | \\ %STDOUT_FILENO = as(@usize, @1) |
| 109 | \\ %msg_addr = ptrtoint(%msg_ptr) | 109 | \\ |
| 110 | \\ | 110 | \\ %msg_ptr = ref(@msg) |
| 111 | \\ %len_name = ref(@len_array) | 111 | \\ %msg_addr = ptrtoint(%msg_ptr) |
| 112 | \\ %msg_len_ptr = fieldptr(%msg_ptr, %len_name) | 112 | \\ |
| 113 | \\ %msg_len = deref(%msg_len_ptr) | 113 | \\ %len_name = ref(@len_array) |
| 114 | \\ %rc_write = asm(%syscall, @usize, | 114 | \\ %msg_len_ptr = fieldptr(%msg_ptr, %len_name) |
| 115 | \\ volatile=1, | 115 | \\ %msg_len = deref(%msg_len_ptr) |
| 116 | \\ output=%sysoutreg, | 116 | \\ %rc_write = asm(%syscall, @usize, |
| 117 | \\ inputs=[%rax, %rdi, %rsi, %rdx], | 117 | \\ volatile=1, |
| 118 | \\ clobbers=[%rcx, %r11, %memory], | 118 | \\ output=%sysoutreg, |
| 119 | \\ args=[%SYS_write, %STDOUT_FILENO, %msg_addr, %msg_len]) | 119 | \\ inputs=[%rax, %rdi, %rsi, %rdx], |
| 120 | \\ | 120 | \\ clobbers=[%rcx, %r11, %memory], |
| 121 | \\ %rc_exit = asm(%syscall, @usize, | 121 | \\ args=[%SYS_write, %STDOUT_FILENO, %msg_addr, %msg_len]) |
| 122 | \\ volatile=1, | 122 | \\ |
| 123 | \\ output=%sysoutreg, | 123 | \\ %rc_exit = asm(%syscall, @usize, |
| 124 | \\ inputs=[%rax, %rdi], | 124 | \\ volatile=1, |
| 125 | \\ clobbers=[%rcx, %r11, %memory], | 125 | \\ output=%sysoutreg, |
| 126 | \\ args=[%SYS_exit_group, %exit_code]) | 126 | \\ inputs=[%rax, %rdi], |
| 127 | \\ | 127 | \\ clobbers=[%rcx, %r11, %memory], |
| 128 | \\ %99 = unreachable() | 128 | \\ args=[%SYS_exit_group, %exit_code]) |
| 129 | \\}); | 129 | \\ |
| 130 | \\ | 130 | \\ %99 = unreachable() |
| 131 | \\@9 = str("_start") | 131 | \\}); |
| 132 | \\@10 = ref(@9) | 132 | \\ |
| 133 | \\@11 = export(@10, @start) | 133 | \\@9 = str("_start") |
| 134 | , | 134 | \\@10 = ref(@9) |
| 135 | \\Hello, world! | 135 | \\@11 = export(@10, @start) |
| 136 | \\ | 136 | , |
| | 137 | \\@noreturn = primitive(noreturn) |
| | 138 | \\@void = primitive(void) |
| | 139 | \\@usize = primitive(usize) |
| | 140 | \\@0 = int(0) |
| | 141 | \\@1 = int(1) |
| | 142 | \\@2 = int(2) |
| | 143 | \\@3 = int(3) |
| | 144 | \\ |
| | 145 | \\@syscall_array = str("syscall") |
| | 146 | \\@sysoutreg_array = str("={rax}") |
| | 147 | \\@rax_array = str("{rax}") |
| | 148 | \\@rdi_array = str("{rdi}") |
| | 149 | \\@rcx_array = str("rcx") |
| | 150 | \\@r11_array = str("r11") |
| | 151 | \\@rdx_array = str("{rdx}") |
| | 152 | \\@rsi_array = str("{rsi}") |
| | 153 | \\@memory_array = str("memory") |
| | 154 | \\@len_array = str("len") |
| | 155 | \\ |
| | 156 | \\@msg = str("Hello, world!\n") |
| | 157 | \\@msg2 = str("HELL WORLD\n") |
| | 158 | \\ |
| | 159 | \\@start_fnty = fntype([], @noreturn, cc=Naked) |
| | 160 | \\@start = fn(@start_fnty, { |
| | 161 | \\ %SYS_exit_group = int(231) |
| | 162 | \\ %exit_code = as(@usize, @0) |
| | 163 | \\ |
| | 164 | \\ %syscall = ref(@syscall_array) |
| | 165 | \\ %sysoutreg = ref(@sysoutreg_array) |
| | 166 | \\ %rax = ref(@rax_array) |
| | 167 | \\ %rdi = ref(@rdi_array) |
| | 168 | \\ %rcx = ref(@rcx_array) |
| | 169 | \\ %rdx = ref(@rdx_array) |
| | 170 | \\ %rsi = ref(@rsi_array) |
| | 171 | \\ %r11 = ref(@r11_array) |
| | 172 | \\ %memory = ref(@memory_array) |
| | 173 | \\ |
| | 174 | \\ %SYS_write = as(@usize, @1) |
| | 175 | \\ %STDOUT_FILENO = as(@usize, @1) |
| | 176 | \\ |
| | 177 | \\ %msg_ptr = ref(@msg2) |
| | 178 | \\ %msg_addr = ptrtoint(%msg_ptr) |
| | 179 | \\ |
| | 180 | \\ %len_name = ref(@len_array) |
| | 181 | \\ %msg_len_ptr = fieldptr(%msg_ptr, %len_name) |
| | 182 | \\ %msg_len = deref(%msg_len_ptr) |
| | 183 | \\ %rc_write = asm(%syscall, @usize, |
| | 184 | \\ volatile=1, |
| | 185 | \\ output=%sysoutreg, |
| | 186 | \\ inputs=[%rax, %rdi, %rsi, %rdx], |
| | 187 | \\ clobbers=[%rcx, %r11, %memory], |
| | 188 | \\ args=[%SYS_write, %STDOUT_FILENO, %msg_addr, %msg_len]) |
| | 189 | \\ |
| | 190 | \\ %rc_exit = asm(%syscall, @usize, |
| | 191 | \\ volatile=1, |
| | 192 | \\ output=%sysoutreg, |
| | 193 | \\ inputs=[%rax, %rdi], |
| | 194 | \\ clobbers=[%rcx, %r11, %memory], |
| | 195 | \\ args=[%SYS_exit_group, %exit_code]) |
| | 196 | \\ |
| | 197 | \\ %99 = unreachable() |
| | 198 | \\}); |
| | 199 | \\ |
| | 200 | \\@9 = str("_start") |
| | 201 | \\@10 = ref(@9) |
| | 202 | \\@11 = export(@10, @start) |
| | 203 | }, |
| | 204 | &[_][]const u8{ |
| | 205 | \\Hello, world! |
| | 206 | \\ |
| | 207 | , |
| | 208 | \\HELL WORLD |
| | 209 | \\ |
| | 210 | }, |
| 137 | ); | 211 | ); |
| 138 | } | 212 | } |