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: The secondary reload


Paul Koning <paul_koning@dell.com> writes:

>> I assume you by 'instruction' here mean a define_insn and not a single
>> RTL or assembler instruction. 
>> 
>> So, assume I have two classes M_REGS and Y_REGS and I cannot move 
>> between them except if I go through an intermediary in C_REGS. 
>> Do I need a secondary reload? 
>
> Yes
>> 
>> I wouldn't expect so cause I could write a rule that has a scratch from
>> C_REGS. Then I move the value from SOURCE to C_REGS and from C_REGS to
>> DEST. Have I misunderstood what you said? 
>>

What about the above case?
Couldn't you have something like I described above:
(define_insn "transfer"
   [
     (set (match_operand 0 "register_operand" "m")
          (match_operand 1 "register_operand" "y"))
     (clobber (match_scratch 2 "c"))
   ]
 ""
{
   move from 1 to 2;
   move from 2 to 0;
})

Why would something like this not work and force you to have a secondary
reload hook?
 
-- 
PMatos


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