diff options
author | Ian Lynagh <igloo@earth.li> | 2012-04-21 15:03:23 +0100 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2012-04-21 15:03:23 +0100 |
commit | 5136d64e47155070f9c7129b53156545a79b5e00 (patch) | |
tree | f8a1341382275a461ac286469f1c3341277f25ac /compiler/cmm | |
parent | 6508697f398fa4e9241cec88991772eda86e37b3 (diff) | |
download | haskell-5136d64e47155070f9c7129b53156545a79b5e00.tar.gz |
Add a quotRemWord2 primop
It allows you to do
(high, low) `quotRem` d
provided high < d.
Currently only has an inefficient fallback implementation.
Diffstat (limited to 'compiler/cmm')
-rw-r--r-- | compiler/cmm/CmmMachOp.hs | 1 | ||||
-rw-r--r-- | compiler/cmm/PprC.hs | 11 |
2 files changed, 7 insertions, 5 deletions
diff --git a/compiler/cmm/CmmMachOp.hs b/compiler/cmm/CmmMachOp.hs index d9484a6644..2bf8bc207e 100644 --- a/compiler/cmm/CmmMachOp.hs +++ b/compiler/cmm/CmmMachOp.hs @@ -442,6 +442,7 @@ data CallishMachOp | MO_S_QuotRem Width | MO_U_QuotRem Width + | MO_U_QuotRem2 Width | MO_Add2 Width | MO_U_Mul2 Width diff --git a/compiler/cmm/PprC.hs b/compiler/cmm/PprC.hs index 346b108fa4..9515612405 100644 --- a/compiler/cmm/PprC.hs +++ b/compiler/cmm/PprC.hs @@ -661,11 +661,12 @@ pprCallishMachOp_for_C mop MO_Memmove -> ptext (sLit "memmove") (MO_PopCnt w) -> ptext (sLit $ popCntLabel w) - MO_S_QuotRem {} -> unsupported - MO_U_QuotRem {} -> unsupported - MO_Add2 {} -> unsupported - MO_U_Mul2 {} -> unsupported - MO_Touch -> unsupported + MO_S_QuotRem {} -> unsupported + MO_U_QuotRem {} -> unsupported + MO_U_QuotRem2 {} -> unsupported + MO_Add2 {} -> unsupported + MO_U_Mul2 {} -> unsupported + MO_Touch -> unsupported where unsupported = panic ("pprCallishMachOp_for_C: " ++ show mop ++ " not supported!") |