Files
cs420/examples/ir2/cond_and_loop.ir
2025-04-11 13:20:10 +09:00

128 lines
2.3 KiB
Plaintext

var i32 @nonce = 1
fun i32 @main () {
init:
bid: b0
allocations:
%l0:i32:i
%l1:i32:p
%l2:i32:q
%l3:i32:r
%l4:i32:t0
%l5:i32:t1
%l6:i32:loop_num
%l7:i32:t2
block b0:
%b0:i0:unit = nop
%b0:i1:unit = nop
%b0:i2:u1 = cmp ne 0:i32 0:i32
br %b0:i2:u1, b1(), b2()
block b1:
%b1:i0:unit = nop
%b1:i1:unit = nop
%b1:i2:u1 = cmp gt 2:i32 5:i32
br %b1:i2:u1, b4(), b5()
block b2:
%b2:i0:unit = nop
%b2:i1:unit = nop
%b2:i2:i32 = add 2:i32 5:i32
%b2:i3:unit = nop
j b3(2:i32, undef:i32, %b2:i2:i32)
block b3:
%b3:p0:i32:p
%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, undef:i32)
block b4:
%b4:i0:unit = nop
%b4:i1:i32 = sub 2:i32 2:i32
%b4:i2:unit = nop
%b4:i3:unit = nop
j b6(%b4:i1:i32, %b4:i1:i32)
block b5:
%b5:i0:unit = nop
%b5:i1:i32 = add 2:i32 2:i32
%b5:i2:unit = nop
%b5:i3:unit = nop
j b6(%b5:i1:i32, %b5:i1:i32)
block b6:
%b6:p0:i32:p
%b6:p1:i32:t0
%b6:i0:unit = nop
%b6:i1:unit = nop
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
br %b8:i2:u1, b9(), b11()
block b9:
%b9:i0:unit = nop
%b9:i1:i32 = mod %b8:p0:i32 2:i32
%b9:i2:u1 = cmp ne %b9:i1:i32 0:i32
br %b9:i2:u1, b12(), b13()
block b11:
%b11:i0:unit = nop
ret %b8:p1:i32
block b12:
%b12:i0:unit = nop
%b12:i1:unit = nop
%b12:i2:i32 = add %b8:p1:i32 5:i32
%b12:i3:unit = nop
j b14(%b12:i2:i32)
block b13:
%b13:i0:unit = nop
%b13:i1:unit = nop
%b13:i2:i32 = add %b8:p1:i32 %b3:p2:i32
%b13:i3:unit = nop
j b14(%b13:i2:i32)
block b14:
%b14:p0:i32:p
%b14:i0:unit = nop
%b14:i1:i32 = mod %b8:p0:i32 2:i32
%b14:i2:u1 = cmp ne %b14:i1:i32 0:i32
br %b14:i2:u1, b15(), b16()
block b15:
%b15:i0:unit = nop
%b15:i1:i32 = add %b8:p0:i32 2:i32
%b15:i2:unit = nop
%b15:i3:unit = nop
j b17(%b15:i1:i32, %b15:i1:i32)
block b16:
%b16:i0:unit = nop
%b16:i1:i32 = add %b8:p0:i32 1:i32
%b16:i2:unit = nop
%b16:i3:unit = nop
j b17(%b16:i1:i32, %b16:i1:i32)
block b17:
%b17:p0:i32:i
%b17:p1:i32:t2
%b17:i0:unit = nop
j b8(%b17:p0:i32, %b14:p0:i32, %b17:p1:i32)
}