[GHC] #9340: Implement new `clz` inline primop
GHC
ghc-devs at haskell.org
Sun Aug 17 11:10:41 UTC 2014
#9340: Implement new `clz` inline primop
-------------------------------------+-------------------------------------
Reporter: hvr | Owner: hvr
Type: feature | Status: closed
request | Milestone: 7.10.1
Priority: normal | Version: 7.8.2
Component: Compiler | Keywords: primop clz ctz
(CodeGen) | Architecture: Unknown/Multiple
Resolution: fixed | Difficulty: Unknown
Operating System: | Blocked By:
Unknown/Multiple | Related Tickets:
Type of failure: |
None/Unknown |
Test Case: |
Blocking: |
Differential Revisions: Phab:D144 |
-------------------------------------+-------------------------------------
Comment (by Herbert Valerio Riedel <hvr@…>):
In [changeset:"6375934bfe64ca15eb215327629f9f07a185377a/ghc"]:
{{{
#!CommitTicketReference repository="ghc"
revision="6375934bfe64ca15eb215327629f9f07a185377a"
Workaround GCC `__ctzdi2` intrinsic linker errors
On Linux/i386 the 64bit `__builtin_ctzll()` instrinsic doesn't get
inlined by GCC but rather a short `__ctzdi2` runtime function is
inserted when needed into compiled object files.
This causes failures for the four test-cases
TEST="T8639_api T8628 dynCompileExpr T5313"
with error messages of the kind
dynCompileExpr: .../libraries/ghc-prim/dist-
install/build/libHSghcpr_BE58KUgBe9ELCsPXiJ1Q2r.a: unknown symbol
`__ctzdi2'
dynCompileExpr: dynCompileExpr: unable to load package `ghc-prim'
This workaround forces GCC on 32bit x86 to to express `hs_ctz64` in
terms of the 32bit `__builtin_ctz()` (this is no loss, as there's no
64bit BSF instruction on i686 anyway) and thus avoid the problematic
out-of-line runtime function.
Note: `__builtin_ctzll()` is used since
e0c1767d0ea8d12e0a4badf43682a08784e379c6 (re #9340)
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9340#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list