The software usually deals with abstractions whereas hardware handles implementation details of how to execute instructions.
tennis_player
I like the way you worded your statement @sidhikab. I would also say that depending on your point of view, the line can bend one way or the other. For example, when considering the ISPC code from Lec 4 (e.g. slide 37), we see how the ISPC compiler (software) is handling the implementation in that it transforms ISPC code (abstraction) to C+ AVX intrinsic code (implementation), all while staying at the software level. Then, there is also the viewpoint of taking the intrinsic code abstraction to actual hardware implementation.
The software usually deals with abstractions whereas hardware handles implementation details of how to execute instructions.