Hello Everyone,
    I have a question regarding GCC RTL. I am currently modifying the
OpenRISC backend to partition the register files. Here is an example of
my add function:
 
(define_insn "addsi3"
  [(set (match_operand:SI 0 "register_operand"          "=a,b,a,b")
        (plus:SI (match_operand:SI 1 "register_operand" "%a,b,a,b")
                 (match_operand:SI 2 "nonmemory_operand" "a,b,I,I")))]
  ""
  "@
   l.add   \t%0,%1,%2
   l.add   \t%0,%1,%2
   l.addi  \t%0,%1,%2
   l.addi  \t%0,%1,%2"
  [(set_attr "type" "add,add,add,add")
   (set_attr "length" "1,1,1,1")])

 
TO explain my variables: 
 
a = Register number between 0-31
b = Register number between 32-63
I  = Integer value
 
The question I have is this: How can I tell the register allocator (more
like convey the message from the scheduler) to schedule the instructions
in a certain cluster of my choice? 
 
I have another data structure that indicates which register file the
instruction must be scheduled in and I want the register allocator to
read this and make the choice about the appropriate alternative, not
pick the first one from the different alternatives.
 
Any help is highly appreciated.
 
Thanks,
 
Balaji V. Iyer.
 
 
-- 
 
Balaji V. Iyer
PhD Student, 
Center for Efficient, Scalable and Reliable Computing,
Department of Electrical and Computer Engineering,
North Carolina State University.


Reply via email to