mirror of
https://github.com/danog/ir.git
synced 2024-11-30 04:39:43 +01:00
194 lines
4.5 KiB
Plaintext
194 lines
4.5 KiB
Plaintext
--TEST--
|
|
015: Schedule for a larger loop (Figure 9 from "Global Code Motion Global Value Numbering" by Cliff Click)
|
|
--ARGS--
|
|
--dump-cfg --save --dump-after-schedule
|
|
--CODE--
|
|
{
|
|
uintptr_t c_1 = 0;
|
|
bool c_2 = 0;
|
|
bool c_3 = 1;
|
|
int32_t c_4 = 1;
|
|
int32_t c_5 = 4;
|
|
l_1 = START(l_54);
|
|
int32_t d_2 = PARAM(l_1, "a", 0);
|
|
int32_t d_3 = PARAM(l_1, "b", 1);
|
|
int32_t d_4 = PARAM(l_1, "c", 2);
|
|
int32_t d_5 = PARAM(l_1, "d", 3);
|
|
int32_t d_6 = PARAM(l_1, "l", 4);
|
|
int32_t d_7 = PARAM(l_1, "m", 5);
|
|
int32_t d_8 = PARAM(l_1, "s", 6);
|
|
int32_t d_9 = PARAM(l_1, "t", 7);
|
|
int32_t d_10 = PARAM(l_1, "cond1", 8);
|
|
int32_t d_11 = PARAM(l_1, "cond2", 9);
|
|
l_12 = END(l_1);
|
|
l_13 = LOOP_BEGIN(l_12, l_42);
|
|
int32_t d_14 = PHI(l_13, d_2, d_32);
|
|
int32_t d_15 = PHI(l_13, d_5, d_33);
|
|
int32_t d_16 = PHI(l_13, d_7, d_35);
|
|
int32_t d_17 = PHI(l_13, d_8, d_36);
|
|
int32_t d_18 = PHI(l_13, d_9, d_37);
|
|
l_19 = IF(l_13, d_10);
|
|
l_20 = IF_TRUE(l_19);
|
|
int32_t d_21 = MUL(d_4, d_3);
|
|
int32_t d_22 = ADD(d_21, c_5);
|
|
int32_t d_23 = COPY(d_4);
|
|
l_24 = END(l_20);
|
|
l_25 = IF_FALSE(l_19);
|
|
int32_t d_26 = COPY(d_4);
|
|
int32_t d_27 = MUL(d_26, d_3);
|
|
int32_t d_28 = MUL(d_14, d_3);
|
|
int32_t d_29 = ADD(d_28, c_4);
|
|
l_30 = END(l_25);
|
|
l_31 = MERGE(l_24, l_30);
|
|
int32_t d_32 = PHI(l_31, d_23, d_14);
|
|
int32_t d_33 = PHI(l_31, d_15, d_26);
|
|
int32_t d_34 = PHI(l_31, d_21, d_27);
|
|
int32_t d_35 = PHI(l_31, d_22, d_16);
|
|
int32_t d_36 = PHI(l_31, d_17, d_28);
|
|
int32_t d_37 = PHI(l_31, d_18, d_29);
|
|
int32_t d_38 = MUL(d_32, d_3);
|
|
int32_t d_39 = ADD(d_38, c_4);
|
|
l_40 = IF(l_31, d_11);
|
|
l_41 = IF_TRUE(l_40);
|
|
l_42 = LOOP_END(l_41, l_13);
|
|
l_43 = IF_FALSE(l_40);
|
|
l_44 = LOOP_EXIT(l_43, l_13);
|
|
l_45 = BEGIN(l_44);
|
|
int32_t d_46 = ADD(d_32, d_3);
|
|
int32_t d_47 = ADD(d_46, d_4);
|
|
int32_t d_48 = ADD(d_47, d_33);
|
|
int32_t d_49 = ADD(d_48, d_34);
|
|
int32_t d_50 = ADD(d_49, d_35);
|
|
int32_t d_51 = ADD(d_50, d_36);
|
|
int32_t d_52 = ADD(d_51, d_37);
|
|
int32_t d_53 = ADD(d_52, d_39);
|
|
l_54 = RETURN(l_45, d_53);
|
|
}
|
|
--EXPECT--
|
|
{
|
|
uintptr_t c_1 = 0;
|
|
bool c_2 = 0;
|
|
bool c_3 = 1;
|
|
int32_t c_4 = 1;
|
|
int32_t c_5 = 4;
|
|
l_1 = START(l_50);
|
|
int32_t d_2 = PARAM(l_1, "a", 0);
|
|
int32_t d_3 = PARAM(l_1, "b", 1);
|
|
int32_t d_4 = PARAM(l_1, "c", 2);
|
|
int32_t d_5 = PARAM(l_1, "d", 3);
|
|
int32_t d_6 = PARAM(l_1, "l", 4);
|
|
int32_t d_7 = PARAM(l_1, "m", 5);
|
|
int32_t d_8 = PARAM(l_1, "s", 6);
|
|
int32_t d_9 = PARAM(l_1, "t", 7);
|
|
int32_t d_10 = PARAM(l_1, "cond1", 8);
|
|
int32_t d_11 = PARAM(l_1, "cond2", 9);
|
|
int32_t d_12 = MUL(d_4, d_3);
|
|
int32_t d_13 = ADD(d_12, c_5);
|
|
l_14 = END(l_1);
|
|
l_15 = LOOP_BEGIN(l_14, l_36);
|
|
int32_t d_16 = PHI(l_15, d_2, d_29);
|
|
int32_t d_17 = PHI(l_15, d_5, d_30);
|
|
int32_t d_18 = PHI(l_15, d_7, d_31);
|
|
int32_t d_19 = PHI(l_15, d_8, d_32);
|
|
int32_t d_20 = PHI(l_15, d_9, d_33);
|
|
l_21 = IF(l_15, d_10);
|
|
l_22 = IF_TRUE(l_21);
|
|
l_23 = END(l_22);
|
|
l_24 = IF_FALSE(l_21);
|
|
int32_t d_25 = MUL(d_16, d_3);
|
|
int32_t d_26 = ADD(d_25, c_4);
|
|
l_27 = END(l_24);
|
|
l_28 = MERGE(l_23, l_27);
|
|
int32_t d_29 = PHI(l_28, d_4, d_16);
|
|
int32_t d_30 = PHI(l_28, d_17, d_4);
|
|
int32_t d_31 = PHI(l_28, d_13, d_18);
|
|
int32_t d_32 = PHI(l_28, d_19, d_25);
|
|
int32_t d_33 = PHI(l_28, d_20, d_26);
|
|
l_34 = IF(l_28, d_11);
|
|
l_35 = IF_TRUE(l_34);
|
|
l_36 = LOOP_END(l_35, l_15);
|
|
l_37 = IF_FALSE(l_34);
|
|
l_38 = LOOP_EXIT(l_37, l_15);
|
|
l_39 = BEGIN(l_38);
|
|
int32_t d_40 = MUL(d_29, d_3);
|
|
int32_t d_41 = ADD(d_40, c_4);
|
|
int32_t d_42 = ADD(d_29, d_3);
|
|
int32_t d_43 = ADD(d_42, d_4);
|
|
int32_t d_44 = ADD(d_43, d_30);
|
|
int32_t d_45 = ADD(d_44, d_12);
|
|
int32_t d_46 = ADD(d_45, d_31);
|
|
int32_t d_47 = ADD(d_46, d_32);
|
|
int32_t d_48 = ADD(d_47, d_33);
|
|
int32_t d_49 = ADD(d_48, d_41);
|
|
l_50 = RETURN(l_39, d_49);
|
|
}
|
|
{ # CFG
|
|
BB1:
|
|
start=1
|
|
end=14
|
|
successors(1) [BB2]
|
|
dom_depth=0
|
|
dom_children [BB2]
|
|
BB2:
|
|
start=15
|
|
end=21
|
|
successors(2) [BB3, BB4]
|
|
predecessors(2) [BB1, BB6]
|
|
dom_parent=BB1
|
|
dom_depth=1
|
|
dom_children [BB3, BB4, BB5]
|
|
LOOP_HEADER
|
|
loop_depth=1
|
|
BB3:
|
|
start=22
|
|
end=23
|
|
successors(1) [BB5]
|
|
predecessors(1) [BB2]
|
|
dom_parent=BB2
|
|
dom_depth=2
|
|
loop_header=BB2
|
|
loop_depth=1
|
|
BB4:
|
|
start=24
|
|
end=27
|
|
successors(1) [BB5]
|
|
predecessors(1) [BB2]
|
|
dom_parent=BB2
|
|
dom_depth=2
|
|
loop_header=BB2
|
|
loop_depth=1
|
|
BB5:
|
|
start=28
|
|
end=34
|
|
successors(2) [BB6, BB7]
|
|
predecessors(2) [BB3, BB4]
|
|
dom_parent=BB2
|
|
dom_depth=2
|
|
dom_children [BB6, BB7]
|
|
loop_header=BB2
|
|
loop_depth=1
|
|
BB6:
|
|
start=35
|
|
end=36
|
|
successors(1) [BB2]
|
|
predecessors(1) [BB5]
|
|
dom_parent=BB5
|
|
dom_depth=3
|
|
loop_header=BB2
|
|
loop_depth=1
|
|
BB7:
|
|
start=37
|
|
end=38
|
|
successors(1) [BB8]
|
|
predecessors(1) [BB5]
|
|
dom_parent=BB5
|
|
dom_depth=3
|
|
dom_children [BB8]
|
|
BB8:
|
|
start=39
|
|
end=50
|
|
predecessors(1) [BB7]
|
|
dom_parent=BB7
|
|
dom_depth=4
|
|
}
|