[commit: ghc] master: Pass Platform down to halfWordMask (94dbd65)

Ian Lynagh <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/94dbd655faefdcb4f49785a93b5c1af1c3529d30

>---------------------------------------------------------------

commit 94dbd655faefdcb4f49785a93b5c1af1c3529d30
Author: Ian Lynagh <[email protected]>
Date:   Mon Sep 10 17:04:41 2012 +0100

    Pass Platform down to halfWordMask

>---------------------------------------------------------------

 compiler/cmm/CmmType.hs        |    9 +++++----
 compiler/codeGen/CgPrimOp.hs   |    4 ++--
 compiler/codeGen/StgCmmPrim.hs |    4 ++--
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/compiler/cmm/CmmType.hs b/compiler/cmm/CmmType.hs
index d108e85..63b42f8 100644
--- a/compiler/cmm/CmmType.hs
+++ b/compiler/cmm/CmmType.hs
@@ -171,10 +171,11 @@ halfWordWidth _
  | wORD_SIZE == 8 = W32
  | otherwise      = panic "MachOp.halfWordRep: Unknown word size"
 
-halfWordMask :: Integer
-halfWordMask | wORD_SIZE == 4 = 0xFFFF
-             | wORD_SIZE == 8 = 0xFFFFFFFF
-             | otherwise      = panic "MachOp.halfWordMask: Unknown word size"
+halfWordMask :: Platform -> Integer
+halfWordMask _
+ | wORD_SIZE == 4 = 0xFFFF
+ | wORD_SIZE == 8 = 0xFFFFFFFF
+ | otherwise      = panic "MachOp.halfWordMask: Unknown word size"
 
 -- cIntRep is the Width for a C-language 'int'
 cIntWidth, cLongWidth :: Width
diff --git a/compiler/codeGen/CgPrimOp.hs b/compiler/codeGen/CgPrimOp.hs
index 1f572bf..c2b7a11 100644
--- a/compiler/codeGen/CgPrimOp.hs
+++ b/compiler/codeGen/CgPrimOp.hs
@@ -568,7 +568,7 @@ emitPrimOp [res_h, res_l] WordAdd2Op [arg_x, arg_y] _
                      or x y = CmmMachOp (MO_Or wordWidth) [x, y]
                      hww = CmmLit (CmmInt (fromIntegral (widthInBits (halfWordWidth platform)))
                                           wordWidth)
-                     hwm = CmmLit (CmmInt halfWordMask wordWidth)
+                     hwm = CmmLit (CmmInt (halfWordMask platform) wordWidth)
           stmt = CmmCall (CmmPrim (MO_Add2 wordWidth) (Just genericImpl))
                          [CmmHinted res_h NoHint,
                           CmmHinted res_l NoHint]
@@ -614,7 +614,7 @@ emitPrimOp [res_h, res_l] WordMul2Op [arg_x, arg_y] _
                      or x y = CmmMachOp (MO_Or wordWidth) [x, y]
                      hww = CmmLit (CmmInt (fromIntegral (widthInBits (halfWordWidth platform)))
                                           wordWidth)
-                     hwm = CmmLit (CmmInt halfWordMask wordWidth)
+                     hwm = CmmLit (CmmInt (halfWordMask platform) wordWidth)
           stmt = CmmCall (CmmPrim (MO_U_Mul2 wordWidth) (Just genericImpl))
                          [CmmHinted res_h NoHint,
                           CmmHinted res_l NoHint]
diff --git a/compiler/codeGen/StgCmmPrim.hs b/compiler/codeGen/StgCmmPrim.hs
index 07b8ddf..29d9994 100644
--- a/compiler/codeGen/StgCmmPrim.hs
+++ b/compiler/codeGen/StgCmmPrim.hs
@@ -641,7 +641,7 @@ genericWordAdd2Op [res_h, res_l] [arg_x, arg_y]
            or x y = CmmMachOp (MO_Or wordWidth) [x, y]
            hww = CmmLit (CmmInt (fromIntegral (widthInBits (halfWordWidth platform)))
                                 wordWidth)
-           hwm = CmmLit (CmmInt halfWordMask wordWidth)
+           hwm = CmmLit (CmmInt (halfWordMask platform) wordWidth)
        emit $ catAGraphs
           [mkAssign (CmmLocal r1)
                (add (bottomHalf arg_x) (bottomHalf arg_y)),
@@ -675,7 +675,7 @@ genericWordMul2Op [res_h, res_l] [arg_x, arg_y]
           or x y = CmmMachOp (MO_Or wordWidth) [x, y]
           hww = CmmLit (CmmInt (fromIntegral (widthInBits (halfWordWidth platform)))
                                wordWidth)
-          hwm = CmmLit (CmmInt halfWordMask wordWidth)
+          hwm = CmmLit (CmmInt (halfWordMask platform) wordWidth)
       emit $ catAGraphs
              [mkAssign xlyl
                   (mul (bottomHalf arg_x) (bottomHalf arg_y)),
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.