summaryrefslogtreecommitdiff
path: root/compiler/codeGen
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/codeGen')
-rw-r--r--compiler/codeGen/StgCmmPrim.hs35
1 files changed, 13 insertions, 22 deletions
diff --git a/compiler/codeGen/StgCmmPrim.hs b/compiler/codeGen/StgCmmPrim.hs
index 015eeced05..a6f3395425 100644
--- a/compiler/codeGen/StgCmmPrim.hs
+++ b/compiler/codeGen/StgCmmPrim.hs
@@ -880,11 +880,11 @@ callishPrimOpSupported dflags op
| otherwise ->
Right (genericIntQuotRemOp (wordWidth dflags))
- Int8QuotRemOp | (ncg && x86ish)
+ Int8QuotRemOp | ncg && (x86ish || ppc)
-> Left (MO_S_QuotRem W8)
| otherwise -> Right (genericIntQuotRemOp W8)
- Int16QuotRemOp | (ncg && x86ish)
+ Int16QuotRemOp | ncg && (x86ish || ppc)
-> Left (MO_S_QuotRem W16)
| otherwise -> Right (genericIntQuotRemOp W16)
@@ -894,54 +894,45 @@ callishPrimOpSupported dflags op
| otherwise ->
Right (genericWordQuotRemOp (wordWidth dflags))
- WordQuotRem2Op | (ncg && (x86ish
- || ppc))
+ WordQuotRem2Op | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_U_QuotRem2 (wordWidth dflags))
| otherwise -> Right (genericWordQuotRem2Op dflags)
- Word8QuotRemOp | (ncg && x86ish)
+ Word8QuotRemOp | ncg && (x86ish || ppc)
-> Left (MO_U_QuotRem W8)
| otherwise -> Right (genericWordQuotRemOp W8)
- Word16QuotRemOp| (ncg && x86ish)
+ Word16QuotRemOp| ncg && (x86ish || ppc)
-> Left (MO_U_QuotRem W16)
| otherwise -> Right (genericWordQuotRemOp W16)
- WordAdd2Op | (ncg && (x86ish
- || ppc))
+ WordAdd2Op | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_Add2 (wordWidth dflags))
| otherwise -> Right genericWordAdd2Op
- WordAddCOp | (ncg && (x86ish
- || ppc))
+ WordAddCOp | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_AddWordC (wordWidth dflags))
| otherwise -> Right genericWordAddCOp
- WordSubCOp | (ncg && (x86ish
- || ppc))
+ WordSubCOp | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_SubWordC (wordWidth dflags))
| otherwise -> Right genericWordSubCOp
- IntAddCOp | (ncg && (x86ish
- || ppc))
+ IntAddCOp | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_AddIntC (wordWidth dflags))
| otherwise -> Right genericIntAddCOp
- IntSubCOp | (ncg && (x86ish
- || ppc))
+ IntSubCOp | (ncg && (x86ish || ppc))
|| llvm -> Left (MO_SubIntC (wordWidth dflags))
| otherwise -> Right genericIntSubCOp
- WordMul2Op | ncg && (x86ish
- || ppc)
+ WordMul2Op | ncg && (x86ish || ppc)
|| llvm -> Left (MO_U_Mul2 (wordWidth dflags))
| otherwise -> Right genericWordMul2Op
- FloatFabsOp | (ncg && x86ish
- || ppc)
+ FloatFabsOp | (ncg && x86ish || ppc)
|| llvm -> Left MO_F32_Fabs
| otherwise -> Right $ genericFabsOp W32
- DoubleFabsOp | (ncg && x86ish
- || ppc)
+ DoubleFabsOp | (ncg && x86ish || ppc)
|| llvm -> Left MO_F64_Fabs
| otherwise -> Right $ genericFabsOp W64