Changing prefetch primops to have a `seq`-like interface
authorCarter Tazio Schonwald <carter.schonwald@gmail.com>
Mon, 15 Dec 2014 15:42:36 +0000 (09:42 -0600)
committerAustin Seipp <austin@well-typed.com>
Mon, 15 Dec 2014 15:42:52 +0000 (09:42 -0600)
commitf44333eae7bc7dc7b6003b75874a02445f6b633b
tree242ae7928d39bed82d4162b6a397d1e6ccdb45e5
parent8afdf274194e77e85e6a08dc4963022c56fc29d8
Changing prefetch primops to have a `seq`-like interface

Summary:
The current primops for prefetching do not properly work in pure code;
namely, the primops are not 'hoisted' into the correct call sites based
on when arguments are evaluated. Instead, they should use a `seq`-like
interface, which will cause it to be evaluated when the needed term is.

See #9353 for the full discussion.

Test Plan: updated tests for pure prefetch in T8256 to reflect the design changes in #9353

Reviewers: simonmar, hvr, ekmett, austin

Reviewed By: ekmett, austin

Subscribers: merijn, thomie, carter, simonmar

Differential Revision: https://phabricator.haskell.org/D350

GHC Trac Issues: #9353
compiler/codeGen/StgCmmPrim.hs
compiler/prelude/primops.txt.pp
testsuite/tests/codeGen/should_run/T8256.hs
testsuite/tests/codeGen/should_run/all.T