Optimize run loop

Split it into two more specific run loops separately optimized for ARM
and THUMB instruction sets. This reduces the switch cases to check
through as an optimization.