1. Putting the CPU into 'idle' mode when no processing needed doing.
2. Putting the CPU+memory into 'standby' mode when running on batteries and it hadn't been used for a while.
This second feature was slightly challenging as the memory had to be put into standby mode first, then the CPU put into standby mode, but of course you couldn't access the main memory after it had been put into standby mode, but did have to carry on running instructions to then put the CPU into standby! The solution was to ensure that all the code required to put the CPU into standby mode (and then after wake-up, get main memory back out of standby mode) was in the CPU cache, so it didn't need the main memory to execute.
I've also recently used a tiny amount of assembler to implement computed goto's when using a C compiler that didn't natively support them
I'm fairly sure that people who require insane speed in tight loops also code in assembler, but I've never needed that myself.