Enabling Task Parallelism On Hardware/Software Layers Using The Polyhedral Model