1461026874-f23f986f-28e9-4534-8c6c-848229417300

1. A method of optimizing a forward conditional branch, the method comprising:
detecting a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target; and
determining whether an instruction of the at least one instruction includes at least one of a conditional branch or a condition-code setter:
if the instruction does not include the at least one of a conditional branch or a condition-code setter, dynamically assigning an inverted condition to the at least one instruction to optimize a code path, and
determining whether there is a next instruction between the forward conditional branch and forward conditional branch target,
if there is a next instruction, moving to the next instruction for analysis,
if there is not a next instruction, executing the optimized code path,

if the instruction includes the at least one of a conditional branch or a condition-code setter, discarding dynamically assigned inverted conditions on previously optimized instructions and executing the detected forward conditional branch.
2. The method of claim 1, wherein the method of optimizing forward conditional branches is qualified by a branch-predictor state.
3. The method of claim 2, wherein the detected forward conditional branch is optimized only if a branch predictor has a weak state.
4. The method of claim 1, further comprising evaluating, after execution of the optimized code path, the efficacy of the forward conditional branch prior to optimization.
5. The method of claim 1, wherein the forward conditional branch is further optimized using software methods of optimization.
6. The method of claim 1, wherein the forward conditional branch has been optimized prior to performing the method.
7. The method of claim 6, wherein the at least one instruction has a condition that disagrees with the condition of the branch, and the at least one instruction is dynamically assigned into a NOP.
8. The method of claim 1, wherein the at least one instruction includes a forward conditional branch that is a last branch in a branched-over block, and wherein the last branch does not disqualify the invention from optimizing the branched-over block.
9. The method of claim 1, wherein the forward conditional branch has a short forward target.
10. An apparatus comprising:
a branch detection circuit configured to detect a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target;
an optimization determination circuit configured to determine if a first of the at least one instruction includes at least one of a conditional branch or a condition-code setter:
a state machine configured to dynamically assign an inverted condition to the at least one instruction to optimize a code path if the instruction does not include the at least one of a conditional branch or a condition-code setter, and
an instruction detector circuit configured to determine whether there is a next instruction between the forward conditional branch and forward conditional branch target;
an instruction retrieval circuit configured to move to the next instruction for analysis if there is a next instruction,
an execution circuit configured to execute the optimized code path if there is not a next instruction,

an optimization discard circuit configured to discard dynamically assigned inverted conditions on previously optimized instructions and execute the detected forward conditional branch if the instruction includes the at least one of a conditional branch or a condition-code setter.
11. The apparatus of claim 10, wherein the forward conditional branch is further optimized using software methods of optimization.
12. The apparatus of claim 10, wherein optimizing forward conditional branches is qualified by a branch-predictor state.
13. The apparatus of claim 12, wherein the detected forward conditional branch is optimized only if a branch predictor has a weak state.
14. The apparatus of claim 10, wherein the forward conditional branch has been optimized prior to analysis.
15. The apparatus of claim 14, wherein there are at least two sequential instructions between the forward conditional branch and forward conditional branch target, wherein one of the at least two sequential instructions has conditions that disagree, and the one of the at least two sequential instructions is dynamically assigned into a NOP.
16. The apparatus of claim 10, wherein the forward conditional branch is a hard-to-predict short forward branch.
17. The apparatus of 10, wherein the apparatus is disposed in a processor.
18. The apparatus of claim 17, wherein the processor is disposed in at least one of a mobile device, a Voice over IP (VoIP) device, a navigation device, an electronic book, a media player, a desktop computer, a laptop computer, and a gaming console.
19. A processing system comprising:
means for detecting a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target;
means for determining whether a first of the at least one instruction includes at least one of a conditional branch or a condition-code setter:
means for dynamically assigning an inverted condition to the at least one instruction to optimize a code path if the instruction does not include the at least one of a conditional branch or a condition-code setter, and
means for determining whether there is a next instruction between the forward conditional branch and forward conditional branch target;
means for moving to the next instruction for analysis if there is a next instruction,
means for executing the optimized code path if there is no next instruction,

means for discarding dynamically assigned inverted conditions on previously optimized instructions and executing the detected forward conditional branch if the instruction includes the at least one of a conditional branch or a condition-code setter.
20. A non-transitory computer-readable storage medium comprising code, which, when executed by a processor, causes the processor to perform operations for switching between execution modes of the processor, the non-transitory computer-readable storage medium comprising:
code for detecting a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target;
code for determining whether a first of the at least one instruction includes at least one of a conditional branch or a condition-code setter:
code for dynamically assigning an inverted condition to the at least one instruction to optimize a code path if the instruction does not include the at least one of a conditional branch or a condition-code setter, and
code for determining whether there is a next instruction between the forward conditional branch and forward conditional branch target;
code for moving to the next instruction for analysis if there is a next instruction,
code for executing the optimized code path if there is no next instruction,

code for discarding dynamically assigned inverted conditions on previously optimized instructions and executing the detected forward conditional branch if the instruction includes the at least one of a conditional branch or a condition-code setter.
21. A method of optimizing a forward conditional branch, the method comprising;
detecting a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target;
retrieving an instruction;
determining eligibility of the instruction for transformation or elimination;
if the instruction is eligible for transformation or elimination:
dynamically assigning an inverted condition to the instruction; and
transmitting the modified instruction an execution core,

if the instruction is not eligible for transformation or elimination, determining whether there is a next instruction between the forward conditional branch and forward conditional branch target;
if there is a next instruction, retrieving the next instruction with predecode logic.
22. An apparatus comprising:
a branch detection circuit configured to detect a forward conditional branch with at least one instruction between the forward conditional branch and forward conditional branch target;
an instruction retrieval circuit configured to retrieve an instruction;
a predecode logic circuit configured to determine eligibility of the instruction for transformation or elimination;
if the instruction is eligible for transformation or elimination:
a state machine configured to dynamically assign an inverted condition to the instruction; and
a transmitter configured to transmit the modified instruction an execution core,

an instruction detector circuit configured to determine whether there is a next instruction between the forward conditional branch and forward conditional branch target if the instruction is not eligible for transformation or elimination;
the instruction retrieval circuit configured to retrieve the next instruction with predecode logic if there is a next instruction.

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 snow blower comprising:
an engine including a crankshaft arranged along a front to rear direction of the snow blower;
an output shaft provided on a front end portion of the crankshaft, arranged substantially coaxially with the crankshaft, and including an outer circumferential portion to which a drive pulley is attached;
an intermediate shaft arranged to extend along the front to rear direction and above the output shaft, the intermediate shaft including a rear end outer circumferential portion on which a driven pulley is fixed and a front end outer circumferential portion on which an impeller drive pulley is attached;
an impeller drive shaft arranged to extend in the front to rear direction and below the intermediate shaft, the impeller drive shaft including a rear end outer circumferential portion on which an impeller driven pulley is attached;
a first transmission belt meshed with the drive pulley and the driven pulley;
a second transmission belt meshed with the impeller drive pulley and the impeller driven pulley; and
an impeller connected to, and arranged to be rotated by, the impeller drive shaft; wherein
the output shaft and the impeller drive shaft are arranged at substantially the same height in a vertical direction of the snow blower.
2. The snow blower according to claim 1, wherein the output shaft and the impeller drive shaft are arranged such that shaft axes of the output shaft and the impeller drive shaft are either substantially coaxial, or in a vicinity of each other in a view seen from a front of the snow blower.
3. The snow blower according to claim 1, wherein
the first transmission belt and the second transmission belt are both inclined in the same direction with respect to the vertical direction of the snow blower.
4. A snow blower comprising:
an engine including a crankshaft arranged along a front to rear direction of the snow blower;
an output shaft provided on a front end portion of the crankshaft, arranged substantially coaxially with the crankshaft, and including an outer circumferential portion to which a drive pulley is attached;
an intermediate shaft arranged to extend along the front to rear direction and above the output shaft, the intermediate shaft including a rear end outer circumferential portion on which a driven pulley is fixed and a front end outer circumferential portion on which an impeller drive pulley is attached;
an impeller drive shaft arranged to extend in the front to rear direction and below the intermediate shaft, the impeller drive shaft including a rear end outer circumferential portion on which an impeller driven pulley is attached;
a first transmission belt meshed with the drive pulley and the driven pulley;
a second transmission belt meshed with the impeller drive pulley and the impeller driven pulley; and
an impeller connected to, and arranged to be rotated by, the impeller drive shaft; wherein
the intermediate shaft and the impeller drive shaft are arranged such that a virtual straight line connecting shaft axes of the intermediate shaft and the impeller drive shaft is inclined to one side of a width direction of the snow blower when viewed from a front of the snow blower; and
a belt clutch mechanism, arranged to enable or interrupt transmission of a rotational force of the intermediate shaft to the impeller drive shaft by changing a tensile stress of the second transmission belt, is arranged on an outer circumferential side of the second transmission belt between the impeller drive pulley and the impeller driven pulley.
5. The snow blower according to claim 4, wherein the outer circumferential side of the second transmission belt is a portion located on an upper side of the virtual straight line connecting the shaft axes of the intermediate shaft and the impeller drive shaft.
6. The snow blower according to claim 4, wherein
the output shaft and the impeller drive shaft are arranged such that the shaft axes of the output shaft and the impeller drive shaft are either substantially coaxial, or in a vicinity of each other in a view seen from a front of the snow blower; and
a belt tensioner, arranged to increase a tensile stress of the first transmission belt, is arranged on an outer circumferential side of the first transmission belt at a side opposite where the belt clutch mechanism is arranged on the second transmission belt.
7. The snow blower according to claim 6, wherein
the belt tensioner is arranged at a side of the outer circumference of the first transmission belt where a smaller tensile stress is generated when the first transmission belt is rotating; and
the belt clutch mechanism is arranged at a side of the outer circumference of the second transmission belt where a smaller tensile stress is generated when the second transmission belt is rotating.
8. The snow blower according to claim 4, wherein
the first transmission belt and the second transmission belt are both inclined in the same direction with respect to a vertical direction of the snow blower.