1. An adjustable divider apparatus for a golf bag comprising:
a partitioning frame having
an inside annular surface;
an outer annular surface;
an open top;
an open bottom;
multiple mounting sleeves mounted securely on the outer surface of the partitioning frame, arranged annularly and each mounting sleeve having a mounting hole defined through the mounting sleeve; and
an elastic cord mounted sequentially through the mounting holes in all of the mounting sleeves and having two ends connected to each other to make the elastic cord a loop;
a divider assembly mounted securely on the inner surface of the frame and having
two cross dividers mounted securely on the inner surface of the frame, spaced apart and each cross divider having
two ends mounted securely on the inner annular surface of the frame;
a top surface; and
multiple mounting holes defined in the top surface of the cross divider; and
at least one median divider mounted between the cross dividers; and
multiple fasteners mounted detachably in the mounting holes of the cross dividers.
2. The adjustable divider apparatus for a golf bag as claimed in claim 1, wherein the mounting holes of each cross divider are arranged at intervals.
3. The adjustable divider apparatus for a golf bag as claimed in claim 1, wherein each fastener has
a tapered head abutting the top surface above the one of the mounting holes in the cross divider and having a top surface and a bottom surface; and
a mounting post formed on the bottom surface of the fastener and mounted detachably into the mounting hole in the cross divider.
4. The adjustable divider apparatus for a golf bag as claimed in claim 2, wherein each fastener has
a tapered head abutting the top surface above the one of the mounting holes in the cross divider and having a top surface and a bottom surface; and
a mounting post formed on the bottom surface of the fastener and mounted detachably into the mounting hole in the cross divider.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method of software pipelining for improving efficiency of loop handling, the method comprising:
checking for availability of rotating registers to hold computed values that are live across multiple stages in a software-pipelined loop; and
spilling and filling the computed values held in rotating registers in a software-pipelined loop using rotating stack memory locations for rotating registers, when there are no rotating registers available to hold the computed values, wherein the number of the rotating stack memory locations used for spilling and filling the computed values equals the number of simultaneous live values generated by the rotating register.
2. The method of claim 1, wherein the computed values are Floating Point (FP) values.
3. The method of claim 1, wherein the rotating registers are FP rotating registers.
4. A method of software pipelining for improving efficiency of loop handling, the method comprising:
checking for availability of FP rotating registers to hold FP computed values that are live across multiple stages in a software-pipelined loop; and
spilling and filling the computed values using rotating integer registers for holding addresses of stack memory locations when there are no FP rotating registers available to hold the computed value, the spilling and filling the computed values comprising:
checking for availability of N+1 rotating integer registers, wherein N is number of stages a computed value that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed value in stack memory locations whose addresses are held in corresponding N+1 rotating integer registers, when the N+1 rotating integer registers are available.
5. The method of claim 4, wherein spilling and filling the computed value comprises:
storing the computed value in the stack memory locations whose addresses are held in corresponding N+1 rotating integer registers; and
loading from the stack memory locations whose addresses are held in corresponding N+1 rotating integer registers based on number of stages between when the loading occurs from the storing of the corresponding computed value.
6. The method of claim 4, wherein target registers for filling could be any available FP registers.
7. A method of software pipelining for improving efficiency of loop handling, the method comprising:
using post-incremented memory operations for spilling and filling of live computed values, held in a FP rotating register, that are live across multiple stages in a software-pipelined loop, using non-rotating registers, when there are no rotating integer registers available to hold rotating stack memory locations,
checking for availability of N+1 non-rotating integer registers available for spilling and filling, wherein N is a number of stages a computed value that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed values in stack memory locations whose addresses are held in corresponding N+1 non-rotating integer registers, when the N+1 non-rotating registers are available.
8. The method of claim 7, wherein using the non-rotating registers comprises:
using the non-rotating integer registers.
9. A method of software pipelining for improving efficiency of loop handling, the method comprising spilling and filling of live computed values, held in a rotating register, that are live across multiple stages in a software-pipelined loop, using two non-rotating integer registers, when there are no FP rotating registers available and when there are no rotating integer registers available for holding rotating stack memory locations, and when there are not enough non-rotating integer registers available for holding rotating stack memory locations.
10. The method of claim 9, wherein the two non-rotating registers do not have to be contiguous.
11. The method of claim 9, wherein the rotating stack memory locations have to be contiguous and in descending order.
12. A method of software pipelining for improving efficiency of loop handling, the method comprising:
checking for availability of rotating integer registers and non-rotating integer registers, to spill and fill computed values held in a FP rotating register, that are live across multiple stages in a software-pipelined loop;
spilling and filling the computed values, held in a FP rotating register, using the rotating integer registers to hold rotating stack memory locations, when there are no FP rotating registers available to hold the computed values;
spilling and filling the computed values, held in the FP rotating register, using non-rotating registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values and further when there are no rotating integer registers available for holding rotating stack memory locations; and
spilling and filling the computed values held in the FP rotating register, using two non-rotating integer registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values, where there are no rotating integer registers available, and further when there are only a few non-rotating integer registers available for holding rotating stack memory locations.
13. The method of claim 12, wherein spilling and filling the computed values using the rotating integer registers comprises:
checking for availability of N+1 rotating integer registers, wherein N is number of stages a computed value that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed values in stack memory locations whose addresses are held in corresponding N+1 rotating integer registers, when the N+1 rotating integer registers are available.
14. The method of claim 12, wherein spilling and filling the computed values using non-rotating integer registers comprises:
checking for availability of N+1 non-rotating integer registers available for spilling and filling, wherein N is a number of stages a computed value that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed values in stack memory locations whose addresses are held in corresponding N+1 non-rotating integer registers, when the N+1 non-rotating registers are available.
15. The method of claim 12, wherein the two non-rotating registers do not have to be contiguous.
16. The method of claim 12, wherein the rotating stack memory locations have to be contiguous and in descending order.
17. An article comprising a computer-readable medium which stores computer-executable instructions, the instructions causing the computer to perform:
checking for availability of rotating integer registers and non-rotating integer registers, to spill and fill computed values held in a FP rotating register, that are live across multiple stages in a software-pipelined loop;
spilling and filling the computed values, held in a FP rotating register, using the rotating integer registers to hold the rotating stack memory locations, when there are no FP rotating registers available to hold the computed values;
spilling and filling the computed values, held in the FP rotating register, using the non-rotating registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values and further when there are no rotating integer registers available for holding rotating stack memory locations; and
spilling and filling the computed values held in the FP rotating register, using two non-rotating integer registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values, where there are no rotating integer registers available, and further when there are only a few non-rotating integer registers available for holding rotating stack memory locations.
18. The article comprising a computer-readable medium which stores computer-executable instructions of claim 17, wherein spilling and filling the computed values using the rotating integer registers comprises:
checking for availability of N+1 rotating integer registers, wherein N is number of stages a computed values that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed values in stack memory locations whose addresses are held in corresponding N+1 rotating integer registers, when the N+1 rotating integer registers are available.
19. The article comprising a computer-readable medium which stores computer-executable instructions of claim 17, wherein spilling and filling the computed values using non-rotating integer registers comprises:
checking for availability of N+1 non-rotating integer registers available for spilling and filling, wherein N is a number of stages a computed value that needs to be spilled is live in the software-pipelined loop; and
spilling and filling the computed values in stack memory locations whose addresses are held in corresponding N+1 non-rotating integer registers, when the N+1 non-rotating registers are available.
20. A system comprising:
a bus;
a processor coupled to the bus;
a memory coupled to the processor; and
a network interface coupled to the processor and the memory, wherein the processor to spill and fill multiple computed values, in a register, that are live across multiple stages in a software-pipelined loop, by performing:
checking for availability of rotating integer registers and non-rotating integer registers, to spill and fill computed values held in a FP rotating register, that are live across multiple stages in a software-pipelined loop;
spilling and filling the computed values, held in a FP rotating register, using the rotating integer registers to hold rotating stack memory locations, when there are no FP rotating registers available to hold the computed values;
spilling and filling the computed values, held in the FP rotating register, using the non-rotating registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values and further when there are no rotating integer registers available for holding rotating stack memory locations; and
spilling and filling the computed values held in the FP rotating register, using two non-rotating integer registers to hold the rotating stack memory locations, when there are no FP rotating registers to hold the computed values, where there are no rotating integer registers available, and further when there are only a few non-rotating integer registers available for holding rotating stack memory locations.
21. The system of claim 20, wherein the processor checks for availability of N+1 rotating integer registers, wherein N is number of stages a computed value that needs to be spilled is live in the software-pipelined loop, and spills and fills the computed values in stack memory locations whose addresses are held in corresponding N+1 rotating integer registers, when the N+1 rotating integer registers are available.
22. The system of claim 20, wherein the processor checks for availability of N+1 non-rotating integer registers available for spilling and filling, wherein N is a number of stages a computed value that needs to be spilled is live in the software-pipelined loop, and spills and fills the computed values in stack memory locations whose addresses are held in corresponding N+1 non-rotating integer registers, when the N+1 non-rotating registers are available.