{-# OPTIONS_GHC -w #-}
{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
#if __GLASGOW_HASKELL__ >= 710
{-# OPTIONS_GHC -XPartialTypeSignatures #-}
#endif
{-# LANGUAGE TupleSections #-}

module GHC.Cmm.Parser ( parseCmmFile ) where

import GHC.Prelude
import qualified Prelude -- for happy-generated code

import GHC.Driver.Session
import GHC.Driver.Ppr
import GHC.Driver.Config.Parser (initParserOpts)
import GHC.Driver.Config.StgToCmm

import GHC.Platform
import GHC.Platform.Profile

import GHC.StgToCmm.ExtCode
import GHC.StgToCmm.Heap
import GHC.StgToCmm.Monad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit
                                 , emitStore, emitAssign, emitOutOfLine, withUpdFrameOff
                                 , getUpdFrameOff, getProfile, getPlatform, getContext)
import qualified GHC.StgToCmm.Monad as F
import GHC.StgToCmm.Utils
import GHC.StgToCmm.Foreign
import GHC.StgToCmm.Expr
import GHC.StgToCmm.Lit
import GHC.StgToCmm.Closure
import GHC.StgToCmm.Config
import GHC.StgToCmm.Layout     hiding (ArgRep(..))
import GHC.StgToCmm.Ticky
import GHC.StgToCmm.Prof
import GHC.StgToCmm.Bind  ( emitBlackHoleCode, emitUpdateFrame )
import GHC.StgToCmm.InfoTableProv

import GHC.Cmm.Opt
import GHC.Cmm.Graph
import GHC.Cmm
import GHC.Cmm.Utils
import GHC.Cmm.Switch     ( mkSwitchTargets )
import GHC.Cmm.Info
import GHC.Cmm.BlockId
import GHC.Cmm.Lexer
import GHC.Cmm.CLabel
import GHC.Cmm.Parser.Monad hiding (getPlatform, getProfile)
import qualified GHC.Cmm.Parser.Monad as PD
import GHC.Cmm.CallConv
import GHC.Runtime.Heap.Layout
import GHC.Parser.Lexer
import GHC.Parser.Errors.Types
import GHC.Parser.Errors.Ppr

import GHC.Types.CostCentre
import GHC.Types.ForeignCall
import GHC.Unit.Module
import GHC.Unit.Home
import GHC.Types.Literal
import GHC.Types.Unique
import GHC.Types.Unique.FM
import GHC.Types.SrcLoc
import GHC.Types.Tickish  ( GenTickish(SourceNote) )
import GHC.Utils.Error
import GHC.Data.StringBuffer
import GHC.Data.FastString
import GHC.Utils.Panic
import GHC.Settings.Constants
import GHC.Utils.Outputable
import GHC.Types.Basic
import GHC.Data.Bag     ( Bag, emptyBag, unitBag, isEmptyBag )
import GHC.Types.Var

import Control.Monad
import Data.Array
import Data.Char        ( ord )
import System.Exit
import Data.Maybe
import qualified Data.Map as M
import qualified Data.ByteString.Char8 as BS8
import qualified Data.Array as Happy_Data_Array
import qualified Data.Bits as Bits
import qualified GHC.Exts as Happy_GHC_Exts
import Control.Applicative(Applicative(..))
import Control.Monad (ap)

-- parser produced by Happy Version 1.20.0

newtype HappyAbsSyn  = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
newtype HappyWrap4 = HappyWrap4 (CmmParse ())
happyIn4 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn4 :: CmmParse () -> HappyAbsSyn
happyIn4 CmmParse ()
x = HappyWrap4 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap4
HappyWrap4 CmmParse ()
x)
{-# INLINE happyIn4 #-}
happyOut4 :: (HappyAbsSyn ) -> HappyWrap4
happyOut4 :: HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap4
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut4 #-}
newtype HappyWrap5 = HappyWrap5 (CmmParse ())
happyIn5 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn5 :: CmmParse () -> HappyAbsSyn
happyIn5 CmmParse ()
x = HappyWrap5 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap5
HappyWrap5 CmmParse ()
x)
{-# INLINE happyIn5 #-}
happyOut5 :: (HappyAbsSyn ) -> HappyWrap5
happyOut5 :: HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap5
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut5 #-}
newtype HappyWrap6 = HappyWrap6 (CmmParse ())
happyIn6 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn6 :: CmmParse () -> HappyAbsSyn
happyIn6 CmmParse ()
x = HappyWrap6 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap6
HappyWrap6 CmmParse ()
x)
{-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
happyOut6 :: HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap6
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut6 #-}
newtype HappyWrap7 = HappyWrap7 (CmmParse CLabel)
happyIn7 :: (CmmParse CLabel) -> (HappyAbsSyn )
happyIn7 :: CmmParse CLabel -> HappyAbsSyn
happyIn7 CmmParse CLabel
x = HappyWrap7 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CLabel -> HappyWrap7
HappyWrap7 CmmParse CLabel
x)
{-# INLINE happyIn7 #-}
happyOut7 :: (HappyAbsSyn ) -> HappyWrap7
happyOut7 :: HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap7
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut7 #-}
newtype HappyWrap8 = HappyWrap8 ([CmmParse [CmmStatic]])
happyIn8 :: ([CmmParse [CmmStatic]]) -> (HappyAbsSyn )
happyIn8 :: [CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8 [CmmParse [CmmStatic]]
x = HappyWrap8 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse [CmmStatic]] -> HappyWrap8
HappyWrap8 [CmmParse [CmmStatic]]
x)
{-# INLINE happyIn8 #-}
happyOut8 :: (HappyAbsSyn ) -> HappyWrap8
happyOut8 :: HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap8
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut8 #-}
newtype HappyWrap9 = HappyWrap9 (CmmParse [CmmStatic])
happyIn9 :: (CmmParse [CmmStatic]) -> (HappyAbsSyn )
happyIn9 :: CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9 CmmParse [CmmStatic]
x = HappyWrap9 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse [CmmStatic] -> HappyWrap9
HappyWrap9 CmmParse [CmmStatic]
x)
{-# INLINE happyIn9 #-}
happyOut9 :: (HappyAbsSyn ) -> HappyWrap9
happyOut9 :: HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap9
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut9 #-}
newtype HappyWrap10 = HappyWrap10 ([CmmParse CmmExpr])
happyIn10 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn10 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn10 [CmmParse CmmExpr]
x = HappyWrap10 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap10
HappyWrap10 [CmmParse CmmExpr]
x)
{-# INLINE happyIn10 #-}
happyOut10 :: (HappyAbsSyn ) -> HappyWrap10
happyOut10 :: HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap10
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut10 #-}
newtype HappyWrap11 = HappyWrap11 (CmmParse ())
happyIn11 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn11 :: CmmParse () -> HappyAbsSyn
happyIn11 CmmParse ()
x = HappyWrap11 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap11
HappyWrap11 CmmParse ()
x)
{-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
happyOut11 :: HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap11
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut11 #-}
newtype HappyWrap12 = HappyWrap12 (Convention)
happyIn12 :: (Convention) -> (HappyAbsSyn )
happyIn12 :: Convention -> HappyAbsSyn
happyIn12 Convention
x = HappyWrap12 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Convention -> HappyWrap12
HappyWrap12 Convention
x)
{-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
happyOut12 :: HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap12
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut12 #-}
newtype HappyWrap13 = HappyWrap13 (CmmParse ())
happyIn13 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn13 :: CmmParse () -> HappyAbsSyn
happyIn13 CmmParse ()
x = HappyWrap13 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap13
HappyWrap13 CmmParse ()
x)
{-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
happyOut13 :: HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap13
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut13 #-}
newtype HappyWrap14 = HappyWrap14 (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
happyIn14 :: (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])) -> (HappyAbsSyn )
happyIn14 :: CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
x = HappyWrap14 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyWrap14
HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
x)
{-# INLINE happyIn14 #-}
happyOut14 :: (HappyAbsSyn ) -> HappyWrap14
happyOut14 :: HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap14
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut14 #-}
newtype HappyWrap15 = HappyWrap15 (CmmParse ())
happyIn15 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn15 :: CmmParse () -> HappyAbsSyn
happyIn15 CmmParse ()
x = HappyWrap15 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap15
HappyWrap15 CmmParse ()
x)
{-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
happyOut15 :: HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap15
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut15 #-}
newtype HappyWrap16 = HappyWrap16 (CmmParse ())
happyIn16 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn16 :: CmmParse () -> HappyAbsSyn
happyIn16 CmmParse ()
x = HappyWrap16 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap16
HappyWrap16 CmmParse ()
x)
{-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
happyOut16 :: HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap16
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut16 #-}
newtype HappyWrap17 = HappyWrap17 ([(FastString, CLabel)])
happyIn17 :: ([(FastString, CLabel)]) -> (HappyAbsSyn )
happyIn17 :: [(FastString, CLabel)] -> HappyAbsSyn
happyIn17 [(FastString, CLabel)]
x = HappyWrap17 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([(FastString, CLabel)] -> HappyWrap17
HappyWrap17 [(FastString, CLabel)]
x)
{-# INLINE happyIn17 #-}
happyOut17 :: (HappyAbsSyn ) -> HappyWrap17
happyOut17 :: HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap17
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut17 #-}
newtype HappyWrap18 = HappyWrap18 ((FastString,  CLabel))
happyIn18 :: ((FastString,  CLabel)) -> (HappyAbsSyn )
happyIn18 :: (FastString, CLabel) -> HappyAbsSyn
happyIn18 (FastString, CLabel)
x = HappyWrap18 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ((FastString, CLabel) -> HappyWrap18
HappyWrap18 (FastString, CLabel)
x)
{-# INLINE happyIn18 #-}
happyOut18 :: (HappyAbsSyn ) -> HappyWrap18
happyOut18 :: HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap18
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut18 #-}
newtype HappyWrap19 = HappyWrap19 ([FastString])
happyIn19 :: ([FastString]) -> (HappyAbsSyn )
happyIn19 :: [FastString] -> HappyAbsSyn
happyIn19 [FastString]
x = HappyWrap19 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([FastString] -> HappyWrap19
HappyWrap19 [FastString]
x)
{-# INLINE happyIn19 #-}
happyOut19 :: (HappyAbsSyn ) -> HappyWrap19
happyOut19 :: HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap19
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut19 #-}
newtype HappyWrap20 = HappyWrap20 (CmmParse ())
happyIn20 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn20 :: CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
x = HappyWrap20 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap20
HappyWrap20 CmmParse ()
x)
{-# INLINE happyIn20 #-}
happyOut20 :: (HappyAbsSyn ) -> HappyWrap20
happyOut20 :: HappyAbsSyn -> HappyWrap20
happyOut20 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap20
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut20 #-}
newtype HappyWrap21 = HappyWrap21 (CmmParse [(GlobalReg, Maybe CmmExpr)])
happyIn21 :: (CmmParse [(GlobalReg, Maybe CmmExpr)]) -> (HappyAbsSyn )
happyIn21 :: CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21 CmmParse [(GlobalReg, Maybe CmmExpr)]
x = HappyWrap21 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyWrap21
HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
x)
{-# INLINE happyIn21 #-}
happyOut21 :: (HappyAbsSyn ) -> HappyWrap21
happyOut21 :: HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap21
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut21 #-}
newtype HappyWrap22 = HappyWrap22 (CmmParse MemoryOrdering)
happyIn22 :: (CmmParse MemoryOrdering) -> (HappyAbsSyn )
happyIn22 :: CmmParse MemoryOrdering -> HappyAbsSyn
happyIn22 CmmParse MemoryOrdering
x = HappyWrap22 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse MemoryOrdering -> HappyWrap22
HappyWrap22 CmmParse MemoryOrdering
x)
{-# INLINE happyIn22 #-}
happyOut22 :: (HappyAbsSyn ) -> HappyWrap22
happyOut22 :: HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap22
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut22 #-}
newtype HappyWrap23 = HappyWrap23 (CmmParse (Maybe CmmExpr))
happyIn23 :: (CmmParse (Maybe CmmExpr)) -> (HappyAbsSyn )
happyIn23 :: CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn23 CmmParse (Maybe CmmExpr)
x = HappyWrap23 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Maybe CmmExpr) -> HappyWrap23
HappyWrap23 CmmParse (Maybe CmmExpr)
x)
{-# INLINE happyIn23 #-}
happyOut23 :: (HappyAbsSyn ) -> HappyWrap23
happyOut23 :: HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap23
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut23 #-}
newtype HappyWrap24 = HappyWrap24 (CmmParse CmmExpr)
happyIn24 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn24 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn24 CmmParse CmmExpr
x = HappyWrap24 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap24
HappyWrap24 CmmParse CmmExpr
x)
{-# INLINE happyIn24 #-}
happyOut24 :: (HappyAbsSyn ) -> HappyWrap24
happyOut24 :: HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap24
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut24 #-}
newtype HappyWrap25 = HappyWrap25 (CmmReturnInfo)
happyIn25 :: (CmmReturnInfo) -> (HappyAbsSyn )
happyIn25 :: CmmReturnInfo -> HappyAbsSyn
happyIn25 CmmReturnInfo
x = HappyWrap25 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmReturnInfo -> HappyWrap25
HappyWrap25 CmmReturnInfo
x)
{-# INLINE happyIn25 #-}
happyOut25 :: (HappyAbsSyn ) -> HappyWrap25
happyOut25 :: HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap25
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut25 #-}
newtype HappyWrap26 = HappyWrap26 (CmmParse BoolExpr)
happyIn26 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
happyIn26 :: CmmParse BoolExpr -> HappyAbsSyn
happyIn26 CmmParse BoolExpr
x = HappyWrap26 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap26
HappyWrap26 CmmParse BoolExpr
x)
{-# INLINE happyIn26 #-}
happyOut26 :: (HappyAbsSyn ) -> HappyWrap26
happyOut26 :: HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap26
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut26 #-}
newtype HappyWrap27 = HappyWrap27 (CmmParse BoolExpr)
happyIn27 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
happyIn27 :: CmmParse BoolExpr -> HappyAbsSyn
happyIn27 CmmParse BoolExpr
x = HappyWrap27 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap27
HappyWrap27 CmmParse BoolExpr
x)
{-# INLINE happyIn27 #-}
happyOut27 :: (HappyAbsSyn ) -> HappyWrap27
happyOut27 :: HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap27
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut27 #-}
newtype HappyWrap28 = HappyWrap28 (Safety)
happyIn28 :: (Safety) -> (HappyAbsSyn )
happyIn28 :: Safety -> HappyAbsSyn
happyIn28 Safety
x = HappyWrap28 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Safety -> HappyWrap28
HappyWrap28 Safety
x)
{-# INLINE happyIn28 #-}
happyOut28 :: (HappyAbsSyn ) -> HappyWrap28
happyOut28 :: HappyAbsSyn -> HappyWrap28
happyOut28 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap28
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut28 #-}
newtype HappyWrap29 = HappyWrap29 ([GlobalReg])
happyIn29 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn29 :: [GlobalReg] -> HappyAbsSyn
happyIn29 [GlobalReg]
x = HappyWrap29 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap29
HappyWrap29 [GlobalReg]
x)
{-# INLINE happyIn29 #-}
happyOut29 :: (HappyAbsSyn ) -> HappyWrap29
happyOut29 :: HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap29
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut29 #-}
newtype HappyWrap30 = HappyWrap30 ([GlobalReg])
happyIn30 :: ([GlobalReg]) -> (HappyAbsSyn )
happyIn30 :: [GlobalReg] -> HappyAbsSyn
happyIn30 [GlobalReg]
x = HappyWrap30 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap30
HappyWrap30 [GlobalReg]
x)
{-# INLINE happyIn30 #-}
happyOut30 :: (HappyAbsSyn ) -> HappyWrap30
happyOut30 :: HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap30
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut30 #-}
newtype HappyWrap31 = HappyWrap31 (Maybe (Integer,Integer))
happyIn31 :: (Maybe (Integer,Integer)) -> (HappyAbsSyn )
happyIn31 :: Maybe (Integer, Integer) -> HappyAbsSyn
happyIn31 Maybe (Integer, Integer)
x = HappyWrap31 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe (Integer, Integer) -> HappyWrap31
HappyWrap31 Maybe (Integer, Integer)
x)
{-# INLINE happyIn31 #-}
happyOut31 :: (HappyAbsSyn ) -> HappyWrap31
happyOut31 :: HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap31
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut31 #-}
newtype HappyWrap32 = HappyWrap32 ([CmmParse ([Integer],Either BlockId (CmmParse ()))])
happyIn32 :: ([CmmParse ([Integer],Either BlockId (CmmParse ()))]) -> (HappyAbsSyn )
happyIn32 :: [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
x = HappyWrap32 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyWrap32
HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
x)
{-# INLINE happyIn32 #-}
happyOut32 :: (HappyAbsSyn ) -> HappyWrap32
happyOut32 :: HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap32
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut32 #-}
newtype HappyWrap33 = HappyWrap33 (CmmParse ([Integer],Either BlockId (CmmParse ())))
happyIn33 :: (CmmParse ([Integer],Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn33 :: CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn33 CmmParse ([Integer], Either BlockId (CmmParse ()))
x = HappyWrap33 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyWrap33
HappyWrap33 CmmParse ([Integer], Either BlockId (CmmParse ()))
x)
{-# INLINE happyIn33 #-}
happyOut33 :: (HappyAbsSyn ) -> HappyWrap33
happyOut33 :: HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap33
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut33 #-}
newtype HappyWrap34 = HappyWrap34 (CmmParse (Either BlockId (CmmParse ())))
happyIn34 :: (CmmParse (Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn34 :: CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn34 CmmParse (Either BlockId (CmmParse ()))
x = HappyWrap34 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Either BlockId (CmmParse ())) -> HappyWrap34
HappyWrap34 CmmParse (Either BlockId (CmmParse ()))
x)
{-# INLINE happyIn34 #-}
happyOut34 :: (HappyAbsSyn ) -> HappyWrap34
happyOut34 :: HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap34
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut34 #-}
newtype HappyWrap35 = HappyWrap35 ([Integer])
happyIn35 :: ([Integer]) -> (HappyAbsSyn )
happyIn35 :: [Integer] -> HappyAbsSyn
happyIn35 [Integer]
x = HappyWrap35 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([Integer] -> HappyWrap35
HappyWrap35 [Integer]
x)
{-# INLINE happyIn35 #-}
happyOut35 :: (HappyAbsSyn ) -> HappyWrap35
happyOut35 :: HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap35
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut35 #-}
newtype HappyWrap36 = HappyWrap36 (Maybe (CmmParse ()))
happyIn36 :: (Maybe (CmmParse ())) -> (HappyAbsSyn )
happyIn36 :: Maybe (CmmParse ()) -> HappyAbsSyn
happyIn36 Maybe (CmmParse ())
x = HappyWrap36 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe (CmmParse ()) -> HappyWrap36
HappyWrap36 Maybe (CmmParse ())
x)
{-# INLINE happyIn36 #-}
happyOut36 :: (HappyAbsSyn ) -> HappyWrap36
happyOut36 :: HappyAbsSyn -> HappyWrap36
happyOut36 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap36
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut36 #-}
newtype HappyWrap37 = HappyWrap37 (CmmParse ())
happyIn37 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn37 :: CmmParse () -> HappyAbsSyn
happyIn37 CmmParse ()
x = HappyWrap37 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap37
HappyWrap37 CmmParse ()
x)
{-# INLINE happyIn37 #-}
happyOut37 :: (HappyAbsSyn ) -> HappyWrap37
happyOut37 :: HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap37
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut37 #-}
newtype HappyWrap38 = HappyWrap38 (Maybe Bool)
happyIn38 :: (Maybe Bool) -> (HappyAbsSyn )
happyIn38 :: Maybe Bool -> HappyAbsSyn
happyIn38 Maybe Bool
x = HappyWrap38 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe Bool -> HappyWrap38
HappyWrap38 Maybe Bool
x)
{-# INLINE happyIn38 #-}
happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
happyOut38 :: HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap38
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut38 #-}
newtype HappyWrap39 = HappyWrap39 (CmmParse CmmExpr)
happyIn39 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn39 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn39 CmmParse CmmExpr
x = HappyWrap39 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap39
HappyWrap39 CmmParse CmmExpr
x)
{-# INLINE happyIn39 #-}
happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
happyOut39 :: HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap39
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut39 #-}
newtype HappyWrap40 = HappyWrap40 (CmmParse CmmExpr)
happyIn40 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn40 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn40 CmmParse CmmExpr
x = HappyWrap40 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap40
HappyWrap40 CmmParse CmmExpr
x)
{-# INLINE happyIn40 #-}
happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
happyOut40 :: HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap40
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut40 #-}
newtype HappyWrap41 = HappyWrap41 (CmmParse (AlignmentSpec, CmmExpr))
happyIn41 :: (CmmParse (AlignmentSpec, CmmExpr)) -> (HappyAbsSyn )
happyIn41 :: CmmParse (AlignmentSpec, CmmExpr) -> HappyAbsSyn
happyIn41 CmmParse (AlignmentSpec, CmmExpr)
x = HappyWrap41 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (AlignmentSpec, CmmExpr) -> HappyWrap41
HappyWrap41 CmmParse (AlignmentSpec, CmmExpr)
x)
{-# INLINE happyIn41 #-}
happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
happyOut41 :: HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap41
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut41 #-}
newtype HappyWrap42 = HappyWrap42 (CmmType)
happyIn42 :: (CmmType) -> (HappyAbsSyn )
happyIn42 :: CmmType -> HappyAbsSyn
happyIn42 CmmType
x = HappyWrap42 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap42
HappyWrap42 CmmType
x)
{-# INLINE happyIn42 #-}
happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
happyOut42 :: HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap42
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut42 #-}
newtype HappyWrap43 = HappyWrap43 ([CmmParse (CmmExpr, ForeignHint)])
happyIn43 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
happyIn43 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn43 [CmmParse (CmmExpr, ForeignHint)]
x = HappyWrap43 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap43
HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
x)
{-# INLINE happyIn43 #-}
happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
happyOut43 :: HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap43
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut43 #-}
newtype HappyWrap44 = HappyWrap44 ([CmmParse (CmmExpr, ForeignHint)])
happyIn44 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
happyIn44 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn44 [CmmParse (CmmExpr, ForeignHint)]
x = HappyWrap44 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap44
HappyWrap44 [CmmParse (CmmExpr, ForeignHint)]
x)
{-# INLINE happyIn44 #-}
happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
happyOut44 :: HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap44
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut44 #-}
newtype HappyWrap45 = HappyWrap45 (CmmParse (CmmExpr, ForeignHint))
happyIn45 :: (CmmParse (CmmExpr, ForeignHint)) -> (HappyAbsSyn )
happyIn45 :: CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn45 CmmParse (CmmExpr, ForeignHint)
x = HappyWrap45 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (CmmExpr, ForeignHint) -> HappyWrap45
HappyWrap45 CmmParse (CmmExpr, ForeignHint)
x)
{-# INLINE happyIn45 #-}
happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
happyOut45 :: HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap45
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut45 #-}
newtype HappyWrap46 = HappyWrap46 ([CmmParse CmmExpr])
happyIn46 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn46 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn46 [CmmParse CmmExpr]
x = HappyWrap46 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap46
HappyWrap46 [CmmParse CmmExpr]
x)
{-# INLINE happyIn46 #-}
happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
happyOut46 :: HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap46
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut46 #-}
newtype HappyWrap47 = HappyWrap47 ([CmmParse CmmExpr])
happyIn47 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn47 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn47 [CmmParse CmmExpr]
x = HappyWrap47 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap47
HappyWrap47 [CmmParse CmmExpr]
x)
{-# INLINE happyIn47 #-}
happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
happyOut47 :: HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap47
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut47 #-}
newtype HappyWrap48 = HappyWrap48 (CmmParse CmmExpr)
happyIn48 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn48 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn48 CmmParse CmmExpr
x = HappyWrap48 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap48
HappyWrap48 CmmParse CmmExpr
x)
{-# INLINE happyIn48 #-}
happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
happyOut48 :: HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap48
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut48 #-}
newtype HappyWrap49 = HappyWrap49 ([CmmParse (LocalReg, ForeignHint)])
happyIn49 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
happyIn49 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn49 [CmmParse (LocalReg, ForeignHint)]
x = HappyWrap49 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap49
HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
x)
{-# INLINE happyIn49 #-}
happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
happyOut49 :: HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap49
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut49 #-}
newtype HappyWrap50 = HappyWrap50 ([CmmParse (LocalReg, ForeignHint)])
happyIn50 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
happyIn50 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn50 [CmmParse (LocalReg, ForeignHint)]
x = HappyWrap50 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap50
HappyWrap50 [CmmParse (LocalReg, ForeignHint)]
x)
{-# INLINE happyIn50 #-}
happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
happyOut50 :: HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap50
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut50 #-}
newtype HappyWrap51 = HappyWrap51 (CmmParse (LocalReg, ForeignHint))
happyIn51 :: (CmmParse (LocalReg, ForeignHint)) -> (HappyAbsSyn )
happyIn51 :: CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn51 CmmParse (LocalReg, ForeignHint)
x = HappyWrap51 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (LocalReg, ForeignHint) -> HappyWrap51
HappyWrap51 CmmParse (LocalReg, ForeignHint)
x)
{-# INLINE happyIn51 #-}
happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
happyOut51 :: HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap51
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut51 #-}
newtype HappyWrap52 = HappyWrap52 (CmmParse LocalReg)
happyIn52 :: (CmmParse LocalReg) -> (HappyAbsSyn )
happyIn52 :: CmmParse LocalReg -> HappyAbsSyn
happyIn52 CmmParse LocalReg
x = HappyWrap52 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap52
HappyWrap52 CmmParse LocalReg
x)
{-# INLINE happyIn52 #-}
happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
happyOut52 :: HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap52
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut52 #-}
newtype HappyWrap53 = HappyWrap53 (CmmParse CmmReg)
happyIn53 :: (CmmParse CmmReg) -> (HappyAbsSyn )
happyIn53 :: CmmParse CmmReg -> HappyAbsSyn
happyIn53 CmmParse CmmReg
x = HappyWrap53 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmReg -> HappyWrap53
HappyWrap53 CmmParse CmmReg
x)
{-# INLINE happyIn53 #-}
happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
happyOut53 :: HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap53
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut53 #-}
newtype HappyWrap54 = HappyWrap54 (Maybe [CmmParse LocalReg])
happyIn54 :: (Maybe [CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn54 :: Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn54 Maybe [CmmParse LocalReg]
x = HappyWrap54 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe [CmmParse LocalReg] -> HappyWrap54
HappyWrap54 Maybe [CmmParse LocalReg]
x)
{-# INLINE happyIn54 #-}
happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
happyOut54 :: HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap54
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut54 #-}
newtype HappyWrap55 = HappyWrap55 ([CmmParse LocalReg])
happyIn55 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn55 :: [CmmParse LocalReg] -> HappyAbsSyn
happyIn55 [CmmParse LocalReg]
x = HappyWrap55 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap55
HappyWrap55 [CmmParse LocalReg]
x)
{-# INLINE happyIn55 #-}
happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
happyOut55 :: HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap55
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut55 #-}
newtype HappyWrap56 = HappyWrap56 ([CmmParse LocalReg])
happyIn56 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
happyIn56 :: [CmmParse LocalReg] -> HappyAbsSyn
happyIn56 [CmmParse LocalReg]
x = HappyWrap56 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap56
HappyWrap56 [CmmParse LocalReg]
x)
{-# INLINE happyIn56 #-}
happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
happyOut56 :: HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap56
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut56 #-}
newtype HappyWrap57 = HappyWrap57 (CmmParse LocalReg)
happyIn57 :: (CmmParse LocalReg) -> (HappyAbsSyn )
happyIn57 :: CmmParse LocalReg -> HappyAbsSyn
happyIn57 CmmParse LocalReg
x = HappyWrap57 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap57
HappyWrap57 CmmParse LocalReg
x)
{-# INLINE happyIn57 #-}
happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
happyOut57 :: HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap57
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut57 #-}
newtype HappyWrap58 = HappyWrap58 (CmmType)
happyIn58 :: (CmmType) -> (HappyAbsSyn )
happyIn58 :: CmmType -> HappyAbsSyn
happyIn58 CmmType
x = HappyWrap58 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap58
HappyWrap58 CmmType
x)
{-# INLINE happyIn58 #-}
happyOut58 :: (HappyAbsSyn ) -> HappyWrap58
happyOut58 :: HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap58
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut58 #-}
newtype HappyWrap59 = HappyWrap59 (CmmType)
happyIn59 :: (CmmType) -> (HappyAbsSyn )
happyIn59 :: CmmType -> HappyAbsSyn
happyIn59 CmmType
x = HappyWrap59 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap59
HappyWrap59 CmmType
x)
{-# INLINE happyIn59 #-}
happyOut59 :: (HappyAbsSyn ) -> HappyWrap59
happyOut59 :: HappyAbsSyn -> HappyWrap59
happyOut59 HappyAbsSyn
x = HappyAbsSyn -> HappyWrap59
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOut59 #-}
happyInTok :: (Located CmmToken) -> (HappyAbsSyn )
happyInTok :: Located CmmToken -> HappyAbsSyn
happyInTok Located CmmToken
x = Located CmmToken -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# Located CmmToken
x
{-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn ) -> (Located CmmToken)
happyOutTok :: HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
x = HappyAbsSyn -> Located CmmToken
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
x
{-# INLINE happyOutTok #-}


happyExpList :: HappyAddr
happyExpList :: HappyAddr
happyExpList = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0d\x40\xf0\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xdf\x00\x04\xff\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x78\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x20\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x21\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x10\xc0\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x80\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc2\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x20\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x02\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x78\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x10\xc0\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x20\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x02\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xf1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xc0\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x10\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x1f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x1f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x07\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x3f\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x01\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x78\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

{-# NOINLINE happyExpListPerState #-}
happyExpListPerState :: ByteOff -> [String]
happyExpListPerState ByteOff
st =
    [String]
token_strs_expected
  where token_strs :: [String]
token_strs = [String
"error",String
"%dummy",String
"%start_cmmParse",String
"cmm",String
"cmmtop",String
"cmmdata",String
"data_label",String
"statics",String
"static",String
"lits",String
"cmmproc",String
"maybe_conv",String
"maybe_body",String
"info",String
"body",String
"decl",String
"importNames",String
"importName",String
"names",String
"stmt",String
"unwind_regs",String
"mem_ordering",String
"expr_or_unknown",String
"foreignLabel",String
"opt_never_returns",String
"bool_expr",String
"bool_op",String
"safety",String
"vols",String
"globals",String
"maybe_range",String
"arms",String
"arm",String
"arm_body",String
"ints",String
"default",String
"else",String
"cond_likely",String
"expr",String
"expr0",String
"dereference",String
"maybe_ty",String
"cmm_hint_exprs0",String
"cmm_hint_exprs",String
"cmm_hint_expr",String
"exprs0",String
"exprs",String
"reg",String
"foreign_results",String
"foreign_formals",String
"foreign_formal",String
"local_lreg",String
"lreg",String
"maybe_formals",String
"formals0",String
"formals",String
"formal",String
"type",String
"typenot8",String
"':'",String
"';'",String
"'{'",String
"'}'",String
"'['",String
"']'",String
"'('",String
"')'",String
"'='",String
"'`'",String
"'~'",String
"'/'",String
"'*'",String
"'%'",String
"'-'",String
"'+'",String
"'&'",String
"'^'",String
"'|'",String
"'>'",String
"'<'",String
"','",String
"'!'",String
"'..'",String
"'::'",String
"'>>'",String
"'<<'",String
"'>='",String
"'<='",String
"'=='",String
"'!='",String
"'&&'",String
"'||'",String
"'True'",String
"'False'",String
"'likely'",String
"'relaxed'",String
"'acquire'",String
"'release'",String
"'seq_cst'",String
"'CLOSURE'",String
"'INFO_TABLE'",String
"'INFO_TABLE_RET'",String
"'INFO_TABLE_FUN'",String
"'INFO_TABLE_CONSTR'",String
"'INFO_TABLE_SELECTOR'",String
"'else'",String
"'export'",String
"'section'",String
"'goto'",String
"'if'",String
"'call'",String
"'jump'",String
"'foreign'",String
"'never'",String
"'prim'",String
"'reserve'",String
"'return'",String
"'returns'",String
"'import'",String
"'switch'",String
"'case'",String
"'default'",String
"'push'",String
"'unwind'",String
"'bits8'",String
"'bits16'",String
"'bits32'",String
"'bits64'",String
"'bits128'",String
"'bits256'",String
"'bits512'",String
"'float32'",String
"'float64'",String
"'gcptr'",String
"GLOBALREG",String
"NAME",String
"STRING",String
"INT",String
"FLOAT",String
"%eof"]
        bit_start :: ByteOff
bit_start = ByteOff
st ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Prelude.* ByteOff
140
        bit_end :: ByteOff
bit_end = (ByteOff
st ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Prelude.+ ByteOff
1) ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Prelude.* ByteOff
140
        read_bit :: ByteOff -> Bool
read_bit = HappyAddr -> ByteOff -> Bool
readArrayBit HappyAddr
happyExpList
        bits :: [Bool]
bits = (ByteOff -> Bool) -> [ByteOff] -> [Bool]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map ByteOff -> Bool
read_bit [ByteOff
bit_start..ByteOff
bit_end ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Prelude.- ByteOff
1]
        bits_indexed :: [(Bool, ByteOff)]
bits_indexed = [Bool] -> [ByteOff] -> [(Bool, ByteOff)]
forall a b. [a] -> [b] -> [(a, b)]
Prelude.zip [Bool]
bits [ByteOff
0..ByteOff
139]
        token_strs_expected :: [String]
token_strs_expected = ((Bool, ByteOff) -> [String]) -> [(Bool, ByteOff)] -> [String]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
Prelude.concatMap (Bool, ByteOff) -> [String]
f [(Bool, ByteOff)]
bits_indexed
        f :: (Bool, ByteOff) -> [String]
f (Bool
Prelude.False, ByteOff
_) = []
        f (Bool
Prelude.True, ByteOff
nr) = [[String]
token_strs [String] -> ByteOff -> String
forall a. HasCallStack => [a] -> ByteOff -> a
Prelude.!! ByteOff
nr]

happyActOffsets :: HappyAddr
happyActOffsets :: HappyAddr
happyActOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x62\x01\x00\x00\xd7\xff\x62\x01\x00\x00\x00\x00\xf0\xff\x00\x00\xdf\xff\x00\x00\x55\x00\x75\x00\x78\x00\x80\x00\x8b\x00\xa8\x00\xf3\xff\x90\x00\xe3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\xfa\x00\xc5\x00\x00\x00\xdc\x00\x14\x01\x3a\x01\x17\x01\xe8\x00\xf5\x00\xf7\x00\xfb\x00\x01\x01\x07\x01\x55\x01\x52\x01\x00\x00\x00\x00\x34\x00\xcb\x04\x00\x00\x44\x01\x45\x01\x57\x01\x5b\x01\x5c\x01\x63\x01\x1b\x01\x00\x00\x1e\x01\x00\x00\x00\x00\xe3\xff\x00\x00\x00\x00\x73\x00\x77\x01\x00\x00\x2c\x01\x2e\x01\x2f\x01\x30\x01\x34\x01\x2d\x01\x7d\x01\x00\x00\x72\x01\x4e\x01\x00\x00\x00\x00\x2b\x00\x98\x01\x2b\x00\x2b\x00\xcb\x04\xef\xff\x94\x01\x0a\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x7d\x00\x8c\x00\x8c\x00\x8c\x00\x8a\x01\x9a\x01\xa7\x01\x6a\x01\x00\x00\x13\x00\x00\x00\xcb\x04\x00\x00\xa1\x01\xa2\x01\xfd\xff\xa4\x01\xa5\x01\xa8\x01\x00\x00\xc2\x01\x73\x00\xff\xff\xc4\x01\xc0\x01\xcc\x01\x05\x00\x8f\x01\x91\x01\xe3\x01\xd8\x01\x00\x00\x12\x00\x00\x00\x8c\x00\x8c\x00\x97\x01\x8c\x00\x00\x00\x00\x00\x00\x00\xcd\x01\xcd\x01\x00\x00\x00\x00\xab\x01\xac\x01\xad\x01\x00\x00\xcb\x04\xbf\x01\xdf\x01\x8c\x00\x00\x00\x00\x00\x8c\x00\xe6\x01\x06\x02\x8c\x00\x8c\x00\xc1\x01\x8c\x00\x31\x03\x4e\x02\xe9\x02\x0e\x00\x00\x00\xb6\x04\x7d\x00\x7d\x00\x20\x02\x1b\x02\x0e\x02\x00\x00\x2d\x02\x00\x00\xea\x01\x8c\x00\x5b\x00\xfb\x01\x2a\x02\x45\x02\x00\x00\x00\x00\x00\x00\x8c\x00\xfe\x01\xff\x01\xcb\x04\xf7\x01\x68\x02\x00\x00\x4b\x02\x3c\x00\x4d\x02\x00\x00\x00\x00\x39\x00\x4f\x02\x1a\x03\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x01\x00\x34\x02\x7d\x00\x7d\x00\x8c\x00\x57\x02\x0c\x00\x8c\x00\x49\x00\x8e\x04\x5c\x02\x00\x00\x66\x02\x33\x02\x5d\x02\xa5\x00\x00\x00\x5e\x02\xa2\x04\x65\x02\x69\x02\x78\x02\x6b\x02\x83\x02\x84\x02\x00\x00\xcb\x04\x00\x00\x6d\x00\x91\x02\x00\x00\x1a\x03\x00\x00\x8c\x00\x96\x02\x58\x02\x00\x00\x9d\x02\x8e\x02\x59\x02\xa0\x02\xb0\x02\xb1\x02\xac\x02\xb3\x02\xb4\x02\x8c\x00\x82\x02\x00\x00\x8c\x00\x00\x00\x6f\x02\x70\x02\x71\x02\x00\x00\x72\x02\x00\x00\x00\x00\xca\x02\xb7\x02\xb6\x04\x00\x00\x96\x00\x90\x02\x80\x02\xd5\x02\x8c\x00\x96\x00\x00\x00\xd1\x02\xd2\x02\x00\x00\xd4\x02\xc5\x02\x00\x00\xde\x02\x8d\x00\xc7\x02\xe7\x02\x2b\x00\xa4\x02\xca\x04\xca\x04\xca\x04\xca\x04\x2f\x00\x2f\x00\xca\x04\xca\x04\x88\x01\xde\x04\xe4\x04\x6d\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x02\xea\x02\x00\x00\xed\x02\xf8\x02\x00\x00\xf9\x02\x9c\x02\xeb\x02\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x00\x00\xfd\x02\x8f\x00\x00\x03\xbe\x02\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x05\x03\xcd\x02\xcf\x02\xc9\x02\x00\x00\xce\x02\x00\x00\x03\x03\x0d\x03\x0e\x03\x0f\x03\x13\x03\x00\x00\xb6\x02\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x02\xe3\x02\xe5\x02\xee\x02\x00\x00\x30\x03\x25\x03\x00\x00\x44\x03\x48\x03\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x3f\x03\x42\x03\x24\x03\x02\x03\x0b\x02\xd0\x02\xea\x00\x4c\x03\x00\x00\x45\x03\x55\x03\x8c\x00\x1f\x02\x5a\x03\x8c\x00\x10\x03\x00\x00\x60\x03\x00\x00\x8c\x00\x00\x00\x70\x03\x00\x00\x00\x00\x5b\x03\x71\x03\x00\x00\x19\x03\x06\x00\x5f\x03\x6b\x03\x6c\x03\x6e\x03\x00\x00\x2d\x03\x36\x03\x39\x03\x00\x00\x2b\x00\x47\x03\x00\x00\x2b\x00\x81\x03\x2b\x00\x8a\x03\x00\x00\x5c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x93\x03\x66\x03\x98\x03\xa0\x03\x00\x00\xab\x03\xae\x03\xb3\x03\xb5\x03\xa5\x03\xa8\x03\x52\x03\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x03\xc3\x03\x00\x00\x00\x00\x00\x00"#

happyGotoOffsets :: HappyAddr
happyGotoOffsets :: HappyAddr
happyGotoOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x1f\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\xc4\x03\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\xce\x03\x3c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\xe5\x03\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x1c\x01\x1f\x01\xaf\x00\x00\x00\x00\x00\xd8\x03\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x01\x99\x01\x8e\x03\x90\x03\x00\x00\xd2\x03\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x9c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x9e\x03\xaa\x03\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xcd\x03\xdb\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x35\x03\xba\x03\x00\x00\x43\x03\x00\x00\xdd\x03\x00\x00\xe1\x03\x00\x00\x00\x00\x9c\x01\x9e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x03\xc6\x03\x4b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\xfb\x03\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x03\xd6\x03\xe2\x03\xe4\x03\xf0\x03\xf2\x03\xfe\x03\x00\x04\x0c\x04\x0e\x04\x1a\x04\x1c\x04\x28\x04\x2a\x04\x36\x04\x38\x04\x00\x00\x00\x00\xb5\x01\xb7\x01\x46\x03\x00\x00\xf7\x03\x54\x03\xd3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x04\x00\x00\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x04\x00\x00\x00\x00\x62\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x04\x16\x01\x00\x00\x00\x00\x5a\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x03\x2e\x03\x52\x04\x54\x04\x60\x04\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x04\x2a\x01\x0f\x04\x00\x00\x22\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x03\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x04\x00\x00\x00\x00\x7f\x03\x15\x04\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x04\x1b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x01\x00\x00\x00\x00\x3f\x01\x00\x00\x53\x01\x00\x00\x00\x00\x26\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
happyAdjustOffset :: Int# -> Int#
happyAdjustOffset Int#
off = Int#
off

happyDefActions :: HappyAddr
happyDefActions :: HappyAddr
happyDefActions = Addr# -> HappyAddr
HappyA# Addr#
"\xfe\xff\x00\x00\x00\x00\xfe\xff\xfb\xff\xfc\xff\xeb\xff\xfa\xff\x00\x00\x57\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\x56\xff\x55\xff\x54\xff\x53\xff\x52\xff\x51\xff\x50\xff\x4f\xff\x4e\xff\xe7\xff\x00\x00\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\xea\xff\xfd\xff\x00\x00\x5e\xff\xdd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\xd6\xff\xd7\xff\x00\x00\xdc\xff\xd9\xff\xf6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xff\x5b\xff\x00\x00\xec\xff\xe9\xff\xe0\xff\x00\x00\xe0\xff\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\xbb\xff\xb9\xff\xba\xff\xb8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\x00\x00\x00\x00\x61\xff\x62\xff\x59\xff\x5c\xff\x5f\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x57\xff\x00\x00\x58\xff\x00\x00\x00\x00\x00\x00\x00\x00\x82\xff\x7e\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\x6c\xff\x7f\xff\x78\xff\x78\xff\xf5\xff\xf8\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x5e\xff\x00\x00\x00\x00\x00\x00\x5a\xff\xd2\xff\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x00\x00\x96\xff\xb2\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\x65\xff\x00\x00\x63\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xdf\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xff\x00\x00\x67\xff\x00\x00\xc9\xff\xae\xff\x00\x00\xb2\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x6e\xff\x00\x00\x6f\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x00\x00\x81\xff\x84\xff\x00\x00\x85\xff\x00\x00\x7d\xff\x00\x00\x00\x00\x00\x00\xf4\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\xff\x70\xff\x77\xff\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\xf9\xff\xed\xff\x00\x00\xbc\xff\xb6\xff\xb7\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\x00\x00\x00\x00\xaa\xff\x00\x00\xa7\xff\xc7\xff\x00\x00\xaf\xff\xb0\xff\x00\x00\xe0\xff\x00\x00\x87\xff\x86\xff\x89\xff\x8b\xff\x8f\xff\x90\xff\x88\xff\x8a\xff\x8c\xff\x8d\xff\x8e\xff\x91\xff\x92\xff\x93\xff\x94\xff\x95\xff\xad\xff\x69\xff\x66\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\x00\x00\x70\xff\x76\xff\x00\x00\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xff\xa8\xff\x00\x00\xbf\xff\x6d\xff\xc8\xff\x00\x00\x9b\xff\xa3\xff\x00\x00\xc0\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\xf0\xff\xef\xff\xf2\xff\xf1\xff\x83\xff\x7a\xff\x7c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\x00\x00\x9e\xff\xa2\xff\x00\x00\x00\x00\xa5\xff\xc6\xff\x70\xff\xa6\xff\xc4\xff\x00\x00\x00\x00\x9a\xff\x00\x00\x00\x00\x00\x00\x72\xff\x00\x00\x75\xff\x74\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\x71\xff\x00\x00\xce\xff\x70\xff\xc1\xff\x00\x00\x97\xff\x98\xff\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\x00\x00\x00\x00\xa1\xff\xe0\xff\x00\x00\x9d\xff\xe0\xff\x00\x00\xe0\xff\x00\x00\xd0\xff\xb4\xff\xab\xff\x73\xff\xcc\xff\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xa0\xff\x9f\xff\x9c\xff\x99\xff\xc3\xff\xb3\xff\xcd\xff\x00\x00\x00\x00\xe4\xff\xe5\xff"#

happyCheck :: HappyAddr
happyCheck :: HappyAddr
happyCheck = Addr# -> HappyAddr
HappyA# Addr#
"\xff\xff\x02\x00\x04\x00\x05\x00\x03\x00\x08\x00\x07\x00\x04\x00\x05\x00\x03\x00\x0b\x00\x06\x00\x29\x00\x0e\x00\x0f\x00\x05\x00\x24\x00\x02\x00\x06\x00\x16\x00\x01\x00\x07\x00\x07\x00\x05\x00\x2c\x00\x0d\x00\x07\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x36\x00\x37\x00\x12\x00\x36\x00\x07\x00\x38\x00\x51\x00\x0a\x00\x3a\x00\x0c\x00\x4d\x00\x02\x00\x20\x00\x21\x00\x4d\x00\x4e\x00\x07\x00\x32\x00\x36\x00\x37\x00\x02\x00\x03\x00\x32\x00\x36\x00\x37\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x4d\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x25\x00\x26\x00\x27\x00\x28\x00\x4f\x00\x36\x00\x37\x00\x4d\x00\x4c\x00\x20\x00\x21\x00\x30\x00\x07\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x07\x00\x38\x00\x39\x00\x3a\x00\x0b\x00\x3c\x00\x3d\x00\x0e\x00\x0f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x0c\x00\x0d\x00\x0e\x00\x07\x00\x23\x00\x24\x00\x07\x00\x25\x00\x26\x00\x27\x00\x28\x00\x07\x00\x2b\x00\x2c\x00\x07\x00\x0b\x00\x4d\x00\x4e\x00\x0e\x00\x0f\x00\x2e\x00\x2f\x00\x30\x00\x36\x00\x37\x00\x07\x00\x07\x00\x17\x00\x4c\x00\x4d\x00\x0b\x00\x02\x00\x03\x00\x0e\x00\x0f\x00\x29\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x20\x00\x21\x00\x07\x00\x0b\x00\x22\x00\x23\x00\x0e\x00\x0f\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x4e\x00\x3a\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0e\x00\x36\x00\x37\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x36\x00\x37\x00\x36\x00\x37\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x01\x00\x02\x00\x02\x00\x0b\x00\x0c\x00\x16\x00\x07\x00\x4d\x00\x10\x00\x0a\x00\x12\x00\x0c\x00\x03\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x0c\x00\x4d\x00\x0b\x00\x0c\x00\x10\x00\x16\x00\x12\x00\x10\x00\x2d\x00\x12\x00\x1c\x00\x1d\x00\x31\x00\x4d\x00\x0b\x00\x0c\x00\x4e\x00\x36\x00\x37\x00\x10\x00\x02\x00\x12\x00\x0b\x00\x0c\x00\x36\x00\x37\x00\x4d\x00\x10\x00\x4d\x00\x12\x00\x1c\x00\x1d\x00\x4d\x00\x2d\x00\x0b\x00\x0c\x00\x2d\x00\x31\x00\x4d\x00\x10\x00\x31\x00\x12\x00\x36\x00\x37\x00\x4d\x00\x36\x00\x37\x00\x02\x00\x2d\x00\x07\x00\x16\x00\x16\x00\x31\x00\x12\x00\x0b\x00\x0c\x00\x2d\x00\x36\x00\x37\x00\x10\x00\x31\x00\x12\x00\x16\x00\x17\x00\x4d\x00\x36\x00\x37\x00\x4d\x00\x2d\x00\x16\x00\x23\x00\x24\x00\x31\x00\x16\x00\x16\x00\x23\x00\x24\x00\x36\x00\x37\x00\x2c\x00\x01\x00\x16\x00\x4d\x00\x4f\x00\x2c\x00\x4f\x00\x4f\x00\x4f\x00\x2d\x00\x36\x00\x37\x00\x4f\x00\x31\x00\x08\x00\x36\x00\x37\x00\x16\x00\x36\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x07\x00\x30\x00\x31\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4d\x00\x04\x00\x09\x00\x3c\x00\x05\x00\x13\x00\x4d\x00\x1a\x00\x1b\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x07\x00\x4d\x00\x23\x00\x24\x00\x16\x00\x17\x00\x16\x00\x17\x00\x4c\x00\x16\x00\x16\x00\x2c\x00\x16\x00\x16\x00\x23\x00\x24\x00\x16\x00\x23\x00\x24\x00\x23\x00\x24\x00\x36\x00\x37\x00\x2c\x00\x04\x00\x07\x00\x2c\x00\x05\x00\x2c\x00\x16\x00\x17\x00\x16\x00\x17\x00\x36\x00\x37\x00\x05\x00\x36\x00\x37\x00\x36\x00\x37\x00\x23\x00\x24\x00\x23\x00\x24\x00\x23\x00\x24\x00\x4d\x00\x2a\x00\x2b\x00\x2c\x00\x4f\x00\x2c\x00\x0a\x00\x2c\x00\x4d\x00\x02\x00\x19\x00\x08\x00\x02\x00\x36\x00\x37\x00\x36\x00\x37\x00\x36\x00\x37\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4f\x00\x4f\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4f\x00\x09\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x02\x00\x08\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x03\x00\x4d\x00\x0e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4e\x00\x05\x00\x4d\x00\x4d\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x05\x00\x09\x00\x07\x00\x09\x00\x08\x00\x24\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x08\x00\x08\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x18\x00\x16\x00\x08\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x07\x00\x16\x00\x16\x00\x05\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x06\x00\x16\x00\x4d\x00\x06\x00\x4e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x02\x00\x08\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x4e\x00\x0a\x00\x4f\x00\x4f\x00\x4f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x16\x00\x3e\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x02\x00\x06\x00\x08\x00\x06\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x20\x00\x01\x00\x34\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4d\x00\x05\x00\x09\x00\x09\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x07\x00\x07\x00\x04\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4c\x00\x06\x00\x3f\x00\x3e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4f\x00\x16\x00\x4c\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x08\x00\x16\x00\x16\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4e\x00\x01\x00\x4f\x00\x4e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\x16\x00\x4e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x04\x00\x01\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x2f\x00\x08\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x2c\x00\x16\x00\x02\x00\x08\x00\x4e\x00\x2a\x00\x2b\x00\x2c\x00\x02\x00\x08\x00\x36\x00\x37\x00\x23\x00\x24\x00\x4f\x00\x23\x00\x24\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x2c\x00\x2a\x00\x2b\x00\x2c\x00\x03\x00\x03\x00\x16\x00\x08\x00\x23\x00\x24\x00\x36\x00\x37\x00\x4e\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x2c\x00\x16\x00\x16\x00\x02\x00\x4e\x00\x23\x00\x24\x00\x4e\x00\x23\x00\x24\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x2c\x00\x2a\x00\x2b\x00\x2c\x00\x08\x00\x37\x00\x4d\x00\x02\x00\x23\x00\x24\x00\x36\x00\x37\x00\x02\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x2c\x00\x4e\x00\x3b\x00\x23\x00\x24\x00\x04\x00\x23\x00\x24\x00\x28\x00\x29\x00\x36\x00\x37\x00\x2c\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x02\x00\x23\x00\x24\x00\x23\x00\x24\x00\x36\x00\x37\x00\x04\x00\x36\x00\x37\x00\x2c\x00\x16\x00\x2c\x00\x08\x00\x16\x00\x23\x00\x24\x00\x23\x00\x24\x00\x4f\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x08\x00\x2c\x00\x08\x00\x08\x00\x23\x00\x24\x00\x23\x00\x24\x00\x0f\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x09\x00\x2c\x00\x0f\x00\x0f\x00\x23\x00\x24\x00\x23\x00\x24\x00\x32\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x06\x00\x2c\x00\x0f\x00\x03\x00\x23\x00\x24\x00\x23\x00\x24\x00\x1b\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x26\x00\x2c\x00\x25\x00\x19\x00\x23\x00\x24\x00\x23\x00\x24\x00\x11\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x26\x00\x2c\x00\x22\x00\x31\x00\x23\x00\x24\x00\x23\x00\x24\x00\x30\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x14\x00\x2c\x00\x1a\x00\x09\x00\x23\x00\x24\x00\x23\x00\x24\x00\x06\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x06\x00\x2c\x00\x09\x00\x1a\x00\x23\x00\x24\x00\x23\x00\x24\x00\x20\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x21\x00\x2c\x00\x18\x00\x1f\x00\x23\x00\x24\x00\x23\x00\x24\x00\x11\x00\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\x1e\x00\x2c\x00\x15\x00\x1f\x00\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x23\x00\x24\x00\x23\x00\x24\x00\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x2c\x00\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x36\x00\x37\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#

happyTable :: HappyAddr
happyTable :: HappyAddr
happyTable = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x81\x00\x73\x00\x74\x00\x23\x01\x90\x00\x82\x00\x8a\x00\x74\x00\x9c\x01\x83\x00\xfb\x00\x21\x00\x84\x00\x85\x00\xad\x00\x63\x01\x72\x01\x1b\x01\x91\x00\x96\x00\xd5\x00\x73\x01\xf5\x00\x7e\x00\x1c\x01\x97\x00\x94\x00\x4c\x00\x4d\x00\x09\x00\x02\x00\x03\x00\x04\x00\x7f\x00\x09\x00\xf6\x00\xaf\x00\x05\x00\xb0\x00\xff\xff\x06\x00\x2f\x00\x07\x00\x26\x00\x59\x00\xd6\x00\xd7\x00\x22\x00\x23\x00\x5a\x00\x24\x01\x75\x00\x76\x00\x50\x00\x51\x00\x9d\x01\x75\x00\x76\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x26\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xfc\x00\x08\x00\x09\x00\x26\x00\x1d\x01\xd6\x00\xd7\x00\x11\x00\x2c\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x6a\xff\x82\x00\x6a\xff\x63\x00\x64\x00\x83\x00\x13\x00\x65\x00\x84\x00\x85\x00\x66\x00\x67\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x68\x00\x69\x00\xc4\x00\xc5\x00\xc6\x00\x2b\x00\xdc\x00\x7d\x00\x2a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xa4\x00\x4e\x01\x7e\x00\x29\x00\x83\x00\xab\x00\xac\x00\x84\x00\x85\x00\x36\x01\xa7\x00\xa8\x00\x7f\x00\x09\x00\x28\x00\x82\x00\xa5\x00\x68\x00\x18\x01\x83\x00\x50\x00\x51\x00\x84\x00\x85\x00\x78\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x82\x00\xd6\x00\xd7\x00\x27\x00\x83\x00\x76\x01\x77\x01\x84\x00\x85\x00\x79\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x82\x00\x24\x00\x11\x01\x1e\x00\x1f\x00\x40\x00\x1f\x00\x84\x00\xb0\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x3a\x01\x09\x00\x05\x01\x09\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x2f\x00\x03\x00\x04\x00\x40\x00\x51\x00\x52\x00\x3f\x00\x05\x00\x3e\x00\x53\x00\x06\x00\x54\x00\x07\x00\x3c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xb2\x00\x52\x00\x3d\x00\xb1\x00\x52\x00\x53\x00\x3a\x00\x54\x00\x53\x00\x55\x00\x54\x00\x51\x01\x52\x01\x56\x00\x39\x00\x46\x01\x52\x00\x86\x01\x57\x00\x09\x00\x53\x00\x3b\x00\x54\x00\xaf\x01\x52\x00\x08\x00\x09\x00\x38\x00\x53\x00\x37\x00\x54\x00\x6d\x01\x52\x01\x36\x00\x55\x00\xad\x01\x52\x00\x55\x00\x56\x00\x35\x00\x53\x00\x56\x00\x54\x00\x57\x00\x09\x00\x34\x00\x57\x00\x09\x00\x33\x00\x55\x00\x32\x00\x4a\x00\x49\x00\x56\x00\xb7\x00\xab\x01\x52\x00\x55\x00\x57\x00\x09\x00\x53\x00\x56\x00\x54\x00\xa0\x00\xa1\x00\x26\x00\x57\x00\x09\x00\x43\x00\x55\x00\x48\x00\xb8\x00\x7d\x00\x56\x00\x47\x00\x46\x00\xa2\x00\x7d\x00\x57\x00\x09\x00\x7e\x00\x73\x00\x45\x00\x6d\x00\x72\x00\x7e\x00\x71\x00\x70\x00\x6f\x00\x55\x00\x7f\x00\x09\x00\x6e\x00\x56\x00\x6c\x00\x7f\x00\x09\x00\x6b\x00\x57\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x9d\x00\x11\x00\x12\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x6a\x00\xb4\x00\xae\x00\x13\x00\x9c\x00\x0e\x01\xa6\x00\xce\x00\xcf\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x9a\x00\x1e\x00\x0f\x01\x7d\x00\xc0\x00\xc1\x00\xbf\x00\xa1\x00\x99\x00\x94\x00\x92\x00\x7e\x00\x8f\x00\x8e\x00\x9f\x00\x7d\x00\x8d\x00\xc2\x00\x7d\x00\xa2\x00\x7d\x00\x7f\x00\x09\x00\x7e\x00\x8c\x00\x7b\x00\x7e\x00\x7c\x00\x7e\x00\x20\x01\xa1\x00\x1f\x01\xa1\x00\x7f\x00\x09\x00\x7a\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\xdc\x00\x7d\x00\xa2\x00\x7d\x00\xa2\x00\x7d\x00\xfa\x00\xe4\x00\xde\x00\x7e\x00\xf9\x00\x7e\x00\xf7\x00\x7e\x00\xf1\x00\xf8\x00\xee\x00\xe7\x00\xe4\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x3a\x01\xec\x00\xeb\x00\xea\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x88\x01\xe8\x00\xe3\x00\xe0\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xa8\x01\xbf\x00\xbe\x00\xbd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xbc\x00\x13\x01\xab\x00\xb6\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xb7\x00\xb5\x00\x3e\x01\x3d\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xda\x00\x38\x01\xdb\x00\x36\x01\x35\x01\x22\x01\x1e\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x15\x01\x12\x01\x0e\x01\x0c\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x39\x01\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x14\x01\x0b\x01\x0a\x01\x09\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x5d\x01\xe8\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x05\x01\x08\x01\x07\x01\x02\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x40\x01\x00\x01\x94\x00\x01\x01\xfd\x00\xfe\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x63\x01\x62\x01\x61\x01\x60\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x65\x01\x5b\x01\x5f\x01\x5a\x01\x59\x01\x58\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x57\x01\x56\x01\x54\x01\x51\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x87\x01\x50\x01\x4c\x01\x4d\x01\x4b\x01\x4a\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x49\x01\xd6\x00\x48\x01\x45\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd8\x00\x46\x01\x43\x01\x44\x01\x81\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x42\x01\x41\x01\x78\x01\x75\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x89\x01\x1d\x01\x71\x01\x70\x01\x54\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x6d\x01\x6a\x01\x99\x00\x66\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x04\x01\x69\x01\x68\x01\x67\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x96\x01\x92\x01\x95\x01\x94\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xdc\x00\x91\x01\x93\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x8d\x01\x90\x01\x8f\x01\x8c\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x7b\x01\x7d\x00\x8b\x01\x85\x01\x7c\x01\x7d\x01\x7e\x01\xdc\x00\x7d\x00\x7e\x00\x84\x01\xa7\x01\x83\x01\xa5\x01\xe1\x00\xde\x00\x7e\x00\xa3\x01\xa0\x01\x7f\x00\x09\x00\xdc\x00\x7d\x00\x6d\x01\xdc\x00\x7d\x00\x7f\x00\x09\x00\xdd\x00\xde\x00\x7e\x00\x1e\x01\xde\x00\x7e\x00\xa1\x01\x9f\x01\x9a\x01\x97\x01\xdc\x00\x7d\x00\x7f\x00\x09\x00\xb3\x01\x7f\x00\x09\x00\x18\x01\xde\x00\x7e\x00\x99\x01\x98\x01\xad\x01\xb2\x01\xdc\x00\x7d\x00\xb1\x01\xdc\x00\x7d\x00\x7f\x00\x09\x00\x5b\x01\xde\x00\x7e\x00\x7f\x01\xde\x00\x7e\x00\xab\x01\xaa\x01\xaf\x01\xbd\x01\xdc\x00\x7d\x00\x7f\x00\x09\x00\xbb\x01\x7f\x00\x09\x00\x8d\x01\xde\x00\x7e\x00\xbf\x01\xbc\x01\x7b\x01\x7d\x00\xba\x01\xdc\x00\x7d\x00\xa5\x01\x7e\x01\x7f\x00\x09\x00\x7e\x00\xa1\x01\xde\x00\x7e\x00\xb9\x01\xb8\x01\x9e\x00\x7d\x00\x9d\x00\x7d\x00\x7f\x00\x09\x00\xb7\x01\x7f\x00\x09\x00\x7e\x00\xb5\x01\x7e\x00\xb6\x01\xb4\x01\x7c\x00\x7d\x00\xf2\x00\x7d\x00\xbe\x01\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\xc1\x01\x7e\x00\xc0\x01\x2d\x00\xf1\x00\x7d\x00\xef\x00\x7d\x00\x2c\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x4e\x00\x7e\x00\x24\x00\x43\x00\xe5\x00\x7d\x00\xe0\x00\x7d\x00\x30\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x92\x00\x7e\x00\x2c\x00\x41\x00\xb9\x00\x7d\x00\x3e\x01\x7d\x00\x9a\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\xee\x00\x7e\x00\xf3\x00\xd8\x00\x33\x01\x7d\x00\x32\x01\x7d\x00\x97\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\xec\x00\x7e\x00\xd3\x00\x16\x01\x31\x01\x7d\x00\x30\x01\x7d\x00\xba\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x3b\x01\x7e\x00\x19\x01\x54\x01\x2f\x01\x7d\x00\x2e\x01\x7d\x00\x0c\x01\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\xfe\x00\x7e\x00\x4d\x01\x73\x01\x2d\x01\x7d\x00\x2c\x01\x7d\x00\x6e\x01\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x89\x01\x7e\x00\xa3\x01\x6b\x01\x2b\x01\x7d\x00\x2a\x01\x7d\x00\x6a\x01\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x9a\x01\x7e\x00\xa8\x01\x9d\x01\x29\x01\x7d\x00\x28\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x27\x01\x7d\x00\x26\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x25\x01\x7d\x00\x24\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x02\x01\x7d\x00\x5d\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x7a\x01\x7d\x00\x79\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x78\x01\x7d\x00\x81\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7e\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x16\x01\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x94\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\xab\x00\xac\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa6\x00\xa7\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x4c\x00\x4d\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyReduceArr :: Array
  ByteOff
  (Int#
   -> Located CmmToken
   -> Int#
   -> Happy_IntList
   -> HappyStk HappyAbsSyn
   -> PD HappyAbsSyn)
happyReduceArr = (ByteOff, ByteOff)
-> [(ByteOff,
     Int#
     -> Located CmmToken
     -> Int#
     -> Happy_IntList
     -> HappyStk HappyAbsSyn
     -> PD HappyAbsSyn)]
-> Array
     ByteOff
     (Int#
      -> Located CmmToken
      -> Int#
      -> Happy_IntList
      -> HappyStk HappyAbsSyn
      -> PD HappyAbsSyn)
forall i e. Ix i => (i, i) -> [(i, e)] -> Array i e
Happy_Data_Array.array (ByteOff
1, ByteOff
177) [
	(ByteOff
1 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_1),
	(ByteOff
2 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_2),
	(ByteOff
3 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_3),
	(ByteOff
4 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_4),
	(ByteOff
5 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_5),
	(ByteOff
6 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_6),
	(ByteOff
7 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_7),
	(ByteOff
8 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_8),
	(ByteOff
9 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_9),
	(ByteOff
10 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_10),
	(ByteOff
11 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_11),
	(ByteOff
12 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_12),
	(ByteOff
13 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_13),
	(ByteOff
14 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_14),
	(ByteOff
15 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_15),
	(ByteOff
16 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_16),
	(ByteOff
17 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_17),
	(ByteOff
18 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_18),
	(ByteOff
19 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_19),
	(ByteOff
20 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_20),
	(ByteOff
21 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_21),
	(ByteOff
22 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_22),
	(ByteOff
23 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_23),
	(ByteOff
24 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_24),
	(ByteOff
25 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_25),
	(ByteOff
26 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_26),
	(ByteOff
27 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_27),
	(ByteOff
28 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_28),
	(ByteOff
29 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_29),
	(ByteOff
30 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_30),
	(ByteOff
31 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_31),
	(ByteOff
32 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_32),
	(ByteOff
33 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_33),
	(ByteOff
34 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_34),
	(ByteOff
35 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_35),
	(ByteOff
36 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_36),
	(ByteOff
37 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_37),
	(ByteOff
38 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_38),
	(ByteOff
39 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_39),
	(ByteOff
40 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_40),
	(ByteOff
41 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_41),
	(ByteOff
42 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_42),
	(ByteOff
43 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_43),
	(ByteOff
44 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_44),
	(ByteOff
45 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_45),
	(ByteOff
46 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_46),
	(ByteOff
47 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_47),
	(ByteOff
48 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_48),
	(ByteOff
49 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_49),
	(ByteOff
50 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_50),
	(ByteOff
51 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_51),
	(ByteOff
52 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_52),
	(ByteOff
53 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_53),
	(ByteOff
54 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_54),
	(ByteOff
55 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_55),
	(ByteOff
56 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_56),
	(ByteOff
57 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_57),
	(ByteOff
58 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_58),
	(ByteOff
59 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_59),
	(ByteOff
60 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_60),
	(ByteOff
61 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_61),
	(ByteOff
62 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_62),
	(ByteOff
63 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_63),
	(ByteOff
64 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_64),
	(ByteOff
65 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_65),
	(ByteOff
66 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_66),
	(ByteOff
67 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_67),
	(ByteOff
68 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_68),
	(ByteOff
69 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_69),
	(ByteOff
70 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_70),
	(ByteOff
71 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_71),
	(ByteOff
72 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_72),
	(ByteOff
73 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_73),
	(ByteOff
74 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_74),
	(ByteOff
75 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_75),
	(ByteOff
76 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_76),
	(ByteOff
77 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_77),
	(ByteOff
78 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_78),
	(ByteOff
79 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_79),
	(ByteOff
80 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_80),
	(ByteOff
81 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_81),
	(ByteOff
82 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_82),
	(ByteOff
83 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_83),
	(ByteOff
84 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_84),
	(ByteOff
85 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_85),
	(ByteOff
86 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_86),
	(ByteOff
87 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_87),
	(ByteOff
88 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_88),
	(ByteOff
89 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_89),
	(ByteOff
90 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_90),
	(ByteOff
91 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_91),
	(ByteOff
92 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_92),
	(ByteOff
93 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_93),
	(ByteOff
94 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_94),
	(ByteOff
95 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_95),
	(ByteOff
96 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_96),
	(ByteOff
97 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_97),
	(ByteOff
98 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_98),
	(ByteOff
99 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_99),
	(ByteOff
100 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_100),
	(ByteOff
101 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_101),
	(ByteOff
102 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_102),
	(ByteOff
103 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_103),
	(ByteOff
104 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_104),
	(ByteOff
105 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_105),
	(ByteOff
106 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_106),
	(ByteOff
107 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_107),
	(ByteOff
108 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_108),
	(ByteOff
109 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_109),
	(ByteOff
110 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_110),
	(ByteOff
111 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_111),
	(ByteOff
112 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_112),
	(ByteOff
113 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_113),
	(ByteOff
114 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_114),
	(ByteOff
115 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_115),
	(ByteOff
116 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_116),
	(ByteOff
117 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_117),
	(ByteOff
118 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_118),
	(ByteOff
119 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_119),
	(ByteOff
120 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_120),
	(ByteOff
121 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_121),
	(ByteOff
122 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_122),
	(ByteOff
123 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_123),
	(ByteOff
124 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_124),
	(ByteOff
125 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_125),
	(ByteOff
126 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_126),
	(ByteOff
127 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_127),
	(ByteOff
128 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_128),
	(ByteOff
129 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_129),
	(ByteOff
130 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_130),
	(ByteOff
131 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_131),
	(ByteOff
132 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_132),
	(ByteOff
133 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_133),
	(ByteOff
134 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_134),
	(ByteOff
135 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_135),
	(ByteOff
136 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_136),
	(ByteOff
137 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_137),
	(ByteOff
138 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_138),
	(ByteOff
139 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_139),
	(ByteOff
140 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_140),
	(ByteOff
141 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_141),
	(ByteOff
142 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_142),
	(ByteOff
143 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_143),
	(ByteOff
144 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_144),
	(ByteOff
145 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_145),
	(ByteOff
146 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_146),
	(ByteOff
147 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_147),
	(ByteOff
148 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_148),
	(ByteOff
149 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_149),
	(ByteOff
150 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_150),
	(ByteOff
151 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_151),
	(ByteOff
152 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_152),
	(ByteOff
153 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_153),
	(ByteOff
154 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_154),
	(ByteOff
155 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_155),
	(ByteOff
156 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_156),
	(ByteOff
157 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_157),
	(ByteOff
158 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_158),
	(ByteOff
159 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_159),
	(ByteOff
160 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_160),
	(ByteOff
161 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_161),
	(ByteOff
162 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_162),
	(ByteOff
163 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_163),
	(ByteOff
164 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_164),
	(ByteOff
165 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_165),
	(ByteOff
166 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_166),
	(ByteOff
167 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_167),
	(ByteOff
168 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_168),
	(ByteOff
169 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_169),
	(ByteOff
170 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_170),
	(ByteOff
171 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_171),
	(ByteOff
172 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_172),
	(ByteOff
173 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_173),
	(ByteOff
174 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_174),
	(ByteOff
175 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_175),
	(ByteOff
176 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_176),
	(ByteOff
177 , Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_177)
	]

happy_n_terms :: ByteOff
happy_n_terms = ByteOff
82 :: Prelude.Int
happy_n_nonterms :: ByteOff
happy_n_nonterms = ByteOff
56 :: Prelude.Int

happyReduce_1 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_1 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_1 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
0# HappyAbsSyn
happyReduction_1
happyReduction_1 :: HappyAbsSyn
happyReduction_1  =  CmmParse () -> HappyAbsSyn
happyIn4
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_2 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_2 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_2 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2
happyReduction_2 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_2 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
happy_x_1 of { (HappyWrap5 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
happy_x_2 of { (HappyWrap4 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn4
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_3 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_3 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_3 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_3
happyReduction_3 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_3 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_1 of { (HappyWrap11 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_4 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_4 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_4 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_4
happyReduction_4 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_4 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap6
happyOut6 HappyAbsSyn
happy_x_1 of { (HappyWrap6 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_5 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_5 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_5 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
1# HappyAbsSyn -> HappyAbsSyn
happyReduction_5
happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_5 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 CmmParse ()
happy_var_1) -> 
	CmmParse () -> HappyAbsSyn
happyIn5
		 (CmmParse ()
happy_var_1
	)}

happyReduce_6 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_6 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_6 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
1# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_6
happyReduction_6 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_6 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_6 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_6) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse ()) -> PD (CmmParse ())
forall a. P a -> PD a
liftP (P (CmmParse ()) -> PD (CmmParse ()))
-> P (CmmParse ()) -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ CmmParse () -> P (CmmParse ())
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse () -> P (CmmParse ())) -> CmmParse () -> P (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
                        [CmmExpr]
lits <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
happy_var_6;
                        UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure UnitId
home_unit_id FastString
happy_var_3 FastString
happy_var_5 ((CmmExpr -> CmmLit) -> [CmmExpr] -> [CmmLit]
forall a b. (a -> b) -> [a] -> [b]
map CmmExpr -> CmmLit
getLit [CmmExpr]
lits))}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn5 CmmParse ()
r))

happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_7 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_7 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
2# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7
happyReduction_7 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_7 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_String      String
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_4 of { (HappyWrap7 CmmParse CLabel
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_5 of { (HappyWrap8 [CmmParse [CmmStatic]]
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn6
		 (do CLabel
lbl <- CmmParse CLabel
happy_var_4;
                     [[CmmStatic]]
ss <- [CmmParse [CmmStatic]] -> CmmParse [[CmmStatic]]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse [CmmStatic]]
happy_var_5;
                     FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmDecl -> FCode ()
emitDecl (Section -> CmmStatics -> CmmDecl
forall d h g. Section -> d -> GenCmmDecl d h g
CmmData (SectionType -> CLabel -> Section
Section (String -> SectionType
section String
happy_var_2) CLabel
lbl) (CLabel -> [CmmStatic] -> CmmStatics
forall (rawOnly :: Bool).
CLabel -> [CmmStatic] -> GenCmmStatics rawOnly
CmmStaticsRaw CLabel
lbl ([[CmmStatic]] -> [CmmStatic]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[CmmStatic]]
ss))))
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_8 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_8 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
3# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_8
happyReduction_8 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_8 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CLabel)
-> (CmmParse CLabel -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	( do
                   UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                   P (CmmParse CLabel) -> PD (CmmParse CLabel)
forall a. P a -> PD a
liftP (P (CmmParse CLabel) -> PD (CmmParse CLabel))
-> P (CmmParse CLabel) -> PD (CmmParse CLabel)
forall a b. (a -> b) -> a -> b
$ CmmParse CLabel -> P (CmmParse CLabel)
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse CLabel -> P (CmmParse CLabel))
-> CmmParse CLabel -> P (CmmParse CLabel)
forall a b. (a -> b) -> a -> b
$ do
                     CLabel -> CmmParse CLabel
forall a. a -> CmmParse a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (UnitId -> NeedExternDecl -> FastString -> CLabel
mkCmmDataLabel UnitId
home_unit_id (Bool -> NeedExternDecl
NeedExternDecl Bool
False) FastString
happy_var_1))})
	) (\CmmParse CLabel
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CLabel -> HappyAbsSyn
happyIn7 CmmParse CLabel
r))

happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_9 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_9 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
4# HappyAbsSyn
happyReduction_9
happyReduction_9 :: HappyAbsSyn
happyReduction_9  =  [CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8
		 ([]
	)

happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_10 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_10 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
4# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10
happyReduction_10 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_10 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
happy_x_1 of { (HappyWrap9 CmmParse [CmmStatic]
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_2 of { (HappyWrap8 [CmmParse [CmmStatic]]
happy_var_2) -> 
	[CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn8
		 (CmmParse [CmmStatic]
happy_var_1 CmmParse [CmmStatic]
-> [CmmParse [CmmStatic]] -> [CmmParse [CmmStatic]]
forall a. a -> [a] -> [a]
: [CmmParse [CmmStatic]]
happy_var_2
	)}}

happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_11 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_11 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11
happyReduction_11 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_11 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_2;
                             [CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [CmmLit -> CmmStatic
CmmStaticLit (CmmExpr -> CmmLit
getLit CmmExpr
e)]
	)}

happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_12 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_12 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12
happyReduction_12 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_12 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_1 of { (HappyWrap58 CmmType
happy_var_1) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                        (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth CmmType
happy_var_1))]
	)}

happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_13 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_13 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13
happyReduction_13 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_13 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_String      String
happy_var_4)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [String -> CmmStatic
mkString String
happy_var_4]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_14 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_14 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14
happyReduction_14 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_14 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                        (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_3)]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_15 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_15 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15
happyReduction_15 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_15 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap59
happyOut59 HappyAbsSyn
happy_x_1 of { (HappyWrap59 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_3)) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 ([CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [ByteOff -> CmmStatic
CmmUninitialised
                                                (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth CmmType
happy_var_1) ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
*
                                                        Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_3)]
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_16 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_16 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16
happyReduction_16 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_16 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_4 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse [CmmStatic] -> HappyAbsSyn
happyIn9
		 (do { [CmmExpr]
lits <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
happy_var_4
                ; Profile
profile <- CmmParse Profile
getProfile
                     ; [CmmStatic] -> CmmParse [CmmStatic]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ([CmmStatic] -> CmmParse [CmmStatic])
-> [CmmStatic] -> CmmParse [CmmStatic]
forall a b. (a -> b) -> a -> b
$ (CmmLit -> CmmStatic) -> [CmmLit] -> [CmmStatic]
forall a b. (a -> b) -> [a] -> [b]
map CmmLit -> CmmStatic
CmmStaticLit ([CmmLit] -> [CmmStatic]) -> [CmmLit] -> [CmmStatic]
forall a b. (a -> b) -> a -> b
$
                        Profile
-> CLabel
-> CostCentreStack
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
mkStaticClosure Profile
profile (FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_3 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsData)
                         -- mkForeignLabel because these are only used
                         -- for CHARLIKE and INTLIKE closures in the RTS.
                        CostCentreStack
dontCareCCS ((CmmExpr -> CmmLit) -> [CmmExpr] -> [CmmLit]
forall a b. (a -> b) -> [a] -> [b]
map CmmExpr -> CmmLit
getLit [CmmExpr]
lits) [] [] [] }
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_17 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_17 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
6# HappyAbsSyn
happyReduction_17
happyReduction_17 :: HappyAbsSyn
happyReduction_17  =  [CmmParse CmmExpr] -> HappyAbsSyn
happyIn10
		 ([]
	)

happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_18 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_18 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
6# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18
happyReduction_18 :: HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_18 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_3 of { (HappyWrap10 [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn10
		 (CmmParse CmmExpr
happy_var_2 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall a. a -> [a] -> [a]
: [CmmParse CmmExpr]
happy_var_3
	)}}

happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_19 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_19 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
7# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19
happyReduction_19 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_19 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_1 of { (HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_2 of { (HappyWrap12 Convention
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_3 of { (HappyWrap54 Maybe [CmmParse LocalReg]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_4 of { (HappyWrap13 CmmParse ()
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn11
		 (do ((CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals, [LocalReg]
formals), CmmAGraphScoped
agraph) <-
                       CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse
     ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
      CmmAGraphScoped)
forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
getCodeScoped (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
 -> CmmParse
      ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
       CmmAGraphScoped))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse
     ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
      CmmAGraphScoped)
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall a. CmmParse a -> CmmParse a
loopDecls (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
 -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall a b. (a -> b) -> a -> b
$ do {
                         (CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals) <- CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1;
                         Platform
platform <- CmmParse Platform
getPlatform;
                         SDocContext
ctx      <- CmmParse SDocContext
getContext;
                         [LocalReg]
formals <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence ([CmmParse LocalReg]
-> Maybe [CmmParse LocalReg] -> [CmmParse LocalReg]
forall a. a -> Maybe a -> a
fromMaybe [] Maybe [CmmParse LocalReg]
happy_var_3);
                         String -> CmmParse () -> CmmParse ()
forall a. String -> CmmParse a -> CmmParse a
withName (SDocContext -> SDoc -> String
renderWithContext SDocContext
ctx (Platform -> CLabel -> SDoc
forall env a. OutputableP env a => env -> a -> SDoc
pdoc Platform
platform CLabel
entry_ret_label))
                           CmmParse ()
happy_var_4;
                         (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CLabel
entry_ret_label, Maybe CmmInfoTable
info, [LocalReg]
stk_formals, [LocalReg]
formals) }
                     let do_layout :: Bool
do_layout = Maybe [CmmParse LocalReg] -> Bool
forall a. Maybe a -> Bool
isJust Maybe [CmmParse LocalReg]
happy_var_3
                     FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (Convention
-> Maybe CmmInfoTable
-> CLabel
-> [LocalReg]
-> [LocalReg]
-> CmmAGraphScoped
-> Bool
-> FCode ()
emitProcWithStackFrame Convention
happy_var_2 Maybe CmmInfoTable
info
                                CLabel
entry_ret_label [LocalReg]
stk_formals [LocalReg]
formals CmmAGraphScoped
agraph
                                Bool
do_layout )
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_20 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_20 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
8# HappyAbsSyn
happyReduction_20
happyReduction_20 :: HappyAbsSyn
happyReduction_20  =  Convention -> HappyAbsSyn
happyIn12
		 (Convention
NativeNodeCall
	)

happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_21 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_21 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
8# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_21
happyReduction_21 :: p -> HappyAbsSyn
happyReduction_21 p
happy_x_1
	 =  Convention -> HappyAbsSyn
happyIn12
		 (Convention
NativeReturn
	)

happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_22 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_22 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
9# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_22
happyReduction_22 :: p -> HappyAbsSyn
happyReduction_22 p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn13
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_23 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_23 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
9# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23
happyReduction_23 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_23 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	CmmParse () -> HappyAbsSyn
happyIn13
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_1 Located CmmToken
happy_var_3 CmmParse ()
happy_var_2
	)}}}

happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_24 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_24 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_24
happyReduction_24 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_24 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	( do
                     UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                     P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                       FastString -> UnitId -> CmmParse ()
newFunctionName FastString
happy_var_1 UnitId
home_unit_id
                       (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmCodeLabel UnitId
home_unit_id FastString
happy_var_1, Maybe CmmInfoTable
forall a. Maybe a
Nothing, []))})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_25 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_25 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
14# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_25
happyReduction_25 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_25 (HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        Profile
profile <- CmmParse Profile
getProfile
                        let prof :: ProfilingInfo
prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_11 String
happy_var_13
                            rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                     Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep Profile
profile Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                     (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
Thunk
                                -- not really Thunk, but that makes the info table
                                -- we want.
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                []))}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_26 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_26 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
16# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_26
happyReduction_26 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_26 (HappyAbsSyn
happy_x_16 `HappyStk`
	HappyAbsSyn
happy_x_15 `HappyStk`
	HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_15)) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        Profile
profile <- CmmParse Profile
getProfile
                        let prof :: ProfilingInfo
prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_11 String
happy_var_13
                            ty :: ClosureTypeInfo
ty   = ByteOff -> ArgDescr -> ClosureTypeInfo
Fun ByteOff
0 (ByteOff -> ArgDescr
ArgSpec (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_15))
                                  -- Arity zero, arg_type happy_var_15
                            rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                      Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep Profile
profile Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                      (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
ty
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                []))}}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_27 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_27 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
16# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_27
happyReduction_27 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_27 (HappyAbsSyn
happy_x_16 `HappyStk`
	HappyAbsSyn
happy_x_15 `HappyStk`
	HappyAbsSyn
happy_x_14 `HappyStk`
	HappyAbsSyn
happy_x_13 `HappyStk`
	HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_11)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_13 of { (L SrcSpan
_ (CmmT_String      String
happy_var_13)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_15 of { (L SrcSpan
_ (CmmT_String      String
happy_var_15)) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        Profile
profile <- CmmParse Profile
getProfile
                        let prof :: ProfilingInfo
prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_13 String
happy_var_15
                            ty :: ClosureTypeInfo
ty  = ByteOff -> ConstrDescription -> ClosureTypeInfo
Constr (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_9)  -- Tag
                                         (String -> ConstrDescription
BS8.pack String
happy_var_13)
                            rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_11) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                    Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep Profile
profile Bool
False (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                                                    (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) ClosureTypeInfo
ty
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing,cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                []))}}}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_28 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_28 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
12# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_28
happyReduction_28 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_28 (HappyAbsSyn
happy_x_12 `HappyStk`
	HappyAbsSyn
happy_x_11 `HappyStk`
	HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_7)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_9 of { (L SrcSpan
_ (CmmT_String      String
happy_var_9)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_11 of { (L SrcSpan
_ (CmmT_String      String
happy_var_11)) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        Profile
profile <- CmmParse Profile
getProfile
                        let prof :: ProfilingInfo
prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_9 String
happy_var_11
                            ty :: ClosureTypeInfo
ty  = ByteOff -> ClosureTypeInfo
ThunkSelector (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                            rep :: SMRep
rep = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_7) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$
                                     Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
mkHeapRep Profile
profile Bool
False ByteOff
0 ByteOff
0 ClosureTypeInfo
ty
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmEntryLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                []))}}}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_29 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_29 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
6# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_29
happyReduction_29 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_29 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        let prof :: ProfilingInfo
prof = ProfilingInfo
NoProfilingInfo
                            rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$ [Bool] -> SMRep
mkStackRep []
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmRetLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmRetInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                []))}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_30 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_30 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_30
happyReduction_30 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_30 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_5)) -> 
	case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_7 of { (HappyWrap55 [CmmParse LocalReg]
happy_var_7) -> 
	( do
                      UnitId
home_unit_id <- PD UnitId
getHomeUnitId
                      P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. P a -> PD a
liftP (P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
 -> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
-> PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a. a -> P a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
 -> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])))
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
-> P (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
forall a b. (a -> b) -> a -> b
$ do
                        Platform
platform <- CmmParse Platform
getPlatform
                        [LocalReg]
live <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse LocalReg]
happy_var_7
                        let prof :: ProfilingInfo
prof = ProfilingInfo
NoProfilingInfo
                            -- drop one for the info pointer
                            bitmap :: [Bool]
bitmap = Platform -> [LocalReg] -> [Bool]
mkLiveness Platform
platform (ByteOff -> [LocalReg] -> [LocalReg]
forall a. ByteOff -> [a] -> [a]
drop ByteOff
1 [LocalReg]
live)
                            rep :: SMRep
rep  = ByteOff -> SMRep -> SMRep
mkRTSRep (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
forall a b. (a -> b) -> a -> b
$ [Bool] -> SMRep
mkStackRep [Bool]
bitmap
                        (CLabel, Maybe CmmInfoTable, [LocalReg])
-> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (UnitId -> FastString -> CLabel
mkCmmRetLabel UnitId
home_unit_id FastString
happy_var_3,
                                CmmInfoTable -> Maybe CmmInfoTable
forall a. a -> Maybe a
Just (CmmInfoTable -> Maybe CmmInfoTable)
-> CmmInfoTable -> Maybe CmmInfoTable
forall a b. (a -> b) -> a -> b
$ CmmInfoTable { cit_lbl :: CLabel
cit_lbl = UnitId -> FastString -> CLabel
mkCmmRetInfoLabel UnitId
home_unit_id FastString
happy_var_3
                                             , cit_rep :: SMRep
cit_rep = SMRep
rep
                                             , cit_prof :: ProfilingInfo
cit_prof = ProfilingInfo
prof, cit_srt :: Maybe CLabel
cit_srt = Maybe CLabel
forall a. Maybe a
Nothing, cit_clo :: Maybe (Id, CostCentreStack)
cit_clo = Maybe (Id, CostCentreStack)
forall a. Maybe a
Nothing },
                                [LocalReg]
live))}}})
	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r))

happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_31 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_31 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
11# HappyAbsSyn
happyReduction_31
happyReduction_31 :: HappyAbsSyn
happyReduction_31  =  CmmParse () -> HappyAbsSyn
happyIn15
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_32 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_32 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32
happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_32 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_1 of { (HappyWrap16 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn15
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_33 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_33 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33
happyReduction_33 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_33 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap20
happyOut20 HappyAbsSyn
happy_x_1 of { (HappyWrap20 CmmParse ()
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn15
		 (do CmmParse ()
happy_var_1; CmmParse ()
happy_var_2
	)}}

happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_34 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_34 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34
happyReduction_34 :: p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_34 p
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_1 of { (HappyWrap58 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_2 of { (HappyWrap19 [FastString]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn16
		 ((FastString -> CmmParse LocalReg) -> [FastString] -> CmmParse ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (CmmType -> FastString -> CmmParse LocalReg
newLocal CmmType
happy_var_1) [FastString]
happy_var_2
	)}}

happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_35 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_35 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35
happyReduction_35 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_35 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_2 of { (HappyWrap17 [(FastString, CLabel)]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn16
		 (((FastString, CLabel) -> CmmParse ())
-> [(FastString, CLabel)] -> CmmParse ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (FastString, CLabel) -> CmmParse ()
newImport [(FastString, CLabel)]
happy_var_2
	)}

happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_36 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_36 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p} {p}. p -> p -> p -> HappyAbsSyn
happyReduction_36
happyReduction_36 :: p -> p -> p -> HappyAbsSyn
happyReduction_36 p
happy_x_3
	p
happy_x_2
	p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn16
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_37 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_37 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
13# HappyAbsSyn -> HappyAbsSyn
happyReduction_37
happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_37 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 (FastString, CLabel)
happy_var_1) -> 
	[(FastString, CLabel)] -> HappyAbsSyn
happyIn17
		 ([(FastString, CLabel)
happy_var_1]
	)}

happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_38 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_38 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
13# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38
happyReduction_38 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_38 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_1 of { (HappyWrap18 (FastString, CLabel)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_3 of { (HappyWrap17 [(FastString, CLabel)]
happy_var_3) -> 
	[(FastString, CLabel)] -> HappyAbsSyn
happyIn17
		 ((FastString, CLabel)
happy_var_1 (FastString, CLabel)
-> [(FastString, CLabel)] -> [(FastString, CLabel)]
forall a. a -> [a] -> [a]
: [(FastString, CLabel)]
happy_var_3
	)}}

happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_39 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_39 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
14# HappyAbsSyn -> HappyAbsSyn
happyReduction_39
happyReduction_39 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_39 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_1, FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsFunction)
	)}

happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_40 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_40 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40
happyReduction_40 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_40 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_2 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInExternalPackage FunctionOrData
IsData)
	)}

happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_41 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_41 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41
happyReduction_41 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_41 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	(FastString, CLabel) -> HappyAbsSyn
happyIn18
		 ((FastString
happy_var_2, UnitId -> FastString -> CLabel
mkCmmCodeLabel (FastString -> UnitId
UnitId (String -> FastString
mkFastString String
happy_var_1)) FastString
happy_var_2)
	)}}

happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_42 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_42 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
15# HappyAbsSyn -> HappyAbsSyn
happyReduction_42
happyReduction_42 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_42 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	[FastString] -> HappyAbsSyn
happyIn19
		 ([FastString
happy_var_1]
	)}

happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_43 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_43 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
15# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43
happyReduction_43 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_43 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_3 of { (HappyWrap19 [FastString]
happy_var_3) -> 
	[FastString] -> HappyAbsSyn
happyIn19
		 (FastString
happy_var_1 FastString -> [FastString] -> [FastString]
forall a. a -> [a] -> [a]
: [FastString]
happy_var_3
	)}}

happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_44 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_44 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
16# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_44
happyReduction_44 :: p -> HappyAbsSyn
happyReduction_44 p
happy_x_1
	 =  CmmParse () -> HappyAbsSyn
happyIn20
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_45 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_45 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45
happyReduction_45 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_45 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
newLabel FastString
happy_var_1; BlockId -> CmmParse ()
emitLabel BlockId
l
	)}

happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_46 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_46 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46
happyReduction_46 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_46 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_1 of { (HappyWrap53 CmmParse CmmReg
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do CmmReg
reg <- CmmParse CmmReg
happy_var_1; CmmExpr
e <- CmmParse CmmExpr
happy_var_3; Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_4 (CmmReg -> CmmExpr -> CmmParse ()
emitAssign CmmReg
reg CmmExpr
e)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_47 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_47 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
8# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47
happyReduction_47 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_47 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_1 of { (HappyWrap53 CmmParse CmmReg
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_3 of { (HappyWrap22 CmmParse MemoryOrdering
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_4 of { (HappyWrap58 CmmType
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { Located CmmToken
happy_var_7 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do CmmReg
reg <- CmmParse CmmReg
happy_var_1;
                     let lreg :: LocalReg
lreg = case CmmReg
reg of
                                  { CmmLocal LocalReg
r -> LocalReg
r
                                  ; CmmReg
other -> String -> SDoc -> LocalReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (CmmReg -> SDoc
forall a. Outputable a => a -> SDoc
ppr CmmReg
reg SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
"not a local register")
                                  } ;
                     MemoryOrdering
mord <- CmmParse MemoryOrdering
happy_var_3;
                     let { ty :: CmmType
ty = CmmType
happy_var_4; w :: Width
w = CmmType -> Width
typeWidth CmmType
ty };
                     CmmExpr
e <- CmmParse CmmExpr
happy_var_6;
                     let op :: CallishMachOp
op = Width -> MemoryOrdering -> CallishMachOp
MO_AtomicRead Width
w MemoryOrdering
mord;
                     Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_7 (CmmParse () -> CmmParse ()) -> CmmParse () -> CmmParse ()
forall a b. (a -> b) -> a -> b
$ FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code ([LocalReg] -> CallishMachOp -> [CmmExpr] -> FCode ()
emitPrimCall [LocalReg
lreg] CallishMachOp
op [CmmExpr
e])
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}}

happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_48 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_48 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
8# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_48
happyReduction_48 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_48 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_1 of { (HappyWrap22 CmmParse MemoryOrdering
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_2 of { (HappyWrap58 CmmType
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_4 of { (HappyWrap39 CmmParse CmmExpr
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_7 of { (HappyWrap39 CmmParse CmmExpr
happy_var_7) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_8 of { Located CmmToken
happy_var_8 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do MemoryOrdering
mord <- CmmParse MemoryOrdering
happy_var_1; Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_3 Located CmmToken
happy_var_8 (Maybe MemoryOrdering
-> CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
doStore (MemoryOrdering -> Maybe MemoryOrdering
forall a. a -> Maybe a
Just MemoryOrdering
mord) CmmType
happy_var_2 CmmParse CmmExpr
happy_var_4 CmmParse CmmExpr
happy_var_7)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}}

happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_49 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_49 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_49
happyReduction_49 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_49 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_1 of { (HappyWrap58 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { Located CmmToken
happy_var_7 -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_7 (Maybe MemoryOrdering
-> CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
doStore Maybe MemoryOrdering
forall a. Maybe a
Nothing CmmType
happy_var_1 CmmParse CmmExpr
happy_var_3 CmmParse CmmExpr
happy_var_6)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}

happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_50 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_50 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
10# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_50
happyReduction_50 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_50 (HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_String      String
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
happy_x_4 of { (HappyWrap24 CmmParse CmmExpr
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_6 of { (HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap28
happyOut28 HappyAbsSyn
happy_x_8 of { (HappyWrap28 Safety
happy_var_8) -> 
	case HappyAbsSyn -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_9 of { (HappyWrap25 CmmReturnInfo
happy_var_9) -> 
	( String
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall String
happy_var_3 [CmmParse (LocalReg, ForeignHint)]
happy_var_1 CmmParse CmmExpr
happy_var_4 [CmmParse (CmmExpr, ForeignHint)]
happy_var_6 Safety
happy_var_8 CmmReturnInfo
happy_var_9)}}}}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_51 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_51 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
8# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_51
happyReduction_51 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_51 (HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap49
happyOut49 HappyAbsSyn
happy_x_1 of { (HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_4)) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_6 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_6) -> 
	( [CmmParse (LocalReg, ForeignHint)]
-> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
primCall [CmmParse (LocalReg, ForeignHint)]
happy_var_1 FastString
happy_var_4 [CmmParse CmmExpr]
happy_var_6)}}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_52 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_52 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_52
happyReduction_52 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_52 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse ())
-> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_3 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_3) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro FastString
happy_var_1 [CmmParse CmmExpr]
happy_var_3)}})
	) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn20 CmmParse ()
r))

happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_53 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_53 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53
happyReduction_53 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_53 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_2 of { (HappyWrap31 Maybe (Integer, Integer)
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
happy_x_5 of { (HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5) -> 
	case HappyAbsSyn -> HappyWrap36
happyOut36 HappyAbsSyn
happy_x_6 of { (HappyWrap36 Maybe (CmmParse ())
happy_var_6) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do [([Integer], Either BlockId (CmmParse ()))]
as <- [CmmParse ([Integer], Either BlockId (CmmParse ()))]
-> CmmParse [([Integer], Either BlockId (CmmParse ()))]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5; Maybe (Integer, Integer)
-> CmmParse CmmExpr
-> [([Integer], Either BlockId (CmmParse ()))]
-> Maybe (CmmParse ())
-> CmmParse ()
doSwitch Maybe (Integer, Integer)
happy_var_2 CmmParse CmmExpr
happy_var_3 [([Integer], Either BlockId (CmmParse ()))]
as Maybe (CmmParse ())
happy_var_6
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}

happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_54 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_54 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_54
happyReduction_54 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_54 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
l)
	)}

happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_55 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_55 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55
happyReduction_55 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_55 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_3 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_3) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 ([CmmParse CmmExpr] -> CmmParse ()
doReturn [CmmParse CmmExpr]
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_56 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_56 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56
happyReduction_56 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_56 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_3 of { (HappyWrap29 [GlobalReg]
happy_var_3) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump CmmParse CmmExpr
happy_var_2 [GlobalReg]
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_57 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_57 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57
happyReduction_57 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_57 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
happy_var_2 [] [CmmParse CmmExpr]
happy_var_4
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_58 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_58 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
9# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58
happyReduction_58 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_58 (HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_7 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_7) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
happy_var_2 [CmmParse CmmExpr]
happy_var_4 [CmmParse CmmExpr]
happy_var_7
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_59 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_59 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
6# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59
happyReduction_59 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_59 (HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
happy_var_2 [] [CmmParse CmmExpr]
happy_var_4
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_60 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_60 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
10# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60
happyReduction_60 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_60 (HappyAbsSyn
happy_x_10 `HappyStk`
	HappyAbsSyn
happy_x_9 `HappyStk`
	HappyAbsSyn
happy_x_8 `HappyStk`
	HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_2 of { (HappyWrap56 [CmmParse LocalReg]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
happy_var_6) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_8 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_8) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
happy_var_6 [CmmParse LocalReg]
happy_var_2 [CmmParse CmmExpr]
happy_var_8
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_61 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_61 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61
happyReduction_61 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_61 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_5)) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_5; CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
cmmRawIf CmmParse BoolExpr
happy_var_2 BlockId
l Maybe Bool
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_62 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_62 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
7# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62
happyReduction_62 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_62 (HappyAbsSyn
happy_x_7 `HappyStk`
	HappyAbsSyn
happy_x_6 `HappyStk`
	HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_3 of { (HappyWrap38 Maybe Bool
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_5 of { (HappyWrap15 CmmParse ()
happy_var_5) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_6 of { Located CmmToken
happy_var_6 -> 
	case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_7 of { (HappyWrap37 CmmParse ()
happy_var_7) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse BoolExpr
-> CmmParse () -> CmmParse () -> Maybe Bool -> CmmParse ()
forall {a} {a}.
CmmParse BoolExpr
-> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
cmmIfThenElse CmmParse BoolExpr
happy_var_2 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_4 Located CmmToken
happy_var_6 CmmParse ()
happy_var_5) CmmParse ()
happy_var_7 Maybe Bool
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}}}}

happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_63 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_63 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_63
happyReduction_63 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_63 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_3 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 CmmParse ()
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 ([CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame [CmmParse CmmExpr]
happy_var_3 CmmParse ()
happy_var_5
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_64 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_64 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64
happyReduction_64 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_64 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_4 of { (HappyWrap53 CmmParse CmmReg
happy_var_4) -> 
	case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_5 of { (HappyWrap13 CmmParse ()
happy_var_5) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
reserveStackFrame CmmParse CmmExpr
happy_var_2 CmmParse CmmReg
happy_var_4 CmmParse ()
happy_var_5
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_65 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_65 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_65
happyReduction_65 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_65 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_2 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_2) -> 
	CmmParse () -> HappyAbsSyn
happyIn20
		 (CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_2 CmmParse [(GlobalReg, Maybe CmmExpr)]
-> ([(GlobalReg, Maybe CmmExpr)] -> CmmParse ()) -> CmmParse ()
forall a b. CmmParse a -> (a -> CmmParse b) -> CmmParse b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (FCode () -> CmmParse ())
-> ([(GlobalReg, Maybe CmmExpr)] -> FCode ())
-> [(GlobalReg, Maybe CmmExpr)]
-> CmmParse ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(GlobalReg, Maybe CmmExpr)] -> FCode ()
emitUnwind
	)}

happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_66 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_66 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
17# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_66
happyReduction_66 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_66 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_3 of { (HappyWrap23 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
	case HappyAbsSyn -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_5 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_5) -> 
	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21
		 (do Maybe CmmExpr
e <- CmmParse (Maybe CmmExpr)
happy_var_3; [(GlobalReg, Maybe CmmExpr)]
rest <- CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_5; [(GlobalReg, Maybe CmmExpr)]
-> CmmParse [(GlobalReg, Maybe CmmExpr)]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ((GlobalReg
happy_var_1, Maybe CmmExpr
e) (GlobalReg, Maybe CmmExpr)
-> [(GlobalReg, Maybe CmmExpr)] -> [(GlobalReg, Maybe CmmExpr)]
forall a. a -> [a] -> [a]
: [(GlobalReg, Maybe CmmExpr)]
rest)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_67 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_67 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
17# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_67
happyReduction_67 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_67 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_3 of { (HappyWrap23 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn21
		 (do Maybe CmmExpr
e <- CmmParse (Maybe CmmExpr)
happy_var_3; [(GlobalReg, Maybe CmmExpr)]
-> CmmParse [(GlobalReg, Maybe CmmExpr)]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [(GlobalReg
happy_var_1, Maybe CmmExpr
e)]
	)}}

happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_68 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_68 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_68
happyReduction_68 :: p -> HappyAbsSyn
happyReduction_68 p
happy_x_1
	 =  CmmParse MemoryOrdering -> HappyAbsSyn
happyIn22
		 (do MemoryOrdering -> CmmParse MemoryOrdering
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return MemoryOrdering
MemOrderRelaxed
	)

happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_69 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_69 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_69
happyReduction_69 :: p -> HappyAbsSyn
happyReduction_69 p
happy_x_1
	 =  CmmParse MemoryOrdering -> HappyAbsSyn
happyIn22
		 (do MemoryOrdering -> CmmParse MemoryOrdering
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return MemoryOrdering
MemOrderRelease
	)

happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_70 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_70 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_70
happyReduction_70 :: p -> HappyAbsSyn
happyReduction_70 p
happy_x_1
	 =  CmmParse MemoryOrdering -> HappyAbsSyn
happyIn22
		 (do MemoryOrdering -> CmmParse MemoryOrdering
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return MemoryOrdering
MemOrderAcquire
	)

happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_71 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_71 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
18# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_71
happyReduction_71 :: p -> HappyAbsSyn
happyReduction_71 p
happy_x_1
	 =  CmmParse MemoryOrdering -> HappyAbsSyn
happyIn22
		 (do MemoryOrdering -> CmmParse MemoryOrdering
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return MemoryOrdering
MemOrderSeqCst
	)

happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_72 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_72 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
19# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_72
happyReduction_72 :: p -> HappyAbsSyn
happyReduction_72 p
happy_x_1
	 =  CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn23
		 (do Maybe CmmExpr -> CmmParse (Maybe CmmExpr)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe CmmExpr
forall a. Maybe a
Nothing
	)

happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_73 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_73 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
19# HappyAbsSyn -> HappyAbsSyn
happyReduction_73
happyReduction_73 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_73 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn23
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1; Maybe CmmExpr -> CmmParse (Maybe CmmExpr)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
e)
	)}

happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_74 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_74 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
20# HappyAbsSyn -> HappyAbsSyn
happyReduction_74
happyReduction_74 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_74 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn24
		 (CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (FastString
-> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 Maybe ByteOff
forall a. Maybe a
Nothing ForeignLabelSource
ForeignLabelInThisPackage FunctionOrData
IsFunction)))
	)}

happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_75 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_75 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
21# HappyAbsSyn
happyReduction_75
happyReduction_75 :: HappyAbsSyn
happyReduction_75  =  CmmReturnInfo -> HappyAbsSyn
happyIn25
		 (CmmReturnInfo
CmmMayReturn
	)

happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_76 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_76 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
21# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> p -> HappyAbsSyn
happyReduction_76
happyReduction_76 :: p -> p -> HappyAbsSyn
happyReduction_76 p
happy_x_2
	p
happy_x_1
	 =  CmmReturnInfo -> HappyAbsSyn
happyIn25
		 (CmmReturnInfo
CmmNeverReturns
	)

happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_77 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_77 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
22# HappyAbsSyn -> HappyAbsSyn
happyReduction_77
happyReduction_77 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_77 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_1 of { (HappyWrap27 CmmParse BoolExpr
happy_var_1) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (CmmParse BoolExpr
happy_var_1
	)}

happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_78 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_78 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
22# HappyAbsSyn -> HappyAbsSyn
happyReduction_78
happyReduction_78 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_78 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn26
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1; BoolExpr -> CmmParse BoolExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> BoolExpr
BoolTest CmmExpr
e)
	)}

happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_79 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_79 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_79
happyReduction_79 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_79 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_1 of { (HappyWrap26 CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_3 of { (HappyWrap26 CmmParse BoolExpr
happy_var_3) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn27
		 (do BoolExpr
e1 <- CmmParse BoolExpr
happy_var_1; BoolExpr
e2 <- CmmParse BoolExpr
happy_var_3;
                                          BoolExpr -> CmmParse BoolExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr -> BoolExpr
BoolAnd BoolExpr
e1 BoolExpr
e2)
	)}}

happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_80 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_80 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_80
happyReduction_80 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_80 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_1 of { (HappyWrap26 CmmParse BoolExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_3 of { (HappyWrap26 CmmParse BoolExpr
happy_var_3) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn27
		 (do BoolExpr
e1 <- CmmParse BoolExpr
happy_var_1; BoolExpr
e2 <- CmmParse BoolExpr
happy_var_3;
                                          BoolExpr -> CmmParse BoolExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr -> BoolExpr
BoolOr BoolExpr
e1 BoolExpr
e2)
	)}}

happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_81 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_81 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81
happyReduction_81 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_81 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
happy_var_2) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn27
		 (do BoolExpr
e <- CmmParse BoolExpr
happy_var_2; BoolExpr -> CmmParse BoolExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (BoolExpr -> BoolExpr
BoolNot BoolExpr
e)
	)}

happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_82 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_82 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_82
happyReduction_82 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_82 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_2 of { (HappyWrap27 CmmParse BoolExpr
happy_var_2) -> 
	CmmParse BoolExpr -> HappyAbsSyn
happyIn27
		 (CmmParse BoolExpr
happy_var_2
	)}

happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_83 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_83 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
24# HappyAbsSyn
happyReduction_83
happyReduction_83 :: HappyAbsSyn
happyReduction_83  =  Safety -> HappyAbsSyn
happyIn28
		 (Safety
PlayRisky
	)

happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_84 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_84 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
24# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_84
happyReduction_84 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_84 (HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD Safety -> (Safety -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	( String -> PD Safety
parseSafety String
happy_var_1)})
	) (\Safety
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (Safety -> HappyAbsSyn
happyIn28 Safety
r))

happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_85 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_85 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> p -> HappyAbsSyn
happyReduction_85
happyReduction_85 :: p -> p -> HappyAbsSyn
happyReduction_85 p
happy_x_2
	p
happy_x_1
	 =  [GlobalReg] -> HappyAbsSyn
happyIn29
		 ([]
	)

happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_86 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_86 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
3# Int#
25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_86
happyReduction_86 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_86 (a
happy_x_3 `HappyStk`
	a
happy_x_2 `HappyStk`
	a
happy_x_1 `HappyStk`
	HappyStk a
happyRest) p
tk
	 = PD [GlobalReg] -> ([GlobalReg] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do Platform
platform <- PD Platform
PD.getPlatform
                                         ; [GlobalReg] -> PD [GlobalReg]
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (Platform -> [GlobalReg]
realArgRegsCover Platform
platform)))
	) (\[GlobalReg]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalReg] -> HappyAbsSyn
happyIn29 [GlobalReg]
r))

happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_87 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_87 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_87
happyReduction_87 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_87 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
happy_x_2 of { (HappyWrap30 [GlobalReg]
happy_var_2) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn29
		 ([GlobalReg]
happy_var_2
	)}

happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_88 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_88 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
26# HappyAbsSyn -> HappyAbsSyn
happyReduction_88
happyReduction_88 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_88 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn30
		 ([GlobalReg
happy_var_1]
	)}

happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_89 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_89 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
26# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89
happyReduction_89 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_89 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
happy_x_3 of { (HappyWrap30 [GlobalReg]
happy_var_3) -> 
	[GlobalReg] -> HappyAbsSyn
happyIn30
		 (GlobalReg
happy_var_1 GlobalReg -> [GlobalReg] -> [GlobalReg]
forall a. a -> [a] -> [a]
: [GlobalReg]
happy_var_3
	)}}

happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_90 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_90 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
27# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_90
happyReduction_90 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_90 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_2)) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_4)) -> 
	Maybe (Integer, Integer) -> HappyAbsSyn
happyIn31
		 ((Integer, Integer) -> Maybe (Integer, Integer)
forall a. a -> Maybe a
Just (Integer
happy_var_2, Integer
happy_var_4)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_91 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_91 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
27# HappyAbsSyn
happyReduction_91
happyReduction_91 :: HappyAbsSyn
happyReduction_91  =  Maybe (Integer, Integer) -> HappyAbsSyn
happyIn31
		 (Maybe (Integer, Integer)
forall a. Maybe a
Nothing
	)

happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_92 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_92 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
28# HappyAbsSyn
happyReduction_92
happyReduction_92 :: HappyAbsSyn
happyReduction_92  =  [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn32
		 ([]
	)

happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_93 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_93 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
28# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_93
happyReduction_93 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_93 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
happy_x_1 of { (HappyWrap33 CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap32
happyOut32 HappyAbsSyn
happy_x_2 of { (HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_2) -> 
	[CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn32
		 (CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1 CmmParse ([Integer], Either BlockId (CmmParse ()))
-> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
-> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
forall a. a -> [a] -> [a]
: [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_2
	)}}

happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_94 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_94 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
29# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_94
happyReduction_94 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_94 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
happy_x_2 of { (HappyWrap35 [Integer]
happy_var_2) -> 
	case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_4 of { (HappyWrap34 CmmParse (Either BlockId (CmmParse ()))
happy_var_4) -> 
	CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn33
		 (do Either BlockId (CmmParse ())
b <- CmmParse (Either BlockId (CmmParse ()))
happy_var_4; ([Integer], Either BlockId (CmmParse ()))
-> CmmParse ([Integer], Either BlockId (CmmParse ()))
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ([Integer]
happy_var_2, Either BlockId (CmmParse ())
b)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_95 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_95 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_95
happyReduction_95 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_95 HappyAbsSyn
happy_x_3
	HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { Located CmmToken
happy_var_1 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_2 of { (HappyWrap15 CmmParse ()
happy_var_2) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn34
		 (Either BlockId (CmmParse ())
-> CmmParse (Either BlockId (CmmParse ()))
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> Either BlockId (CmmParse ())
forall a b. b -> Either a b
Right (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_1 Located CmmToken
happy_var_3 CmmParse ()
happy_var_2))
	)}}}

happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_96 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_96 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_96
happyReduction_96 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_96 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn34
		 (do BlockId
l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; Either BlockId (CmmParse ())
-> CmmParse (Either BlockId (CmmParse ()))
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (BlockId -> Either BlockId (CmmParse ())
forall a b. a -> Either a b
Left BlockId
l)
	)}

happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_97 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_97 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
31# HappyAbsSyn -> HappyAbsSyn
happyReduction_97
happyReduction_97 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_97 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	[Integer] -> HappyAbsSyn
happyIn35
		 ([ Integer
happy_var_1 ]
	)}

happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_98 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_98 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
31# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_98
happyReduction_98 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_98 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
happy_x_3 of { (HappyWrap35 [Integer]
happy_var_3) -> 
	[Integer] -> HappyAbsSyn
happyIn35
		 (Integer
happy_var_1 Integer -> [Integer] -> [Integer]
forall a. a -> [a] -> [a]
: [Integer]
happy_var_3
	)}}

happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_99 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_99 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
32# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_99
happyReduction_99 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_99 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_4 of { (HappyWrap15 CmmParse ()
happy_var_4) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { Located CmmToken
happy_var_5 -> 
	Maybe (CmmParse ()) -> HappyAbsSyn
happyIn36
		 (CmmParse () -> Maybe (CmmParse ())
forall a. a -> Maybe a
Just (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_3 Located CmmToken
happy_var_5 CmmParse ()
happy_var_4)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_100 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_100 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
32# HappyAbsSyn
happyReduction_100
happyReduction_100 :: HappyAbsSyn
happyReduction_100  =  Maybe (CmmParse ()) -> HappyAbsSyn
happyIn36
		 (Maybe (CmmParse ())
forall a. Maybe a
Nothing
	)

happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_101 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_101 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
33# HappyAbsSyn
happyReduction_101
happyReduction_101 :: HappyAbsSyn
happyReduction_101  =  CmmParse () -> HappyAbsSyn
happyIn37
		 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
	)

happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_102 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_102 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_102
happyReduction_102 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_102 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { Located CmmToken
happy_var_2 -> 
	case HappyAbsSyn -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_3 of { (HappyWrap15 CmmParse ()
happy_var_3) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
	CmmParse () -> HappyAbsSyn
happyIn37
		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located CmmToken
happy_var_2 Located CmmToken
happy_var_4 CmmParse ()
happy_var_3
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}}

happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_103 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_103 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_103
happyReduction_103 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_103 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn38
		 (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest

happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_104 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_104 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_104
happyReduction_104 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_104 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = Maybe Bool -> HappyAbsSyn
happyIn38
		 (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest

happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_105 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_105 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
34# HappyAbsSyn
happyReduction_105
happyReduction_105 :: HappyAbsSyn
happyReduction_105  =  Maybe Bool -> HappyAbsSyn
happyIn38
		 (Maybe Bool
forall a. Maybe a
Nothing
	)

happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_106 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_106 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106
happyReduction_106 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_106 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Quot [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_107 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_107 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107
happyReduction_107 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_107 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Mul [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_108 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_108 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108
happyReduction_108 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_108 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Rem [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_109 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_109 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109
happyReduction_109 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_109 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Sub [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_110 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_110 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110
happyReduction_110 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_110 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Add [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_111 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_111 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111
happyReduction_111 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_111 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Shr [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_112 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_112 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112
happyReduction_112 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_112 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Shl [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_113 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_113 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113
happyReduction_113 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_113 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_And [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_114 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_114 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114
happyReduction_114 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_114 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Xor [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_115 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_115 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115
happyReduction_115 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_115 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Or [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_116 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_116 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_116
happyReduction_116 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_116 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Ge [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_117 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_117 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_117
happyReduction_117 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_117 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Gt [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_118 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_118 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_118
happyReduction_118 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_118 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Le [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_119 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_119 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_119
happyReduction_119 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_119 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Lt [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_120 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_120 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120
happyReduction_120 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_120 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Ne [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_121 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_121 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121
happyReduction_121 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_121 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Eq [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
	)}}

happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_122 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_122 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_122
happyReduction_122 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_122 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Not [CmmParse CmmExpr
happy_var_2]
	)}

happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_123 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_123 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_123
happyReduction_123 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_123 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_S_Neg [CmmParse CmmExpr
happy_var_2]
	)}

happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_124 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_124 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
35# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_124
happyReduction_124 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_124 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CmmExpr)
-> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_3)) -> 
	case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_5 of { (HappyWrap40 CmmParse CmmExpr
happy_var_5) -> 
	( do { Width -> MachOp
mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
happy_var_3 ;
                                                CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
mo [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_5]) })}}})
	) (\CmmParse CmmExpr
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CmmExpr -> HappyAbsSyn
happyIn39 CmmParse CmmExpr
r))

happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_125 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_125 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
35# HappyAbsSyn -> HappyAbsSyn
happyReduction_125
happyReduction_125 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_125 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn39
		 (CmmParse CmmExpr
happy_var_1
	)}

happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_126 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_126 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_126
happyReduction_126 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_126 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int         Integer
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_2 of { (HappyWrap42 CmmType
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt Integer
happy_var_1 (CmmType -> Width
typeWidth CmmType
happy_var_2)))
	)}}

happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_127 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_127 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_127
happyReduction_127 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_127 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Float       Rational
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap42
happyOut42 HappyAbsSyn
happy_x_2 of { (HappyWrap42 CmmType
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (Rational -> Width -> CmmLit
CmmFloat Rational
happy_var_1 (CmmType -> Width
typeWidth CmmType
happy_var_2)))
	)}}

happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_128 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_128 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
36# HappyAbsSyn -> HappyAbsSyn
happyReduction_128
happyReduction_128 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_128 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (do CmmLit
s <- FCode CmmLit -> CmmParse CmmLit
forall a. FCode a -> CmmParse a
code (String -> FCode CmmLit
newStringCLit String
happy_var_1);
                                      CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit CmmLit
s)
	)}

happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_129 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_129 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
36# HappyAbsSyn -> HappyAbsSyn
happyReduction_129
happyReduction_129 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_129 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_1 of { (HappyWrap48 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (CmmParse CmmExpr
happy_var_1
	)}

happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_130 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_130 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_130
happyReduction_130 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_130 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_1 of { (HappyWrap58 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_2 of { (HappyWrap41 CmmParse (AlignmentSpec, CmmExpr)
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (do (AlignmentSpec
align, CmmExpr
ptr) <- CmmParse (AlignmentSpec, CmmExpr)
happy_var_2; CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr -> CmmType -> AlignmentSpec -> CmmExpr
CmmLoad CmmExpr
ptr CmmType
happy_var_1 AlignmentSpec
align)
	)}}

happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_131 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_131 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
5# Int#
36# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_131
happyReduction_131 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_131 (HappyAbsSyn
happy_x_5 `HappyStk`
	HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse CmmExpr)
-> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp FastString
happy_var_2 [CmmParse CmmExpr]
happy_var_4)}})
	) (\CmmParse CmmExpr
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CmmExpr -> HappyAbsSyn
happyIn40 CmmParse CmmExpr
r))

happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_132 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_132 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_132
happyReduction_132 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_132 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn40
		 (CmmParse CmmExpr
happy_var_2
	)}

happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_133 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_133 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
37# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_133
happyReduction_133 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_133 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
happy_var_3) -> 
	CmmParse (AlignmentSpec, CmmExpr) -> HappyAbsSyn
happyIn41
		 (do CmmExpr
ptr <- CmmParse CmmExpr
happy_var_3; (AlignmentSpec, CmmExpr) -> CmmParse (AlignmentSpec, CmmExpr)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (AlignmentSpec
Unaligned, CmmExpr
ptr)
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_134 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_134 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
37# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_134
happyReduction_134 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_134 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
happy_var_2) -> 
	CmmParse (AlignmentSpec, CmmExpr) -> HappyAbsSyn
happyIn41
		 (do CmmExpr
ptr <- CmmParse CmmExpr
happy_var_2; (AlignmentSpec, CmmExpr) -> CmmParse (AlignmentSpec, CmmExpr)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (AlignmentSpec
NaturallyAligned, CmmExpr
ptr)
	)}

happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_135 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_135 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
0# Int#
38# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p} {p}. p -> p -> PD HappyAbsSyn
happyReduction_135
happyReduction_135 :: p -> p -> PD HappyAbsSyn
happyReduction_135 (p
happyRest) p
tk
	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do Platform
platform <- PD Platform
PD.getPlatform; CmmType -> PD CmmType
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmType -> PD CmmType) -> CmmType -> PD CmmType
forall a b. (a -> b) -> a -> b
$ Platform -> CmmType
bWord Platform
platform))
	) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn42 CmmType
r))

happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_136 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_136 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
38# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_136
happyReduction_136 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_136 HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_2 of { (HappyWrap58 CmmType
happy_var_2) -> 
	CmmType -> HappyAbsSyn
happyIn42
		 (CmmType
happy_var_2
	)}

happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_137 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_137 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
39# HappyAbsSyn
happyReduction_137
happyReduction_137 :: HappyAbsSyn
happyReduction_137  =  [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn43
		 ([]
	)

happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_138 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_138 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
39# HappyAbsSyn -> HappyAbsSyn
happyReduction_138
happyReduction_138 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_138 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_1 of { (HappyWrap44 [CmmParse (CmmExpr, ForeignHint)]
happy_var_1) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn43
		 ([CmmParse (CmmExpr, ForeignHint)]
happy_var_1
	)}

happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_139 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_139 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
40# HappyAbsSyn -> HappyAbsSyn
happyReduction_139
happyReduction_139 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_139 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_1 of { (HappyWrap45 CmmParse (CmmExpr, ForeignHint)
happy_var_1) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn44
		 ([CmmParse (CmmExpr, ForeignHint)
happy_var_1]
	)}

happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_140 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_140 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
40# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_140
happyReduction_140 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_140 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap45
happyOut45 HappyAbsSyn
happy_x_1 of { (HappyWrap45 CmmParse (CmmExpr, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap44
happyOut44 HappyAbsSyn
happy_x_3 of { (HappyWrap44 [CmmParse (CmmExpr, ForeignHint)]
happy_var_3) -> 
	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn44
		 (CmmParse (CmmExpr, ForeignHint)
happy_var_1 CmmParse (CmmExpr, ForeignHint)
-> [CmmParse (CmmExpr, ForeignHint)]
-> [CmmParse (CmmExpr, ForeignHint)]
forall a. a -> [a] -> [a]
: [CmmParse (CmmExpr, ForeignHint)]
happy_var_3
	)}}

happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_141 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_141 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
41# HappyAbsSyn -> HappyAbsSyn
happyReduction_141
happyReduction_141 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_141 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn45
		 (do CmmExpr
e <- CmmParse CmmExpr
happy_var_1;
                                             (CmmExpr, ForeignHint) -> CmmParse (CmmExpr, ForeignHint)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr
e, CmmExpr -> ForeignHint
inferCmmHint CmmExpr
e)
	)}

happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_142 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_142 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
41# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_142
happyReduction_142 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_142 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (CmmExpr, ForeignHint))
-> (CmmParse (CmmExpr, ForeignHint) -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_String      String
happy_var_2)) -> 
	( do ForeignHint
h <- String -> PD ForeignHint
parseCmmHint String
happy_var_2;
                                              CmmParse (CmmExpr, ForeignHint)
-> PD (CmmParse (CmmExpr, ForeignHint))
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse (CmmExpr, ForeignHint)
 -> PD (CmmParse (CmmExpr, ForeignHint)))
-> CmmParse (CmmExpr, ForeignHint)
-> PD (CmmParse (CmmExpr, ForeignHint))
forall a b. (a -> b) -> a -> b
$ do
                                                CmmExpr
e <- CmmParse CmmExpr
happy_var_1; (CmmExpr, ForeignHint) -> CmmParse (CmmExpr, ForeignHint)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmExpr
e, ForeignHint
h))}})
	) (\CmmParse (CmmExpr, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn45 CmmParse (CmmExpr, ForeignHint)
r))

happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_143 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_143 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
42# HappyAbsSyn
happyReduction_143
happyReduction_143 :: HappyAbsSyn
happyReduction_143  =  [CmmParse CmmExpr] -> HappyAbsSyn
happyIn46
		 ([]
	)

happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_144 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_144 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
42# HappyAbsSyn -> HappyAbsSyn
happyReduction_144
happyReduction_144 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_144 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
happy_x_1 of { (HappyWrap47 [CmmParse CmmExpr]
happy_var_1) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn46
		 ([CmmParse CmmExpr]
happy_var_1
	)}

happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_145 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_145 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
43# HappyAbsSyn -> HappyAbsSyn
happyReduction_145
happyReduction_145 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_145 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn47
		 ([ CmmParse CmmExpr
happy_var_1 ]
	)}

happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_146 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_146 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
43# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_146
happyReduction_146 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_146 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap47
happyOut47 HappyAbsSyn
happy_x_3 of { (HappyWrap47 [CmmParse CmmExpr]
happy_var_3) -> 
	[CmmParse CmmExpr] -> HappyAbsSyn
happyIn47
		 (CmmParse CmmExpr
happy_var_1 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
forall a. a -> [a] -> [a]
: [CmmParse CmmExpr]
happy_var_3
	)}}

happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_147 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_147 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
44# HappyAbsSyn -> HappyAbsSyn
happyReduction_147
happyReduction_147 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_147 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn48
		 (FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1
	)}

happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_148 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_148 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
44# HappyAbsSyn -> HappyAbsSyn
happyReduction_148
happyReduction_148 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_148 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	CmmParse CmmExpr -> HappyAbsSyn
happyIn48
		 (CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmReg -> CmmExpr
CmmReg (GlobalReg -> CmmReg
CmmGlobal GlobalReg
happy_var_1))
	)}

happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_149 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_149 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
45# HappyAbsSyn
happyReduction_149
happyReduction_149 :: HappyAbsSyn
happyReduction_149  =  [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn49
		 ([]
	)

happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_150 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_150 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
45# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_150
happyReduction_150 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_150 (HappyAbsSyn
happy_x_4 `HappyStk`
	HappyAbsSyn
happy_x_3 `HappyStk`
	HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest)
	 = case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_2 of { (HappyWrap50 [CmmParse (LocalReg, ForeignHint)]
happy_var_2) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn49
		 ([CmmParse (LocalReg, ForeignHint)]
happy_var_2
	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}

happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_151 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_151 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
46# HappyAbsSyn -> HappyAbsSyn
happyReduction_151
happyReduction_151 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_151 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_1 of { (HappyWrap51 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn50
		 ([CmmParse (LocalReg, ForeignHint)
happy_var_1]
	)}

happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_152 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_152 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
46# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_152
happyReduction_152 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_152 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_1 of { (HappyWrap51 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn50
		 ([CmmParse (LocalReg, ForeignHint)
happy_var_1]
	)}

happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_153 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_153 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
46# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_153
happyReduction_153 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_153 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap51
happyOut51 HappyAbsSyn
happy_x_1 of { (HappyWrap51 CmmParse (LocalReg, ForeignHint)
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap50
happyOut50 HappyAbsSyn
happy_x_3 of { (HappyWrap50 [CmmParse (LocalReg, ForeignHint)]
happy_var_3) -> 
	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn50
		 (CmmParse (LocalReg, ForeignHint)
happy_var_1 CmmParse (LocalReg, ForeignHint)
-> [CmmParse (LocalReg, ForeignHint)]
-> [CmmParse (LocalReg, ForeignHint)]
forall a. a -> [a] -> [a]
: [CmmParse (LocalReg, ForeignHint)]
happy_var_3
	)}}

happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_154 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_154 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
47# HappyAbsSyn -> HappyAbsSyn
happyReduction_154
happyReduction_154 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_154 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
happy_x_1 of { (HappyWrap52 CmmParse LocalReg
happy_var_1) -> 
	CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn51
		 (do LocalReg
e <- CmmParse LocalReg
happy_var_1; (LocalReg, ForeignHint) -> CmmParse (LocalReg, ForeignHint)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg
e, CmmExpr -> ForeignHint
inferCmmHint (CmmReg -> CmmExpr
CmmReg (LocalReg -> CmmReg
CmmLocal LocalReg
e)))
	)}

happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_155 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_155 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
47# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_155
happyReduction_155 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_155 (HappyAbsSyn
happy_x_2 `HappyStk`
	HappyAbsSyn
happy_x_1 `HappyStk`
	HappyStk HappyAbsSyn
happyRest) p
tk
	 = PD (CmmParse (LocalReg, ForeignHint))
-> (CmmParse (LocalReg, ForeignHint) -> PD HappyAbsSyn)
-> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_String      String
happy_var_1)) -> 
	case HappyAbsSyn -> HappyWrap52
happyOut52 HappyAbsSyn
happy_x_2 of { (HappyWrap52 CmmParse LocalReg
happy_var_2) -> 
	( do ForeignHint
h <- String -> PD ForeignHint
parseCmmHint String
happy_var_1;
                                      CmmParse (LocalReg, ForeignHint)
-> PD (CmmParse (LocalReg, ForeignHint))
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse (LocalReg, ForeignHint)
 -> PD (CmmParse (LocalReg, ForeignHint)))
-> CmmParse (LocalReg, ForeignHint)
-> PD (CmmParse (LocalReg, ForeignHint))
forall a b. (a -> b) -> a -> b
$ do
                                         LocalReg
e <- CmmParse LocalReg
happy_var_2; (LocalReg, ForeignHint) -> CmmParse (LocalReg, ForeignHint)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg
e,ForeignHint
h))}})
	) (\CmmParse (LocalReg, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn51 CmmParse (LocalReg, ForeignHint)
r))

happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_156 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_156 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
48# HappyAbsSyn -> HappyAbsSyn
happyReduction_156
happyReduction_156 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_156 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse LocalReg -> HappyAbsSyn
happyIn52
		 (do CmmExpr
e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     LocalReg -> CmmParse LocalReg
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (LocalReg -> CmmParse LocalReg) -> LocalReg -> CmmParse LocalReg
forall a b. (a -> b) -> a -> b
$
                                       case CmmExpr
e of
                                        CmmReg (CmmLocal LocalReg
r) -> LocalReg
r
                                        CmmExpr
other -> String -> SDoc -> LocalReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
" not a local register")
	)}

happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_157 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_157 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
49# HappyAbsSyn -> HappyAbsSyn
happyReduction_157
happyReduction_157 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_157 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_1)) -> 
	CmmParse CmmReg -> HappyAbsSyn
happyIn53
		 (do CmmExpr
e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     CmmReg -> CmmParse CmmReg
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmReg -> CmmParse CmmReg) -> CmmReg -> CmmParse CmmReg
forall a b. (a -> b) -> a -> b
$
                                       case CmmExpr
e of
                                        CmmReg CmmReg
r -> CmmReg
r
                                        CmmExpr
other -> String -> SDoc -> CmmReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
" not a register")
	)}

happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_158 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_158 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
49# HappyAbsSyn -> HappyAbsSyn
happyReduction_158
happyReduction_158 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_158 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_var_1)) -> 
	CmmParse CmmReg -> HappyAbsSyn
happyIn53
		 (CmmReg -> CmmParse CmmReg
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (GlobalReg -> CmmReg
CmmGlobal GlobalReg
happy_var_1)
	)}

happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_159 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_159 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
50# HappyAbsSyn
happyReduction_159
happyReduction_159 :: HappyAbsSyn
happyReduction_159  =  Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 (Maybe [CmmParse LocalReg]
forall a. Maybe a
Nothing
	)

happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_160 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_160 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
50# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_160
happyReduction_160 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_160 p
happy_x_3
	HappyAbsSyn
happy_x_2
	p
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap55
happyOut55 HappyAbsSyn
happy_x_2 of { (HappyWrap55 [CmmParse LocalReg]
happy_var_2) -> 
	Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn54
		 ([CmmParse LocalReg] -> Maybe [CmmParse LocalReg]
forall a. a -> Maybe a
Just [CmmParse LocalReg]
happy_var_2
	)}

happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_161 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_161 = Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
51# HappyAbsSyn
happyReduction_161
happyReduction_161 :: HappyAbsSyn
happyReduction_161  =  [CmmParse LocalReg] -> HappyAbsSyn
happyIn55
		 ([]
	)

happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_162 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_162 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
51# HappyAbsSyn -> HappyAbsSyn
happyReduction_162
happyReduction_162 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_162 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_1 of { (HappyWrap56 [CmmParse LocalReg]
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn55
		 ([CmmParse LocalReg]
happy_var_1
	)}

happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_163 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_163 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
52# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_163
happyReduction_163 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_163 p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 CmmParse LocalReg
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn56
		 ([CmmParse LocalReg
happy_var_1]
	)}

happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_164 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_164 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
52# HappyAbsSyn -> HappyAbsSyn
happyReduction_164
happyReduction_164 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_164 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 CmmParse LocalReg
happy_var_1) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn56
		 ([CmmParse LocalReg
happy_var_1]
	)}

happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_165 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_165 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
52# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_165
happyReduction_165 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_165 HappyAbsSyn
happy_x_3
	p
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap57
happyOut57 HappyAbsSyn
happy_x_1 of { (HappyWrap57 CmmParse LocalReg
happy_var_1) -> 
	case HappyAbsSyn -> HappyWrap56
happyOut56 HappyAbsSyn
happy_x_3 of { (HappyWrap56 [CmmParse LocalReg]
happy_var_3) -> 
	[CmmParse LocalReg] -> HappyAbsSyn
happyIn56
		 (CmmParse LocalReg
happy_var_1 CmmParse LocalReg -> [CmmParse LocalReg] -> [CmmParse LocalReg]
forall a. a -> [a] -> [a]
: [CmmParse LocalReg]
happy_var_3
	)}}

happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_166 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_166 = Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
53# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_166
happyReduction_166 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_166 HappyAbsSyn
happy_x_2
	HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_1 of { (HappyWrap58 CmmType
happy_var_1) -> 
	case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_Name        FastString
happy_var_2)) -> 
	CmmParse LocalReg -> HappyAbsSyn
happyIn57
		 (CmmType -> FastString -> CmmParse LocalReg
newLocal CmmType
happy_var_1 FastString
happy_var_2
	)}}

happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_167 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_167 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_167
happyReduction_167 :: p -> HappyAbsSyn
happyReduction_167 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn58
		 (CmmType
b8
	)

happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_168 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_168 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
54# HappyAbsSyn -> HappyAbsSyn
happyReduction_168
happyReduction_168 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_168 HappyAbsSyn
happy_x_1
	 =  case HappyAbsSyn -> HappyWrap59
happyOut59 HappyAbsSyn
happy_x_1 of { (HappyWrap59 CmmType
happy_var_1) -> 
	CmmType -> HappyAbsSyn
happyIn58
		 (CmmType
happy_var_1
	)}

happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_169 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_169 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_169
happyReduction_169 :: p -> HappyAbsSyn
happyReduction_169 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b16
	)

happyReduce_170 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_170 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_170 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_170
happyReduction_170 :: p -> HappyAbsSyn
happyReduction_170 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b32
	)

happyReduce_171 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_171 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_171 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_171
happyReduction_171 :: p -> HappyAbsSyn
happyReduction_171 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b64
	)

happyReduce_172 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_172 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_172 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_172
happyReduction_172 :: p -> HappyAbsSyn
happyReduction_172 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b128
	)

happyReduce_173 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_173 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_173 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_173
happyReduction_173 :: p -> HappyAbsSyn
happyReduction_173 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b256
	)

happyReduce_174 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_174 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_174 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_174
happyReduction_174 :: p -> HappyAbsSyn
happyReduction_174 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
b512
	)

happyReduce_175 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_175 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_175 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_175
happyReduction_175 :: p -> HappyAbsSyn
happyReduction_175 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
f32
	)

happyReduce_176 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_176 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_176 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
55# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_176
happyReduction_176 :: p -> HappyAbsSyn
happyReduction_176 p
happy_x_1
	 =  CmmType -> HappyAbsSyn
happyIn59
		 (CmmType
f64
	)

happyReduce_177 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_177 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_177 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
55# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_177
happyReduction_177 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_177 (a
happy_x_1 `HappyStk`
	HappyStk a
happyRest) p
tk
	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do Platform
platform <- PD Platform
PD.getPlatform; CmmType -> PD CmmType
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmType -> PD CmmType) -> CmmType -> PD CmmType
forall a b. (a -> b) -> a -> b
$ Platform -> CmmType
gcWord Platform
platform))
	) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn59 CmmType
r))

happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk
	= (Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a. (Located CmmToken -> PD a) -> PD a
cmmlex(\Located CmmToken
tk -> 
	let cont :: Int# -> PD HappyAbsSyn
cont Int#
i = Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
i Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk in
	case Located CmmToken
tk of {
	L SrcSpan
_ CmmToken
CmmT_EOF -> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
81# Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk;
	L SrcSpan
_ (CmmT_SpecChar Char
':') -> Int# -> PD HappyAbsSyn
cont Int#
1#;
	L SrcSpan
_ (CmmT_SpecChar Char
';') -> Int# -> PD HappyAbsSyn
cont Int#
2#;
	L SrcSpan
_ (CmmT_SpecChar Char
'{') -> Int# -> PD HappyAbsSyn
cont Int#
3#;
	L SrcSpan
_ (CmmT_SpecChar Char
'}') -> Int# -> PD HappyAbsSyn
cont Int#
4#;
	L SrcSpan
_ (CmmT_SpecChar Char
'[') -> Int# -> PD HappyAbsSyn
cont Int#
5#;
	L SrcSpan
_ (CmmT_SpecChar Char
']') -> Int# -> PD HappyAbsSyn
cont Int#
6#;
	L SrcSpan
_ (CmmT_SpecChar Char
'(') -> Int# -> PD HappyAbsSyn
cont Int#
7#;
	L SrcSpan
_ (CmmT_SpecChar Char
')') -> Int# -> PD HappyAbsSyn
cont Int#
8#;
	L SrcSpan
_ (CmmT_SpecChar Char
'=') -> Int# -> PD HappyAbsSyn
cont Int#
9#;
	L SrcSpan
_ (CmmT_SpecChar Char
'`') -> Int# -> PD HappyAbsSyn
cont Int#
10#;
	L SrcSpan
_ (CmmT_SpecChar Char
'~') -> Int# -> PD HappyAbsSyn
cont Int#
11#;
	L SrcSpan
_ (CmmT_SpecChar Char
'/') -> Int# -> PD HappyAbsSyn
cont Int#
12#;
	L SrcSpan
_ (CmmT_SpecChar Char
'*') -> Int# -> PD HappyAbsSyn
cont Int#
13#;
	L SrcSpan
_ (CmmT_SpecChar Char
'%') -> Int# -> PD HappyAbsSyn
cont Int#
14#;
	L SrcSpan
_ (CmmT_SpecChar Char
'-') -> Int# -> PD HappyAbsSyn
cont Int#
15#;
	L SrcSpan
_ (CmmT_SpecChar Char
'+') -> Int# -> PD HappyAbsSyn
cont Int#
16#;
	L SrcSpan
_ (CmmT_SpecChar Char
'&') -> Int# -> PD HappyAbsSyn
cont Int#
17#;
	L SrcSpan
_ (CmmT_SpecChar Char
'^') -> Int# -> PD HappyAbsSyn
cont Int#
18#;
	L SrcSpan
_ (CmmT_SpecChar Char
'|') -> Int# -> PD HappyAbsSyn
cont Int#
19#;
	L SrcSpan
_ (CmmT_SpecChar Char
'>') -> Int# -> PD HappyAbsSyn
cont Int#
20#;
	L SrcSpan
_ (CmmT_SpecChar Char
'<') -> Int# -> PD HappyAbsSyn
cont Int#
21#;
	L SrcSpan
_ (CmmT_SpecChar Char
',') -> Int# -> PD HappyAbsSyn
cont Int#
22#;
	L SrcSpan
_ (CmmT_SpecChar Char
'!') -> Int# -> PD HappyAbsSyn
cont Int#
23#;
	L SrcSpan
_ (CmmToken
CmmT_DotDot) -> Int# -> PD HappyAbsSyn
cont Int#
24#;
	L SrcSpan
_ (CmmToken
CmmT_DoubleColon) -> Int# -> PD HappyAbsSyn
cont Int#
25#;
	L SrcSpan
_ (CmmToken
CmmT_Shr) -> Int# -> PD HappyAbsSyn
cont Int#
26#;
	L SrcSpan
_ (CmmToken
CmmT_Shl) -> Int# -> PD HappyAbsSyn
cont Int#
27#;
	L SrcSpan
_ (CmmToken
CmmT_Ge) -> Int# -> PD HappyAbsSyn
cont Int#
28#;
	L SrcSpan
_ (CmmToken
CmmT_Le) -> Int# -> PD HappyAbsSyn
cont Int#
29#;
	L SrcSpan
_ (CmmToken
CmmT_Eq) -> Int# -> PD HappyAbsSyn
cont Int#
30#;
	L SrcSpan
_ (CmmToken
CmmT_Ne) -> Int# -> PD HappyAbsSyn
cont Int#
31#;
	L SrcSpan
_ (CmmToken
CmmT_BoolAnd) -> Int# -> PD HappyAbsSyn
cont Int#
32#;
	L SrcSpan
_ (CmmToken
CmmT_BoolOr) -> Int# -> PD HappyAbsSyn
cont Int#
33#;
	L SrcSpan
_ (CmmToken
CmmT_True ) -> Int# -> PD HappyAbsSyn
cont Int#
34#;
	L SrcSpan
_ (CmmToken
CmmT_False) -> Int# -> PD HappyAbsSyn
cont Int#
35#;
	L SrcSpan
_ (CmmToken
CmmT_likely) -> Int# -> PD HappyAbsSyn
cont Int#
36#;
	L SrcSpan
_ (CmmToken
CmmT_Relaxed) -> Int# -> PD HappyAbsSyn
cont Int#
37#;
	L SrcSpan
_ (CmmToken
CmmT_Acquire) -> Int# -> PD HappyAbsSyn
cont Int#
38#;
	L SrcSpan
_ (CmmToken
CmmT_Release) -> Int# -> PD HappyAbsSyn
cont Int#
39#;
	L SrcSpan
_ (CmmToken
CmmT_SeqCst) -> Int# -> PD HappyAbsSyn
cont Int#
40#;
	L SrcSpan
_ (CmmToken
CmmT_CLOSURE) -> Int# -> PD HappyAbsSyn
cont Int#
41#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE) -> Int# -> PD HappyAbsSyn
cont Int#
42#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_RET) -> Int# -> PD HappyAbsSyn
cont Int#
43#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_FUN) -> Int# -> PD HappyAbsSyn
cont Int#
44#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_CONSTR) -> Int# -> PD HappyAbsSyn
cont Int#
45#;
	L SrcSpan
_ (CmmToken
CmmT_INFO_TABLE_SELECTOR) -> Int# -> PD HappyAbsSyn
cont Int#
46#;
	L SrcSpan
_ (CmmToken
CmmT_else) -> Int# -> PD HappyAbsSyn
cont Int#
47#;
	L SrcSpan
_ (CmmToken
CmmT_export) -> Int# -> PD HappyAbsSyn
cont Int#
48#;
	L SrcSpan
_ (CmmToken
CmmT_section) -> Int# -> PD HappyAbsSyn
cont Int#
49#;
	L SrcSpan
_ (CmmToken
CmmT_goto) -> Int# -> PD HappyAbsSyn
cont Int#
50#;
	L SrcSpan
_ (CmmToken
CmmT_if) -> Int# -> PD HappyAbsSyn
cont Int#
51#;
	L SrcSpan
_ (CmmToken
CmmT_call) -> Int# -> PD HappyAbsSyn
cont Int#
52#;
	L SrcSpan
_ (CmmToken
CmmT_jump) -> Int# -> PD HappyAbsSyn
cont Int#
53#;
	L SrcSpan
_ (CmmToken
CmmT_foreign) -> Int# -> PD HappyAbsSyn
cont Int#
54#;
	L SrcSpan
_ (CmmToken
CmmT_never) -> Int# -> PD HappyAbsSyn
cont Int#
55#;
	L SrcSpan
_ (CmmToken
CmmT_prim) -> Int# -> PD HappyAbsSyn
cont Int#
56#;
	L SrcSpan
_ (CmmToken
CmmT_reserve) -> Int# -> PD HappyAbsSyn
cont Int#
57#;
	L SrcSpan
_ (CmmToken
CmmT_return) -> Int# -> PD HappyAbsSyn
cont Int#
58#;
	L SrcSpan
_ (CmmToken
CmmT_returns) -> Int# -> PD HappyAbsSyn
cont Int#
59#;
	L SrcSpan
_ (CmmToken
CmmT_import) -> Int# -> PD HappyAbsSyn
cont Int#
60#;
	L SrcSpan
_ (CmmToken
CmmT_switch) -> Int# -> PD HappyAbsSyn
cont Int#
61#;
	L SrcSpan
_ (CmmToken
CmmT_case) -> Int# -> PD HappyAbsSyn
cont Int#
62#;
	L SrcSpan
_ (CmmToken
CmmT_default) -> Int# -> PD HappyAbsSyn
cont Int#
63#;
	L SrcSpan
_ (CmmToken
CmmT_push) -> Int# -> PD HappyAbsSyn
cont Int#
64#;
	L SrcSpan
_ (CmmToken
CmmT_unwind) -> Int# -> PD HappyAbsSyn
cont Int#
65#;
	L SrcSpan
_ (CmmToken
CmmT_bits8) -> Int# -> PD HappyAbsSyn
cont Int#
66#;
	L SrcSpan
_ (CmmToken
CmmT_bits16) -> Int# -> PD HappyAbsSyn
cont Int#
67#;
	L SrcSpan
_ (CmmToken
CmmT_bits32) -> Int# -> PD HappyAbsSyn
cont Int#
68#;
	L SrcSpan
_ (CmmToken
CmmT_bits64) -> Int# -> PD HappyAbsSyn
cont Int#
69#;
	L SrcSpan
_ (CmmToken
CmmT_bits128) -> Int# -> PD HappyAbsSyn
cont Int#
70#;
	L SrcSpan
_ (CmmToken
CmmT_bits256) -> Int# -> PD HappyAbsSyn
cont Int#
71#;
	L SrcSpan
_ (CmmToken
CmmT_bits512) -> Int# -> PD HappyAbsSyn
cont Int#
72#;
	L SrcSpan
_ (CmmToken
CmmT_float32) -> Int# -> PD HappyAbsSyn
cont Int#
73#;
	L SrcSpan
_ (CmmToken
CmmT_float64) -> Int# -> PD HappyAbsSyn
cont Int#
74#;
	L SrcSpan
_ (CmmToken
CmmT_gcptr) -> Int# -> PD HappyAbsSyn
cont Int#
75#;
	L SrcSpan
_ (CmmT_GlobalReg   GlobalReg
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
76#;
	L SrcSpan
_ (CmmT_Name        FastString
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
77#;
	L SrcSpan
_ (CmmT_String      String
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
78#;
	L SrcSpan
_ (CmmT_Int         Integer
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
79#;
	L SrcSpan
_ (CmmT_Float       Rational
happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
cont Int#
80#;
	Located CmmToken
_ -> (Located CmmToken, [String]) -> PD HappyAbsSyn
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [])
	})

happyError_ :: [String] -> Int# -> Located CmmToken -> PD a
happyError_ [String]
explist Int#
81# Located CmmToken
tk = (Located CmmToken, [String]) -> PD a
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [String]
explist)
happyError_ [String]
explist Int#
_ Located CmmToken
tk = (Located CmmToken, [String]) -> PD a
forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken
tk, [String]
explist)

happyThen :: () => PD a -> (a -> PD b) -> PD b
happyThen :: forall a b. PD a -> (a -> PD b) -> PD b
happyThen = PD a -> (a -> PD b) -> PD b
forall a b. PD a -> (a -> PD b) -> PD b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
(>>=)
happyReturn :: () => a -> PD a
happyReturn :: forall a. a -> PD a
happyReturn = (a -> PD a
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return)
happyParse :: () => Happy_GHC_Exts.Int# -> PD (HappyAbsSyn )

happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

happyDoAction :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

happyReduceArr :: () => Happy_Data_Array.Array Prelude.Int (Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn ))

happyThen1 :: () => PD a -> (a -> PD b) -> PD b
happyThen1 :: forall a b. PD a -> (a -> PD b) -> PD b
happyThen1 = PD a -> (a -> PD b) -> PD b
forall a b. PD a -> (a -> PD b) -> PD b
happyThen
happyReturn1 :: () => a -> PD a
happyReturn1 :: forall a. a -> PD a
happyReturn1 = a -> PD a
forall a. a -> PD a
happyReturn
happyError' :: () => ((Located CmmToken), [Prelude.String]) -> PD a
happyError' :: forall a. (Located CmmToken, [String]) -> PD a
happyError' (Located CmmToken, [String])
tk = (\(Located CmmToken
tokens, [String]
explist) -> PD a
forall a. PD a
happyError) (Located CmmToken, [String])
tk
cmmParse :: PD (CmmParse ())
cmmParse = PD (CmmParse ())
happySomeParser where
 happySomeParser :: PD (CmmParse ())
happySomeParser = PD HappyAbsSyn
-> (HappyAbsSyn -> PD (CmmParse ())) -> PD (CmmParse ())
forall a b. PD a -> (a -> PD b) -> PD b
happyThen (Int# -> PD HappyAbsSyn
happyParse Int#
0#) (\HappyAbsSyn
x -> CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
happyReturn (let {(HappyWrap4 CmmParse ()
x') = HappyAbsSyn -> HappyWrap4
happyOut4 HappyAbsSyn
x} in CmmParse ()
x'))

happySeq :: a -> b -> b
happySeq = a -> b -> b
forall a b. a -> b -> b
happyDoSeq


section :: String -> SectionType
section :: String -> SectionType
section String
"text"      = SectionType
Text
section String
"data"      = SectionType
Data
section String
"rodata"    = SectionType
ReadOnlyData
section String
"relrodata" = SectionType
RelocatableReadOnlyData
section String
"bss"       = SectionType
UninitialisedData
section String
s           = String -> SectionType
OtherSection String
s

mkString :: String -> CmmStatic
mkString :: String -> CmmStatic
mkString String
s = ConstrDescription -> CmmStatic
CmmString (String -> ConstrDescription
BS8.pack String
s)

-- mkMachOp infers the type of the MachOp from the type of its first
-- argument.  We assume that this is correct: for MachOps that don't have
-- symmetrical args (e.g. shift ops), the first arg determines the type of
-- the op.
mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
fn [CmmParse CmmExpr]
args = do
  Platform
platform <- CmmParse Platform
getPlatform
  [CmmExpr]
arg_exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args
  CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp (Width -> MachOp
fn (CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform ([CmmExpr] -> CmmExpr
forall a. HasCallStack => [a] -> a
head [CmmExpr]
arg_exprs)))) [CmmExpr]
arg_exprs)

getLit :: CmmExpr -> CmmLit
getLit :: CmmExpr -> CmmLit
getLit (CmmLit CmmLit
l) = CmmLit
l
getLit (CmmMachOp (MO_S_Neg Width
_) [CmmLit (CmmInt Integer
i Width
r)])  = Integer -> Width -> CmmLit
CmmInt (Integer -> Integer
forall a. Num a => a -> a
negate Integer
i) Width
r
getLit CmmExpr
_ = String -> CmmLit
forall a. String -> a
panic String
"invalid literal" -- TODO messy failure

nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp :: FastString -> PD (Width -> MachOp)
nameToMachOp FastString
name =
  case UniqFM FastString (Width -> MachOp)
-> FastString -> Maybe (Width -> MachOp)
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM UniqFM FastString (Width -> MachOp)
machOps FastString
name of
        Maybe (Width -> MachOp)
Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp)
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp))
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp)
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$ CmmParserError -> PsMessage
PsErrCmmParser (FastString -> CmmParserError
CmmUnknownPrimitive FastString
name)
        Just Width -> MachOp
m  -> (Width -> MachOp) -> PD (Width -> MachOp)
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return Width -> MachOp
m

exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
exprOp FastString
name [CmmParse CmmExpr]
args_code = do
  Profile
profile     <- PD Profile
PD.getProfile
  Bool
align_check <- GeneralFlag -> DynFlags -> Bool
gopt GeneralFlag
Opt_AlignmentSanitisation (DynFlags -> Bool) -> PD DynFlags -> PD Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> PD DynFlags
forall (m :: * -> *). HasDynFlags m => m DynFlags
getDynFlags
  case UniqFM FastString ([CmmExpr] -> CmmExpr)
-> FastString -> Maybe ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM (Profile -> Bool -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros Profile
profile Bool
align_check) FastString
name of
     Just [CmmExpr] -> CmmExpr
f  -> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse CmmExpr -> PD (CmmParse CmmExpr))
-> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a b. (a -> b) -> a -> b
$ do
        [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args_code
        CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ([CmmExpr] -> CmmExpr
f [CmmExpr]
args)
     Maybe ([CmmExpr] -> CmmExpr)
Nothing -> do
        Width -> MachOp
mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
name
        CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse CmmExpr -> PD (CmmParse CmmExpr))
-> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
forall a b. (a -> b) -> a -> b
$ (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
mo [CmmParse CmmExpr]
args_code

exprMacros :: Profile -> DoAlignSanitisation -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros :: Profile -> Bool -> UniqFM FastString ([CmmExpr] -> CmmExpr)
exprMacros Profile
profile Bool
align_check = [(FastString, [CmmExpr] -> CmmExpr)]
-> UniqFM FastString ([CmmExpr] -> CmmExpr)
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"ENTRY_CODE",   \ [CmmExpr
x] -> Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_PTR",     \ [CmmExpr
x] -> Platform -> Bool -> CmmExpr -> CmmExpr
closureInfoPtr Platform
platform Bool
align_check CmmExpr
x ),
  ( String -> FastString
fsLit String
"STD_INFO",     \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
infoTable    Profile
profile CmmExpr
x ),
  ( String -> FastString
fsLit String
"FUN_INFO",     \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
funInfoTable Profile
profile CmmExpr
x ),
  ( String -> FastString
fsLit String
"GET_ENTRY",    \ [CmmExpr
x] -> Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform   (Platform -> Bool -> CmmExpr -> CmmExpr
closureInfoPtr Platform
platform Bool
align_check CmmExpr
x) ),
  ( String -> FastString
fsLit String
"GET_STD_INFO", \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
infoTable Profile
profile    (Platform -> Bool -> CmmExpr -> CmmExpr
closureInfoPtr Platform
platform Bool
align_check CmmExpr
x) ),
  ( String -> FastString
fsLit String
"GET_FUN_INFO", \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
funInfoTable Profile
profile (Platform -> Bool -> CmmExpr -> CmmExpr
closureInfoPtr Platform
platform Bool
align_check CmmExpr
x) ),
  ( String -> FastString
fsLit String
"INFO_TYPE",    \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
infoTableClosureType Profile
profile CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_PTRS",    \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
infoTablePtrs Profile
profile CmmExpr
x ),
  ( String -> FastString
fsLit String
"INFO_NPTRS",   \ [CmmExpr
x] -> Profile -> CmmExpr -> CmmExpr
infoTableNonPtrs Profile
profile CmmExpr
x )
  ]
  where
    platform :: Platform
platform = Profile -> Platform
profilePlatform Profile
profile

-- we understand a subset of C-- primitives:
machOps :: UniqFM FastString (Width -> MachOp)
machOps :: UniqFM FastString (Width -> MachOp)
machOps = [(FastString, Width -> MachOp)]
-> UniqFM FastString (Width -> MachOp)
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM ([(FastString, Width -> MachOp)]
 -> UniqFM FastString (Width -> MachOp))
-> [(FastString, Width -> MachOp)]
-> UniqFM FastString (Width -> MachOp)
forall a b. (a -> b) -> a -> b
$
        ((String, Width -> MachOp) -> (FastString, Width -> MachOp))
-> [(String, Width -> MachOp)] -> [(FastString, Width -> MachOp)]
forall a b. (a -> b) -> [a] -> [b]
map (\(String
x, Width -> MachOp
y) -> (String -> FastString
mkFastString String
x, Width -> MachOp
y)) [
        ( String
"add",        Width -> MachOp
MO_Add ),
        ( String
"sub",        Width -> MachOp
MO_Sub ),
        ( String
"eq",         Width -> MachOp
MO_Eq ),
        ( String
"ne",         Width -> MachOp
MO_Ne ),
        ( String
"mul",        Width -> MachOp
MO_Mul ),
        ( String
"mulmayoflo",  Width -> MachOp
MO_S_MulMayOflo ),
        ( String
"mulmayoflou", Width -> MachOp
MO_U_MulMayOflo ),
        ( String
"neg",        Width -> MachOp
MO_S_Neg ),
        ( String
"quot",       Width -> MachOp
MO_S_Quot ),
        ( String
"rem",        Width -> MachOp
MO_S_Rem ),
        ( String
"divu",       Width -> MachOp
MO_U_Quot ),
        ( String
"modu",       Width -> MachOp
MO_U_Rem ),

        ( String
"ge",         Width -> MachOp
MO_S_Ge ),
        ( String
"le",         Width -> MachOp
MO_S_Le ),
        ( String
"gt",         Width -> MachOp
MO_S_Gt ),
        ( String
"lt",         Width -> MachOp
MO_S_Lt ),

        ( String
"geu",        Width -> MachOp
MO_U_Ge ),
        ( String
"leu",        Width -> MachOp
MO_U_Le ),
        ( String
"gtu",        Width -> MachOp
MO_U_Gt ),
        ( String
"ltu",        Width -> MachOp
MO_U_Lt ),

        ( String
"and",        Width -> MachOp
MO_And ),
        ( String
"or",         Width -> MachOp
MO_Or ),
        ( String
"xor",        Width -> MachOp
MO_Xor ),
        ( String
"com",        Width -> MachOp
MO_Not ),
        ( String
"shl",        Width -> MachOp
MO_Shl ),
        ( String
"shrl",       Width -> MachOp
MO_U_Shr ),
        ( String
"shra",       Width -> MachOp
MO_S_Shr ),

        ( String
"fadd",       Width -> MachOp
MO_F_Add ),
        ( String
"fsub",       Width -> MachOp
MO_F_Sub ),
        ( String
"fneg",       Width -> MachOp
MO_F_Neg ),
        ( String
"fmul",       Width -> MachOp
MO_F_Mul ),
        ( String
"fquot",      Width -> MachOp
MO_F_Quot ),

        ( String
"feq",        Width -> MachOp
MO_F_Eq ),
        ( String
"fne",        Width -> MachOp
MO_F_Ne ),
        ( String
"fge",        Width -> MachOp
MO_F_Ge ),
        ( String
"fle",        Width -> MachOp
MO_F_Le ),
        ( String
"fgt",        Width -> MachOp
MO_F_Gt ),
        ( String
"flt",        Width -> MachOp
MO_F_Lt ),

        ( String
"lobits8",  (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W8  ),
        ( String
"lobits16", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W16 ),
        ( String
"lobits32", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W32 ),
        ( String
"lobits64", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W64 ),

        ( String
"zx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W16 ),
        ( String
"zx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W32 ),
        ( String
"zx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_UU_Conv Width
W64 ),

        ( String
"sx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W16 ),
        ( String
"sx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W32 ),
        ( String
"sx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SS_Conv Width
W64 ),

        ( String
"f2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FF_Conv Width
W32 ),  -- TODO; rounding mode
        ( String
"f2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FF_Conv Width
W64 ),  -- TODO; rounding mode
        ( String
"f2i8",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W8 ),
        ( String
"f2i16",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W16 ),
        ( String
"f2i32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W32 ),
        ( String
"f2i64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_FS_Conv Width
W64 ),
        ( String
"i2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SF_Conv Width
W32 ),
        ( String
"i2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
forall a b c. (a -> b -> c) -> b -> a -> c
flip Width -> Width -> MachOp
MO_SF_Conv Width
W64 )
        ]

callishMachOps :: Platform -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps :: Platform
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps Platform
platform = [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM ([(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
 -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr])))
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall a b. (a -> b) -> a -> b
$
        ((String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))
 -> (FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr])))
-> [(String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a b. (a -> b) -> [a] -> [b]
map (\(String
x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
y) -> (String -> FastString
mkFastString String
x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
y)) [

        ( String
"pow64f", (CallishMachOp
MO_F64_Pwr,) ),
        ( String
"sin64f", (CallishMachOp
MO_F64_Sin,) ),
        ( String
"cos64f", (CallishMachOp
MO_F64_Cos,) ),
        ( String
"tan64f", (CallishMachOp
MO_F64_Tan,) ),
        ( String
"sinh64f", (CallishMachOp
MO_F64_Sinh,) ),
        ( String
"cosh64f", (CallishMachOp
MO_F64_Cosh,) ),
        ( String
"tanh64f", (CallishMachOp
MO_F64_Tanh,) ),
        ( String
"asin64f", (CallishMachOp
MO_F64_Asin,) ),
        ( String
"acos64f", (CallishMachOp
MO_F64_Acos,) ),
        ( String
"atan64f", (CallishMachOp
MO_F64_Atan,) ),
        ( String
"asinh64f", (CallishMachOp
MO_F64_Asinh,) ),
        ( String
"acosh64f", (CallishMachOp
MO_F64_Acosh,) ),
        ( String
"log64f", (CallishMachOp
MO_F64_Log,) ),
        ( String
"log1p64f", (CallishMachOp
MO_F64_Log1P,) ),
        ( String
"exp64f", (CallishMachOp
MO_F64_Exp,) ),
        ( String
"expM164f", (CallishMachOp
MO_F64_ExpM1,) ),
        ( String
"fabs64f", (CallishMachOp
MO_F64_Fabs,) ),
        ( String
"sqrt64f", (CallishMachOp
MO_F64_Sqrt,) ),

        ( String
"pow32f", (CallishMachOp
MO_F32_Pwr,) ),
        ( String
"sin32f", (CallishMachOp
MO_F32_Sin,) ),
        ( String
"cos32f", (CallishMachOp
MO_F32_Cos,) ),
        ( String
"tan32f", (CallishMachOp
MO_F32_Tan,) ),
        ( String
"sinh32f", (CallishMachOp
MO_F32_Sinh,) ),
        ( String
"cosh32f", (CallishMachOp
MO_F32_Cosh,) ),
        ( String
"tanh32f", (CallishMachOp
MO_F32_Tanh,) ),
        ( String
"asin32f", (CallishMachOp
MO_F32_Asin,) ),
        ( String
"acos32f", (CallishMachOp
MO_F32_Acos,) ),
        ( String
"atan32f", (CallishMachOp
MO_F32_Atan,) ),
        ( String
"asinh32f", (CallishMachOp
MO_F32_Asinh,) ),
        ( String
"acosh32f", (CallishMachOp
MO_F32_Acosh,) ),
        ( String
"log32f", (CallishMachOp
MO_F32_Log,) ),
        ( String
"log1p32f", (CallishMachOp
MO_F32_Log1P,) ),
        ( String
"exp32f", (CallishMachOp
MO_F32_Exp,) ),
        ( String
"expM132f", (CallishMachOp
MO_F32_ExpM1,) ),
        ( String
"fabs32f", (CallishMachOp
MO_F32_Fabs,) ),
        ( String
"sqrt32f", (CallishMachOp
MO_F32_Sqrt,) ),

        ( String
"read_barrier", (CallishMachOp
MO_ReadBarrier,)),
        ( String
"write_barrier", (CallishMachOp
MO_WriteBarrier,)),
        ( String
"memcpy", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memcpy ),
        ( String
"memset", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memset ),
        ( String
"memmove", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memmove ),
        ( String
"memcmp", (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
MO_Memcmp ),

        ( String
"suspendThread", (CallishMachOp
MO_SuspendThread,) ),
        ( String
"resumeThread",  (CallishMachOp
MO_ResumeThread,) ),

        ( String
"prefetch0", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
0,)),
        ( String
"prefetch1", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
1,)),
        ( String
"prefetch2", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
2,)),
        ( String
"prefetch3", (ByteOff -> CallishMachOp
MO_Prefetch_Data ByteOff
3,))
    ] [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a. [a] -> [a] -> [a]
++ [[(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]]
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
    [ String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"popcnt" Width -> CallishMachOp
MO_PopCnt
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"pdep" Width -> CallishMachOp
MO_Pdep
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"pext" Width -> CallishMachOp
MO_Pext
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"cmpxchg" Width -> CallishMachOp
MO_Cmpxchg
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"xchg" Width -> CallishMachOp
MO_Xchg
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"load_relaxed" (\Width
w -> Width -> MemoryOrdering -> CallishMachOp
MO_AtomicRead Width
w MemoryOrdering
MemOrderAcquire)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"load_acquire" (\Width
w -> Width -> MemoryOrdering -> CallishMachOp
MO_AtomicRead Width
w MemoryOrdering
MemOrderAcquire)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"load_seqcst" (\Width
w -> Width -> MemoryOrdering -> CallishMachOp
MO_AtomicRead Width
w MemoryOrdering
MemOrderSeqCst)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"store_release" (\Width
w -> Width -> MemoryOrdering -> CallishMachOp
MO_AtomicWrite Width
w MemoryOrdering
MemOrderRelease)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"store_seqcst" (\Width
w -> Width -> MemoryOrdering -> CallishMachOp
MO_AtomicWrite Width
w MemoryOrdering
MemOrderSeqCst)
    ]
  where
    allWidths
        :: String
        -> (Width -> CallishMachOp)
        -> [(FastString, a -> (CallishMachOp, a))]
    allWidths :: forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
name Width -> CallishMachOp
f =
        [ (String -> FastString
mkFastString (String -> FastString) -> String -> FastString
forall a b. (a -> b) -> a -> b
$ String
name String -> String -> String
forall a. [a] -> [a] -> [a]
++ ByteOff -> String
forall a. Show a => a -> String
show (Width -> ByteOff
widthInBits Width
w), (Width -> CallishMachOp
f Width
w,))
        | Width
w <- [Width
W8, Width
W16, Width
W32, Width
W64]
        ]

    memcpyLikeTweakArgs :: (Int -> CallishMachOp) -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs :: (ByteOff -> CallishMachOp)
-> [CmmExpr] -> (CallishMachOp, [CmmExpr])
memcpyLikeTweakArgs ByteOff -> CallishMachOp
op [] = String -> (CallishMachOp, [CmmExpr])
forall a. String -> a
pgmError String
"memcpy-like function requires at least one argument"
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
op args :: [CmmExpr]
args@(CmmExpr
_:[CmmExpr]
_) =
        (ByteOff -> CallishMachOp
op ByteOff
align, [CmmExpr]
args')
      where
        args' :: [CmmExpr]
args' = [CmmExpr] -> [CmmExpr]
forall a. HasCallStack => [a] -> [a]
init [CmmExpr]
args
        align :: ByteOff
align = case [CmmExpr] -> CmmExpr
forall a. HasCallStack => [a] -> a
last [CmmExpr]
args of
          CmmLit (CmmInt Integer
alignInteger Width
_) -> Integer -> ByteOff
forall a. Num a => Integer -> a
fromInteger Integer
alignInteger
          CmmExpr
e -> String -> SDoc -> ByteOff
forall a. String -> SDoc -> a
pgmErrorDoc String
"Non-constant alignment in memcpy-like function:" (Platform -> CmmExpr -> SDoc
forall env a. OutputableP env a => env -> a -> SDoc
pdoc Platform
platform CmmExpr
e)
        -- The alignment of memcpy-ish operations must be a
        -- compile-time constant. We verify this here, passing it around
        -- in the MO_* constructor. In order to do this, however, we
        -- must intercept the arguments in primCall.

parseSafety :: String -> PD Safety
parseSafety :: String -> PD Safety
parseSafety String
"safe"   = Safety -> PD Safety
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlaySafe
parseSafety String
"unsafe" = Safety -> PD Safety
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayRisky
parseSafety String
"interruptible" = Safety -> PD Safety
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return Safety
PlayInterruptible
parseSafety String
str      = (SrcSpan -> MsgEnvelope PsMessage) -> PD Safety
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD Safety)
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD Safety
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$
                                              CmmParserError -> PsMessage
PsErrCmmParser (String -> CmmParserError
CmmUnrecognisedSafety String
str)

parseCmmHint :: String -> PD ForeignHint
parseCmmHint :: String -> PD ForeignHint
parseCmmHint String
"ptr"    = ForeignHint -> PD ForeignHint
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return ForeignHint
AddrHint
parseCmmHint String
"signed" = ForeignHint -> PD ForeignHint
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return ForeignHint
SignedHint
parseCmmHint String
str      = (SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint)
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$
                                               CmmParserError -> PsMessage
PsErrCmmParser (String -> CmmParserError
CmmUnrecognisedHint String
str)

-- labels are always pointers, so we might as well infer the hint
inferCmmHint :: CmmExpr -> ForeignHint
inferCmmHint :: CmmExpr -> ForeignHint
inferCmmHint (CmmLit (CmmLabel CLabel
_)) = ForeignHint
AddrHint
inferCmmHint (CmmReg (CmmGlobal GlobalReg
g)) | GlobalReg -> Bool
isPtrGlobalReg GlobalReg
g = ForeignHint
AddrHint
inferCmmHint CmmExpr
_ = ForeignHint
NoHint

isPtrGlobalReg :: GlobalReg -> Bool
isPtrGlobalReg GlobalReg
Sp                    = Bool
True
isPtrGlobalReg GlobalReg
SpLim                 = Bool
True
isPtrGlobalReg GlobalReg
Hp                    = Bool
True
isPtrGlobalReg GlobalReg
HpLim                 = Bool
True
isPtrGlobalReg GlobalReg
CCCS                  = Bool
True
isPtrGlobalReg GlobalReg
CurrentTSO            = Bool
True
isPtrGlobalReg GlobalReg
CurrentNursery        = Bool
True
isPtrGlobalReg (VanillaReg ByteOff
_ VGcPtr
VGcPtr) = Bool
True
isPtrGlobalReg GlobalReg
_                     = Bool
False

happyError :: PD a
happyError :: forall a. PD a
happyError = (DynFlags -> HomeUnit -> PState -> ParseResult a) -> PD a
forall a. (DynFlags -> HomeUnit -> PState -> ParseResult a) -> PD a
PD ((DynFlags -> HomeUnit -> PState -> ParseResult a) -> PD a)
-> (DynFlags -> HomeUnit -> PState -> ParseResult a) -> PD a
forall a b. (a -> b) -> a -> b
$ \DynFlags
_ HomeUnit
_ PState
s -> P a -> PState -> ParseResult a
forall a. P a -> PState -> ParseResult a
unP P a
forall a. P a
srcParseFail PState
s

-- -----------------------------------------------------------------------------
-- Statement-level macros

stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
stmtMacro FastString
fun [CmmParse CmmExpr]
args_code = do
  case UniqFM FastString ([CmmExpr] -> FCode ())
-> FastString -> Maybe ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros FastString
fun of
    Maybe ([CmmExpr] -> FCode ())
Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ()))
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$ CmmParserError -> PsMessage
PsErrCmmParser (FastString -> CmmParserError
CmmUnknownMacro FastString
fun)
    Just [CmmExpr] -> FCode ()
fcode -> CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
        [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args_code
        FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code ([CmmExpr] -> FCode ()
fcode [CmmExpr]
args)

stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
stmtMacros = [(FastString, [CmmExpr] -> FCode ())]
-> UniqFM FastString ([CmmExpr] -> FCode ())
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"CCS_ALLOC",             \[CmmExpr
words,CmmExpr
ccs]  -> CmmExpr -> CmmExpr -> FCode ()
profAlloc CmmExpr
words CmmExpr
ccs ),
  ( String -> FastString
fsLit String
"ENTER_CCS_THUNK",       \[CmmExpr
e] -> CmmExpr -> FCode ()
enterCostCentreThunk CmmExpr
e ),

  ( String -> FastString
fsLit String
"CLOSE_NURSERY",         \[]  -> FCode ()
emitCloseNursery ),
  ( String -> FastString
fsLit String
"OPEN_NURSERY",          \[]  -> FCode ()
emitOpenNursery ),

  -- completely generic heap and stack checks, for use in high-level cmm.
  ( String -> FastString
fsLit String
"HP_CHK_GEN",            \[CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen Maybe CmmExpr
forall a. Maybe a
Nothing (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
bytes) ),
  ( String -> FastString
fsLit String
"STK_CHK_GEN",           \[] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just (CmmLit -> CmmExpr
CmmLit CmmLit
CmmHighStackMark)) Maybe CmmExpr
forall a. Maybe a
Nothing ),

  -- A stack check for a fixed amount of stack.  Sounds a bit strange, but
  -- we use the stack for a bit of temporary storage in a couple of primops
  ( String -> FastString
fsLit String
"STK_CHK_GEN_N",         \[CmmExpr
bytes] ->
                                      Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
heapStackCheckGen (CmmExpr -> Maybe CmmExpr
forall a. a -> Maybe a
Just CmmExpr
bytes) Maybe CmmExpr
forall a. Maybe a
Nothing ),

  -- A stack check on entry to a thunk, where the argument is the thunk pointer.
  ( String -> FastString
fsLit String
"STK_CHK_NP"   ,         \[CmmExpr
node] -> Bool -> CmmExpr -> ByteOff -> [LocalReg] -> FCode () -> FCode ()
entryHeapCheck' Bool
False CmmExpr
node ByteOff
0 [] (() -> FCode ()
forall a. a -> FCode a
forall (m :: * -> *) a. Monad m => a -> m a
return ())),

  ( String -> FastString
fsLit String
"LOAD_THREAD_STATE",     \[] -> FCode ()
emitLoadThreadState ),
  ( String -> FastString
fsLit String
"SAVE_THREAD_STATE",     \[] -> FCode ()
emitSaveThreadState ),

  ( String -> FastString
fsLit String
"SAVE_REGS",             \[] -> FCode ()
emitSaveRegs ),
  ( String -> FastString
fsLit String
"RESTORE_REGS",          \[] -> FCode ()
emitRestoreRegs ),

  ( String -> FastString
fsLit String
"PUSH_ARG_REGS",         \[CmmExpr
live_regs] -> CmmExpr -> FCode ()
emitPushArgRegs CmmExpr
live_regs ),
  ( String -> FastString
fsLit String
"POP_ARG_REGS",          \[CmmExpr
live_regs] -> CmmExpr -> FCode ()
emitPopArgRegs CmmExpr
live_regs ),

  ( String -> FastString
fsLit String
"LDV_ENTER",             \[CmmExpr
e] -> CmmExpr -> FCode ()
ldvEnter CmmExpr
e ),
  ( String -> FastString
fsLit String
"LDV_RECORD_CREATE",     \[CmmExpr
e] -> CmmExpr -> FCode ()
ldvRecordCreate CmmExpr
e ),

  ( String -> FastString
fsLit String
"PUSH_UPD_FRAME",        \[CmmExpr
sp,CmmExpr
e] -> CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame CmmExpr
sp CmmExpr
e ),
  ( String -> FastString
fsLit String
"SET_HDR",               \[CmmExpr
ptr,CmmExpr
info,CmmExpr
ccs] ->
                                        CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
emitSetDynHdr CmmExpr
ptr CmmExpr
info CmmExpr
ccs ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_PRIM",       \[CmmExpr
hdr,CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
tickyAllocPrim CmmExpr
hdr CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_PAP",        \[CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> FCode ()
tickyAllocPAP CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"TICK_ALLOC_UP_THK",     \[CmmExpr
goods,CmmExpr
slop] ->
                                        CmmExpr -> CmmExpr -> FCode ()
tickyAllocThunk CmmExpr
goods CmmExpr
slop ),
  ( String -> FastString
fsLit String
"UPD_BH_UPDATABLE",      \[CmmExpr
reg] -> CmmExpr -> FCode ()
emitBlackHoleCode CmmExpr
reg )
 ]

emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
emitPushUpdateFrame CmmExpr
sp CmmExpr
e = do
  CmmExpr -> CLabel -> CmmExpr -> FCode ()
emitUpdateFrame CmmExpr
sp CLabel
mkUpdInfoLabel CmmExpr
e

pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
pushStackFrame [CmmParse CmmExpr]
fields CmmParse ()
body = do
  Profile
profile <- CmmParse Profile
getProfile
  [CmmExpr]
exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
fields
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  let (ByteOff
new_updfr_off, [GlobalReg]
_, CmmAGraph
g) = Profile
-> Convention
-> Transfer
-> Area
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> (ByteOff, [GlobalReg], CmmAGraph)
copyOutOflow Profile
profile Convention
NativeReturn Transfer
Ret Area
Old
                                           [] ByteOff
updfr_off [CmmExpr]
exprs
  CmmAGraph -> CmmParse ()
emit CmmAGraph
g
  ByteOff -> CmmParse () -> CmmParse ()
withUpdFrameOff ByteOff
new_updfr_off CmmParse ()
body

reserveStackFrame
  :: CmmParse CmmExpr
  -> CmmParse CmmReg
  -> CmmParse ()
  -> CmmParse ()
reserveStackFrame :: CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
reserveStackFrame CmmParse CmmExpr
psize CmmParse CmmReg
preg CmmParse ()
body = do
  Platform
platform <- CmmParse Platform
getPlatform
  ByteOff
old_updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmReg
reg <- CmmParse CmmReg
preg
  CmmExpr
esize <- CmmParse CmmExpr
psize
  let size :: Integer
size = case Platform -> CmmExpr -> CmmExpr
constantFoldExpr Platform
platform CmmExpr
esize of
               CmmLit (CmmInt Integer
n Width
_) -> Integer
n
               CmmExpr
_other -> String -> SDoc -> Integer
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse: not a compile-time integer: "
                            (Platform -> CmmExpr -> SDoc
forall env a. OutputableP env a => env -> a -> SDoc
pdoc Platform
platform CmmExpr
esize)
  let frame :: ByteOff
frame = ByteOff
old_updfr_off ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
+ Platform -> ByteOff
platformWordSizeInBytes Platform
platform ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
* Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
size
  CmmReg -> CmmExpr -> CmmParse ()
emitAssign CmmReg
reg (Area -> ByteOff -> CmmExpr
CmmStackSlot Area
Old ByteOff
frame)
  ByteOff -> CmmParse () -> CmmParse ()
withUpdFrameOff ByteOff
frame CmmParse ()
body

profilingInfo :: Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
desc_str String
ty_str
  = if Bool -> Bool
not (Profile -> Bool
profileIsProfiling Profile
profile)
    then ProfilingInfo
NoProfilingInfo
    else ConstrDescription -> ConstrDescription -> ProfilingInfo
ProfilingInfo (String -> ConstrDescription
BS8.pack String
desc_str) (String -> ConstrDescription
BS8.pack String
ty_str)

staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
staticClosure UnitId
pkg FastString
cl_label FastString
info [CmmLit]
payload
  = do Profile
profile <- CmmParse Profile
getProfile
       let lits :: [CmmLit]
lits = Profile
-> CLabel
-> CostCentreStack
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
mkStaticClosure Profile
profile (UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
info) CostCentreStack
dontCareCCS [CmmLit]
payload [] [] []
       FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (FCode () -> CmmParse ()) -> FCode () -> CmmParse ()
forall a b. (a -> b) -> a -> b
$ CLabel -> [CmmLit] -> FCode ()
emitDataLits (UnitId -> NeedExternDecl -> FastString -> CLabel
mkCmmDataLabel UnitId
pkg (Bool -> NeedExternDecl
NeedExternDecl Bool
True) FastString
cl_label) [CmmLit]
lits

foreignCall
        :: String
        -> [CmmParse (LocalReg, ForeignHint)]
        -> CmmParse CmmExpr
        -> [CmmParse (CmmExpr, ForeignHint)]
        -> Safety
        -> CmmReturnInfo
        -> PD (CmmParse ())
foreignCall :: String
-> [CmmParse (LocalReg, ForeignHint)]
-> CmmParse CmmExpr
-> [CmmParse (CmmExpr, ForeignHint)]
-> Safety
-> CmmReturnInfo
-> PD (CmmParse ())
foreignCall String
conv_string [CmmParse (LocalReg, ForeignHint)]
results_code CmmParse CmmExpr
expr_code [CmmParse (CmmExpr, ForeignHint)]
args_code Safety
safety CmmReturnInfo
ret
  = do  CCallConv
conv <- case String
conv_string of
          String
"C"       -> CCallConv -> PD CCallConv
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
CCallConv
          String
"stdcall" -> CCallConv -> PD CCallConv
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return CCallConv
StdCallConv
          String
_         -> (SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv)
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$
                                              CmmParserError -> PsMessage
PsErrCmmParser (String -> CmmParserError
CmmUnknownCConv String
conv_string)
        CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
          Platform
platform <- CmmParse Platform
getPlatform
          [(LocalReg, ForeignHint)]
results <- [CmmParse (LocalReg, ForeignHint)]
-> CmmParse [(LocalReg, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse (LocalReg, ForeignHint)]
results_code
          CmmExpr
expr <- CmmParse CmmExpr
expr_code
          [(CmmExpr, ForeignHint)]
args <- [CmmParse (CmmExpr, ForeignHint)]
-> CmmParse [(CmmExpr, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse (CmmExpr, ForeignHint)]
args_code
          let
                  expr' :: CmmExpr
expr' = Platform
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget Platform
platform CCallConv
conv CmmExpr
expr [(CmmExpr, ForeignHint)]
args
                  ([CmmExpr]
arg_exprs, [ForeignHint]
arg_hints) = [(CmmExpr, ForeignHint)] -> ([CmmExpr], [ForeignHint])
forall a b. [(a, b)] -> ([a], [b])
unzip [(CmmExpr, ForeignHint)]
args
                  ([LocalReg]
res_regs,  [ForeignHint]
res_hints) = [(LocalReg, ForeignHint)] -> ([LocalReg], [ForeignHint])
forall a b. [(a, b)] -> ([a], [b])
unzip [(LocalReg, ForeignHint)]
results
                  fc :: ForeignConvention
fc = CCallConv
-> [ForeignHint]
-> [ForeignHint]
-> CmmReturnInfo
-> ForeignConvention
ForeignConvention CCallConv
conv [ForeignHint]
arg_hints [ForeignHint]
res_hints CmmReturnInfo
ret
                  target :: ForeignTarget
target = CmmExpr -> ForeignConvention -> ForeignTarget
ForeignTarget CmmExpr
expr' ForeignConvention
fc
          ReturnKind
_ <- FCode ReturnKind -> CmmParse ReturnKind
forall a. FCode a -> CmmParse a
code (FCode ReturnKind -> CmmParse ReturnKind)
-> FCode ReturnKind -> CmmParse ReturnKind
forall a b. (a -> b) -> a -> b
$ Safety
-> [LocalReg] -> ForeignTarget -> [CmmExpr] -> FCode ReturnKind
emitForeignCall Safety
safety [LocalReg]
res_regs ForeignTarget
target [CmmExpr]
arg_exprs
          () -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()


doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn [CmmParse CmmExpr]
exprs_code = do
  Profile
profile <- CmmParse Profile
getProfile
  [CmmExpr]
exprs <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
exprs_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (Profile -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturnSimple Profile
profile [CmmExpr]
exprs ByteOff
updfr_off)

mkReturnSimple  :: Profile -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
mkReturnSimple :: Profile -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturnSimple Profile
profile [CmmExpr]
actuals ByteOff
updfr_off =
  Profile -> CmmExpr -> [CmmExpr] -> ByteOff -> CmmAGraph
mkReturn Profile
profile CmmExpr
e [CmmExpr]
actuals ByteOff
updfr_off
  where e :: CmmExpr
e = Platform -> CmmExpr -> CmmExpr
entryCode Platform
platform (Platform -> CmmExpr -> CmmExpr
cmmLoadGCWord Platform
platform (Area -> ByteOff -> CmmExpr
CmmStackSlot Area
Old ByteOff
updfr_off))
        platform :: Platform
platform = Profile -> Platform
profilePlatform Profile
profile

doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
doRawJump CmmParse CmmExpr
expr_code [GlobalReg]
vols = do
  Profile
profile <- CmmParse Profile
getProfile
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (Profile -> CmmExpr -> ByteOff -> [GlobalReg] -> CmmAGraph
mkRawJump Profile
profile CmmExpr
expr ByteOff
updfr_off [GlobalReg]
vols)

doJumpWithStack :: CmmParse CmmExpr -> [CmmParse CmmExpr]
                -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack :: CmmParse CmmExpr
-> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
doJumpWithStack CmmParse CmmExpr
expr_code [CmmParse CmmExpr]
stk_code [CmmParse CmmExpr]
args_code = do
  Profile
profile <- CmmParse Profile
getProfile
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  [CmmExpr]
stk_args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
stk_code
  [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph -> CmmParse ()
emit (Profile
-> Convention
-> CmmExpr
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> CmmAGraph
mkJumpExtra Profile
profile Convention
NativeNodeCall CmmExpr
expr [CmmExpr]
args ByteOff
updfr_off [CmmExpr]
stk_args)

doCall :: CmmParse CmmExpr -> [CmmParse LocalReg] -> [CmmParse CmmExpr]
       -> CmmParse ()
doCall :: CmmParse CmmExpr
-> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
doCall CmmParse CmmExpr
expr_code [CmmParse LocalReg]
res_code [CmmParse CmmExpr]
args_code = do
  CmmExpr
expr <- CmmParse CmmExpr
expr_code
  [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args_code
  [LocalReg]
ress <- [CmmParse LocalReg] -> CmmParse [LocalReg]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse LocalReg]
res_code
  ByteOff
updfr_off <- CmmParse ByteOff
getUpdFrameOff
  CmmAGraph
c <- FCode CmmAGraph -> CmmParse CmmAGraph
forall a. FCode a -> CmmParse a
code (FCode CmmAGraph -> CmmParse CmmAGraph)
-> FCode CmmAGraph -> CmmParse CmmAGraph
forall a b. (a -> b) -> a -> b
$ CmmExpr
-> (Convention, Convention)
-> [LocalReg]
-> [CmmExpr]
-> ByteOff
-> [CmmExpr]
-> FCode CmmAGraph
mkCall CmmExpr
expr (Convention
NativeNodeCall,Convention
NativeReturn) [LocalReg]
ress [CmmExpr]
args ByteOff
updfr_off []
  CmmAGraph -> CmmParse ()
emit CmmAGraph
c

adjCallTarget :: Platform -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint) ]
              -> CmmExpr
-- On Windows, we have to add the '@N' suffix to the label when making
-- a call with the stdcall calling convention.
adjCallTarget :: Platform
-> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
adjCallTarget Platform
platform CCallConv
StdCallConv (CmmLit (CmmLabel CLabel
lbl)) [(CmmExpr, ForeignHint)]
args
 | Platform -> OS
platformOS Platform
platform OS -> OS -> Bool
forall a. Eq a => a -> a -> Bool
== OS
OSMinGW32
  = CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (CLabel -> ByteOff -> CLabel
addLabelSize CLabel
lbl ([ByteOff] -> ByteOff
forall a. Num a => [a] -> a
forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum (((CmmExpr, ForeignHint) -> ByteOff)
-> [(CmmExpr, ForeignHint)] -> [ByteOff]
forall a b. (a -> b) -> [a] -> [b]
map (CmmExpr, ForeignHint) -> ByteOff
size [(CmmExpr, ForeignHint)]
args))))
  where size :: (CmmExpr, ForeignHint) -> ByteOff
size (CmmExpr
e, ForeignHint
_) = ByteOff -> ByteOff -> ByteOff
forall a. Ord a => a -> a -> a
max (Platform -> ByteOff
platformWordSizeInBytes Platform
platform) (Width -> ByteOff
widthInBytes (CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform CmmExpr
e)))
                 -- c.f. CgForeignCall.emitForeignCall
adjCallTarget Platform
_ CCallConv
_ CmmExpr
expr [(CmmExpr, ForeignHint)]
_
  = CmmExpr
expr

primCall
        :: [CmmParse (CmmFormal, ForeignHint)]
        -> FastString
        -> [CmmParse CmmExpr]
        -> PD (CmmParse ())
primCall :: [CmmParse (LocalReg, ForeignHint)]
-> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
primCall [CmmParse (LocalReg, ForeignHint)]
results_code FastString
name [CmmParse CmmExpr]
args_code
  = do
    Platform
platform <- PD Platform
PD.getPlatform
    case UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
-> FastString -> Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
lookupUFM (Platform
-> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
callishMachOps Platform
platform) FastString
name of
        Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ()))
-> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ \SrcSpan
span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
mkPlainErrorMsgEnvelope SrcSpan
span (PsMessage -> MsgEnvelope PsMessage)
-> PsMessage -> MsgEnvelope PsMessage
forall a b. (a -> b) -> a -> b
$ CmmParserError -> PsMessage
PsErrCmmParser (FastString -> CmmParserError
CmmUnknownPrimitive FastString
name)
        Just [CmmExpr] -> (CallishMachOp, [CmmExpr])
f  -> CmmParse () -> PD (CmmParse ())
forall a. a -> PD a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmParse () -> PD (CmmParse ()))
-> CmmParse () -> PD (CmmParse ())
forall a b. (a -> b) -> a -> b
$ do
                [(LocalReg, ForeignHint)]
results <- [CmmParse (LocalReg, ForeignHint)]
-> CmmParse [(LocalReg, ForeignHint)]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse (LocalReg, ForeignHint)]
results_code
                [CmmExpr]
args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a. Monad m => [m a] -> m [a]
sequence [CmmParse CmmExpr]
args_code
                let (CallishMachOp
p, [CmmExpr]
args') = [CmmExpr] -> (CallishMachOp, [CmmExpr])
f [CmmExpr]
args
                FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code ([LocalReg] -> CallishMachOp -> [CmmExpr] -> FCode ()
emitPrimCall (((LocalReg, ForeignHint) -> LocalReg)
-> [(LocalReg, ForeignHint)] -> [LocalReg]
forall a b. (a -> b) -> [a] -> [b]
map (LocalReg, ForeignHint) -> LocalReg
forall a b. (a, b) -> a
fst [(LocalReg, ForeignHint)]
results) CallishMachOp
p [CmmExpr]
args')

doStore :: Maybe MemoryOrdering
        -> CmmType
        -> CmmParse CmmExpr   -- ^ address
        -> CmmParse CmmExpr   -- ^ value
        -> CmmParse ()
doStore :: Maybe MemoryOrdering
-> CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
doStore Maybe MemoryOrdering
mem_ord CmmType
rep CmmParse CmmExpr
addr_code CmmParse CmmExpr
val_code
  = do Platform
platform <- CmmParse Platform
getPlatform
       CmmExpr
addr <- CmmParse CmmExpr
addr_code
       CmmExpr
val <- CmmParse CmmExpr
val_code
        -- if the specified store type does not match the type of the expr
        -- on the rhs, then we insert a coercion that will cause the type
        -- mismatch to be flagged by cmm-lint.  If we don't do this, then
        -- the store will happen at the wrong type, and the error will not
        -- be noticed.
       let val_width :: Width
val_width = CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform CmmExpr
val)
           rep_width :: Width
rep_width = CmmType -> Width
typeWidth CmmType
rep
       let coerce_val :: CmmExpr
coerce_val
                | Width
val_width Width -> Width -> Bool
forall a. Eq a => a -> a -> Bool
/= Width
rep_width = MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp (Width -> Width -> MachOp
MO_UU_Conv Width
val_width Width
rep_width) [CmmExpr
val]
                | Bool
otherwise              = CmmExpr
val
       Maybe MemoryOrdering -> CmmExpr -> CmmExpr -> CmmParse ()
emitStore Maybe MemoryOrdering
mem_ord CmmExpr
addr CmmExpr
coerce_val

-- -----------------------------------------------------------------------------
-- If-then-else and boolean expressions

data BoolExpr
  = BoolExpr `BoolAnd` BoolExpr
  | BoolExpr `BoolOr`  BoolExpr
  | BoolNot BoolExpr
  | BoolTest CmmExpr

-- ToDo: smart constructors which simplify the boolean expression.

cmmIfThenElse :: CmmParse BoolExpr
-> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
cmmIfThenElse CmmParse BoolExpr
cond CmmParse a
then_part CmmParse a
else_part Maybe Bool
likely = do
     BlockId
then_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
     BlockId
join_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
     BoolExpr
c <- CmmParse BoolExpr
cond
     BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
c BlockId
then_id Maybe Bool
likely
     CmmParse a
else_part
     CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
join_id)
     BlockId -> CmmParse ()
emitLabel BlockId
then_id
     CmmParse a
then_part
     -- fall through to join
     BlockId -> CmmParse ()
emitLabel BlockId
join_id

cmmRawIf :: CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
cmmRawIf CmmParse BoolExpr
cond BlockId
then_id Maybe Bool
likely = do
    BoolExpr
c <- CmmParse BoolExpr
cond
    BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
c BlockId
then_id Maybe Bool
likely

-- 'emitCond cond true_id'  emits code to test whether the cond is true,
-- branching to true_id if so, and falling through otherwise.
emitCond :: BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond (BoolTest CmmExpr
e) BlockId
then_id Maybe Bool
likely = do
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  CmmAGraph -> CmmParse ()
emit (CmmExpr -> BlockId -> BlockId -> Maybe Bool -> CmmAGraph
mkCbranch CmmExpr
e BlockId
then_id BlockId
else_id Maybe Bool
likely)
  BlockId -> CmmParse ()
emitLabel BlockId
else_id
emitCond (BoolNot (BoolTest (CmmMachOp MachOp
op [CmmExpr]
args))) BlockId
then_id Maybe Bool
likely
  | Just MachOp
op' <- MachOp -> Maybe MachOp
maybeInvertComparison MachOp
op
  = BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond (CmmExpr -> BoolExpr
BoolTest (MachOp -> [CmmExpr] -> CmmExpr
CmmMachOp MachOp
op' [CmmExpr]
args)) BlockId
then_id (Bool -> Bool
not (Bool -> Bool) -> Maybe Bool -> Maybe Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Bool
likely)
emitCond (BoolNot BoolExpr
e) BlockId
then_id Maybe Bool
likely = do
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e BlockId
else_id Maybe Bool
likely
  CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
then_id)
  BlockId -> CmmParse ()
emitLabel BlockId
else_id
emitCond (BoolExpr
e1 `BoolOr` BoolExpr
e2) BlockId
then_id Maybe Bool
likely = do
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e1 BlockId
then_id Maybe Bool
likely
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e2 BlockId
then_id Maybe Bool
likely
emitCond (BoolExpr
e1 `BoolAnd` BoolExpr
e2) BlockId
then_id Maybe Bool
likely = do
        -- we'd like to invert one of the conditionals here to avoid an
        -- extra branch instruction, but we can't use maybeInvertComparison
        -- here because we can't look too closely at the expression since
        -- we're in a loop.
  BlockId
and_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BlockId
else_id <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e1 BlockId
and_id Maybe Bool
likely
  CmmAGraph -> CmmParse ()
emit (BlockId -> CmmAGraph
mkBranch BlockId
else_id)
  BlockId -> CmmParse ()
emitLabel BlockId
and_id
  BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
emitCond BoolExpr
e2 BlockId
then_id Maybe Bool
likely
  BlockId -> CmmParse ()
emitLabel BlockId
else_id

-- -----------------------------------------------------------------------------
-- Source code notes

-- | Generate a source note spanning from "a" to "b" (inclusive), then
-- proceed with parsing. This allows debugging tools to reason about
-- locations in Cmm code.
withSourceNote :: Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote :: forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
withSourceNote Located a
a Located b
b CmmParse c
parse = do
  String
name <- CmmParse String
getName
  case SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans (Located a -> SrcSpan
forall l e. GenLocated l e -> l
getLoc Located a
a) (Located b -> SrcSpan
forall l e. GenLocated l e -> l
getLoc Located b
b) of
    RealSrcSpan RealSrcSpan
span Maybe BufSpan
_ -> FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmTickish -> FCode ()
emitTick (RealSrcSpan -> String -> CmmTickish
forall (pass :: TickishPass).
RealSrcSpan -> String -> GenTickish pass
SourceNote RealSrcSpan
span String
name)) CmmParse () -> CmmParse c -> CmmParse c
forall a b. CmmParse a -> CmmParse b -> CmmParse b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> CmmParse c
parse
    SrcSpan
_other           -> CmmParse c
parse

-- -----------------------------------------------------------------------------
-- Table jumps

-- We use a simplified form of C-- switch statements for now.  A
-- switch statement always compiles to a table jump.  Each arm can
-- specify a list of values (not ranges), and there can be a single
-- default branch.  The range of the table is given either by the
-- optional range on the switch (eg. switch [0..7] {...}), or by
-- the minimum/maximum values from the branches.

doSwitch :: Maybe (Integer,Integer)
         -> CmmParse CmmExpr
         -> [([Integer],Either BlockId (CmmParse ()))]
         -> Maybe (CmmParse ()) -> CmmParse ()
doSwitch :: Maybe (Integer, Integer)
-> CmmParse CmmExpr
-> [([Integer], Either BlockId (CmmParse ()))]
-> Maybe (CmmParse ())
-> CmmParse ()
doSwitch Maybe (Integer, Integer)
mb_range CmmParse CmmExpr
scrut [([Integer], Either BlockId (CmmParse ()))]
arms Maybe (CmmParse ())
deflt
   = do
        -- Compile code for the default branch
        Maybe BlockId
dflt_entry <-
                case Maybe (CmmParse ())
deflt of
                  Maybe (CmmParse ())
Nothing -> Maybe BlockId -> CmmParse (Maybe BlockId)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe BlockId
forall a. Maybe a
Nothing
                  Just CmmParse ()
e  -> do BlockId
b <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
e; Maybe BlockId -> CmmParse (Maybe BlockId)
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (BlockId -> Maybe BlockId
forall a. a -> Maybe a
Just BlockId
b)

        -- Compile each case branch
        [[(Integer, BlockId)]]
table_entries <- (([Integer], Either BlockId (CmmParse ()))
 -> CmmParse [(Integer, BlockId)])
-> [([Integer], Either BlockId (CmmParse ()))]
-> CmmParse [[(Integer, BlockId)]]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM ([Integer], Either BlockId (CmmParse ()))
-> CmmParse [(Integer, BlockId)]
emitArm [([Integer], Either BlockId (CmmParse ()))]
arms
        let table :: Map Integer BlockId
table = [(Integer, BlockId)] -> Map Integer BlockId
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList ([[(Integer, BlockId)]] -> [(Integer, BlockId)]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[(Integer, BlockId)]]
table_entries)

        Platform
platform <- CmmParse Platform
getPlatform
        let range :: (Integer, Integer)
range = (Integer, Integer)
-> Maybe (Integer, Integer) -> (Integer, Integer)
forall a. a -> Maybe a -> a
fromMaybe (Integer
0, Platform -> Integer
platformMaxWord Platform
platform) Maybe (Integer, Integer)
mb_range

        CmmExpr
expr <- CmmParse CmmExpr
scrut
        -- ToDo: check for out of range and jump to default if necessary
        CmmAGraph -> CmmParse ()
emit (CmmAGraph -> CmmParse ()) -> CmmAGraph -> CmmParse ()
forall a b. (a -> b) -> a -> b
$ CmmExpr -> SwitchTargets -> CmmAGraph
mkSwitch CmmExpr
expr (Bool
-> (Integer, Integer)
-> Maybe BlockId
-> Map Integer BlockId
-> SwitchTargets
mkSwitchTargets Bool
False (Integer, Integer)
range Maybe BlockId
dflt_entry Map Integer BlockId
table)
   where
        emitArm :: ([Integer],Either BlockId (CmmParse ())) -> CmmParse [(Integer,BlockId)]
        emitArm :: ([Integer], Either BlockId (CmmParse ()))
-> CmmParse [(Integer, BlockId)]
emitArm ([Integer]
ints,Left BlockId
blockid) = [(Integer, BlockId)] -> CmmParse [(Integer, BlockId)]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [ (Integer
i,BlockId
blockid) | Integer
i <- [Integer]
ints ]
        emitArm ([Integer]
ints,Right CmmParse ()
code) = do
           BlockId
blockid <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
code
           [(Integer, BlockId)] -> CmmParse [(Integer, BlockId)]
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return [ (Integer
i,BlockId
blockid) | Integer
i <- [Integer]
ints ]

forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
p = do
  (()
_,CmmAGraphScoped
ag) <- CmmParse () -> CmmParse ((), CmmAGraphScoped)
forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
getCodeScoped CmmParse ()
p
  BlockId
l <- CmmParse BlockId
forall (m :: * -> *). MonadUnique m => m BlockId
newBlockId
  BlockId -> CmmAGraphScoped -> CmmParse ()
emitOutOfLine BlockId
l CmmAGraphScoped
ag
  BlockId -> CmmParse BlockId
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return BlockId
l

-- -----------------------------------------------------------------------------
-- Putting it all together

-- The initial environment: we define some constants that the compiler
-- knows about here.
initEnv :: Profile -> Env
initEnv :: Profile -> Env
initEnv Profile
profile = [(FastString, Named)] -> Env
forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
listToUFM [
  ( String -> FastString
fsLit String
"SIZEOF_StgHeader",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (ByteOff -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Profile -> ByteOff
fixedHdrSize Profile
profile)) (Platform -> Width
wordWidth Platform
platform)) )),
  ( String -> FastString
fsLit String
"SIZEOF_StgInfoTable",
    CmmExpr -> Named
VarN (CmmLit -> CmmExpr
CmmLit (Integer -> Width -> CmmLit
CmmInt (ByteOff -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Profile -> ByteOff
stdInfoTableSizeB Profile
profile)) (Platform -> Width
wordWidth Platform
platform)) ))
  ]
  where platform :: Platform
platform = Profile -> Platform
profilePlatform Profile
profile


parseCmmFile :: DynFlags
             -> Module
             -> HomeUnit
             -> FilePath
             -> IO (Messages PsMessage, Messages PsMessage, Maybe (CmmGroup, [InfoProvEnt]))
parseCmmFile :: DynFlags
-> Module
-> HomeUnit
-> String
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (CmmGroup, [InfoProvEnt]))
parseCmmFile DynFlags
dflags Module
this_mod HomeUnit
home_unit String
filename = do
  StringBuffer
buf <- String -> IO StringBuffer
hGetStringBuffer String
filename
  let
        init_loc :: RealSrcLoc
init_loc = FastString -> ByteOff -> ByteOff -> RealSrcLoc
mkRealSrcLoc (String -> FastString
mkFastString String
filename) ByteOff
1 ByteOff
1
        opts :: ParserOpts
opts       = DynFlags -> ParserOpts
initParserOpts DynFlags
dflags
        init_state :: PState
init_state = (ParserOpts -> StringBuffer -> RealSrcLoc -> PState
initParserState ParserOpts
opts StringBuffer
buf RealSrcLoc
init_loc) { lex_state :: [ByteOff]
lex_state = [ByteOff
0] }
                -- reset the lex_state: the Lexer monad leaves some stuff
                -- in there we don't want.
  case PD (CmmParse ())
-> DynFlags -> HomeUnit -> PState -> ParseResult (CmmParse ())
forall a. PD a -> DynFlags -> HomeUnit -> PState -> ParseResult a
unPD PD (CmmParse ())
cmmParse DynFlags
dflags HomeUnit
home_unit PState
init_state of
    PFailed PState
pst -> do
        let (Messages PsMessage
warnings,Messages PsMessage
errors) = PState -> (Messages PsMessage, Messages PsMessage)
getPsMessages PState
pst
        (Messages PsMessage, Messages PsMessage,
 Maybe (CmmGroup, [InfoProvEnt]))
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (CmmGroup, [InfoProvEnt]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages PsMessage
warnings, Messages PsMessage
errors, Maybe (CmmGroup, [InfoProvEnt])
forall a. Maybe a
Nothing)
    POk PState
pst CmmParse ()
code -> do
        CgState
st <- IO CgState
initC
        let fstate :: FCodeState
fstate = Platform -> FCodeState
F.initFCodeState (Profile -> Platform
profilePlatform (Profile -> Platform) -> Profile -> Platform
forall a b. (a -> b) -> a -> b
$ DynFlags -> Profile
targetProfile DynFlags
dflags)
        let config :: StgToCmmConfig
config = DynFlags -> Module -> StgToCmmConfig
initStgToCmmConfig DynFlags
dflags Module
forall {a}. a
no_module
        let fcode :: FCode (CmmGroup, [InfoProvEnt])
fcode = do
              ((), CmmGroup
cmm) <- FCode () -> FCode ((), CmmGroup)
forall a. FCode a -> FCode (a, CmmGroup)
getCmm (FCode () -> FCode ((), CmmGroup))
-> FCode () -> FCode ((), CmmGroup)
forall a b. (a -> b) -> a -> b
$ CmmParse ()
-> String
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], ())
forall a.
CmmParse a
-> String
-> Env
-> [(FastString, Named)]
-> FCode ([(FastString, Named)], a)
unEC CmmParse ()
code String
"global" (Profile -> Env
initEnv (DynFlags -> Profile
targetProfile DynFlags
dflags)) [] FCode ([(FastString, Named)], ()) -> FCode () -> FCode ()
forall a b. FCode a -> FCode b -> FCode b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> FCode ()
forall a. a -> FCode a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
              -- See Note [Mapping Info Tables to Source Positions] (IPE Maps)
              let used_info :: [InfoProvEnt]
used_info
                    | Bool
do_ipe    = (CmmInfoTable -> InfoProvEnt) -> [CmmInfoTable] -> [InfoProvEnt]
forall a b. (a -> b) -> [a] -> [b]
map (Module -> CmmInfoTable -> InfoProvEnt
cmmInfoTableToInfoProvEnt Module
this_mod) ((CmmDecl -> Maybe CmmInfoTable) -> CmmGroup -> [CmmInfoTable]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe CmmDecl -> Maybe CmmInfoTable
forall a (n :: Extensibility -> Extensibility -> *).
GenCmmDecl a CmmTopInfo (GenCmmGraph n) -> Maybe CmmInfoTable
topInfoTable CmmGroup
cmm)
                    | Bool
otherwise = []
                    where
                      do_ipe :: Bool
do_ipe = StgToCmmConfig -> Bool
stgToCmmInfoTableMap StgToCmmConfig
config
              ((), CmmGroup
cmm2) <- FCode () -> FCode ((), CmmGroup)
forall a. FCode a -> FCode (a, CmmGroup)
getCmm (FCode () -> FCode ((), CmmGroup))
-> FCode () -> FCode ((), CmmGroup)
forall a b. (a -> b) -> a -> b
$ Module -> [InfoProvEnt] -> FCode ()
emitIpeBufferListNode Module
this_mod [InfoProvEnt]
used_info
              (CmmGroup, [InfoProvEnt]) -> FCode (CmmGroup, [InfoProvEnt])
forall a. a -> FCode a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmGroup
cmm CmmGroup -> CmmGroup -> CmmGroup
forall a. [a] -> [a] -> [a]
++ CmmGroup
cmm2, [InfoProvEnt]
used_info)
            ((CmmGroup, [InfoProvEnt])
cmm, CgState
_) = StgToCmmConfig
-> FCodeState
-> CgState
-> FCode (CmmGroup, [InfoProvEnt])
-> ((CmmGroup, [InfoProvEnt]), CgState)
forall a.
StgToCmmConfig -> FCodeState -> CgState -> FCode a -> (a, CgState)
runC StgToCmmConfig
config FCodeState
fstate CgState
st FCode (CmmGroup, [InfoProvEnt])
fcode
            (Messages PsMessage
warnings,Messages PsMessage
errors) = PState -> (Messages PsMessage, Messages PsMessage)
getPsMessages PState
pst
        if Bool -> Bool
not (Messages PsMessage -> Bool
forall e. Messages e -> Bool
isEmptyMessages Messages PsMessage
errors)
         then (Messages PsMessage, Messages PsMessage,
 Maybe (CmmGroup, [InfoProvEnt]))
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (CmmGroup, [InfoProvEnt]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages PsMessage
warnings, Messages PsMessage
errors, Maybe (CmmGroup, [InfoProvEnt])
forall a. Maybe a
Nothing)
         else (Messages PsMessage, Messages PsMessage,
 Maybe (CmmGroup, [InfoProvEnt]))
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (CmmGroup, [InfoProvEnt]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages PsMessage
warnings, Messages PsMessage
errors, (CmmGroup, [InfoProvEnt]) -> Maybe (CmmGroup, [InfoProvEnt])
forall a. a -> Maybe a
Just (CmmGroup, [InfoProvEnt])
cmm)
  where
        no_module :: a
no_module = String -> a
forall a. String -> a
panic String
"parseCmmFile: no module"
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $













-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
#if __GLASGOW_HASKELL__ > 706
#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Prelude.Bool)
#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Prelude.Bool)
#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Prelude.Bool)
#else
#define LT(n,m) (n Happy_GHC_Exts.<# m)
#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
#define EQ(n,m) (n Happy_GHC_Exts.==# m)
#endif



















data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList








































infixr 9 `HappyStk`
data HappyStk a = HappyStk a (HappyStk a)

-----------------------------------------------------------------------------
-- starting the parse

happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll

-----------------------------------------------------------------------------
-- Accepting the parse

-- If the current token is ERROR_TOK, it means we've just accepted a partial
-- parse (a %partial parser).  We must ignore the saved token on the top of
-- the stack in this case.
happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
        happyReturn1 ans
happyAccept j tk st sts (HappyStk ans _) = 
        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)

-----------------------------------------------------------------------------
-- Arrays only: do the next action



happyDoAction i tk st
        = {- nothing -}
          case action of
                0#           -> {- nothing -}
                                     happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Prelude.Int)) i tk st
                -1#          -> {- nothing -}
                                     happyAccept i tk st
                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
                n                 -> {- nothing -}
                                     happyShift new_state i tk st
                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
   where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
         off_i  = (off Happy_GHC_Exts.+# i)
         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
                  then EQ(indexShortOffAddr happyCheck off_i, i)
                  else Prelude.False
         action
          | check     = indexShortOffAddr happyTable off_i
          | Prelude.otherwise = indexShortOffAddr happyDefActions st




indexShortOffAddr (HappyA# arr) off =
        Happy_GHC_Exts.narrow16Int# i
  where
        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
        off' = off Happy_GHC_Exts.*# 2#




{-# INLINE happyLt #-}
happyLt x y = LT(x,y)


readArrayBit arr bit =
    Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `Prelude.mod` 16)
  where unbox_int (Happy_GHC_Exts.I# x) = x






data HappyAddr = HappyA# Happy_GHC_Exts.Addr#


-----------------------------------------------------------------------------
-- HappyState data type (not arrays)













-----------------------------------------------------------------------------
-- Shifting a token

happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--     trace "shifting the error token" $
     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)

happyShift new_state i tk st sts stk =
     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)

-- happyReduce is specialised for the common cases.

happySpecReduce_0 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_0 nt fn j tk st@((action)) sts stk
     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)

happySpecReduce_1 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
     = let r = fn v1 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_2 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
     = let r = fn v1 v2 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_3 i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
     = let r = fn v1 v2 v3 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happyReduce k i fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyReduce k nt fn j tk st sts stk
     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
         sts1@((HappyCons (st1@(action)) (_))) ->
                let r = fn stk in  -- it doesn't hurt to always seq here...
                happyDoSeq r (happyGoto nt j tk st1 sts1 r)

happyMonadReduce k nt fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyMonadReduce k nt fn j tk st sts stk =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
          let drop_stk = happyDropStk k stk in
          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))

happyMonad2Reduce k nt fn 0# tk st sts stk
     = happyFail [] 0# tk st sts stk
happyMonad2Reduce k nt fn j tk st sts stk =
      case happyDrop k (HappyCons (st) (sts)) of
        sts1@((HappyCons (st1@(action)) (_))) ->
         let drop_stk = happyDropStk k stk

             off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
             off_i = (off Happy_GHC_Exts.+# nt)
             new_state = indexShortOffAddr happyTable off_i




          in
          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))

happyDrop 0# l = l
happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t

happyDropStk 0# l = l
happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs

-----------------------------------------------------------------------------
-- Moving to a new state after a reduction


happyGoto nt j tk st = 
   {- nothing -}
   happyDoAction j tk new_state
   where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
         off_i = (off Happy_GHC_Exts.+# nt)
         new_state = indexShortOffAddr happyTable off_i




-----------------------------------------------------------------------------
-- Error recovery (ERROR_TOK is the error token)

-- parse error if we are in recovery and we fail again
happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--      trace "failing" $ 
        happyError_ explist i tk

{-  We don't need state discarding for our restricted implementation of
    "error".  In fact, it can cause some bogus parses, so I've disabled it
    for now --SDM

-- discard a state
happyFail  ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) 
                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
--      trace ("discarding state, depth " ++ show (length stk))  $
        DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))
-}

-- Enter error recovery: generate an error token,
--                       save the old token and carry on.
happyFail explist i tk (action) sts stk =
--      trace "entering error recovery" $
        happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)

-- Internal happy errors:

notHappyAtAll :: a
notHappyAtAll = Prelude.error "Internal Happy error\n"

-----------------------------------------------------------------------------
-- Hack to get the typechecker to accept our action functions


happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
happyTcHack x y = y
{-# INLINE happyTcHack #-}


-----------------------------------------------------------------------------
-- Seq-ing.  If the --strict flag is given, then Happy emits 
--      happySeq = happyDoSeq
-- otherwise it emits
--      happySeq = happyDontSeq

happyDoSeq, happyDontSeq :: a -> b -> b
happyDoSeq   a b = a `Prelude.seq` b
happyDontSeq a b = b

-----------------------------------------------------------------------------
-- Don't inline any functions from the template.  GHC has a nasty habit
-- of deciding to inline happyGoto everywhere, which increases the size of
-- the generated parser quite a bit.


{-# NOINLINE happyDoAction #-}
{-# NOINLINE happyTable #-}
{-# NOINLINE happyCheck #-}
{-# NOINLINE happyActOffsets #-}
{-# NOINLINE happyGotoOffsets #-}
{-# NOINLINE happyDefActions #-}

{-# NOINLINE happyShift #-}
{-# NOINLINE happySpecReduce_0 #-}
{-# NOINLINE happySpecReduce_1 #-}
{-# NOINLINE happySpecReduce_2 #-}
{-# NOINLINE happySpecReduce_3 #-}
{-# NOINLINE happyReduce #-}
{-# NOINLINE happyMonadReduce #-}
{-# NOINLINE happyGoto #-}
{-# NOINLINE happyFail #-}

-- end of Happy Template.