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:
parent
f2a71bbcb2
commit
93b4080b3d
2 changed files with 17 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Add table
Reference in a new issue