diff options
author | Ian Lynagh <ian@well-typed.com> | 2012-09-10 17:04:41 +0100 |
---|---|---|
committer | Ian Lynagh <ian@well-typed.com> | 2012-09-10 17:23:35 +0100 |
commit | 94dbd655faefdcb4f49785a93b5c1af1c3529d30 (patch) | |
tree | 93d8dda7c4363d347d51d7eb8f17282077e37cc7 | |
parent | 26ebd1b72e5f8148274c72f0c981e3f64d1b2636 (diff) | |
download | haskell-94dbd655faefdcb4f49785a93b5c1af1c3529d30.tar.gz |
Pass Platform down to halfWordMask
-rw-r--r-- | compiler/cmm/CmmType.hs | 9 | ||||
-rw-r--r-- | compiler/codeGen/CgPrimOp.hs | 4 | ||||
-rw-r--r-- | 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 d108e85431..63b42f83bb 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 1f572bf486..c2b7a11c33 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 07b8ddf406..29d99943be 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)), |