summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/SPARC/CodeGen.hs
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2012-02-23 19:57:57 +0000
committerIan Lynagh <igloo@earth.li>2012-02-23 19:59:20 +0000
commit98acdf083c119b018f25097593668a816dc68068 (patch)
tree3ed98b700e687ed988519d54b574096e949a214e /compiler/nativeGen/SPARC/CodeGen.hs
parent7d8b2c18eeb166ea64504fb3a8022edd6b36e870 (diff)
downloadhaskell-98acdf083c119b018f25097593668a816dc68068.tar.gz
Add a Word add-with-carry primop
No special-casing in any NCGs yet
Diffstat (limited to 'compiler/nativeGen/SPARC/CodeGen.hs')
-rw-r--r--compiler/nativeGen/SPARC/CodeGen.hs13
1 files changed, 6 insertions, 7 deletions
diff --git a/compiler/nativeGen/SPARC/CodeGen.hs b/compiler/nativeGen/SPARC/CodeGen.hs
index 6093751595..f5ee02204f 100644
--- a/compiler/nativeGen/SPARC/CodeGen.hs
+++ b/compiler/nativeGen/SPARC/CodeGen.hs
@@ -39,7 +39,6 @@ import NCGMonad
-- Our intermediate code:
import BlockId
import OldCmm
-import OldCmmUtils
import PIC
import Reg
import CLabel
@@ -381,17 +380,16 @@ genCCall
--
-- In the SPARC case we don't need a barrier.
--
-genCCall (CmmPrim (MO_WriteBarrier)) _ _
+genCCall (CmmPrim (MO_WriteBarrier) _) _ _
= do return nilOL
-genCCall (CmmPrim op) results args
- | Just stmts <- expandCallishMachOp op results args
- = stmtsToInstrs stmts
+genCCall (CmmPrim _ (Just mkStmts)) results args
+ = stmtsToInstrs (mkStmts results args)
genCCall target dest_regs argsAndHints
= do
-- need to remove alignment information
- let argsAndHints' | (CmmPrim mop) <- target,
+ let argsAndHints' | (CmmPrim mop _) <- target,
(mop == MO_Memcpy ||
mop == MO_Memset ||
mop == MO_Memmove)
@@ -423,7 +421,7 @@ genCCall target dest_regs argsAndHints
-> do (dyn_c, [dyn_r]) <- arg_to_int_vregs expr
return (dyn_c `snocOL` CALL (Right dyn_r) n_argRegs_used False)
- CmmPrim mop
+ CmmPrim mop _
-> do res <- outOfLineMachOp mop
lblOrMopExpr <- case res of
Left lbl -> do
@@ -644,6 +642,7 @@ outOfLineMachOp_table mop
MO_S_QuotRem {} -> unsupported
MO_U_QuotRem {} -> unsupported
+ MO_Add2 {} -> unsupported
MO_WriteBarrier -> unsupported
MO_Touch -> unsupported
where unsupported = panic ("outOfLineCmmOp: " ++ show mop