On Tue, Aug 11, 2015 at 06:11:35PM -0700, Richard Henderson wrote: > @@ -8173,6 +8173,13 @@ genimm_ppc::exam_search (HOST_WIDE_INT c, int budget) > if (exam_mask (-1, c, sub_budget)) > return true; > > + /* If the two halves are equal, use an insert. */ > + if (c >> 32 == test && exam_sub (test, sub_budget)) > + { > + opN (VEC_DUPLICATE, 0xffffffffu); /* RLDIMI */ > + return true; > + }
Does this work for c with the high bit set? I think you need to cast it to unsigned HOST_WIDE_INT first? Segher