Hi Kyrill,

I tried.  Iterators alone cannot do it: the two forms differ by the
presence of the <TRUNCEXTEND> node, not by a code or a mode.  A
define_subst can - it drops the extend and narrows the plus and the shift
to VQN, and it excludes the saturating members structurally, since their
ss/us_truncate copies do not match the input template - but it takes six
substs (one per insn shape, and one per shift code, because TRUNC_SHIFT
and TRUNCEXTEND tie the plain-truncate member to lshiftrt), they have to
sit at the top of the file so they run before vczle/vczbe, and they come
to 131 md lines against the 46 for the three insns, for byte-identical
output.  I don't think that is cleaner, so I would rather keep the three
patterns as posted.  If that is fine with you, I'll push the two.

Thanks,
Dominic

Reply via email to