projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add PrimCall to the STG layer and update Core -> STG translation
[ghc-hetmet.git]
/
compiler
/
codeGen
/
StgCmmPrim.hs
diff --git
a/compiler/codeGen/StgCmmPrim.hs
b/compiler/codeGen/StgCmmPrim.hs
index
1d2f0db
..
80a4bb6
100644
(file)
--- a/
compiler/codeGen/StgCmmPrim.hs
+++ b/
compiler/codeGen/StgCmmPrim.hs
@@
-82,7
+82,7
@@
cgOpApp (StgPrimOp primop) args res_ty
| primOpOutOfLine primop
= do { cmm_args <- getNonVoidArgAmodes args
; let fun = CmmLit (CmmLabel (mkRtsPrimOpLabel primop))
| primOpOutOfLine primop
= do { cmm_args <- getNonVoidArgAmodes args
; let fun = CmmLit (CmmLabel (mkRtsPrimOpLabel primop))
- ; emitCall PrimOpCall fun cmm_args }
+ ; emitCall (PrimOpCall, PrimOpReturn) fun cmm_args }
| ReturnsPrim VoidRep <- result_info
= do cgPrimOp [] primop args
| ReturnsPrim VoidRep <- result_info
= do cgPrimOp [] primop args
@@
-110,6
+110,11
@@
cgOpApp (StgPrimOp primop) args res_ty
where
result_info = getPrimOpResultInfo primop
where
result_info = getPrimOpResultInfo primop
+cgOpApp (StgPrimCallOp primcall) args _res_ty
+ = do { cmm_args <- getNonVoidArgAmodes args
+ ; let fun = CmmLit (CmmLabel (mkPrimCallLabel primcall))
+ ; emitCall (PrimOpCall, PrimOpReturn) fun cmm_args }
+
---------------------------------------------------
cgPrimOp :: [LocalReg] -- where to put the results
-> PrimOp -- the op
---------------------------------------------------
cgPrimOp :: [LocalReg] -- where to put the results
-> PrimOp -- the op