From 75138c5ec2067c6d36d95dac47cece17ae11f5cb Mon Sep 17 00:00:00 2001 From: Minseong Jang Date: Tue, 25 Jan 2022 21:19:01 +0900 Subject: [PATCH] Add sizeof examples --- examples/c/sizeof2.c | 6 +++++ examples/ir0/sizeof2.ir | 57 +++++++++++++++++++++++++++++++++++++++++ examples/ir1/sizeof2.ir | 54 ++++++++++++++++++++++++++++++++++++++ examples/ir2/sizeof2.ir | 56 ++++++++++++++++++++++++++++++++++++++++ examples/ir3/sizeof2.ir | 37 ++++++++++++++++++++++++++ examples/ir4/sizeof2.ir | 37 ++++++++++++++++++++++++++ 6 files changed, 247 insertions(+) create mode 100644 examples/c/sizeof2.c create mode 100644 examples/ir0/sizeof2.ir create mode 100644 examples/ir1/sizeof2.ir create mode 100644 examples/ir2/sizeof2.ir create mode 100644 examples/ir3/sizeof2.ir create mode 100644 examples/ir4/sizeof2.ir diff --git a/examples/c/sizeof2.c b/examples/c/sizeof2.c new file mode 100644 index 0000000..0f25e13 --- /dev/null +++ b/examples/c/sizeof2.c @@ -0,0 +1,6 @@ +int main() { + char a = 42, b = 5; + long c[10]; + + return sizeof(a) == 1 && sizeof(a + b) == 4 && sizeof(c) == 80; +} diff --git a/examples/ir0/sizeof2.ir b/examples/ir0/sizeof2.ir new file mode 100644 index 0000000..42b98ea --- /dev/null +++ b/examples/ir0/sizeof2.ir @@ -0,0 +1,57 @@ + +fun i32 @main () { +init: + bid: b0 + allocations: + %l0:i8:a + %l1:i8:b + %l2:[10 x i64]:c + %l3:u1:t0 + %l4:u1:t1 + +block b0: + %b0:i0:i8 = typecast 42:i32 to i8 + %b0:i1:unit = store %b0:i0:i8 %l0:i8* + %b0:i2:i8 = typecast 5:i32 to i8 + %b0:i3:unit = store %b0:i2:i8 %l1:i8* + %b0:i4:u64 = typecast 1:i32 to u64 + %b0:i5:u1 = cmp eq 1:u64 %b0:i4:u64 + br %b0:i5:u1, b4(), b5() + +block b1: + %b1:i0:u64 = typecast 80:i32 to u64 + %b1:i1:u1 = cmp eq 80:u64 %b1:i0:u64 + %b1:i2:unit = store %b1:i1:u1 %l4:u1* + j b3() + +block b2: + %b2:i0:unit = store 0:u1 %l4:u1* + j b3() + +block b3: + %b3:i0:u1 = load %l4:u1* + %b3:i1:i32 = typecast %b3:i0:u1 to i32 + ret %b3:i1:i32 + +block b4: + %b4:i0:i8 = load %l0:i8* + %b4:i1:i8 = load %l1:i8* + %b4:i2:i32 = typecast %b4:i0:i8 to i32 + %b4:i3:i32 = typecast %b4:i1:i8 to i32 + %b4:i4:i32 = add %b4:i2:i32 %b4:i3:i32 + %b4:i5:u64 = typecast 4:i32 to u64 + %b4:i6:u1 = cmp eq 4:u64 %b4:i5:u64 + %b4:i7:unit = store %b4:i6:u1 %l3:u1* + j b6() + +block b5: + %b5:i0:unit = store 0:u1 %l3:u1* + j b6() + +block b6: + %b6:i0:u1 = load %l3:u1* + br %b6:i0:u1, b1(), b2() + +block b7: + ret 0:i32 +} diff --git a/examples/ir1/sizeof2.ir b/examples/ir1/sizeof2.ir new file mode 100644 index 0000000..a529366 --- /dev/null +++ b/examples/ir1/sizeof2.ir @@ -0,0 +1,54 @@ + +fun i32 @main () { +init: + bid: b0 + allocations: + %l0:i8:a + %l1:i8:b + %l2:[10 x i64]:c + %l3:u1:t0 + %l4:u1:t1 + +block b0: + %b0:i0:i8 = typecast 42:i32 to i8 + %b0:i1:unit = store %b0:i0:i8 %l0:i8* + %b0:i2:i8 = typecast 5:i32 to i8 + %b0:i3:unit = store %b0:i2:i8 %l1:i8* + %b0:i4:u64 = typecast 1:i32 to u64 + %b0:i5:u1 = cmp eq 1:u64 %b0:i4:u64 + br %b0:i5:u1, b4(), b5() + +block b1: + %b1:i0:u64 = typecast 80:i32 to u64 + %b1:i1:u1 = cmp eq 80:u64 %b1:i0:u64 + %b1:i2:unit = store %b1:i1:u1 %l4:u1* + j b3() + +block b2: + %b2:i0:unit = store 0:u1 %l4:u1* + j b3() + +block b3: + %b3:i0:u1 = load %l4:u1* + %b3:i1:i32 = typecast %b3:i0:u1 to i32 + ret %b3:i1:i32 + +block b4: + %b4:i0:i8 = load %l0:i8* + %b4:i1:i8 = load %l1:i8* + %b4:i2:i32 = typecast %b4:i0:i8 to i32 + %b4:i3:i32 = typecast %b4:i1:i8 to i32 + %b4:i4:i32 = add %b4:i2:i32 %b4:i3:i32 + %b4:i5:u64 = typecast 4:i32 to u64 + %b4:i6:u1 = cmp eq 4:u64 %b4:i5:u64 + %b4:i7:unit = store %b4:i6:u1 %l3:u1* + j b6() + +block b5: + %b5:i0:unit = store 0:u1 %l3:u1* + j b6() + +block b6: + %b6:i0:u1 = load %l3:u1* + br %b6:i0:u1, b1(), b2() +} diff --git a/examples/ir2/sizeof2.ir b/examples/ir2/sizeof2.ir new file mode 100644 index 0000000..6157019 --- /dev/null +++ b/examples/ir2/sizeof2.ir @@ -0,0 +1,56 @@ + +fun i32 @main () { +init: + bid: b0 + allocations: + %l0:i8:a + %l1:i8:b + %l2:[10 x i64]:c + %l3:u1:t0 + %l4:u1:t1 + +block b0: + %b0:i0:i8 = typecast 42:i32 to i8 + %b0:i1:unit = nop + %b0:i2:i8 = typecast 5:i32 to i8 + %b0:i3:unit = nop + %b0:i4:u64 = typecast 1:i32 to u64 + %b0:i5:u1 = cmp eq 1:u64 %b0:i4:u64 + br %b0:i5:u1, b4(), b5() + +block b1: + %b1:i0:u64 = typecast 80:i32 to u64 + %b1:i1:u1 = cmp eq 80:u64 %b1:i0:u64 + %b1:i2:unit = nop + j b3(%b1:i1:u1) + +block b2: + %b2:i0:unit = nop + j b3(0:u1) + +block b3: + %b3:p0:u1:t1 + %b3:i0:unit = nop + %b3:i1:i32 = typecast %b3:p0:u1 to i32 + ret %b3:i1:i32 + +block b4: + %b4:i0:unit = nop + %b4:i1:unit = nop + %b4:i2:i32 = typecast %b0:i0:i8 to i32 + %b4:i3:i32 = typecast %b0:i2:i8 to i32 + %b4:i4:i32 = add %b4:i2:i32 %b4:i3:i32 + %b4:i5:u64 = typecast 4:i32 to u64 + %b4:i6:u1 = cmp eq 4:u64 %b4:i5:u64 + %b4:i7:unit = nop + j b6(%b4:i6:u1) + +block b5: + %b5:i0:unit = nop + j b6(0:u1) + +block b6: + %b6:p0:u1:t0 + %b6:i0:unit = nop + br %b6:p0:u1, b1(), b2() +} diff --git a/examples/ir3/sizeof2.ir b/examples/ir3/sizeof2.ir new file mode 100644 index 0000000..01ac869 --- /dev/null +++ b/examples/ir3/sizeof2.ir @@ -0,0 +1,37 @@ + +fun i32 @main () { +init: + bid: b0 + allocations: + + +block b0: + %b0:i0:u64 = typecast 1:i32 to u64 + %b0:i1:u1 = cmp eq 1:u64 %b0:i0:u64 + br %b0:i1:u1, b4(), b5() + +block b1: + %b1:i0:u64 = typecast 80:i32 to u64 + %b1:i1:u1 = cmp eq 80:u64 %b1:i0:u64 + j b3(%b1:i1:u1) + +block b2: + j b3(0:u1) + +block b3: + %b3:p0:u1:t1 + %b3:i0:i32 = typecast %b3:p0:u1 to i32 + ret %b3:i0:i32 + +block b4: + %b4:i0:u64 = typecast 4:i32 to u64 + %b4:i1:u1 = cmp eq 4:u64 %b4:i0:u64 + j b6(%b4:i1:u1) + +block b5: + j b6(0:u1) + +block b6: + %b6:p0:u1:t0 + br %b6:p0:u1, b1(), b2() +} diff --git a/examples/ir4/sizeof2.ir b/examples/ir4/sizeof2.ir new file mode 100644 index 0000000..01ac869 --- /dev/null +++ b/examples/ir4/sizeof2.ir @@ -0,0 +1,37 @@ + +fun i32 @main () { +init: + bid: b0 + allocations: + + +block b0: + %b0:i0:u64 = typecast 1:i32 to u64 + %b0:i1:u1 = cmp eq 1:u64 %b0:i0:u64 + br %b0:i1:u1, b4(), b5() + +block b1: + %b1:i0:u64 = typecast 80:i32 to u64 + %b1:i1:u1 = cmp eq 80:u64 %b1:i0:u64 + j b3(%b1:i1:u1) + +block b2: + j b3(0:u1) + +block b3: + %b3:p0:u1:t1 + %b3:i0:i32 = typecast %b3:p0:u1 to i32 + ret %b3:i0:i32 + +block b4: + %b4:i0:u64 = typecast 4:i32 to u64 + %b4:i1:u1 = cmp eq 4:u64 %b4:i0:u64 + j b6(%b4:i1:u1) + +block b5: + j b6(0:u1) + +block b6: + %b6:p0:u1:t0 + br %b6:p0:u1, b1(), b2() +}