This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: defining add in a new port
- From: Jean-Marc Saffroy <jean-marc dot saffroy at joguin dot com>
- To: Hans-Peter Nilsson <hp at bitrange dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 24 Feb 2011 15:29:16 +0100
- Subject: Re: defining add in a new port
- References: <4D42EDDE.6040802@joguin.com> <alpine.BSF.2.00.1102090209210.42982@dair.pair.com>
On 02/09/2011 08:27 AM, Hans-Peter Nilsson wrote:
> On Fri, 28 Jan 2011, Jean-Marc Saffroy wrote:
>> (define_constraint "I"
>> "Signed 6-bit integer constant for binops."
>> (and (match_code "const_int")
>> (match_test "IN_RANGE (ival, -24, 32)")))
>>
>> (define_register_constraint "A" "ADDR_REGS"
>> "The address registers.")
>>
>> (define_register_constraint "D" "DATA_REGS"
>> "The general (data) registers.")
>>
>> (define_predicate "reg_or_18bit_signed_operand"
>> (if_then_else (match_code "const_int")
>> (match_test "IN_RANGE (INTVAL (op), -(1 << 17), (1 << 17) - 1)")
>> (match_operand 0 "register_operand")))
>>
>> (define_insn "adddi3"
>> [(set (match_operand:DI 0 "register_operand" "=D,D,A")
>> (plus:DI
>> (match_operand:DI 1 "register_operand" "%0,0,0")
>> (match_operand:DI 2 "reg_or_18bit_signed_operand" "I,D,n")))]
>> ""
>> "@
>> addi %0, %2
>> add %0, %2
>> adda %0, %2")
>
>> It seems I was expecting too much intelligence from reload, or I didn't
>> give enough hints.
>
> JFTR (after reading subsequent messages and good pragmatic
> advice), I think you're working around a bug in gcc; your adddi3
> should work as-is above. Reload may create suboptimal
> sequences, but it should always create working code. Not that
> we can do much about it, the port not in the tree and all, but
> perhaps later. There are recent-ish changes in this area (i.e.
> fp-sp elimination), fixing bugs exposed by other ports, so try
> updating your tree too.
FTR: at last I could update my tree to a recent SVN checkout of the
trunk (from 2 days ago), and I still need a define_expand with the
"pragmatic advice" suggested by Ian (which seems to work fine).
Cheers,
JM
>
> brgds, H-P
>