In a computer having rotating registers, a schedule-assigner for allocating
the rotating registers. The scheduler-assigner includes a
software-pipelined instruction scheduler that generates a first
software-pipelined instruction schedule based on an intermediate
representation that has data flow information in SSA form. The
scheduler-assigner also includes a rotating register allocator that
designates live ranges of loop-variant variables in the first
software-pipelined instruction schedule as being allocated to rotating
registers, when available. The first software-pipelined instruction
schedule may be a modulo schedule. When a rotating register is not
available, the software-pipelined instruction scheduler may generate a
second software-pipelined instruction schedule having an initiation
interval greater than the initiation interval of the first
software-pipelined instruction schedule.
In einem Computer, der drehende Register hat, registriert ein Zeitplan-assigner für das Zuteilen des Drehens. Der Scheduler-assigner-assigner schließt einen Software-durch Rohre geleiteten Anweisung Scheduler mit ein, der einen ersten Software-durch Rohre geleiteten Anweisung Zeitplan erzeugt, der auf einer Zwischendarstellung basiert, die Datenfluß Informationen in SSA Form hat. Der Scheduler-assigner-assigner schließt auch einen drehenden Registerzuteiler ein, der Phasenstrecken der Schleife-Variante Variablen im ersten Software-durch Rohre geleiteten Anweisung Zeitplan kennzeichnet, wie, zuteilend drehenden Registern, wenn vorhanden. Der erste Software-durch Rohre geleitete Anweisung Zeitplan kann ein Modulozeitplan sein. Wenn ein drehendes Register nicht vorhanden ist, kann der Software-durch Rohre geleitete Anweisung Scheduler einen zweiten Software-durch Rohre geleiteten Anweisung Zeitplan erzeugen, der einen Anfangsabstand hat, der als der Anfangsabstand des ersten Software-durch Rohre geleiteten Anweisung Zeitplanes grösser ist.