Value-based clock gating and operation packing: dynamic strategies for improving processor power and performance