Commit e68c380c by Richard Henderson Committed by Richard Henderson

* alpha.c (alpha_emit_set_const_1): Also try c + small constant.

From-SVN: r32304
parent c1b5b92c
2000-03-02 Richard Henderson <rth@cygnus.com>
* alpha.c (alpha_emit_set_const_1): Also try c + small constant.
2000-03-02 Mark Mitchell <mark@codesourcery.com> 2000-03-02 Mark Mitchell <mark@codesourcery.com>
* tree.h (TYPE_ALIGN_UNIT): New macro. * tree.h (TYPE_ALIGN_UNIT): New macro.
......
...@@ -1400,6 +1400,14 @@ alpha_emit_set_const_1 (target, mode, c, n) ...@@ -1400,6 +1400,14 @@ alpha_emit_set_const_1 (target, mode, c, n)
target, 0, OPTAB_WIDEN); target, 0, OPTAB_WIDEN);
} }
/* Next, see if, minus some low bits, we've an easy load of high bits. */
new = ((c & 0xffff) ^ 0x8000) - 0x8000;
if (new != 0
&& (temp = alpha_emit_set_const (subtarget, mode, c - new, n - 1)) != 0)
return expand_binop (mode, add_optab, temp, GEN_INT (new),
target, 0, OPTAB_WIDEN);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment