https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104595

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
IR in the bool case:
  _1 = pb[i_13];
  iftmp.0_7 = a[i_13];
  iftmp.0_6 = b[i_13];
  iftmp.0_3 = _1 ? iftmp.0_7 : iftmp.0_6;
  c[i_13] = iftmp.0_3;

IR in the char case:
  _1 = pc[i_13];
  iftmp.1_7 = a[i_13];
  iftmp.1_6 = b[i_13];
  iftmp.1_3 = _1 == 0 ? iftmp.1_6 : iftmp.1_7;
  c[i_13] = iftmp.1_3;


details in the bool case:

/app/example.cpp:12:21: note:   ==> examining statement: iftmp.0_3 = _1 ?
iftmp.0_7 : iftmp.0_6;
/app/example.cpp:12:21: note:   vect_is_simple_use: operand pb[i_13], type of
def: internal
/app/example.cpp:12:21: note:   vect_is_simple_use: vectype vector(32) unsigned
char
/app/example.cpp:11:6: missed:   not vectorized: relevant stmt not supported:
iftmp.0_3 = _1 ? iftmp.0_7 : iftmp.0_6;

details in the char case:
/app/example.cpp:17:21: note:   ==> examining statement: iftmp.1_3 = _1 == 0 ?
iftmp.1_6 : iftmp.1_7;
/app/example.cpp:17:21: note:   vect_is_simple_use: operand pc[i_13], type of
def: internal
/app/example.cpp:17:21: note:   vect_is_simple_use: vectype vector(32) char
/app/example.cpp:17:21: note:   vect_is_simple_use: operand b[i_13], type of
def: internal
/app/example.cpp:17:21: note:   vect_is_simple_use: vectype vector(32) char
/app/example.cpp:17:21: note:   vect_is_simple_use: operand a[i_13], type of
def: internal
/app/example.cpp:17:21: note:   vect_is_simple_use: vectype vector(32) char
/app/example.cpp:17:21: note:   vect_model_simple_cost: inside_cost = 4,
prologue_cost = 4 .

It should not be too hard to if we had _1 ? : to change it to _1 != 0 right?

Reply via email to