tilegx.c (expand_set_cint64_one_inst): Inline tests for constraint J, K, N, P.
* config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline tests for constraint J, K, N, P. From-SVN: r197074
This commit is contained in:
parent
192ea533be
commit
5b2a3c829c
2 changed files with 14 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-03-25 Walter Lee <walt@tilera.com>
|
||||
|
||||
* config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline
|
||||
tests for constraint J, K, N, P.
|
||||
|
||||
2013-03-25 Walter Lee <walt@tilera.com>
|
||||
|
||||
* config/tilegx/tilegx.c (tilegx_asm_preferred_eh_data_format):
|
||||
|
|
|
@ -1429,14 +1429,16 @@ expand_set_cint64_one_inst (rtx dest_reg,
|
|||
}
|
||||
else if (!three_wide_only)
|
||||
{
|
||||
rtx imm_op = GEN_INT (val);
|
||||
|
||||
if (satisfies_constraint_J (imm_op)
|
||||
|| satisfies_constraint_K (imm_op)
|
||||
|| satisfies_constraint_N (imm_op)
|
||||
|| satisfies_constraint_P (imm_op))
|
||||
/* Test for the following constraints: J, K, N, P. We avoid
|
||||
generating an rtx and using existing predicates because we
|
||||
can be testing and rejecting a lot of constants, and GEN_INT
|
||||
is O(N). */
|
||||
if ((val >= -32768 && val <= 65535)
|
||||
|| ((val == (val & 0xFF) * 0x0101010101010101LL))
|
||||
|| (val == ((trunc_int_for_mode (val, QImode) & 0xFFFF)
|
||||
* 0x0001000100010001LL)))
|
||||
{
|
||||
emit_move_insn (dest_reg, imm_op);
|
||||
emit_move_insn (dest_reg, GEN_INT (val));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue