+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
-----------------------------------------------------------------------------
--
-- (c) The University of Glasgow 2002-2006
--
-----------------------------------------------------------------------------
-{-# OPTIONS_GHC -w #-}
--- The above warning supression flag is a temporary kludge.
--- While working on this module you are encouraged to remove it and fix
--- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
--- for details
-
module MachOp (
MachRep(..),
machRepBitWidth,
import Constants
import Outputable
+import FastString
-- -----------------------------------------------------------------------------
-- MachRep
| F80 -- extended double-precision, used in x86 native codegen only.
deriving (Eq, Ord, Show)
-mrStr I8 = SLIT("I8")
-mrStr I16 = SLIT("I16")
-mrStr I32 = SLIT("I32")
-mrStr I64 = SLIT("I64")
-mrStr I128 = SLIT("I128")
-mrStr F32 = SLIT("F32")
-mrStr F64 = SLIT("F64")
-mrStr F80 = SLIT("F80")
+mrStr I8 = sLit "I8"
+mrStr I16 = sLit "I16"
+mrStr I32 = sLit "I32"
+mrStr I64 = sLit "I64"
+mrStr I128 = sLit "I128"
+mrStr F32 = sLit "F32"
+mrStr F64 = sLit "F64"
+mrStr F80 = sLit "F80"
instance Outputable MachRep where
ppr rep = ptext (mrStr rep)
| FloatHint
deriving Eq
-mhStr NoHint = SLIT("NoHint")
-mhStr PtrHint = SLIT("PtrHint")
-mhStr SignedHint = SLIT("SignedHint")
-mhStr FloatHint = SLIT("FloatHint")
+mhStr NoHint = sLit "NoHint"
+mhStr PtrHint = sLit "PtrHint"
+mhStr SignedHint = sLit "SignedHint"
+mhStr FloatHint = sLit "FloatHint"
instance Outputable MachHint where
ppr hint = ptext (mhStr hint)
-- isCommutableMachOp
{- |
-Returns 'True' if the MachOp has commutable arguments. This is used
+Returns @True@ if the MachOp has commutable arguments. This is used
in the platform-independent Cmm optimisations.
-If in doubt, return 'False'. This generates worse code on the
+If in doubt, return @False@. This generates worse code on the
native routes, but is otherwise harmless.
-}
isCommutableMachOp :: MachOp -> Bool
-- isAssociativeMachOp
{- |
-Returns 'True' if the MachOp is associative (i.e. @(x+y)+z == x+(y+z)@)
+Returns @True@ if the MachOp is associative (i.e. @(x+y)+z == x+(y+z)@)
This is used in the platform-independent Cmm optimisations.
-If in doubt, return 'False'. This generates worse code on the
+If in doubt, return @False@. This generates worse code on the
native routes, but is otherwise harmless.
-}
isAssociativeMachOp :: MachOp -> Bool
-- isComparisonMachOp
{- |
-Returns 'True' if the MachOp is a comparison.
+Returns @True@ if the MachOp is a comparison.
If in doubt, return False. This generates worse code on the
native routes, but is otherwise harmless.