PENCIL: A platform-neutral intermediate language for the parallelizing compilation of DSLs