------- Comment #5 from spop at gcc dot gnu dot org 2010-03-28 16:35 -------
When defining the missing function like this:
static inline int mid_pred(int a, int b, int c)
{
int t= (a-b)&((a-b)>>31);
a-=t;
b+=t;
b-= (b-c)&((b-c)>>31);
b+= (a-b)&((a-b)>>31);
return b;
}
The vectorization reports: "not vectorized: unsupported use in stmt."
When this function is defined like this:
static inline int mid_pred(int a, int b, int c)
{
if(a>b){
if(c>b){
if(c>a) b=a;
else b=c;
}
}else{
if(b>c){
if(c>a) b=c;
else b=a;
}
}
return b;
}
the vectorizer stops with: "not vectorized: control flow in loop."
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43436