diff --git a/examples/ir3/cond_and_loop.ir b/examples/ir3/cond_and_loop.ir index 9d97c35..bfa39f6 100644 --- a/examples/ir3/cond_and_loop.ir +++ b/examples/ir3/cond_and_loop.ir @@ -68,14 +68,13 @@ block b14: block b15: %b15:i0:i32 = add %b8:p0:i32 2:i32 - j b17(%b15:i0:i32, %b15:i0:i32) + j b17(%b15:i0:i32) block b16: %b16:i0:i32 = add %b8:p0:i32 1:i32 - j b17(%b16:i0:i32, %b16:i0:i32) + j b17(%b16:i0:i32) block b17: %b17:p0:i32:i - %b17:p1:i32:t2 j b8(%b17:p0:i32, %b14:p0:i32) } diff --git a/examples/ir4/cond_and_loop.ir b/examples/ir4/cond_and_loop.ir index 7ee3c90..8d92829 100644 --- a/examples/ir4/cond_and_loop.ir +++ b/examples/ir4/cond_and_loop.ir @@ -68,14 +68,13 @@ block b14: block b15: %b15:i0:i32 = add %b8:p0:i32 2:i32 - j b17(%b15:i0:i32, %b15:i0:i32) + j b17(%b15:i0:i32) block b16: %b16:i0:i32 = add %b8:p0:i32 1:i32 - j b17(%b16:i0:i32, %b16:i0:i32) + j b17(%b16:i0:i32) block b17: %b17:p0:i32:i - %b17:p1:i32:t2 j b8(%b17:p0:i32, %b14:p0:i32) } diff --git a/examples/opt/complete_cond.ir b/examples/opt/complete_cond.ir index bd3f54f..7c6a51f 100644 --- a/examples/opt/complete_cond.ir +++ b/examples/opt/complete_cond.ir @@ -1,4 +1,3 @@ - fun i32 @func_0 () { init: bid: b0 @@ -155,7 +154,7 @@ init: block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 - br %b0:i0:u1, b3(1:i32), b2() + br %b0:i0:u1, b4(), b5() block b2: %b2:i0:u1 = cmp ne 1:i32 0:i32 @@ -167,6 +166,12 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b3(1:i32), b2() + +block b5: + br %b0:i0:u1, b3(1:i32), b2() + block b30: %b30:p0:i32:t11 j b3(%b30:p0:i32) @@ -508,10 +513,6 @@ block b0: block b1: br %b0:i0:u1, b21(1:i32), b21(0:i32) -block b2: - %b2:i0:u1 = cmp ne 1:i32 0:i32 - br %b2:i0:u1, b33(0:i32), b33(1:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 0:i32 @@ -521,7 +522,7 @@ block b3: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b1(), b3(0:i32) block b9: %b9:p0:i32:t0 @@ -536,10 +537,6 @@ block b21: %b21:p0:i32:t4 %b21:i0:u1 = cmp ne %b21:p0:i32 0:i32 br %b21:i0:u1, b18(1:i32), b18(0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(0:i32) } fun i32 @func_17 () { @@ -890,7 +887,7 @@ block b0: br %b0:i0:u1, b9(1:i32), b9(0:i32) block b1: - br %b6:p1:u1, b21(1:i32), b21(0:i32) + br %b6:p0:u1, b21(1:i32), b21(0:i32) block b3: %b3:p0:i32:t12 @@ -900,16 +897,15 @@ block b3: block b4: %b4:i0:u1 = cmp ne 0:i32 0:i32 - j b6(0:i32, %b4:i0:u1) + j b6(%b4:i0:u1) block b5: %b5:i0:u1 = cmp ne 0:i32 0:i32 - j b6(0:i32, %b5:i0:u1) + j b6(%b5:i0:u1) block b6: - %b6:p0:i32:t3 - %b6:p1:u1 - br %b6:p1:u1, b1(), b3(1:i32) + %b6:p0:u1 + br %b6:p0:u1, b1(), b3(1:i32) block b9: %b9:p0:i32:t0 @@ -917,10 +913,10 @@ block b9: br %b9:i0:u1, b4(), b5() block b16: - br %b6:p1:u1, b24(1:i32), b24(0:i32) + br %b6:p0:u1, b24(1:i32), b24(0:i32) block b17: - br %b6:p1:u1, b27(0:i32), b27(1:i32) + br %b6:p0:u1, b27(0:i32), b27(1:i32) block b18: %b18:p0:i32:t7 @@ -1523,9 +1519,6 @@ block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 br %b0:i0:u1, b6(0:i32), b5() -block b1: - br %b0:i0:u1, b21(0:i32), b21(1:i32) - block b2: %b2:i0:u1 = cmp ne 1:i32 0:i32 br %b2:i0:u1, b33(1:i32), b33(0:i32) @@ -1542,16 +1535,12 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b3(0:i32), b2() block b15: %b15:p0:i32:t2 j b6(%b15:p0:i32) -block b21: - %b21:p0:i32:t4 - j b3(0:i32) - block b29: br %b0:i0:u1, b39(0:i32), b39(1:i32) @@ -2152,9 +2141,16 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b9: %b9:p0:i32:t0 - br %b0:i0:u1, b1(), b2() + %b9:i0:u1 = cmp ne %b9:p0:i32 0:i32 + br %b9:i0:u1, b4(), b5() block b16: br %b0:i0:u1, b24(0:i32), b24(1:i32) @@ -2635,12 +2631,6 @@ block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 br %b0:i0:u1, b9(0:i32), b9(1:i32) -block b1: - br %b0:i0:u1, b21(1:i32), b21(0:i32) - -block b2: - br %b0:i0:u1, b33(0:i32), b33(1:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 1:i32 @@ -2654,7 +2644,7 @@ block b4: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b3(1:i32), b3(0:i32) block b9: %b9:p0:i32:t0 @@ -2664,14 +2654,6 @@ block b9: block b12: %b12:p0:i32:t1 j b6(%b12:p0:i32) - -block b21: - %b21:p0:i32:t4 - j b3(1:i32) - -block b33: - %b33:p0:i32:t8 - j b3(0:i32) } fun i32 @func_46 () { @@ -2688,9 +2670,6 @@ block b1: %b1:i0:u1 = cmp ne 0:i32 0:i32 br %b1:i0:u1, b21(1:i32), b21(0:i32) -block b2: - br %b0:i0:u1, b33(1:i32), b33(0:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 1:i32 @@ -2703,7 +2682,7 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b1(), b3(1:i32) block b15: %b15:p0:i32:t2 @@ -2724,10 +2703,6 @@ block b21: block b27: %b27:p0:i32:t6 j b18(%b27:p0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(1:i32) } fun i32 @func_47 () { @@ -2753,9 +2728,16 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b9: %b9:p0:i32:t0 - br %b0:i0:u1, b1(), b2() + %b9:i0:u1 = cmp ne %b9:p0:i32 0:i32 + br %b9:i0:u1, b4(), b5() block b18: %b18:p0:i32:t7 @@ -2796,9 +2778,16 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b9: %b9:p0:i32:t0 - br %b0:i0:u1, b1(), b2() + %b9:i0:u1 = cmp ne %b9:p0:i32 0:i32 + br %b9:i0:u1, b4(), b5() block b16: br %b1:i0:u1, b24(1:i32), b24(0:i32) @@ -2995,10 +2984,6 @@ block b1: %b1:i0:u1 = cmp ne 1:i32 0:i32 br %b1:i0:u1, b21(0:i32), b21(1:i32) -block b2: - %b2:i0:u1 = cmp ne 1:i32 0:i32 - br %b2:i0:u1, b33(0:i32), b33(1:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 1:i32 @@ -3011,7 +2996,7 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b1(), b3(1:i32) block b9: %b9:p0:i32:t0 @@ -3037,10 +3022,6 @@ block b21: block b27: %b27:p0:i32:t6 j b18(%b27:p0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(1:i32) } fun i32 @func_51 () { @@ -3766,9 +3747,6 @@ block b0: %b0:i1:u1 = cmp ne 1:i32 0:i32 br %b0:i1:u1, b6(0:i32), b6(1:i32) -block b1: - br %b0:i0:u1, b21(0:i32), b21(1:i32) - block b2: br %b0:i0:u1, b30(1:i32), b29() @@ -3781,11 +3759,7 @@ block b3: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() - -block b21: - %b21:p0:i32:t4 - j b3(1:i32) + br %b6:i0:u1, b3(1:i32), b2() block b29: br %b0:i0:u1, b39(1:i32), b39(0:i32) @@ -3941,7 +3915,7 @@ init: block b0: %b0:i0:u1 = cmp ne 1:i32 0:i32 - br %b0:i0:u1, b1(), b2() + br %b0:i0:u1, b4(), b5() block b1: %b1:i0:u1 = cmp ne 0:i32 0:i32 @@ -3957,6 +3931,12 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b16: br %b0:i0:u1, b24(0:i32), b24(1:i32) @@ -4149,9 +4129,6 @@ block b0: %b0:i1:u1 = cmp ne 1:i32 0:i32 br %b0:i1:u1, b6(1:i32), b5() -block b1: - br %b0:i0:u1, b21(1:i32), b21(0:i32) - block b2: br %b0:i0:u1, b33(1:i32), b33(0:i32) @@ -4167,16 +4144,12 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b3(1:i32), b2() block b15: %b15:p0:i32:t2 j b6(%b15:p0:i32) -block b21: - %b21:p0:i32:t4 - j b3(1:i32) - block b29: br %b0:i1:u1, b39(0:i32), b39(1:i32) @@ -4400,7 +4373,7 @@ init: block b0: %b0:i0:u1 = cmp ne 1:i32 0:i32 %b0:i1:u1 = cmp ne 0:i32 0:i32 - br %b0:i1:u1, b3(0:i32), b2() + br %b0:i1:u1, b4(), b5() block b2: br %b0:i0:u1, b33(0:i32), b33(1:i32) @@ -4411,6 +4384,12 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i1:u1, b3(0:i32), b2() + +block b5: + br %b0:i1:u1, b3(0:i32), b2() + block b29: br %b0:i1:u1, b39(0:i32), b39(1:i32) @@ -4720,9 +4699,16 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b9: %b9:p0:i32:t0 - br %b0:i0:u1, b1(), b2() + %b9:i0:u1 = cmp ne %b9:p0:i32 0:i32 + br %b9:i0:u1, b4(), b5() block b16: br %b0:i0:u1, b24(1:i32), b24(0:i32) @@ -4976,9 +4962,16 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b9: %b9:p0:i32:t0 - br %b0:i0:u1, b1(), b2() + %b9:i0:u1 = cmp ne %b9:p0:i32 0:i32 + br %b9:i0:u1, b4(), b5() block b18: %b18:p0:i32:t7 @@ -5349,9 +5342,6 @@ block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 br %b0:i0:u1, b9(1:i32), b9(0:i32) -block b1: - br %b0:i0:u1, b21(1:i32), b21(0:i32) - block b2: %b2:i0:u1 = cmp ne 1:i32 0:i32 br %b2:i0:u1, b30(1:i32), b29() @@ -5368,7 +5358,7 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b3(1:i32), b2() block b9: %b9:p0:i32:t0 @@ -5379,10 +5369,6 @@ block b15: %b15:p0:i32:t2 j b6(%b15:p0:i32) -block b21: - %b21:p0:i32:t4 - j b3(1:i32) - block b29: br %b2:i0:u1, b39(1:i32), b39(0:i32) @@ -5488,10 +5474,6 @@ block b1: %b1:i0:u1 = cmp ne 1:i32 0:i32 br %b1:i0:u1, b21(0:i32), b21(1:i32) -block b2: - %b2:i0:u1 = cmp ne 1:i32 0:i32 - br %b2:i0:u1, b33(0:i32), b33(1:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 1:i32 @@ -5505,7 +5487,7 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b1(), b3(1:i32) block b9: %b9:p0:i32:t0 @@ -5538,10 +5520,6 @@ block b24: block b27: %b27:p0:i32:t6 j b18(%b27:p0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(1:i32) } fun i32 @func_87 () { @@ -5553,20 +5531,23 @@ init: block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 %b0:i1:u1 = cmp ne 1:i32 0:i32 - br %b0:i0:u1, b1(), b2() + br %b0:i1:u1, b4(), b5() block b1: br %b0:i0:u1, b21(1:i32), b21(0:i32) -block b2: - br %b0:i1:u1, b33(1:i32), b33(0:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 1:i32 %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b3(1:i32) + +block b5: + br %b0:i0:u1, b1(), b3(1:i32) + block b17: br %b0:i0:u1, b27(1:i32), b27(0:i32) @@ -5582,10 +5563,6 @@ block b21: block b27: %b27:p0:i32:t6 j b18(%b27:p0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(1:i32) } fun i32 @func_88 () { @@ -5754,7 +5731,7 @@ init: block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 %b0:i1:u1 = cmp ne 1:i32 0:i32 - br %b0:i1:u1, b3(0:i32), b2() + br %b0:i1:u1, b4(), b5() block b2: br %b0:i1:u1, b30(0:i32), b29() @@ -5765,6 +5742,12 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i1:u1, b3(0:i32), b2() + +block b5: + br %b0:i1:u1, b3(0:i32), b2() + block b29: br %b0:i0:u1, b39(0:i32), b39(1:i32) @@ -5944,7 +5927,7 @@ init: block b0: %b0:i0:u1 = cmp ne 0:i32 0:i32 %b0:i1:u1 = cmp ne 1:i32 0:i32 - br %b0:i0:u1, b1(), b2() + br %b0:i1:u1, b4(), b5() block b1: br %b0:i1:u1, b21(1:i32), b21(0:i32) @@ -5958,6 +5941,12 @@ block b3: %b3:i1:i32 = typecast %b3:i0:u1 to i32 ret %b3:i1:i32 +block b4: + br %b0:i0:u1, b1(), b2() + +block b5: + br %b0:i0:u1, b1(), b2() + block b17: br %b0:i1:u1, b27(1:i32), b27(0:i32) @@ -6310,16 +6299,15 @@ block b3: block b4: %b4:i0:u1 = cmp ne 0:i32 0:i32 - j b6(0:i32, %b4:i0:u1) + j b6(%b4:i0:u1) block b5: %b5:i0:u1 = cmp ne 0:i32 0:i32 - j b6(0:i32, %b5:i0:u1) + j b6(%b5:i0:u1) block b6: - %b6:p0:i32:t3 - %b6:p1:u1 - br %b6:p1:u1, b1(), b2() + %b6:p0:u1 + br %b6:p0:u1, b1(), b2() block b9: %b9:p0:i32:t0 @@ -6368,10 +6356,6 @@ block b1: %b1:i0:u1 = cmp ne 1:i32 0:i32 br %b1:i0:u1, b21(0:i32), b21(1:i32) -block b2: - %b2:i0:u1 = cmp ne 1:i32 0:i32 - br %b2:i0:u1, b33(1:i32), b33(0:i32) - block b3: %b3:p0:i32:t12 %b3:i0:u1 = cmp eq %b3:p0:i32 0:i32 @@ -6387,7 +6371,7 @@ block b5: block b6: %b6:p0:i32:t3 %b6:i0:u1 = cmp ne %b6:p0:i32 0:i32 - br %b6:i0:u1, b1(), b2() + br %b6:i0:u1, b1(), b3(0:i32) block b9: %b9:p0:i32:t0 @@ -6417,10 +6401,6 @@ block b21: block b24: %b24:p0:i32:t5 j b18(%b24:p0:i32) - -block b33: - %b33:p0:i32:t8 - j b3(0:i32) } fun i32 @func_99 () { diff --git a/examples/opt/cond_and_loop.ir b/examples/opt/cond_and_loop.ir index 32a559f..c23dfeb 100644 --- a/examples/opt/cond_and_loop.ir +++ b/examples/opt/cond_and_loop.ir @@ -66,14 +66,13 @@ block b14: block b15: %b15:i0:i32 = add %b8:p0:i32 2:i32 - j b17(%b15:i0:i32, %b15:i0:i32) + j b17(%b15:i0:i32) block b16: %b16:i0:i32 = add %b8:p0:i32 1:i32 - j b17(%b16:i0:i32, %b16:i0:i32) + j b17(%b16:i0:i32) block b17: %b17:p0:i32:i - %b17:p1:i32:t2 j b8(%b17:p0:i32, %b14:p0:i32) }