This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Strange insn rtx is emitted in a custom backend


Thanks a lot, Jeff!
I was missing some stuff in TARGET_LEGITIMATE_CONSTANT_P.

Lev.

On Mon, Jun 1, 2015 at 11:35 PM, Jeff Law <law@redhat.com> wrote:
> On 06/01/2015 12:51 PM, Lev Yudalevich wrote:
>>
>> While working on a custom backend for quite a standard RISC-like
>> architecture, I defined 'high'/'lo_sum' patterns as follows:
>>
>> (define_insn "mov_high"
>>    [(set (match_operand:SI 0 "register_operand" "=r")
>>            (high:SI (match_operand:SI 1 "immediate_operand" "i")))]
>>    ""
>>    "mvup #high(%1), %0"
>>    [(set_attr "insn" "alu")
>>     (set_attr "length" "4")]
>> )
>>
>> (define_insn "add_low"
>>    [(set (match_operand:SI 0 "register_operand" "=r")
>>            (lo_sum:SI (match_operand:SI 1 "register_operand" "0")
>>                             (match_operand:SI 2 "symbolic_operand" "")))]
>>                             (match_operand:SI 2 "immediate_operand"
>> "i")))]
>>    ""
>>    "add3 %0, #low(%2), %0"
>>    [(set_attr "insn" "alu")
>>     (set_attr "length" "4")]
>> )
>>
>>
>> Despite having the patters above (along with usual 'plus' patterns)
>> I'm getting the following rtx emitted at the expansion stage:
>>
>> (insn 53 52 63 2 (set (reg:SI 62)
>>                                 (const:SI (plus:SI (symbol_ref:SI [flags
>> 0x6])
>>                                                            (const_int
>> 64 [0x40])))) -1
>>      (nil))
>>
>> which can not be recognized unless I define a pattern like this:
>
> You should debug precisely where that came from.  You're missing something
> in your backend to tell GCC that such constants are not valid.
>
> You should probably look at how expansion occurs for your tests on other
> ports that make heavy use of high/lo_sum.  sparc & hppa come immediately to
> mind, but I'm sure there's others.
>
> jeff
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]