mirror of
https://github.com/kmc7468/cs420.git
synced 2025-12-14 22:38:46 +00:00
Prepare for Spring 2025.
This commit is contained in:
9
examples/c/lost_copy.c
Normal file
9
examples/c/lost_copy.c
Normal file
@@ -0,0 +1,9 @@
|
||||
int main() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
do {
|
||||
result = i;
|
||||
i++;
|
||||
} while (i < 4);
|
||||
return result;
|
||||
}
|
||||
10
examples/c/swap.c
Normal file
10
examples/c/swap.c
Normal file
@@ -0,0 +1,10 @@
|
||||
int main() {
|
||||
int a = 1;
|
||||
int b = 2;
|
||||
do {
|
||||
int t = a;
|
||||
a = b;
|
||||
b = t;
|
||||
} while (b == 1);
|
||||
return a * 10 + b;
|
||||
}
|
||||
33
examples/ir0/lost_copy.ir
Normal file
33
examples/ir0/lost_copy.ir
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:i
|
||||
%l1:i32:result
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = store 0:i32 %l0:i32*
|
||||
%b0:i1:unit = store 0:i32 %l1:i32*
|
||||
j b1()
|
||||
|
||||
block b1:
|
||||
%b1:i0:i32 = load %l0:i32*
|
||||
%b1:i1:unit = store %b1:i0:i32 %l1:i32*
|
||||
%b1:i2:i32 = load %l0:i32*
|
||||
%b1:i3:i32 = add %b1:i2:i32 1:i32
|
||||
%b1:i4:unit = store %b1:i3:i32 %l0:i32*
|
||||
j b2()
|
||||
|
||||
block b2:
|
||||
%b2:i0:i32 = load %l0:i32*
|
||||
%b2:i1:u1 = cmp lt %b2:i0:i32 4:i32
|
||||
br %b2:i1:u1, b1(), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = load %l1:i32*
|
||||
ret %b3:i0:i32
|
||||
|
||||
block b4:
|
||||
ret 0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
struct %t0 : { b:[4 x [5 x i32]] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
|
||||
fun unit @init (i32, i32, [5 x i32]*) {
|
||||
init:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
struct %t0 : { b:[4 x i32] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
|
||||
38
examples/ir0/swap.ir
Normal file
38
examples/ir0/swap.ir
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:a
|
||||
%l1:i32:b
|
||||
%l2:i32:t
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = store 1:i32 %l0:i32*
|
||||
%b0:i1:unit = store 2:i32 %l1:i32*
|
||||
j b1()
|
||||
|
||||
block b1:
|
||||
%b1:i0:i32 = load %l0:i32*
|
||||
%b1:i1:unit = store %b1:i0:i32 %l2:i32*
|
||||
%b1:i2:i32 = load %l1:i32*
|
||||
%b1:i3:unit = store %b1:i2:i32 %l0:i32*
|
||||
%b1:i4:i32 = load %l2:i32*
|
||||
%b1:i5:unit = store %b1:i4:i32 %l1:i32*
|
||||
j b2()
|
||||
|
||||
block b2:
|
||||
%b2:i0:i32 = load %l1:i32*
|
||||
%b2:i1:u1 = cmp eq %b2:i0:i32 1:i32
|
||||
br %b2:i1:u1, b1(), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = load %l0:i32*
|
||||
%b3:i1:i32 = mul %b3:i0:i32 10:i32
|
||||
%b3:i2:i32 = load %l1:i32*
|
||||
%b3:i3:i32 = add %b3:i1:i32 %b3:i2:i32
|
||||
ret %b3:i3:i32
|
||||
|
||||
block b4:
|
||||
ret 0:i32
|
||||
}
|
||||
27
examples/ir1/lost_copy.ir
Normal file
27
examples/ir1/lost_copy.ir
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:i
|
||||
%l1:i32:result
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = store 0:i32 %l0:i32*
|
||||
%b0:i1:unit = store 0:i32 %l1:i32*
|
||||
j b1()
|
||||
|
||||
block b1:
|
||||
%b1:i0:i32 = load %l0:i32*
|
||||
%b1:i1:unit = store %b1:i0:i32 %l1:i32*
|
||||
%b1:i2:i32 = load %l0:i32*
|
||||
%b1:i3:i32 = add %b1:i2:i32 1:i32
|
||||
%b1:i4:unit = store %b1:i3:i32 %l0:i32*
|
||||
%b1:i5:i32 = load %l0:i32*
|
||||
%b1:i6:u1 = cmp lt %b1:i5:i32 4:i32
|
||||
br %b1:i6:u1, b1(), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = load %l1:i32*
|
||||
ret %b3:i0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct Sub : { m1:i64, m2:i64, m3:i64, m4:i64 }
|
||||
struct Big : { m1:struct Sub, m2:struct Sub, m3:struct Sub }
|
||||
struct Sub : { m1:i64, m2:i64, m3:i64, m4:i64 }
|
||||
|
||||
fun struct Big @foo (struct Big) {
|
||||
init:
|
||||
|
||||
32
examples/ir1/swap.ir
Normal file
32
examples/ir1/swap.ir
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:a
|
||||
%l1:i32:b
|
||||
%l2:i32:t
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = store 1:i32 %l0:i32*
|
||||
%b0:i1:unit = store 2:i32 %l1:i32*
|
||||
j b1()
|
||||
|
||||
block b1:
|
||||
%b1:i0:i32 = load %l0:i32*
|
||||
%b1:i1:unit = store %b1:i0:i32 %l2:i32*
|
||||
%b1:i2:i32 = load %l1:i32*
|
||||
%b1:i3:unit = store %b1:i2:i32 %l0:i32*
|
||||
%b1:i4:i32 = load %l2:i32*
|
||||
%b1:i5:unit = store %b1:i4:i32 %l1:i32*
|
||||
%b1:i6:i32 = load %l1:i32*
|
||||
%b1:i7:u1 = cmp eq %b1:i6:i32 1:i32
|
||||
br %b1:i7:u1, b1(), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = load %l0:i32*
|
||||
%b3:i1:i32 = mul %b3:i0:i32 10:i32
|
||||
%b3:i2:i32 = load %l1:i32*
|
||||
%b3:i3:i32 = add %b3:i1:i32 %b3:i2:i32
|
||||
ret %b3:i3:i32
|
||||
}
|
||||
@@ -17,10 +17,11 @@ block b0:
|
||||
%b0:i1:unit = nop
|
||||
%b0:i2:unit = nop
|
||||
%b0:i3:unit = nop
|
||||
j b2(0:i32)
|
||||
j b2(0:i32, undef:i32)
|
||||
|
||||
block b2:
|
||||
%b2:p0:i32:i
|
||||
%b2:p1:i32:j
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:unit = nop
|
||||
%b2:i2:u1 = cmp lt %b2:p0:i32 %b0:p0:i32
|
||||
@@ -64,7 +65,7 @@ block b10:
|
||||
%b10:i0:unit = nop
|
||||
%b10:i1:i32 = add %b2:p0:i32 1:i32
|
||||
%b10:i2:unit = nop
|
||||
j b2(%b10:i1:i32)
|
||||
j b2(%b10:i1:i32, %b7:p0:i32)
|
||||
}
|
||||
|
||||
fun i32 @main () {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -30,18 +30,19 @@ block b2:
|
||||
%b2:i1:unit = nop
|
||||
%b2:i2:i32 = add 2:i32 5:i32
|
||||
%b2:i3:unit = nop
|
||||
j b3(2:i32, %b2:i2:i32)
|
||||
j b3(2:i32, undef:i32, %b2:i2:i32)
|
||||
|
||||
block b3:
|
||||
%b3:p0:i32:p
|
||||
%b3:p1:i32:t1
|
||||
%b3:p1:i32:t0
|
||||
%b3:p2:i32:t1
|
||||
%b3:i0:unit = nop
|
||||
%b3:i1:unit = nop
|
||||
%b3:i2:i32 = load @nonce:i32*
|
||||
%b3:i3:i32 = mod %b3:i2:i32 100:i32
|
||||
%b3:i4:unit = nop
|
||||
%b3:i5:unit = nop
|
||||
j b8(0:i32, %b3:p0:i32)
|
||||
j b8(0:i32, %b3:p0:i32, undef:i32)
|
||||
|
||||
block b4:
|
||||
%b4:i0:unit = nop
|
||||
@@ -62,11 +63,12 @@ block b6:
|
||||
%b6:p1:i32:t0
|
||||
%b6:i0:unit = nop
|
||||
%b6:i1:unit = nop
|
||||
j b3(%b6:p0:i32, %b6:p1:i32)
|
||||
j b3(%b6:p0:i32, %b6:p1:i32, %b6:p1:i32)
|
||||
|
||||
block b8:
|
||||
%b8:p0:i32:i
|
||||
%b8:p1:i32:p
|
||||
%b8:p2:i32:t2
|
||||
%b8:i0:unit = nop
|
||||
%b8:i1:unit = nop
|
||||
%b8:i2:u1 = cmp lt %b8:p0:i32 %b3:i3:i32
|
||||
@@ -92,7 +94,7 @@ block b12:
|
||||
block b13:
|
||||
%b13:i0:unit = nop
|
||||
%b13:i1:unit = nop
|
||||
%b13:i2:i32 = add %b8:p1:i32 %b3:p1:i32
|
||||
%b13:i2:i32 = add %b8:p1:i32 %b3:p2:i32
|
||||
%b13:i3:unit = nop
|
||||
j b14(%b13:i2:i32)
|
||||
|
||||
@@ -121,5 +123,5 @@ block b17:
|
||||
%b17:p0:i32:i
|
||||
%b17:p1:i32:t2
|
||||
%b17:i0:unit = nop
|
||||
j b8(%b17:p0:i32, %b14:p0:i32)
|
||||
j b8(%b17:p0:i32, %b14:p0:i32, %b17:p1:i32)
|
||||
}
|
||||
|
||||
@@ -26,12 +26,13 @@ block b1:
|
||||
|
||||
block b2:
|
||||
%b2:i0:unit = nop
|
||||
j b6(1:i32, 0:i32, 1:i32)
|
||||
j b6(1:i32, 0:i32, 1:i32, 0:i32)
|
||||
|
||||
block b6:
|
||||
%b6:p0:i32:i
|
||||
%b6:p1:i32:t1
|
||||
%b6:p2:i32:t2
|
||||
%b6:p3:i32:next_term
|
||||
%b6:i0:unit = nop
|
||||
%b6:i1:unit = nop
|
||||
%b6:i2:u1 = cmp lt %b6:p0:i32 %b0:p0:i32
|
||||
@@ -49,7 +50,7 @@ block b7:
|
||||
%b7:i8:unit = nop
|
||||
%b7:i9:i32 = add %b6:p0:i32 1:i32
|
||||
%b7:i10:unit = nop
|
||||
j b6(%b7:i9:i32, %b6:p2:i32, %b7:i2:i32)
|
||||
j b6(%b7:i9:i32, %b6:p2:i32, %b7:i2:i32, %b7:i2:i32)
|
||||
|
||||
block b9:
|
||||
%b9:i0:unit = nop
|
||||
|
||||
@@ -26,12 +26,13 @@ block b1:
|
||||
|
||||
block b2:
|
||||
%b2:i0:unit = nop
|
||||
j b5(1:i32, 0:i32, 1:i32)
|
||||
j b5(1:i32, 0:i32, 1:i32, 0:i32)
|
||||
|
||||
block b5:
|
||||
%b5:p0:i32:i
|
||||
%b5:p1:i32:t1
|
||||
%b5:p2:i32:t2
|
||||
%b5:p3:i32:next_term
|
||||
%b5:i0:unit = nop
|
||||
%b5:i1:unit = nop
|
||||
%b5:i2:u1 = cmp lt %b5:p0:i32 %b0:p0:i32
|
||||
@@ -49,7 +50,7 @@ block b6:
|
||||
%b6:i8:unit = nop
|
||||
%b6:i9:i32 = add %b5:p0:i32 1:i32
|
||||
%b6:i10:unit = nop
|
||||
j b5(%b6:i9:i32, %b5:p2:i32, %b6:i2:i32)
|
||||
j b5(%b6:i9:i32, %b5:p2:i32, %b6:i2:i32, %b6:i2:i32)
|
||||
|
||||
block b7:
|
||||
%b7:i0:unit = nop
|
||||
|
||||
@@ -26,12 +26,13 @@ block b1:
|
||||
|
||||
block b2:
|
||||
%b2:i0:unit = nop
|
||||
j b5(1:i32, 0:i32, 1:i32)
|
||||
j b5(1:i32, 0:i32, 1:i32, 0:i32)
|
||||
|
||||
block b5:
|
||||
%b5:p0:i32:i
|
||||
%b5:p1:i32:t1
|
||||
%b5:p2:i32:t2
|
||||
%b5:p3:i32:next_term
|
||||
%b5:i0:unit = nop
|
||||
%b5:i1:unit = nop
|
||||
%b5:i2:i32 = add %b5:p1:i32 %b5:p2:i32
|
||||
@@ -46,7 +47,7 @@ block b5:
|
||||
%b5:i11:unit = nop
|
||||
%b5:i12:unit = nop
|
||||
%b5:i13:u1 = cmp lt %b5:i9:i32 %b0:p0:i32
|
||||
br %b5:i13:u1, b5(%b5:i9:i32, %b5:p2:i32, %b5:i2:i32), b7()
|
||||
br %b5:i13:u1, b5(%b5:i9:i32, %b5:p2:i32, %b5:i2:i32, %b5:i2:i32), b7()
|
||||
|
||||
block b7:
|
||||
%b7:i0:unit = nop
|
||||
|
||||
@@ -11,10 +11,12 @@ init:
|
||||
block b0:
|
||||
%b0:i0:unit = nop
|
||||
%b0:i1:unit = nop
|
||||
j b2(0:i32)
|
||||
j b2(0:i32, undef:i32, undef:i32)
|
||||
|
||||
block b2:
|
||||
%b2:p0:i32:i
|
||||
%b2:p1:i32:i
|
||||
%b2:p2:i32:k
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:u1 = cmp lt %b2:p0:i32 10:i32
|
||||
br %b2:i1:u1, b3(), b5()
|
||||
@@ -25,7 +27,7 @@ block b3:
|
||||
%b3:i2:unit = nop
|
||||
%b3:i3:i32 = add %b2:p0:i32 1:i32
|
||||
%b3:i4:unit = nop
|
||||
j b2(%b3:i3:i32)
|
||||
j b2(%b3:i3:i32, 0:i32, 0:i32)
|
||||
|
||||
block b5:
|
||||
ret 1:i32
|
||||
|
||||
29
examples/ir2/lost_copy.ir
Normal file
29
examples/ir2/lost_copy.ir
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:i
|
||||
%l1:i32:result
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = nop
|
||||
%b0:i1:unit = nop
|
||||
j b1(0:i32, 0:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:i
|
||||
%b1:p1:i32:result
|
||||
%b1:i0:unit = nop
|
||||
%b1:i1:unit = nop
|
||||
%b1:i2:unit = nop
|
||||
%b1:i3:i32 = add %b1:p0:i32 1:i32
|
||||
%b1:i4:unit = nop
|
||||
%b1:i5:unit = nop
|
||||
%b1:i6:u1 = cmp lt %b1:i3:i32 4:i32
|
||||
br %b1:i6:u1, b1(%b1:i3:i32, %b1:p0:i32), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:unit = nop
|
||||
ret %b1:p0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
struct %t0 : { b:[4 x [5 x i32]] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
|
||||
fun unit @init (i32, i32, [5 x i32]*) {
|
||||
init:
|
||||
@@ -19,10 +19,11 @@ block b0:
|
||||
%b0:i1:unit = nop
|
||||
%b0:i2:unit = nop
|
||||
%b0:i3:unit = nop
|
||||
j b2(0:i32)
|
||||
j b2(0:i32, undef:i32)
|
||||
|
||||
block b2:
|
||||
%b2:p0:i32:i
|
||||
%b2:p1:i32:j
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:unit = nop
|
||||
%b2:i2:u1 = cmp lt %b2:p0:i32 %b0:p0:i32
|
||||
@@ -66,7 +67,7 @@ block b10:
|
||||
%b10:i0:unit = nop
|
||||
%b10:i1:i32 = add %b2:p0:i32 1:i32
|
||||
%b10:i2:unit = nop
|
||||
j b2(%b10:i1:i32)
|
||||
j b2(%b10:i1:i32, %b7:p0:i32)
|
||||
}
|
||||
|
||||
fun i32 @main () {
|
||||
|
||||
35
examples/ir2/swap.ir
Normal file
35
examples/ir2/swap.ir
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
%l0:i32:a
|
||||
%l1:i32:b
|
||||
%l2:i32:t
|
||||
|
||||
block b0:
|
||||
%b0:i0:unit = nop
|
||||
%b0:i1:unit = nop
|
||||
j b1(1:i32, 2:i32, undef:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:a
|
||||
%b1:p1:i32:b
|
||||
%b1:p2:i32:t
|
||||
%b1:i0:unit = nop
|
||||
%b1:i1:unit = nop
|
||||
%b1:i2:unit = nop
|
||||
%b1:i3:unit = nop
|
||||
%b1:i4:unit = nop
|
||||
%b1:i5:unit = nop
|
||||
%b1:i6:unit = nop
|
||||
%b1:i7:u1 = cmp eq %b1:p0:i32 1:i32
|
||||
br %b1:i7:u1, b1(%b1:p1:i32, %b1:p0:i32, %b1:p0:i32), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:unit = nop
|
||||
%b3:i1:i32 = mul %b1:p1:i32 10:i32
|
||||
%b3:i2:unit = nop
|
||||
%b3:i3:i32 = add %b3:i1:i32 %b1:p0:i32
|
||||
ret %b3:i3:i32
|
||||
}
|
||||
@@ -45,14 +45,15 @@ block b0:
|
||||
%b0:i30:unit = nop
|
||||
%b0:i31:unit = nop
|
||||
%b0:i32:unit = nop
|
||||
j b2(%b0:i29:i32, 0:i32)
|
||||
j b2(%b0:i29:i32, 0:i32, undef:u1)
|
||||
|
||||
block b2:
|
||||
%b2:p0:i32:temp
|
||||
%b2:p1:i32:i
|
||||
%b2:p2:u1:t0
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:u1 = cmp lt %b2:p1:i32 10:i32
|
||||
br %b2:i1:u1, b3(), b5()
|
||||
br %b2:i1:u1, b3(), b5(%b2:p2:u1)
|
||||
|
||||
block b3:
|
||||
%b3:i0:unit = nop
|
||||
@@ -60,6 +61,7 @@ block b3:
|
||||
br %b3:i1:u1, b9(), b10()
|
||||
|
||||
block b5:
|
||||
%b5:p0:u1:t0
|
||||
%b5:i0:unit = nop
|
||||
switch %b2:p0:i32 default b13(%b2:p0:i32) [
|
||||
1:i32 b14()
|
||||
@@ -73,7 +75,7 @@ block b7:
|
||||
%b7:i4:unit = nop
|
||||
%b7:i5:i32 = add %b2:p1:i32 1:i32
|
||||
%b7:i6:unit = nop
|
||||
j b2(%b7:i2:i32, %b7:i5:i32)
|
||||
j b2(%b7:i2:i32, %b7:i5:i32, %b11:p0:u1)
|
||||
|
||||
block b9:
|
||||
%b9:i0:unit = nop
|
||||
@@ -88,7 +90,7 @@ block b10:
|
||||
block b11:
|
||||
%b11:p0:u1:t0
|
||||
%b11:i0:unit = nop
|
||||
br %b11:p0:u1, b5(), b7()
|
||||
br %b11:p0:u1, b5(%b11:p0:u1), b7()
|
||||
|
||||
block b13:
|
||||
%b13:p0:i32:temp
|
||||
|
||||
@@ -21,7 +21,7 @@ block b1:
|
||||
%b1:p1:i32:i
|
||||
%b1:i0:unit = nop
|
||||
%b1:i1:u1 = cmp lt %b1:p1:i32 100:i32
|
||||
br %b1:i1:u1, b2(), b3(%b1:p0:i32)
|
||||
br %b1:i1:u1, b2(), b3(%b1:p0:i32, %b1:p1:i32)
|
||||
|
||||
block b2:
|
||||
%b2:i0:unit = nop
|
||||
@@ -31,6 +31,7 @@ block b2:
|
||||
|
||||
block b3:
|
||||
%b3:p0:i32:sum
|
||||
%b3:p1:i32:i
|
||||
%b3:i0:unit = nop
|
||||
ret %b3:p0:i32
|
||||
|
||||
@@ -52,7 +53,7 @@ block b5:
|
||||
%b5:i8:unit = nop
|
||||
%b5:i9:i32 = add %b0:i3:i32 2:i32
|
||||
%b5:i10:u1 = cmp eq %b5:i5:i32 %b5:i9:i32
|
||||
br %b5:i10:u1, b3(%b5:i2:i32), b1(%b5:i2:i32, %b5:i5:i32)
|
||||
br %b5:i10:u1, b3(%b5:i2:i32, %b5:i5:i32), b1(%b5:i2:i32, %b5:i5:i32)
|
||||
}
|
||||
|
||||
fun i32 @main () {
|
||||
|
||||
19
examples/ir3/lost_copy.ir
Normal file
19
examples/ir3/lost_copy.ir
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(0:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:i
|
||||
%b1:i0:i32 = add %b1:p0:i32 1:i32
|
||||
%b1:i1:u1 = cmp lt %b1:i0:i32 4:i32
|
||||
br %b1:i1:u1, b1(%b1:i0:i32), b3()
|
||||
|
||||
block b3:
|
||||
ret %b1:p0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
struct %t0 : { b:[4 x [5 x i32]] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
|
||||
fun unit @init (i32, i32, [5 x i32]*) {
|
||||
init:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
struct Sub : { m1:i64, m2:i64, m3:i64, m4:i64 }
|
||||
struct Big : { m1:struct Sub, m2:struct Sub, m3:struct Sub }
|
||||
struct Sub : { m1:i64, m2:i64, m3:i64, m4:i64 }
|
||||
|
||||
fun struct Big @foo (struct Big) {
|
||||
init:
|
||||
|
||||
21
examples/ir3/swap.ir
Normal file
21
examples/ir3/swap.ir
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(1:i32, 2:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:a
|
||||
%b1:p1:i32:b
|
||||
%b1:i0:u1 = cmp eq %b1:p0:i32 1:i32
|
||||
br %b1:i0:u1, b1(%b1:p1:i32, %b1:p0:i32), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = mul %b1:p1:i32 10:i32
|
||||
%b3:i1:i32 = add %b3:i0:i32 %b1:p0:i32
|
||||
ret %b3:i1:i32
|
||||
}
|
||||
19
examples/ir4/lost_copy.ir
Normal file
19
examples/ir4/lost_copy.ir
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(0:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:i
|
||||
%b1:i0:i32 = add %b1:p0:i32 1:i32
|
||||
%b1:i1:u1 = cmp lt %b1:i0:i32 4:i32
|
||||
br %b1:i1:u1, b1(%b1:i0:i32), b3()
|
||||
|
||||
block b3:
|
||||
ret %b1:p0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
struct %t0 : { b:[4 x i32] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
|
||||
21
examples/ir4/swap.ir
Normal file
21
examples/ir4/swap.ir
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(1:i32, 2:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:a
|
||||
%b1:p1:i32:b
|
||||
%b1:i0:u1 = cmp eq %b1:p0:i32 1:i32
|
||||
br %b1:i0:u1, b1(%b1:p1:i32, %b1:p0:i32), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = mul %b1:p1:i32 10:i32
|
||||
%b3:i1:i32 = add %b3:i0:i32 %b1:p0:i32
|
||||
ret %b3:i1:i32
|
||||
}
|
||||
@@ -85,7 +85,7 @@ block b0:
|
||||
%b0:i2:unit = nop
|
||||
switch undef:i32 default b1() [
|
||||
2:i32 b2(0:i32)
|
||||
3:i32 b3()
|
||||
3:i32 b3(0:i32)
|
||||
]
|
||||
|
||||
block b1:
|
||||
@@ -99,9 +99,10 @@ block b2:
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:unit = call @sink:[ret:unit params:(i32)]*(%b2:p0:i32)
|
||||
%b2:i2:unit = nop
|
||||
j b3()
|
||||
j b3(200:i32)
|
||||
|
||||
block b3:
|
||||
%b3:p0:i32:x
|
||||
%b3:i0:unit = nop
|
||||
j b0(300:i32)
|
||||
}
|
||||
@@ -139,8 +140,8 @@ block b0:
|
||||
%b0:i8:unit = nop
|
||||
|
||||
switch undef:i32 default b1() [
|
||||
2:i32 b2(0:i32)
|
||||
3:i32 b3()
|
||||
2:i32 b2(0:i32, 2:i64)
|
||||
3:i32 b3(0:i32, 1:i16, 2:i64)
|
||||
]
|
||||
|
||||
block b1:
|
||||
@@ -152,10 +153,11 @@ block b1:
|
||||
%b1:i4:unit = call @sink:[ret:unit params:(i32)]*(2:i64)
|
||||
%b1:i5:unit = nop
|
||||
|
||||
j b2(100:i32)
|
||||
j b2(100:i32, 102:i64)
|
||||
|
||||
block b2:
|
||||
%b2:p0:i32:x
|
||||
%b2:p1:i64:z
|
||||
|
||||
%b2:i0:unit = nop
|
||||
%b2:i1:unit = call @sink:[ret:unit params:(i32)]*(%b2:p0:i32)
|
||||
@@ -164,9 +166,12 @@ block b2:
|
||||
%b2:i4:unit = call @sink:[ret:unit params:(i32)]*(1:i16)
|
||||
%b2:i5:unit = nop
|
||||
|
||||
j b3()
|
||||
j b3(200:i32, 201:i16, %b2:p1:i64)
|
||||
|
||||
block b3:
|
||||
%b3:p0:i32:x
|
||||
%b3:p1:i16:y
|
||||
%b3:p2:i64:z
|
||||
%b3:i0:unit = nop
|
||||
%b3:i1:unit = nop
|
||||
%b3:i2:unit = nop
|
||||
|
||||
19
examples/opt/lost_copy.ir
Normal file
19
examples/opt/lost_copy.ir
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(0:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:i
|
||||
%b1:i0:i32 = add %b1:p0:i32 1:i32
|
||||
%b1:i1:u1 = cmp lt %b1:i0:i32 4:i32
|
||||
br %b1:i1:u1, b1(%b1:i0:i32), b3()
|
||||
|
||||
block b3:
|
||||
ret %b1:p0:i32
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
struct %t0 : { b:[4 x [5 x i32]] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:f64 }
|
||||
|
||||
fun unit @init (i32, i32, [5 x i32]*) {
|
||||
init:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
struct %t0 : { b:[4 x i32] }
|
||||
struct %t1 : { a:i8, %anon:struct %t0, c:i64 }
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
|
||||
21
examples/opt/swap.ir
Normal file
21
examples/opt/swap.ir
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
fun i32 @main () {
|
||||
init:
|
||||
bid: b0
|
||||
allocations:
|
||||
|
||||
|
||||
block b0:
|
||||
j b1(1:i32, 2:i32)
|
||||
|
||||
block b1:
|
||||
%b1:p0:i32:a
|
||||
%b1:p1:i32:b
|
||||
%b1:i0:u1 = cmp eq %b1:p0:i32 1:i32
|
||||
br %b1:i0:u1, b1(%b1:p1:i32, %b1:p0:i32), b3()
|
||||
|
||||
block b3:
|
||||
%b3:i0:i32 = mul %b1:p1:i32 10:i32
|
||||
%b3:i1:i32 = add %b3:i0:i32 %b1:p0:i32
|
||||
ret %b3:i1:i32
|
||||
}
|
||||
Reference in New Issue
Block a user