aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-04-29 19:38:45 -0400
committerAndrew Kelley <andrew@ziglang.org>2020-05-01 06:47:20 -0400
commit1d202008d8008681988effdf25be2c6a753cf067 (patch)
tree74c0432a2a1fa077f507a31ea25d089636a10a2a /test
parent751903ba8fba467411942317c8da0e6bc22a0ff6 (diff)
downloadzig-1d202008d8008681988effdf25be2c6a753cf067.tar.gz
zig-1d202008d8008681988effdf25be2c6a753cf067.zip
add ZIR transform test case
Diffstat (limited to 'test')
-rw-r--r--test/stage2/zir.zig45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/stage2/zir.zig b/test/stage2/zir.zig
index d2ea3c01fc..9a65e9ab96 100644
--- a/test/stage2/zir.zig
+++ b/test/stage2/zir.zig
@@ -1,6 +1,51 @@
const TestContext = @import("../../src-self-hosted/test.zig").TestContext;
pub fn addCases(ctx: *TestContext) void {
+ ctx.addZIRTransform("elemptr, add, cmp, condbr, return, breakpoint",
+ \\@void = primitive(void)
+ \\@usize = primitive(usize)
+ \\@fnty = fntype([], @void, cc=C)
+ \\@0 = int(0)
+ \\@1 = int(1)
+ \\@2 = int(2)
+ \\@3 = int(3)
+ \\
+ \\@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)
+ \\ %v0 = deref(%eptr0)
+ \\ %v1 = deref(%eptr1)
+ \\ %v2 = deref(%eptr2)
+ \\ %v3 = deref(%eptr3)
+ \\ %x0 = add(%v0, %v1)
+ \\ %x1 = add(%v2, %v3)
+ \\ %result = add(%x0, %x1)
+ \\
+ \\ %expected = int(69)
+ \\ %ok = cmp(%result, eq, %expected)
+ \\ %10 = condbr(%ok, {
+ \\ %11 = return()
+ \\ }, {
+ \\ %12 = breakpoint()
+ \\ })
+ \\})
+ \\
+ \\@9 = str("entry")
+ \\@10 = export(@9, @entry)
+ ,
+ \\@0 = primitive(void)
+ \\@1 = fntype([], @0, cc=C)
+ \\@2 = fn(@1, {
+ \\ %0 = return()
+ \\})
+ \\@3 = str("entry")
+ \\@4 = export(@3, @2)
+ \\
+ );
+
if (@import("std").Target.current.os.tag != .linux or
@import("std").Target.current.cpu.arch != .x86_64)
{