summaryrefslogtreecommitdiff
path: root/compiler/codeGen
diff options
context:
space:
mode:
authorMichal Terepeta <michal.terepeta@gmail.com>2018-11-07 08:03:16 -0500
committerBen Gamari <ben@smart-cactus.org>2018-11-07 08:09:40 -0500
commitf424515fd8cbc2b7380cdf8427f972d062940bd5 (patch)
tree858b1de592ee06c335a8e5572d7b87f7fb447910 /compiler/codeGen
parent406978c478e4b14e677f396499420d7b8e5d21fd (diff)
downloadhaskell-f424515fd8cbc2b7380cdf8427f972d062940bd5.tar.gz
[LlvmCodeGen] Fixes for Int8#/Word8#
This fixes two isssues: - Using bitcast for MO_XX_Conv Arguments to a bitcast must be of the same size. We should be using `trunc` and `zext` instead. - Using unsupported MO_*_QuotRem for LLVM The two primops `MO_*_QuotRem` are not supported by the LLVM backend, so we shouldn't use them for `Int8#`/`Word8#` (just as we do not use them for `Int#`/`Word#`). Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com> Test Plan: manually run tests with WAY=llvm Reviewers: bgamari, simonmar Reviewed By: bgamari Subscribers: rwbarton, carter GHC Trac Issues: #15864 Differential Revision: https://phabricator.haskell.org/D5304
Diffstat (limited to 'compiler/codeGen')
-rw-r--r--compiler/codeGen/StgCmmPrim.hs6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/codeGen/StgCmmPrim.hs b/compiler/codeGen/StgCmmPrim.hs
index 9da472e768..75d46b5b3a 100644
--- a/compiler/codeGen/StgCmmPrim.hs
+++ b/compiler/codeGen/StgCmmPrim.hs
@@ -881,7 +881,7 @@ callishPrimOpSupported dflags op
Right (genericIntQuotRemOp (wordWidth dflags))
Int8QuotRemOp | (ncg && x86ish)
- || llvm -> Left (MO_S_QuotRem W8)
+ -> Left (MO_S_QuotRem W8)
| otherwise -> Right (genericIntQuotRemOp W8)
WordQuotRemOp | ncg && (x86ish || ppc) ->
@@ -895,8 +895,8 @@ callishPrimOpSupported dflags op
| otherwise -> Right (genericWordQuotRem2Op dflags)
Word8QuotRemOp | (ncg && x86ish)
- || llvm -> Left (MO_U_QuotRem W8)
- | otherwise -> Right (genericWordQuotRemOp W8)
+ -> Left (MO_U_QuotRem W8)
+ | otherwise -> Right (genericWordQuotRemOp W8)
WordAdd2Op | (ncg && (x86ish
|| ppc))