This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
towards reduction part 3/n: what does vec lower pass do to vector shifts?
- From: Dorit Naishlos <DORIT at il dot ibm dot com>
- To: Paolo Bonzini <paolo dot bonzini at lu dot unisi dot ch>
- Cc: Richard Henderson <rth at redhat dot com>, gcc at gcc dot gnu dot org
- Date: Sun, 19 Jun 2005 00:39:04 +0300
- Subject: 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