
#8256: adding locality levels to prefetch# and friends -------------------------------------+------------------------------------ Reporter: carter | Owner: carter Type: task | Status: patch Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #8252 ,#8107 -------------------------------------+------------------------------------ Comment (by carter): Simon, good points. No i don't have a benchmark showing that adding the 0-3 levels is justified, though I could probably cook up one that shows a measurable (albeit small) difference when I have time. The prior LLVM only prefetch operation was equivalent to the {{{ prefetch*3# }}} family of operations. The 0-3 stuff also in part motivated as having a simple concrete thorn to motivate the "Static literal data" extension I think we need so as to properly support some other interesting primops in a somewhat type safe way, and prefetch is the simplest example, where exposing only 4 variants would still be useful. So assuming I work out that Static data extension right, We could have something like {{{ prefetchByteArray :: Static Int# -> ByteArray# -> Int# ->ByteArray# }}} rather than the 0-3 variants for 7.10. So yes, I agree that the number suffix stuff is a bit of a hack, and its one that motivates some more systemic solutions going forward. On the can_fail, explained that way, I think you're absolutely right (or at least more likely right than I). I'll adjust that branch accordingly later today/tomorrow and link to the diff again. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8256#comment:43 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler