ia64.c (ia64_expand_vecint_minmax): Use us_minus and plus for V4HImode UMAX.

* config/ia64/ia64.c (ia64_expand_vecint_minmax): Use us_minus and
        plus for V4HImode UMAX.

From-SVN: r101441
This commit is contained in:
Richard Henderson 2005-06-29 15:22:13 -07:00 committed by Richard Henderson
parent f2a71bbcb2
commit 93b4080b3d
2 changed files with 17 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2005-06-29 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.c (ia64_expand_vecint_minmax): Use us_minus and
plus for V4HImode UMAX.
2005-06-29 Joseph S. Myers <joseph@codesourcery.com>
* c-tree.h (default_function_array_conversion): Take and return

View file

@ -1689,6 +1689,18 @@ ia64_expand_vecint_minmax (enum rtx_code code, enum machine_mode mode,
if (mode == V4HImode && (code == SMIN || code == SMAX))
return false;
/* This combination can be implemented with only saturating subtraction. */
if (mode == V4HImode && code == UMAX)
{
rtx x, tmp = gen_reg_rtx (mode);
x = gen_rtx_US_MINUS (mode, operands[1], operands[2]);
emit_insn (gen_rtx_SET (VOIDmode, tmp, x));
emit_insn (gen_addv4hi3 (operands[0], tmp, operands[2]));
return true;
}
/* Everything else implemented via vector comparisons. */
xops[0] = operands[0];
xops[4] = xops[1] = operands[1];