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.