------- Comment #1 from ubizjak at gmail dot com  2007-06-05 21:04 -------
In _.101t.vect, we have:

  vect_var_.36_43 =  VEC_UNPACK_FLOAT_LO_EXPR < vect_vec_iv_.40_41 > ;
  vect_var_.36_44 =  VEC_UNPACK_FLOAT_HI_EXPR < vect_vec_iv_.40_41 > ;
  D.2004_4 = (double) x_13;
  vect_var_.41_46 = vect_cst_.42_45 / vect_var_.36_43;
  vect_var_.41_47 = vect_cst_.42_45 / vect_var_.36_44;
  D.2005_5 = 1.6e+1 / D.2004_4;
  vect_var_.43_48 =  VEC_PACK_FIX_TRUNC_EXPR < vect_var_.41_46, vect_var_.41_47
> ;
  D.2006_6 = (unsigned int) D.2005_5;

But vectlower2 pass creates:

  vect_var_.36_43 =  VEC_UNPACK_FLOAT_LO_EXPR < vect_vec_iv_.40_41 > ;
  vect_var_.36_44 =  VEC_UNPACK_FLOAT_HI_EXPR < vect_vec_iv_.40_41 > ;
  D.2004_4 = (double) x_13;
  vect_var_.41_46 = vect_cst_.42_45 / vect_var_.36_43;
  vect_var_.41_47 = vect_cst_.42_45 / vect_var_.36_44;
  D.2005_5 = 1.6e+1 / D.2004_4;
  D.2092_24 = BIT_FIELD_REF <vect_var_.41_46, 64, 0>;
  D.2093_65 = BIT_FIELD_REF <vect_var_.41_47, 64, 0>;
  D.2094_66 =  VEC_PACK_FIX_TRUNC_EXPR < D.2092_24, D.2093_65 > ;
  D.2095_67 = BIT_FIELD_REF <vect_var_.41_46, 64, 64>;
  D.2096_68 = BIT_FIELD_REF <vect_var_.41_47, 64, 64>;
  D.2097_69 =  VEC_PACK_FIX_TRUNC_EXPR < D.2095_67, D.2096_68 > ;
  D.2098_70 = VIEW_CONVERT_EXPR<vector unsigned int>({D.2094_66, D.2097_69});
  vect_var_.43_48 = D.2098_70;
  D.2006_6 = (unsigned int) D.2005_5;

I suspect that the code around VEC_PACK_FIX_TRUNC_EXPR is correct.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32216

Reply via email to