This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

towards reduction part 3/n: what does vec lower pass do to vector shifts?


I'm preparing the third part of the reduction support for mainline,
introducing vector shifts (see
http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01317.html). The vectorizer
generates the following epilog code:

  vect_var_.53_60 = vect_var_.50_59 v>> 64;
  vect_var_.53_61 = vect_var_.50_59 + vect_var_.53_60;
  vect_var_.53_62 = vect_var_.53_61 v>> 32;
  vect_var_.53_63 = vect_var_.53_61 + vect_var_.53_62;
  vect_var_.52_64 = BIT_FIELD_REF <vect_var_.53_63, 32, 96>;

and the next pass, vec_lower2 transforms that into the following:

  D.2057_108 = BIT_FIELD_REF <vect_var_.50_59, 32, 0>;
  D.2058_109 = BIT_FIELD_REF <64, 32, 0>;
  D.2059_110 = D.2057_108 v>> D.2058_109;
  D.2060_111 = BIT_FIELD_REF <vect_var_.50_59, 32, 32>;
  D.2061_112 = BIT_FIELD_REF <64, 32, 32>;
  D.2062_113 = D.2060_111 v>> D.2061_112;
  D.2063_114 = BIT_FIELD_REF <vect_var_.50_59, 32, 64>;
  D.2064_115 = BIT_FIELD_REF <64, 32, 64>;
  D.2065_116 = D.2063_114 v>> D.2064_115;
  D.2066_117 = BIT_FIELD_REF <vect_var_.50_59, 32, 96>;
  D.2067_118 = BIT_FIELD_REF <64, 32, 96>;
  D.2068_119 = D.2066_117 v>> D.2067_118;
  vect_var_.53_60 = {D.2059_110, D.2062_113, D.2065_116, D.2068_119};
  vect_var_.53_61 = vect_var_.50_59 + vect_var_.53_60;
  D.2069_120 = BIT_FIELD_REF <vect_var_.53_61, 32, 0>;
  D.2070_121 = BIT_FIELD_REF <32, 32, 0>;
  D.2071_122 = D.2069_120 v>> D.2070_121;
  D.2072_123 = BIT_FIELD_REF <vect_var_.53_61, 32, 32>;
  D.2073_124 = BIT_FIELD_REF <32, 32, 32>;
  D.2074_125 = D.2072_123 v>> D.2073_124;
  D.2075_126 = BIT_FIELD_REF <vect_var_.53_61, 32, 64>;
  D.2076_127 = BIT_FIELD_REF <32, 32, 64>;
  D.2077_128 = D.2075_126 v>> D.2076_127;
  D.2078_129 = BIT_FIELD_REF <vect_var_.53_61, 32, 96>;
  D.2079_130 = BIT_FIELD_REF <32, 32, 96>;
  D.2080_131 = D.2078_129 v>> D.2079_130;
  vect_var_.53_62 = {D.2071_122, D.2074_125, D.2077_128, D.2080_131};
  vect_var_.53_63 = vect_var_.53_61 + vect_var_.53_62;
  vect_var_.52_64 = BIT_FIELD_REF <vect_var_.53_63, 32, 96>;


why??

thanks,
dorit


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]