[lno] [RFC] if-conversion and auto vectorizer
Devang Patel
dpatel@apple.com
Fri Mar 12 18:45:00 GMT 2004
OK. So far I have coded transformation to transform
bar ()
{
int A[N+1], B[N+1], C[N+1], D[N+1];
int i;
for (i = 1; i<N; i++)
{
if (A[i] > 0)
{
A[i] = A[i] + C[i];
B[i] = A[i] + 1;
}
else
{
A[i] = D[i];
B[i] = D[i] + 1;
}
}
ibar(A);
ibar(B);
}
into :
bar ()
{
int i;
int D[17];
int C[17];
int B[17];
int A[17];
int T.5;
int T.4;
int T.3;
int T.2;
int T.1;
int T.0;
# BLOCK 0
# PRED: ENTRY [100.0%] (fallthru,exec)
# SUCC: 1 [100.0%] (fallthru,exec)
# BLOCK 1
# PRED: 6 [100.0%] (fallthru) 0 [100.0%] (fallthru,exec)
# i_1 = PHI <1(0), i_15(6)>;
<L0>:;
T.0_3 = if (1)
{
A[i_1];
};
if (T.0_3 > 0) goto <L1>; else goto <L2>;
# SUCC: 3 [21.0%] (false,exec) 2 [79.0%] (true,exec)
# BLOCK 2
# PRED: 1 [79.0%] (true,exec)
<L1>:;
T.1_9 = if (1 && T.0_3 > 0)
{
C[i_1];
};
T.2_10 = if (1 && T.0_3 > 0)
{
T.0_3 + T.1_9;
};
A[i_1] = if (1 && T.0_3 > 0)
{
T.2_10
};
T.3_12 = if (1 && T.0_3 > 0)
{
T.2_10 + 1;
};
B[i_1] = if (1 && T.0_3 > 0)
{
T.3_12
};
goto <bb 4> (<L3>);
# SUCC: 4 [100.0%] (fallthru,exec)
# BLOCK 3
# PRED: 1 [21.0%] (false,exec)
<L2>:;
T.4_5 = if (1 && !(T.0_3 > 0))
{
D[i_1];
};
A[i_1] = if (1 && !(T.0_3 > 0))
{
T.4_5
};
T.5_7 = if (1 && !(T.0_3 > 0))
{
T.4_5 + 1;
};
B[i_1] = if (1 && !(T.0_3 > 0))
{
T.5_7
};
# SUCC: 4 [100.0%] (fallthru,exec)
# BLOCK 4
# PRED: 3 [100.0%] (fallthru,exec) 2 [100.0%] (fallthru,exec)
<L3>:;
i_15 = i_1 + 1;
if (i_15 <= 15) goto <L8>; else goto <L5>;
# SUCC: 5 [11.0%] (false,exec) 6 [89.0%] (true,exec)
# BLOCK 6
# PRED: 4 [89.0%] (true,exec)
<L8>:;
goto <bb 1> (<L0>);
# SUCC: 1 [100.0%] (fallthru)
# BLOCK 5
# PRED: 4 [11.0%] (false,exec)
<L5>:;
ibar (&A);
ibar (&B);
return;
# SUCC: EXIT [100.0%]
}
I spent lot of time unnecessary to create super block inside loop by
merging block 2 and 3 into block 1.
If vectorizer can not vectorize this loop then it will be reverted to
original form using loop versioning. Am I on the right track ?
Thanks,
--
Devang
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tree_if_conv.ver_0.diff.gz
Type: application/x-gzip
Size: 4637 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20040312/59d1dfc7/attachment.bin>
-------------- next part --------------
More information about the Gcc
mailing list