print_rtx_head, m_indent * 2, "");
m_sawclose = 0;
}
+ if (GET_CODE (in_rtx) == CONST_VECTOR
+ && !GET_MODE_NUNITS (GET_MODE (in_rtx)).is_constant ()
+ && CONST_VECTOR_DUPLICATE_P (in_rtx))
+ fprintf (m_outfile, " repeat");
fputs (" [", m_outfile);
if (XVEC (in_rtx, idx) != NULL)
{
if (XVECLEN (in_rtx, idx))
m_sawclose = 1;
+ int barrier = XVECLEN (in_rtx, idx);
+ if (GET_CODE (in_rtx) == CONST_VECTOR
+ && !GET_MODE_NUNITS (GET_MODE (in_rtx)).is_constant ())
+ barrier = CONST_VECTOR_NPATTERNS (in_rtx);
+
for (int j = 0; j < XVECLEN (in_rtx, idx); j++)
{
int j1;
+ if (j == barrier)
+ {
+ fprintf (m_outfile, "\n%s%*s",
+ print_rtx_head, m_indent * 2, "");
+ if (!CONST_VECTOR_STEPPED_P (in_rtx))
+ fprintf (m_outfile, "repeat [");
+ else if (CONST_VECTOR_NPATTERNS (in_rtx) == 1)
+ fprintf (m_outfile, "stepped [");
+ else
+ fprintf (m_outfile, "stepped (interleave %d) [",
+ CONST_VECTOR_NPATTERNS (in_rtx));
+ m_indent += 2;
+ }
+
print_rtx (XVECEXP (in_rtx, idx, j));
- for (j1 = j + 1; j1 < XVECLEN (in_rtx, idx); j1++)
+ int limit = MIN (barrier, XVECLEN (in_rtx, idx));
+ for (j1 = j + 1; j1 < limit; j1++)
if (XVECEXP (in_rtx, idx, j) != XVECEXP (in_rtx, idx, j1))
break;
}
}
+ if (barrier < XVECLEN (in_rtx, idx))
+ {
+ m_indent -= 2;
+ fprintf (m_outfile, "\n%s%*s]", print_rtx_head, m_indent * 2, "");
+ }
+
m_indent -= 2;
}
if (m_sawclose)