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