{-# OPTIONS_GHC -w #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE NoStrictData #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE PartialTypeSignatures #-}
#if __GLASGOW_HASKELL__ >= 710
{-# LANGUAGE PartialTypeSignatures #-}
#endif
{-# LANGUAGE TupleSections #-}

module GHC.Cmm.Parser ( parseCmmFile, CmmParserConfig(..) ) where

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


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.Reg        ( GlobalArgRegs(..) )
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.Config
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.Unique.DSM
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.Function as Happy_Prelude
import qualified Data.Bool as Happy_Prelude
import qualified Data.Function as Happy_Prelude
import qualified Data.Maybe as Happy_Prelude
import qualified Data.Int as Happy_Prelude
import qualified Data.String as Happy_Prelude
import qualified Data.List as Happy_Prelude
import qualified Control.Monad as Happy_Prelude
import qualified Text.Show as Happy_Prelude
import qualified GHC.Num as Happy_Prelude
import qualified GHC.Err as Happy_Prelude
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 2.1.4


newtype HappyAbsSyn  = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
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 ())
happyIn7 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn7 :: CmmParse () -> HappyAbsSyn
happyIn7 CmmParse ()
x = HappyWrap7 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap7
HappyWrap7 CmmParse ()
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 CLabel)
happyIn8 :: (CmmParse CLabel) -> (HappyAbsSyn )
happyIn8 :: CmmParse CLabel -> HappyAbsSyn
happyIn8 CmmParse CLabel
x = HappyWrap8 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CLabel -> HappyWrap8
HappyWrap8 CmmParse CLabel
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 [CmmStatic])
happyIn10 :: (CmmParse [CmmStatic]) -> (HappyAbsSyn )
happyIn10 :: CmmParse [CmmStatic] -> HappyAbsSyn
happyIn10 CmmParse [CmmStatic]
x = HappyWrap10 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse [CmmStatic] -> HappyWrap10
HappyWrap10 CmmParse [CmmStatic]
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 CmmExpr])
happyIn11 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
happyIn11 :: [CmmParse CmmExpr] -> HappyAbsSyn
happyIn11 [CmmParse CmmExpr]
x = HappyWrap11 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap11
HappyWrap11 [CmmParse CmmExpr]
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 (CmmParse ())
happyIn12 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn12 :: CmmParse () -> HappyAbsSyn
happyIn12 CmmParse ()
x = HappyWrap12 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap12
HappyWrap12 CmmParse ()
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 (Convention)
happyIn13 :: (Convention) -> (HappyAbsSyn )
happyIn13 :: Convention -> HappyAbsSyn
happyIn13 Convention
x = HappyWrap13 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Convention -> HappyWrap13
HappyWrap13 Convention
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 ())
happyIn14 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn14 :: CmmParse () -> HappyAbsSyn
happyIn14 CmmParse ()
x = HappyWrap14 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap14
HappyWrap14 CmmParse ()
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 (CLabel, Maybe CmmInfoTable, [LocalReg]))
happyIn15 :: (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])) -> (HappyAbsSyn )
happyIn15 :: CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
x = HappyWrap15 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyWrap15
HappyWrap15 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
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 (CmmParse ())
happyIn17 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn17 :: CmmParse () -> HappyAbsSyn
happyIn17 CmmParse ()
x = HappyWrap17 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap17
HappyWrap17 CmmParse ()
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,  CLabel))
happyIn19 :: ((FastString,  CLabel)) -> (HappyAbsSyn )
happyIn19 :: (FastString, CLabel) -> HappyAbsSyn
happyIn19 (FastString, CLabel)
x = HappyWrap19 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ((FastString, CLabel) -> HappyWrap19
HappyWrap19 (FastString, CLabel)
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 ([FastString])
happyIn20 :: ([FastString]) -> (HappyAbsSyn )
happyIn20 :: [FastString] -> HappyAbsSyn
happyIn20 [FastString]
x = HappyWrap20 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([FastString] -> HappyWrap20
HappyWrap20 [FastString]
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 ())
happyIn21 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn21 :: CmmParse () -> HappyAbsSyn
happyIn21 CmmParse ()
x = HappyWrap21 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap21
HappyWrap21 CmmParse ()
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 [(GlobalReg, Maybe CmmExpr)])
happyIn22 :: (CmmParse [(GlobalReg, Maybe CmmExpr)]) -> (HappyAbsSyn )
happyIn22 :: CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn22 CmmParse [(GlobalReg, Maybe CmmExpr)]
x = HappyWrap22 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyWrap22
HappyWrap22 CmmParse [(GlobalReg, Maybe CmmExpr)]
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 MemoryOrdering)
happyIn23 :: (CmmParse MemoryOrdering) -> (HappyAbsSyn )
happyIn23 :: CmmParse MemoryOrdering -> HappyAbsSyn
happyIn23 CmmParse MemoryOrdering
x = HappyWrap23 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse MemoryOrdering -> HappyWrap23
HappyWrap23 CmmParse MemoryOrdering
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 (Maybe CmmExpr))
happyIn24 :: (CmmParse (Maybe CmmExpr)) -> (HappyAbsSyn )
happyIn24 :: CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn24 CmmParse (Maybe CmmExpr)
x = HappyWrap24 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Maybe CmmExpr) -> HappyWrap24
HappyWrap24 CmmParse (Maybe 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 (CmmParse CmmExpr)
happyIn25 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn25 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn25 CmmParse CmmExpr
x = HappyWrap25 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap25
HappyWrap25 CmmParse CmmExpr
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 (CmmReturnInfo)
happyIn26 :: (CmmReturnInfo) -> (HappyAbsSyn )
happyIn26 :: CmmReturnInfo -> HappyAbsSyn
happyIn26 CmmReturnInfo
x = HappyWrap26 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmReturnInfo -> HappyWrap26
HappyWrap26 CmmReturnInfo
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 (CmmParse BoolExpr)
happyIn28 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
happyIn28 :: CmmParse BoolExpr -> HappyAbsSyn
happyIn28 CmmParse BoolExpr
x = HappyWrap28 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap28
HappyWrap28 CmmParse BoolExpr
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 (Safety)
happyIn29 :: (Safety) -> (HappyAbsSyn )
happyIn29 :: Safety -> HappyAbsSyn
happyIn29 Safety
x = HappyWrap29 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Safety -> HappyWrap29
HappyWrap29 Safety
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 ([GlobalRegUse])
happyIn30 :: ([GlobalRegUse]) -> (HappyAbsSyn )
happyIn30 :: [GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
x = HappyWrap30 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([GlobalRegUse] -> HappyWrap30
HappyWrap30 [GlobalRegUse]
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 ([GlobalRegUse])
happyIn31 :: ([GlobalRegUse]) -> (HappyAbsSyn )
happyIn31 :: [GlobalRegUse] -> HappyAbsSyn
happyIn31 [GlobalRegUse]
x = HappyWrap31 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([GlobalRegUse] -> HappyWrap31
HappyWrap31 [GlobalRegUse]
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 (Maybe (Integer,Integer))
happyIn32 :: (Maybe (Integer,Integer)) -> (HappyAbsSyn )
happyIn32 :: Maybe (Integer, Integer) -> HappyAbsSyn
happyIn32 Maybe (Integer, Integer)
x = HappyWrap32 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe (Integer, Integer) -> HappyWrap32
HappyWrap32 Maybe (Integer, Integer)
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 ([Integer],Either BlockId (CmmParse ())))
happyIn34 :: (CmmParse ([Integer],Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn34 :: CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn34 CmmParse ([Integer], Either BlockId (CmmParse ()))
x = HappyWrap34 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyWrap34
HappyWrap34 CmmParse ([Integer], 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 (CmmParse (Either BlockId (CmmParse ())))
happyIn35 :: (CmmParse (Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
happyIn35 :: CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn35 CmmParse (Either BlockId (CmmParse ()))
x = HappyWrap35 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse (Either BlockId (CmmParse ())) -> HappyWrap35
HappyWrap35 CmmParse (Either BlockId (CmmParse ()))
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 ([Integer])
happyIn36 :: ([Integer]) -> (HappyAbsSyn )
happyIn36 :: [Integer] -> HappyAbsSyn
happyIn36 [Integer]
x = HappyWrap36 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# ([Integer] -> HappyWrap36
HappyWrap36 [Integer]
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 (Maybe (CmmParse ()))
happyIn37 :: (Maybe (CmmParse ())) -> (HappyAbsSyn )
happyIn37 :: Maybe (CmmParse ()) -> HappyAbsSyn
happyIn37 Maybe (CmmParse ())
x = HappyWrap37 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe (CmmParse ()) -> HappyWrap37
HappyWrap37 Maybe (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 (CmmParse ())
happyIn38 :: (CmmParse ()) -> (HappyAbsSyn )
happyIn38 :: CmmParse () -> HappyAbsSyn
happyIn38 CmmParse ()
x = HappyWrap38 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap38
HappyWrap38 CmmParse ()
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 (Maybe Bool)
happyIn39 :: (Maybe Bool) -> (HappyAbsSyn )
happyIn39 :: Maybe Bool -> HappyAbsSyn
happyIn39 Maybe Bool
x = HappyWrap39 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (Maybe Bool -> HappyWrap39
HappyWrap39 Maybe Bool
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 CmmExpr)
happyIn41 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
happyIn41 :: CmmParse CmmExpr -> HappyAbsSyn
happyIn41 CmmParse CmmExpr
x = HappyWrap41 -> HappyAbsSyn
forall a b. a -> b
Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap41
HappyWrap41 CmmParse 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 #-}


{-# NOINLINE happyTokenStrings #-}
happyTokenStrings :: [String]
happyTokenStrings = [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
"'vec128'",String
"'vec256'",String
"'vec512'",String
"'float32'",String
"'float64'",String
"'gcptr'",String
"GLOBALREG",String
"NAME",String
"STRING",String
"INT",String
"FLOAT",String
"GP_ARG_REGS",String
"SCALAR_ARG_REGS",String
"V16_ARG_REGS",String
"V32_ARG_REGS",String
"V64_ARG_REGS",String
"%eof"]

happyActOffsets :: HappyAddr
happyActOffsets :: HappyAddr
happyActOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x71\x01\x00\x00\x00\x00\x00\x00\xad\xff\xff\xff\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xff\xff\x00\x00\x00\x00\xe6\xff\xff\xff\x00\x00\x00\x00\x38\x00\x00\x00\x3b\x00\x00\x00\x44\x00\x00\x00\x4e\x00\x00\x00\x52\x00\x00\x00\x63\x00\x00\x00\xf8\xff\xff\xff\x2c\x00\x00\x00\xf3\xff\xff\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\x00\x00\x00\x00\x7e\x00\x00\x00\x9e\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\xbd\x00\x00\x00\xd0\x00\x00\x00\xbf\x00\x00\x00\x8c\x00\x00\x00\xb5\x00\x00\x00\xda\x00\x00\x00\xdc\x00\x00\x00\xde\x00\x00\x00\xe1\x00\x00\x00\x30\x01\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x24\x01\x00\x00\x38\x01\x00\x00\x3c\x01\x00\x00\x42\x01\x00\x00\x44\x01\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x21\x01\x00\x00\x25\x01\x00\x00\x2c\x01\x00\x00\x32\x01\x00\x00\x18\x01\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x73\x01\x00\x00\x3f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x6e\x01\x00\x00\x4f\x00\x00\x00\x4f\x00\x00\x00\xee\x04\x00\x00\x9b\x00\x00\x00\x89\x01\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x01\x00\x00\xa1\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xa4\x01\x00\x00\xa7\x01\x00\x00\xa9\x01\x00\x00\x62\x01\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\xaf\x01\x00\x00\x3e\x00\x00\x00\xb0\x01\x00\x00\xbf\x01\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x94\x01\x00\x00\x19\x00\x00\x00\xe2\x01\x00\x00\xdf\x01\x00\x00\xe4\x01\x00\x00\x0b\x00\x00\x00\xa0\x01\x00\x00\x9f\x01\x00\x00\x19\x02\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xa8\x01\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\xad\x01\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\xb6\x01\x00\x00\xf6\x01\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\xf4\x01\x00\x00\xfd\x01\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xba\x01\x00\x00\xb0\x00\x00\x00\x66\x03\x00\x00\xfb\xff\xff\xff\x1e\x03\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\xa1\x00\x00\x00\xa1\x00\x00\x00\x0c\x02\x00\x00\xf7\x01\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\xb0\x00\x00\x00\x7f\x00\x00\x00\xcf\x01\x00\x00\x12\x02\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\xd4\x01\x00\x00\xd7\x01\x00\x00\xee\x04\x00\x00\x2d\x02\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00\x27\x02\x00\x00\xd1\xff\xff\xff\x28\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x2a\x02\x00\x00\x4f\x03\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\x02\x00\x00\x00\x20\x02\x00\x00\xa1\x00\x00\x00\xa1\x00\x00\x00\xb0\x00\x00\x00\x43\x02\x00\x00\xfe\xff\xff\xff\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x7a\x03\x00\x00\x3e\x02\x00\x00\x00\x00\x00\x00\x40\x02\x00\x00\x69\x02\x00\x00\x51\x02\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x52\x02\x00\x00\x8e\x03\x00\x00\x6b\x02\x00\x00\x58\x02\x00\x00\x63\x02\x00\x00\x6a\x02\x00\x00\x6c\x02\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x78\x02\x00\x00\x00\x00\x00\x00\x4f\x03\x00\x00\xb0\x00\x00\x00\x7c\x02\x00\x00\x94\x02\x00\x00\x4e\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x8e\x02\x00\x00\x57\x02\x00\x00\xa0\x02\x00\x00\xa5\x02\x00\x00\xa6\x02\x00\x00\xab\x02\x00\x00\xb2\x02\x00\x00\xac\x02\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x67\x02\x00\x00\x6f\x02\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x71\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\xb8\x02\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x8f\x02\x00\x00\x73\x02\x00\x00\xcd\x02\x00\x00\xb0\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\xe6\x00\x00\x00\xba\x02\x00\x00\xdb\x02\x00\x00\x4f\x00\x00\x00\x9a\x02\x00\x00\xb6\x03\x00\x00\xb6\x03\x00\x00\xb6\x03\x00\x00\xb6\x03\x00\x00\x6a\x01\x00\x00\x6a\x01\x00\x00\xb6\x03\x00\x00\xb6\x03\x00\x00\x61\x00\x00\x00\x97\x01\x00\x00\x93\x00\x00\x00\x9d\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\xb7\x02\x00\x00\xe9\x02\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\xe7\x00\x00\x00\xf4\x02\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\xc4\x02\x00\x00\xc6\x02\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\xf9\x02\x00\x00\xfa\x02\x00\x00\x06\x03\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\xeb\x02\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\xd7\x02\x00\x00\xd0\x02\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\x27\x03\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00\x25\x03\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x03\x00\x00\x2f\x03\x00\x00\x10\x03\x00\x00\x37\x03\x00\x00\x41\x02\x00\x00\x05\x03\x00\x00\x1d\x00\x00\x00\x38\x03\x00\x00\x00\x00\x00\x00\x2b\x03\x00\x00\x3a\x03\x00\x00\xb0\x00\x00\x00\x55\x02\x00\x00\x4b\x03\x00\x00\xb0\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x55\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x03\x00\x00\x56\x03\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x03\x00\x00\x00\x50\x03\x00\x00\x51\x03\x00\x00\x52\x03\x00\x00\x5d\x03\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x23\x03\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x7b\x03\x00\x00\x4f\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x58\x03\x00\x00\xa3\x03\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\xa4\x03\x00\x00\xc8\x03\x00\x00\x9f\x03\x00\x00\xb8\x03\x00\x00\xb9\x03\x00\x00\x6a\x03\x00\x00\x6b\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\x00\x00\x00\xc2\x03\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyGotoOffsets :: HappyAddr
happyGotoOffsets :: HappyAddr
happyGotoOffsets = Addr# -> HappyAddr
HappyA# Addr#
"\x1b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\xde\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\xdf\x03\x00\x00\x00\x00\x00\x00\x16\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\xc0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x9b\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\xea\x03\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\x2a\x01\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x1c\x04\x00\x00\x25\x04\x00\x00\x2b\x04\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x02\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\x1e\x00\x00\x00\x31\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\x34\x04\x00\x00\x3a\x04\x00\x00\x00\x00\x00\x00\x40\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\xf4\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\x59\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x4e\x04\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\xd6\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\xe9\x03\x00\x00\x57\x04\x00\x00\x60\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\x5d\x04\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x04\x00\x00\x66\x04\x00\x00\x6c\x04\x00\x00\x72\x04\x00\x00\x7b\x04\x00\x00\x80\x04\x00\x00\x89\x04\x00\x00\x8f\x04\x00\x00\x95\x04\x00\x00\x98\x04\x00\x00\x9e\x04\x00\x00\xa4\x04\x00\x00\xad\x04\x00\x00\xb2\x04\x00\x00\xbb\x04\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\xee\x01\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\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\x49\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\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\xca\x04\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x7b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x1b\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\x51\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\xeb\x03\x00\x00\xb4\x03\x00\x00\xd6\x04\x00\x00\xdf\x04\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\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\x06\x04\x00\x00\x8e\x01\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00\x35\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\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0c\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\xed\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\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\x1d\x04\x00\x00\x09\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\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x00\x00\x00\x00\x00\x00\x64\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

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

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

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

happyRuleArr :: HappyAddr
happyRuleArr :: HappyAddr
happyRuleArr = Addr# -> HappyAddr
HappyA# Addr#
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\x00\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x03\x00\x00\x00\x0a\x00\x00\x00\x01\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0a\x00\x00\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x00\x00\x0c\x00\x00\x00\x0a\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x08\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x03\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\x07\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x00\x00\x10\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x07\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x06\x00\x00\x00\x10\x00\x00\x00\x09\x00\x00\x00\x10\x00\x00\x00\x06\x00\x00\x00\x10\x00\x00\x00\x0a\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x07\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x02\x00\x00\x00\x1d\x00\x00\x00\x04\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x05\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x02\x00\x00\x00\x23\x00\x00\x00\x02\x00\x00\x00\x23\x00\x00\x00\x05\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x02\x00\x00\x00\x24\x00\x00\x00\x02\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x04\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x28\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x04\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x02\x00\x00\x00\x2d\x00\x00\x00\x03\x00\x00\x00\x2e\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x02\x00\x00\x00\x2f\x00\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x01\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x03\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x01\x00\x00\x00\x33\x00\x00\x00\x02\x00\x00\x00\x33\x00\x00\x00\x01\x00\x00\x00\x33\x00\x00\x00\x03\x00\x00\x00\x34\x00\x00\x00\x02\x00\x00\x00\x35\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00\x36\x00\x00\x00\x01\x00\x00\x00"#

happyCatchStates :: [Happy_Prelude.Int]
happyCatchStates :: [ByteOff]
happyCatchStates = []

happy_n_terms :: ByteOff
happy_n_terms = ByteOff
88 :: Happy_Prelude.Int
happy_n_nonterms :: ByteOff
happy_n_nonterms = ByteOff
55 :: Happy_Prelude.Int

happy_n_starts :: ByteOff
happy_n_starts = ByteOff
1 :: Happy_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
happyIn5
                 (() -> 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 -> HappyWrap6
happyOut6 HappyAbsSyn
happy_x_1 of { (HappyWrap6 CmmParse ()
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap5
happyOut5 HappyAbsSyn
happy_x_2 of { (HappyWrap5 CmmParse ()
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn5
                 (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 -> HappyWrap12
happyOut12 HappyAbsSyn
happy_x_1 of { (HappyWrap12 CmmParse ()
happy_var_1) -> 
        CmmParse () -> HappyAbsSyn
happyIn6
                 (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 -> HappyWrap7
happyOut7 HappyAbsSyn
happy_x_1 of { (HappyWrap7 CmmParse ()
happy_var_1) -> 
        CmmParse () -> HappyAbsSyn
happyIn6
                 (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 -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_1 of { (HappyWrap17 CmmParse ()
happy_var_1) -> 
        CmmParse () -> HappyAbsSyn
happyIn6
                 (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 -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_6 of { (HappyWrap11 [CmmParse CmmExpr]
happy_var_6) -> 
        ( do
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        lits <- sequence happy_var_6;
                        staticClosure home_unit_id happy_var_3 happy_var_5 (map getLit lits))}}})
        ) (\CmmParse ()
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse () -> HappyAbsSyn
happyIn6 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap8
happyOut8 HappyAbsSyn
happy_x_4 of { (HappyWrap8 CmmParse CLabel
happy_var_4) -> 
        case HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
happy_x_5 of { (HappyWrap9 [CmmParse [CmmStatic]]
happy_var_5) -> 
        CmmParse () -> HappyAbsSyn
happyIn7
                 (do lbl <- CmmParse CLabel
happy_var_4;
                     ss <- sequence happy_var_5;
                     code (emitDecl (CmmData (Section (section happy_var_2) lbl) (CmmStaticsRaw lbl (concat 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
                   home_unit_id <- PD UnitId
getHomeUnitId
                   liftP $ pure $ do
                     pure (mkCmmDataLabel home_unit_id (NeedExternDecl False) happy_var_1))})
        ) (\CmmParse CLabel
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CLabel -> HappyAbsSyn
happyIn8 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
happyIn9
                 ([]
        )

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 -> HappyWrap10
happyOut10 HappyAbsSyn
happy_x_1 of { (HappyWrap10 CmmParse [CmmStatic]
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap9
happyOut9 HappyAbsSyn
happy_x_2 of { (HappyWrap9 [CmmParse [CmmStatic]]
happy_var_2) -> 
        [CmmParse [CmmStatic]] -> HappyAbsSyn
happyIn9
                 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        CmmParse [CmmStatic] -> HappyAbsSyn
happyIn10
                 (do e <- CmmParse CmmExpr
happy_var_2;
                             return [CmmStaticLit (getLit 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
happyIn10
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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
happyIn10
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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
happyIn10
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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
happyIn10
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_4 of { (HappyWrap11 [CmmParse CmmExpr]
happy_var_4) -> 
        CmmParse [CmmStatic] -> HappyAbsSyn
happyIn10
                 (do { 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 <- getProfile
                     ; return $ map CmmStaticLit $
                        mkStaticClosure profile (mkForeignLabel happy_var_3 ForeignLabelInExternalPackage IsData)
                         -- mkForeignLabel because these are only used

                         -- for CHARLIKE and INTLIKE closures in the RTS.

                        dontCareCCS (map getLit 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
happyIn11
                 ([]
        )

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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap11
happyOut11 HappyAbsSyn
happy_x_3 of { (HappyWrap11 [CmmParse CmmExpr]
happy_var_3) -> 
        [CmmParse CmmExpr] -> HappyAbsSyn
happyIn11
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap15
happyOut15 HappyAbsSyn
happy_x_1 of { (HappyWrap15 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap13
happyOut13 HappyAbsSyn
happy_x_2 of { (HappyWrap13 Convention
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap54
happyOut54 HappyAbsSyn
happy_x_3 of { (HappyWrap54 Maybe [CmmParse LocalReg]
happy_var_3) -> 
        case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_4 of { (HappyWrap14 CmmParse ()
happy_var_4) -> 
        CmmParse () -> HappyAbsSyn
happyIn12
                 (do ((entry_ret_label, info, stk_formals, formals), 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 {
                         (entry_ret_label, info, stk_formals) <- CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
happy_var_1;
                         platform <- getPlatform;
                         ctx      <- getContext;
                         formals <- sequence (fromMaybe [] happy_var_3);
                         withName (showSDocOneLine ctx (pprCLabel platform entry_ret_label))
                           happy_var_4;
                         return (entry_ret_label, info, stk_formals, formals) }
                     let do_layout = Maybe [CmmParse LocalReg] -> Bool
forall a. Maybe a -> Bool
isJust Maybe [CmmParse LocalReg]
happy_var_3
                     code (emitProcWithStackFrame happy_var_2 info
                                entry_ret_label stk_formals formals agraph
                                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
happyIn13
                 (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
happyIn13
                 (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
happyIn14
                 (() -> 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 -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_2 of { (HappyWrap16 CmmParse ()
happy_var_2) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
        CmmParse () -> HappyAbsSyn
happyIn14
                 (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
                     home_unit_id <- PD UnitId
getHomeUnitId
                     liftP $ pure $ do
                       newFunctionName happy_var_1 home_unit_id
                       return (mkCmmCodeLabel home_unit_id happy_var_1, Nothing, []))})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        profile <- getProfile
                        let prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_11 String
happy_var_13
                            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.

                        return (mkCmmEntryLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                []))}}}}}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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#
18# 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_18 `HappyStk`
        HappyAbsSyn
happy_x_17 `HappyStk`
        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)) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_17 of { (L SrcSpan
_ (CmmT_Int       Integer
happy_var_17)) -> 
        ( do
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        profile <- getProfile
                        let prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_11 String
happy_var_13
                            ty   = ByteOff -> ArgDescr -> ClosureTypeInfo
Fun (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_15) (ByteOff -> ArgDescr
ArgSpec (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_17))
                            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
                        return (mkCmmEntryLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                []))}}}}}}}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        profile <- getProfile
                        let prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_13 String
happy_var_15
                            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 = 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
                        return (mkCmmEntryLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing,cit_clo = Nothing },
                                []))}}}}}}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        profile <- getProfile
                        let prof = Profile -> String -> String -> ProfilingInfo
profilingInfo Profile
profile String
happy_var_9 String
happy_var_11
                            ty  = ByteOff -> ClosureTypeInfo
ThunkSelector (Integer -> ByteOff
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
happy_var_5)
                            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
                        return (mkCmmEntryLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                []))}}}}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        let prof = ProfilingInfo
NoProfilingInfo
                            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 []
                        return (mkCmmRetLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                []))}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
                      home_unit_id <- PD UnitId
getHomeUnitId
                      liftP $ pure $ do
                        platform <- getPlatform
                        live <- sequence happy_var_7
                        let prof = ProfilingInfo
NoProfilingInfo
                            -- drop one for the info pointer

                            bitmap = Platform -> [LocalReg] -> [Bool]
mkLiveness Platform
platform (ByteOff -> [LocalReg] -> [LocalReg]
forall a. ByteOff -> [a] -> [a]
drop ByteOff
1 [LocalReg]
live)
                            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
                        return (mkCmmRetLabel home_unit_id happy_var_3,
                                Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
                                             , cit_rep = rep
                                             , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                live))}}})
        ) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
happyIn15 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
happyIn16
                 (() -> 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 -> HappyWrap17
happyOut17 HappyAbsSyn
happy_x_1 of { (HappyWrap17 CmmParse ()
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_2 of { (HappyWrap16 CmmParse ()
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn16
                 (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 -> HappyWrap21
happyOut21 HappyAbsSyn
happy_x_1 of { (HappyWrap21 CmmParse ()
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_2 of { (HappyWrap16 CmmParse ()
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn16
                 (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 -> HappyWrap20
happyOut20 HappyAbsSyn
happy_x_2 of { (HappyWrap20 [FastString]
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn17
                 ((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 -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_2 of { (HappyWrap18 [(FastString, CLabel)]
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn17
                 (((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
happyIn17
                 (() -> 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 -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_1 of { (HappyWrap19 (FastString, CLabel)
happy_var_1) -> 
        [(FastString, CLabel)] -> HappyAbsSyn
happyIn18
                 ([(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 -> HappyWrap19
happyOut19 HappyAbsSyn
happy_x_1 of { (HappyWrap19 (FastString, CLabel)
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap18
happyOut18 HappyAbsSyn
happy_x_3 of { (HappyWrap18 [(FastString, CLabel)]
happy_var_3) -> 
        [(FastString, CLabel)] -> HappyAbsSyn
happyIn18
                 ((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
happyIn19
                 ((FastString
happy_var_1, FastString -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 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
happyIn19
                 ((FastString
happy_var_2, FastString -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_2 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
happyIn19
                 ((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
happyIn20
                 ([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 -> HappyWrap20
happyOut20 HappyAbsSyn
happy_x_3 of { (HappyWrap20 [FastString]
happy_var_3) -> 
        [FastString] -> HappyAbsSyn
happyIn20
                 (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
happyIn21
                 (() -> 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
happyIn21
                 (do l <- FastString -> CmmParse BlockId
newLabel FastString
happy_var_1; emitLabel 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (do reg <- CmmParse CmmReg
happy_var_1; e <- happy_var_3; withSourceNote happy_var_2 happy_var_4 (emitAssign reg 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_3 of { (HappyWrap23 CmmParse MemoryOrdering
happy_var_3) -> 
        case HappyAbsSyn -> HappyWrap58
happyOut58 HappyAbsSyn
happy_x_4 of { (HappyWrap58 CmmType
happy_var_4) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_6 of { (HappyWrap40 CmmParse CmmExpr
happy_var_6) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { Located CmmToken
happy_var_7 -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (do reg <- CmmParse CmmReg
happy_var_1;
                     let 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
forall doc. IsLine doc => doc -> doc -> doc
<> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"not a local register")
                                  } ;
                     mord <- happy_var_3;
                     let { ty = CmmType
happy_var_4; w = CmmType -> Width
typeWidth CmmType
ty };
                     e <- happy_var_6;
                     let op = Width -> MemoryOrdering -> CallishMachOp
MO_AtomicRead Width
w MemoryOrdering
mord;
                     withSourceNote happy_var_2 happy_var_7 $ code (emitPrimCall [lreg] op [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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap23
happyOut23 HappyAbsSyn
happy_x_1 of { (HappyWrap23 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_4 of { (HappyWrap40 CmmParse CmmExpr
happy_var_4) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_7 of { (HappyWrap40 CmmParse CmmExpr
happy_var_7) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_8 of { Located CmmToken
happy_var_8 -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (do mord <- CmmParse MemoryOrdering
happy_var_1; withSourceNote happy_var_3 happy_var_8 (doStore (Just mord) happy_var_2 happy_var_4 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_6 of { (HappyWrap40 CmmParse CmmExpr
happy_var_6) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_7 of { Located CmmToken
happy_var_7 -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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 -> HappyWrap25
happyOut25 HappyAbsSyn
happy_x_4 of { (HappyWrap25 CmmParse CmmExpr
happy_var_4) -> 
        case HappyAbsSyn -> HappyWrap43
happyOut43 HappyAbsSyn
happy_x_6 of { (HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
happy_var_6) -> 
        case HappyAbsSyn -> HappyWrap29
happyOut29 HappyAbsSyn
happy_x_8 of { (HappyWrap29 Safety
happy_var_8) -> 
        case HappyAbsSyn -> HappyWrap26
happyOut26 HappyAbsSyn
happy_x_9 of { (HappyWrap26 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
happyIn21 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
happyIn21 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
happyIn21 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap32
happyOut32 HappyAbsSyn
happy_x_2 of { (HappyWrap32 Maybe (Integer, Integer)
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        case HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
happy_x_5 of { (HappyWrap33 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_5) -> 
        case HappyAbsSyn -> HappyWrap37
happyOut37 HappyAbsSyn
happy_x_6 of { (HappyWrap37 Maybe (CmmParse ())
happy_var_6) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (do 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; doSwitch happy_var_2 happy_var_3 as 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
happyIn21
                 (do l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; emit (mkBranch 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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
happyIn21
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap30
happyOut30 HappyAbsSyn
happy_x_3 of { (HappyWrap30 [GlobalRegUse]
happy_var_3) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (CmmParse CmmExpr -> [GlobalRegUse] -> CmmParse ()
doRawJump CmmParse CmmExpr
happy_var_2 [GlobalRegUse]
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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 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
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_4 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_4) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_6 of { (HappyWrap40 CmmParse CmmExpr
happy_var_6) -> 
        case HappyAbsSyn -> HappyWrap46
happyOut46 HappyAbsSyn
happy_x_8 of { (HappyWrap46 [CmmParse CmmExpr]
happy_var_8) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_2 of { (HappyWrap27 CmmParse BoolExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 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
happyIn21
                 (do l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_5; cmmRawIf happy_var_2 l 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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_2 of { (HappyWrap27 CmmParse BoolExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap39
happyOut39 HappyAbsSyn
happy_x_3 of { (HappyWrap39 Maybe Bool
happy_var_3) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
        case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_5 of { (HappyWrap16 CmmParse ()
happy_var_5) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_6 of { Located CmmToken
happy_var_6 -> 
        case HappyAbsSyn -> HappyWrap38
happyOut38 HappyAbsSyn
happy_x_7 of { (HappyWrap38 CmmParse ()
happy_var_7) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_5 of { (HappyWrap14 CmmParse ()
happy_var_5) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 ([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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap53
happyOut53 HappyAbsSyn
happy_x_4 of { (HappyWrap53 CmmParse CmmReg
happy_var_4) -> 
        case HappyAbsSyn -> HappyWrap14
happyOut14 HappyAbsSyn
happy_x_5 of { (HappyWrap14 CmmParse ()
happy_var_5) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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 -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_2 of { (HappyWrap22 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_2) -> 
        CmmParse () -> HappyAbsSyn
happyIn21
                 (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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> 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 GlobalRegUse
happy_var_1)) -> 
        case HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
happy_x_3 of { (HappyWrap24 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
        case HappyAbsSyn -> HappyWrap22
happyOut22 HappyAbsSyn
happy_x_5 of { (HappyWrap22 CmmParse [(GlobalReg, Maybe CmmExpr)]
happy_var_5) -> 
        CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn22
                 (do e <- CmmParse (Maybe CmmExpr)
happy_var_3; rest <- happy_var_5; return ((globalRegUse_reg happy_var_1, e) : 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 GlobalRegUse
happy_var_1)) -> 
        case HappyAbsSyn -> HappyWrap24
happyOut24 HappyAbsSyn
happy_x_3 of { (HappyWrap24 CmmParse (Maybe CmmExpr)
happy_var_3) -> 
        CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
happyIn22
                 (do e <- CmmParse (Maybe CmmExpr)
happy_var_3; return [(globalRegUse_reg happy_var_1, 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
happyIn23
                 (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
happyIn23
                 (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
happyIn23
                 (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
happyIn23
                 (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
happyIn24
                 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        CmmParse (Maybe CmmExpr) -> HappyAbsSyn
happyIn24
                 (do e <- CmmParse CmmExpr
happy_var_1; return (Just 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
happyIn25
                 (CmmExpr -> CmmParse CmmExpr
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (CmmLit -> CmmExpr
CmmLit (CLabel -> CmmLit
CmmLabel (FastString -> ForeignLabelSource -> FunctionOrData -> CLabel
mkForeignLabel FastString
happy_var_1 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
happyIn26
                 (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
happyIn26
                 (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 -> HappyWrap28
happyOut28 HappyAbsSyn
happy_x_1 of { (HappyWrap28 CmmParse BoolExpr
happy_var_1) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn27
                 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn27
                 (do e <- CmmParse CmmExpr
happy_var_1; return (BoolTest 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 -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_1 of { (HappyWrap27 CmmParse BoolExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_3 of { (HappyWrap27 CmmParse BoolExpr
happy_var_3) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn28
                 (do e1 <- CmmParse BoolExpr
happy_var_1; e2 <- happy_var_3;
                                          return (BoolAnd e1 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 -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_1 of { (HappyWrap27 CmmParse BoolExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_3 of { (HappyWrap27 CmmParse BoolExpr
happy_var_3) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn28
                 (do e1 <- CmmParse BoolExpr
happy_var_1; e2 <- happy_var_3;
                                          return (BoolOr e1 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 -> HappyWrap27
happyOut27 HappyAbsSyn
happy_x_2 of { (HappyWrap27 CmmParse BoolExpr
happy_var_2) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn28
                 (do e <- CmmParse BoolExpr
happy_var_2; return (BoolNot 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 -> HappyWrap28
happyOut28 HappyAbsSyn
happy_x_2 of { (HappyWrap28 CmmParse BoolExpr
happy_var_2) -> 
        CmmParse BoolExpr -> HappyAbsSyn
happyIn28
                 (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
happyIn29
                 (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
happyIn29 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
         =  [GlobalRegUse] -> HappyAbsSyn
happyIn30
                 ([]
        )

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#
1# 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_1 `HappyStk`
        HappyStk a
happyRest) p
tk
         = PD [GlobalRegUse]
-> ([GlobalRegUse] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform;
                                              return
                                                [ GlobalRegUse r (globalRegSpillType platform r)
                                                | r <- realArgRegsCover platform GP_ARG_REGS ]))
        ) (\[GlobalRegUse]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_87
happyReduction_87 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_87 (a
happy_x_1 `HappyStk`
        HappyStk a
happyRest) p
tk
         = PD [GlobalRegUse]
-> ([GlobalRegUse] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform;
                                              return
                                                [ GlobalRegUse r (globalRegSpillType platform r)
                                                | r <- realArgRegsCover platform SCALAR_ARG_REGS ]))
        ) (\[GlobalRegUse]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
r))

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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_88
happyReduction_88 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_88 (a
happy_x_1 `HappyStk`
        HappyStk a
happyRest) p
tk
         = PD [GlobalRegUse]
-> ([GlobalRegUse] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform;
                                              return
                                                [ GlobalRegUse r (globalRegSpillType platform r)
                                                | r <- realArgRegsCover platform V16_ARG_REGS ]))
        ) (\[GlobalRegUse]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
r))

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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_89
happyReduction_89 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_89 (a
happy_x_1 `HappyStk`
        HappyStk a
happyRest) p
tk
         = PD [GlobalRegUse]
-> ([GlobalRegUse] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform;
                                              return
                                                [ GlobalRegUse r (globalRegSpillType platform r)
                                                | r <- realArgRegsCover platform V32_ARG_REGS ]))
        ) (\[GlobalRegUse]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
r))

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 -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_90
happyReduction_90 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_90 (a
happy_x_1 `HappyStk`
        HappyStk a
happyRest) p
tk
         = PD [GlobalRegUse]
-> ([GlobalRegUse] -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform;
                                              return
                                                [ GlobalRegUse r (globalRegSpillType platform r)
                                                | r <- realArgRegsCover platform V64_ARG_REGS ]))
        ) (\[GlobalRegUse]
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn ([GlobalRegUse] -> HappyAbsSyn
happyIn30 [GlobalRegUse]
r))

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 -> 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_91
happyReduction_91 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_91 p
happy_x_3
        HappyAbsSyn
happy_x_2
        p
happy_x_1
         =  case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_2 of { (HappyWrap31 [GlobalRegUse]
happy_var_2) -> 
        [GlobalRegUse] -> HappyAbsSyn
happyIn30
                 ([GlobalRegUse]
happy_var_2
        )}

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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
26# HappyAbsSyn -> HappyAbsSyn
happyReduction_92
happyReduction_92 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_92 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg GlobalRegUse
happy_var_1)) -> 
        [GlobalRegUse] -> HappyAbsSyn
happyIn31
                 ([GlobalRegUse
happy_var_1]
        )}

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 -> 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_93
happyReduction_93 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_93 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 GlobalRegUse
happy_var_1)) -> 
        case HappyAbsSyn -> HappyWrap31
happyOut31 HappyAbsSyn
happy_x_3 of { (HappyWrap31 [GlobalRegUse]
happy_var_3) -> 
        [GlobalRegUse] -> HappyAbsSyn
happyIn31
                 (GlobalRegUse
happy_var_1 GlobalRegUse -> [GlobalRegUse] -> [GlobalRegUse]
forall a. a -> [a] -> [a]
: [GlobalRegUse]
happy_var_3
        )}}

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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
27# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_94
happyReduction_94 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_94 (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
happyIn32
                 ((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_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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
27# HappyAbsSyn
happyReduction_95
happyReduction_95 :: HappyAbsSyn
happyReduction_95  =  Maybe (Integer, Integer) -> HappyAbsSyn
happyIn32
                 (Maybe (Integer, Integer)
forall a. Maybe a
Nothing
        )

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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
28# HappyAbsSyn
happyReduction_96
happyReduction_96 :: HappyAbsSyn
happyReduction_96  =  [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn33
                 ([]
        )

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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
28# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_97
happyReduction_97 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_97 HappyAbsSyn
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap34
happyOut34 HappyAbsSyn
happy_x_1 of { (HappyWrap34 CmmParse ([Integer], Either BlockId (CmmParse ()))
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap33
happyOut33 HappyAbsSyn
happy_x_2 of { (HappyWrap33 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
happy_var_2) -> 
        [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
happyIn33
                 (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_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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
29# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98
happyReduction_98 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_98 (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 -> HappyWrap36
happyOut36 HappyAbsSyn
happy_x_2 of { (HappyWrap36 [Integer]
happy_var_2) -> 
        case HappyAbsSyn -> HappyWrap35
happyOut35 HappyAbsSyn
happy_x_4 of { (HappyWrap35 CmmParse (Either BlockId (CmmParse ()))
happy_var_4) -> 
        CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn34
                 (do b <- CmmParse (Either BlockId (CmmParse ()))
happy_var_4; return (happy_var_2, b)
        ) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

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#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_99
happyReduction_99 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_99 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 -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_2 of { (HappyWrap16 CmmParse ()
happy_var_2) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
        CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
happyIn35
                 (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_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 -> 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_100
happyReduction_100 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_100 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
happyIn35
                 (do l <- FastString -> CmmParse BlockId
lookupLabel FastString
happy_var_2; return (Left l)
        )}

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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
31# HappyAbsSyn -> HappyAbsSyn
happyReduction_101
happyReduction_101 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_101 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_Int       Integer
happy_var_1)) -> 
        [Integer] -> HappyAbsSyn
happyIn36
                 ([ Integer
happy_var_1 ]
        )}

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#
-> (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_102
happyReduction_102 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_102 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 -> HappyWrap36
happyOut36 HappyAbsSyn
happy_x_3 of { (HappyWrap36 [Integer]
happy_var_3) -> 
        [Integer] -> HappyAbsSyn
happyIn36
                 (Integer
happy_var_1 Integer -> [Integer] -> [Integer]
forall a. a -> [a] -> [a]
: [Integer]
happy_var_3
        )}}

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
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
32# 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)
         = case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_3 of { Located CmmToken
happy_var_3 -> 
        case HappyAbsSyn -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_4 of { (HappyWrap16 CmmParse ()
happy_var_4) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_5 of { Located CmmToken
happy_var_5 -> 
        Maybe (CmmParse ()) -> HappyAbsSyn
happyIn37
                 (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_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#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
32# HappyAbsSyn
happyReduction_104
happyReduction_104 :: HappyAbsSyn
happyReduction_104  =  Maybe (CmmParse ()) -> HappyAbsSyn
happyIn37
                 (Maybe (CmmParse ())
forall a. Maybe a
Nothing
        )

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#
33# HappyAbsSyn
happyReduction_105
happyReduction_105 :: HappyAbsSyn
happyReduction_105  =  CmmParse () -> HappyAbsSyn
happyIn38
                 (() -> CmmParse ()
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
        )

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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_106
happyReduction_106 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_106 (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 -> HappyWrap16
happyOut16 HappyAbsSyn
happy_x_3 of { (HappyWrap16 CmmParse ()
happy_var_3) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_4 of { Located CmmToken
happy_var_4 -> 
        CmmParse () -> HappyAbsSyn
happyIn38
                 (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_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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_107
happyReduction_107 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_107 (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
happyIn39
                 (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_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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_108
happyReduction_108 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_108 (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
happyIn39
                 (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_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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
34# HappyAbsSyn
happyReduction_109
happyReduction_109 :: HappyAbsSyn
happyReduction_109  =  Maybe Bool -> HappyAbsSyn
happyIn39
                 (Maybe Bool
forall a. Maybe a
Nothing
        )

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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Quot [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Mul [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Rem [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Sub [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Add [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Shr [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Shl [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_And [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Xor [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Or [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Ge [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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Gt [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 -> 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_122
happyReduction_122 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_122 HappyAbsSyn
happy_x_3
        p
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Le [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
        )}}

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 -> 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_123
happyReduction_123 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_123 HappyAbsSyn
happy_x_3
        p
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_U_Lt [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
        )}}

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#
-> (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_124
happyReduction_124 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_124 HappyAbsSyn
happy_x_3
        p
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Ne [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
        )}}

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 -> 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_125
happyReduction_125 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_125 HappyAbsSyn
happy_x_3
        p
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Eq [CmmParse CmmExpr
happy_var_1,CmmParse CmmExpr
happy_var_3]
        )}}

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#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126
happyReduction_126 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_126 HappyAbsSyn
happy_x_2
        p
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_Not [CmmParse CmmExpr
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#
35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_127
happyReduction_127 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_127 HappyAbsSyn
happy_x_2
        p
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn40
                 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
mkMachOp Width -> MachOp
MO_S_Neg [CmmParse CmmExpr
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#
-> 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_128
happyReduction_128 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_128 (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 -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_1 of { (HappyWrap41 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 -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_5 of { (HappyWrap41 CmmParse CmmExpr
happy_var_5) -> 
        ( do { mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
happy_var_3 ;
                                                return (mkMachOp mo [happy_var_1,happy_var_5]) })}}})
        ) (\CmmParse CmmExpr
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse CmmExpr -> HappyAbsSyn
happyIn40 CmmParse CmmExpr
r))

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#
35# HappyAbsSyn -> HappyAbsSyn
happyReduction_129
happyReduction_129 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_129 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap41
happyOut41 HappyAbsSyn
happy_x_1 of { (HappyWrap41 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 -> 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
happyIn41
                 (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_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#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_131
happyReduction_131 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_131 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
happyIn41
                 (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_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)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
36# HappyAbsSyn -> HappyAbsSyn
happyReduction_132
happyReduction_132 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_132 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
happyIn41
                 (do s <- FCode CmmLit -> CmmParse CmmLit
forall a. FCode a -> CmmParse a
code (String -> FCode CmmLit
newStringCLit String
happy_var_1);
                                      return (CmmLit s)
        )}

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#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
36# HappyAbsSyn -> HappyAbsSyn
happyReduction_133
happyReduction_133 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_133 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap48
happyOut48 HappyAbsSyn
happy_x_1 of { (HappyWrap48 CmmParse CmmExpr
happy_var_1) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn41
                 (CmmParse CmmExpr
happy_var_1
        )}

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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_134
happyReduction_134 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_134 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_4 of { (HappyWrap40 CmmParse CmmExpr
happy_var_4) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn41
                 (do ptr <- CmmParse CmmExpr
happy_var_4; return (CmmMachOp (MO_RelaxedRead (typeWidth happy_var_1)) [ptr])
        ) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

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 -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
5# Int#
36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_135
happyReduction_135 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_135 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_4 of { (HappyWrap40 CmmParse CmmExpr
happy_var_4) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn41
                 (do ptr <- CmmParse CmmExpr
happy_var_4; return (CmmLoad ptr happy_var_1 Unaligned)
        ) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_136
happyReduction_136 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_136 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_3 of { (HappyWrap40 CmmParse CmmExpr
happy_var_3) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn41
                 (do ptr <- CmmParse CmmExpr
happy_var_3; return (CmmLoad ptr happy_var_1 NaturallyAligned)
        ) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
happyRest}}

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#
-> 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_137
happyReduction_137 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_137 (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
happyIn41 CmmParse CmmExpr
r))

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 -> 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_138
happyReduction_138 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_138 p
happy_x_3
        HappyAbsSyn
happy_x_2
        p
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_2 of { (HappyWrap40 CmmParse CmmExpr
happy_var_2) -> 
        CmmParse CmmExpr -> HappyAbsSyn
happyIn41
                 (CmmParse CmmExpr
happy_var_2
        )}

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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
0# Int#
37# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p} {p}. p -> p -> PD HappyAbsSyn
happyReduction_139
happyReduction_139 :: p -> p -> PD HappyAbsSyn
happyReduction_139 (p
happyRest) p
tk
         = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen ((( do platform <- PD Platform
PD.getPlatform; return $ bWord platform))
        ) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn42 CmmType
r))

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)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
37# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_140
happyReduction_140 :: HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_140 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_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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
38# HappyAbsSyn
happyReduction_141
happyReduction_141 :: HappyAbsSyn
happyReduction_141  =  [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
happyIn43
                 ([]
        )

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#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
38# HappyAbsSyn -> HappyAbsSyn
happyReduction_142
happyReduction_142 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_142 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_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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
39# HappyAbsSyn -> HappyAbsSyn
happyReduction_143
happyReduction_143 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_143 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_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 -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
39# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144
happyReduction_144 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_144 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_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#
40# HappyAbsSyn -> HappyAbsSyn
happyReduction_145
happyReduction_145 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_145 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn45
                 (do e <- CmmParse CmmExpr
happy_var_1;
                                             return (e, inferCmmHint e)
        )}

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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
40# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_146
happyReduction_146 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_146 (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 -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_2 of { (L SrcSpan
_ (CmmT_String    String
happy_var_2)) -> 
        ( do h <- String -> PD ForeignHint
parseCmmHint String
happy_var_2;
                                              return $ do
                                                e <- happy_var_1; return (e, h))}})
        ) (\CmmParse (CmmExpr, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
happyIn45 CmmParse (CmmExpr, ForeignHint)
r))

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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
41# HappyAbsSyn
happyReduction_147
happyReduction_147 :: HappyAbsSyn
happyReduction_147  =  [CmmParse CmmExpr] -> HappyAbsSyn
happyIn46
                 ([]
        )

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#
41# HappyAbsSyn -> HappyAbsSyn
happyReduction_148
happyReduction_148 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_148 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_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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
42# HappyAbsSyn -> HappyAbsSyn
happyReduction_149
happyReduction_149 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_149 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
happy_var_1) -> 
        [CmmParse CmmExpr] -> HappyAbsSyn
happyIn47
                 ([ CmmParse CmmExpr
happy_var_1 ]
        )}

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#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
42# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_150
happyReduction_150 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_150 HappyAbsSyn
happy_x_3
        p
happy_x_2
        HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> HappyWrap40
happyOut40 HappyAbsSyn
happy_x_1 of { (HappyWrap40 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_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#
43# HappyAbsSyn -> HappyAbsSyn
happyReduction_151
happyReduction_151 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_151 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_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)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
43# HappyAbsSyn -> HappyAbsSyn
happyReduction_152
happyReduction_152 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_152 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg GlobalRegUse
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 (GlobalRegUse -> CmmReg
CmmGlobal GlobalRegUse
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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
44# HappyAbsSyn
happyReduction_153
happyReduction_153 :: HappyAbsSyn
happyReduction_153  =  [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
happyIn49
                 ([]
        )

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#
-> Int#
-> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {t}.
Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
4# Int#
44# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_154
happyReduction_154 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
happyReduction_154 (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_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#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
45# HappyAbsSyn -> HappyAbsSyn
happyReduction_155
happyReduction_155 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_155 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_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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
45# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_156
happyReduction_156 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_156 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_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 -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
45# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157
happyReduction_157 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_157 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_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#
46# HappyAbsSyn -> HappyAbsSyn
happyReduction_158
happyReduction_158 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_158 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 e <- CmmParse LocalReg
happy_var_1; return (e, inferCmmHint (CmmReg (CmmLocal e)))
        )}

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#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
2# Int#
46# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_159
happyReduction_159 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
happyReduction_159 (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 h <- String -> PD ForeignHint
parseCmmHint String
happy_var_1;
                                      return $ do
                                         e <- happy_var_2; return (e,h))}})
        ) (\CmmParse (LocalReg, ForeignHint)
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
happyIn51 CmmParse (LocalReg, ForeignHint)
r))

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)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
47# HappyAbsSyn -> HappyAbsSyn
happyReduction_160
happyReduction_160 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_160 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 e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     return $
                                       case e of
                                        CmmReg (CmmLocal LocalReg
r) -> LocalReg
r
                                        CmmExpr
other -> String -> SDoc -> LocalReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
forall doc. IsLine doc => FastString -> doc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
" not a local register")
        )}

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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
48# HappyAbsSyn -> HappyAbsSyn
happyReduction_161
happyReduction_161 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_161 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 e <- FastString -> CmmParse CmmExpr
lookupName FastString
happy_var_1;
                                     return $
                                       case e of
                                        CmmReg CmmReg
r -> CmmReg
r
                                        CmmExpr
other -> String -> SDoc -> CmmReg
forall a. HasCallStack => String -> SDoc -> a
pprPanic String
"CmmParse:" (FastString -> SDoc
forall doc. IsLine doc => FastString -> doc
ftext FastString
happy_var_1 SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
" not a register")
        )}

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#
48# HappyAbsSyn -> HappyAbsSyn
happyReduction_162
happyReduction_162 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_162 HappyAbsSyn
happy_x_1
         =  case HappyAbsSyn -> Located CmmToken
happyOutTok HappyAbsSyn
happy_x_1 of { (L SrcSpan
_ (CmmT_GlobalReg GlobalRegUse
happy_var_1)) -> 
        CmmParse CmmReg -> HappyAbsSyn
happyIn53
                 (CmmReg -> CmmParse CmmReg
forall a. a -> CmmParse a
forall (m :: * -> *) a. Monad m => a -> m a
return (GlobalRegUse -> CmmReg
CmmGlobal GlobalRegUse
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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
49# HappyAbsSyn
happyReduction_163
happyReduction_163 :: HappyAbsSyn
happyReduction_163  =  Maybe [CmmParse LocalReg] -> HappyAbsSyn
happyIn54
                 (Maybe [CmmParse LocalReg]
forall a. Maybe a
Nothing
        )

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 -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
49# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_164
happyReduction_164 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
happyReduction_164 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_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
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0  Int#
50# HappyAbsSyn
happyReduction_165
happyReduction_165 :: HappyAbsSyn
happyReduction_165  =  [CmmParse LocalReg] -> HappyAbsSyn
happyIn55
                 ([]
        )

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)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
50# HappyAbsSyn -> HappyAbsSyn
happyReduction_166
happyReduction_166 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_166 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_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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_167
happyReduction_167 :: p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_167 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_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#
51# HappyAbsSyn -> HappyAbsSyn
happyReduction_168
happyReduction_168 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_168 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_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 -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3  Int#
51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_169
happyReduction_169 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
happyReduction_169 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_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 -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2  Int#
52# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_170
happyReduction_170 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
happyReduction_170 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_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#
53# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_171
happyReduction_171 :: p -> HappyAbsSyn
happyReduction_171 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn58
                 (CmmType
b8
        )

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#
53# HappyAbsSyn -> HappyAbsSyn
happyReduction_172
happyReduction_172 :: HappyAbsSyn -> HappyAbsSyn
happyReduction_172 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_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#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_173
happyReduction_173 :: p -> HappyAbsSyn
happyReduction_173 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (CmmType
b16
        )

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#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_174
happyReduction_174 :: p -> HappyAbsSyn
happyReduction_174 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (CmmType
b32
        )

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#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_175
happyReduction_175 :: p -> HappyAbsSyn
happyReduction_175 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (CmmType
b64
        )

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#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_176
happyReduction_176 :: p -> HappyAbsSyn
happyReduction_176 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (ByteOff -> CmmType -> CmmType
cmmVec ByteOff
2 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#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_177
happyReduction_177 :: p -> HappyAbsSyn
happyReduction_177 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (ByteOff -> CmmType -> CmmType
cmmVec ByteOff
4 CmmType
f64
        )

happyReduce_178 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_178 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_178 = Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1  Int#
54# HappyAbsSyn -> HappyAbsSyn
forall {p}. p -> HappyAbsSyn
happyReduction_178
happyReduction_178 :: p -> HappyAbsSyn
happyReduction_178 p
happy_x_1
         =  CmmType -> HappyAbsSyn
happyIn59
                 (ByteOff -> CmmType -> CmmType
cmmVec ByteOff
8 CmmType
f64
        )

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

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

happyReduce_181 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
happyReduce_181 :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyReduce_181 = Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
1# Int#
54# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
happyReduction_181
happyReduction_181 :: HappyStk a -> p -> PD HappyAbsSyn
happyReduction_181 (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 <- PD Platform
PD.getPlatform; return $ gcWord platform))
        ) (\CmmType
r -> HappyAbsSyn -> PD HappyAbsSyn
forall a. a -> PD a
happyReturn (CmmType -> HappyAbsSyn
happyIn59 CmmType
r))

happyTerminalToTok :: GenLocated l CmmToken -> Int#
happyTerminalToTok GenLocated l CmmToken
term = case GenLocated l CmmToken
term of {
        L l
_ CmmToken
CmmT_EOF -> Int#
87#;
        L l
_ (CmmT_SpecChar Char
':') -> Int#
2#;
        L l
_ (CmmT_SpecChar Char
';') -> Int#
3#;
        L l
_ (CmmT_SpecChar Char
'{') -> Int#
4#;
        L l
_ (CmmT_SpecChar Char
'}') -> Int#
5#;
        L l
_ (CmmT_SpecChar Char
'[') -> Int#
6#;
        L l
_ (CmmT_SpecChar Char
']') -> Int#
7#;
        L l
_ (CmmT_SpecChar Char
'(') -> Int#
8#;
        L l
_ (CmmT_SpecChar Char
')') -> Int#
9#;
        L l
_ (CmmT_SpecChar Char
'=') -> Int#
10#;
        L l
_ (CmmT_SpecChar Char
'`') -> Int#
11#;
        L l
_ (CmmT_SpecChar Char
'~') -> Int#
12#;
        L l
_ (CmmT_SpecChar Char
'/') -> Int#
13#;
        L l
_ (CmmT_SpecChar Char
'*') -> Int#
14#;
        L l
_ (CmmT_SpecChar Char
'%') -> Int#
15#;
        L l
_ (CmmT_SpecChar Char
'-') -> Int#
16#;
        L l
_ (CmmT_SpecChar Char
'+') -> Int#
17#;
        L l
_ (CmmT_SpecChar Char
'&') -> Int#
18#;
        L l
_ (CmmT_SpecChar Char
'^') -> Int#
19#;
        L l
_ (CmmT_SpecChar Char
'|') -> Int#
20#;
        L l
_ (CmmT_SpecChar Char
'>') -> Int#
21#;
        L l
_ (CmmT_SpecChar Char
'<') -> Int#
22#;
        L l
_ (CmmT_SpecChar Char
',') -> Int#
23#;
        L l
_ (CmmT_SpecChar Char
'!') -> Int#
24#;
        L l
_ (CmmToken
CmmT_DotDot) -> Int#
25#;
        L l
_ (CmmToken
CmmT_DoubleColon) -> Int#
26#;
        L l
_ (CmmToken
CmmT_Shr) -> Int#
27#;
        L l
_ (CmmToken
CmmT_Shl) -> Int#
28#;
        L l
_ (CmmToken
CmmT_Ge) -> Int#
29#;
        L l
_ (CmmToken
CmmT_Le) -> Int#
30#;
        L l
_ (CmmToken
CmmT_Eq) -> Int#
31#;
        L l
_ (CmmToken
CmmT_Ne) -> Int#
32#;
        L l
_ (CmmToken
CmmT_BoolAnd) -> Int#
33#;
        L l
_ (CmmToken
CmmT_BoolOr) -> Int#
34#;
        L l
_ (CmmToken
CmmT_True ) -> Int#
35#;
        L l
_ (CmmToken
CmmT_False) -> Int#
36#;
        L l
_ (CmmToken
CmmT_likely) -> Int#
37#;
        L l
_ (CmmToken
CmmT_Relaxed) -> Int#
38#;
        L l
_ (CmmToken
CmmT_Acquire) -> Int#
39#;
        L l
_ (CmmToken
CmmT_Release) -> Int#
40#;
        L l
_ (CmmToken
CmmT_SeqCst) -> Int#
41#;
        L l
_ (CmmToken
CmmT_CLOSURE) -> Int#
42#;
        L l
_ (CmmToken
CmmT_INFO_TABLE) -> Int#
43#;
        L l
_ (CmmToken
CmmT_INFO_TABLE_RET) -> Int#
44#;
        L l
_ (CmmToken
CmmT_INFO_TABLE_FUN) -> Int#
45#;
        L l
_ (CmmToken
CmmT_INFO_TABLE_CONSTR) -> Int#
46#;
        L l
_ (CmmToken
CmmT_INFO_TABLE_SELECTOR) -> Int#
47#;
        L l
_ (CmmToken
CmmT_else) -> Int#
48#;
        L l
_ (CmmToken
CmmT_export) -> Int#
49#;
        L l
_ (CmmToken
CmmT_section) -> Int#
50#;
        L l
_ (CmmToken
CmmT_goto) -> Int#
51#;
        L l
_ (CmmToken
CmmT_if) -> Int#
52#;
        L l
_ (CmmToken
CmmT_call) -> Int#
53#;
        L l
_ (CmmToken
CmmT_jump) -> Int#
54#;
        L l
_ (CmmToken
CmmT_foreign) -> Int#
55#;
        L l
_ (CmmToken
CmmT_never) -> Int#
56#;
        L l
_ (CmmToken
CmmT_prim) -> Int#
57#;
        L l
_ (CmmToken
CmmT_reserve) -> Int#
58#;
        L l
_ (CmmToken
CmmT_return) -> Int#
59#;
        L l
_ (CmmToken
CmmT_returns) -> Int#
60#;
        L l
_ (CmmToken
CmmT_import) -> Int#
61#;
        L l
_ (CmmToken
CmmT_switch) -> Int#
62#;
        L l
_ (CmmToken
CmmT_case) -> Int#
63#;
        L l
_ (CmmToken
CmmT_default) -> Int#
64#;
        L l
_ (CmmToken
CmmT_push) -> Int#
65#;
        L l
_ (CmmToken
CmmT_unwind) -> Int#
66#;
        L l
_ (CmmToken
CmmT_bits8) -> Int#
67#;
        L l
_ (CmmToken
CmmT_bits16) -> Int#
68#;
        L l
_ (CmmToken
CmmT_bits32) -> Int#
69#;
        L l
_ (CmmToken
CmmT_bits64) -> Int#
70#;
        L l
_ (CmmToken
CmmT_vec128) -> Int#
71#;
        L l
_ (CmmToken
CmmT_vec256) -> Int#
72#;
        L l
_ (CmmToken
CmmT_vec512) -> Int#
73#;
        L l
_ (CmmToken
CmmT_float32) -> Int#
74#;
        L l
_ (CmmToken
CmmT_float64) -> Int#
75#;
        L l
_ (CmmToken
CmmT_gcptr) -> Int#
76#;
        L l
_ (CmmT_GlobalReg GlobalRegUse
happy_dollar_dollar) -> Int#
77#;
        L l
_ (CmmT_Name      FastString
happy_dollar_dollar) -> Int#
78#;
        L l
_ (CmmT_String    String
happy_dollar_dollar) -> Int#
79#;
        L l
_ (CmmT_Int       Integer
happy_dollar_dollar) -> Int#
80#;
        L l
_ (CmmT_Float     Rational
happy_dollar_dollar) -> Int#
81#;
        L l
_ (CmmT_GlobalArgRegs GlobalArgRegs
GP_ARG_REGS) -> Int#
82#;
        L l
_ (CmmT_GlobalArgRegs GlobalArgRegs
SCALAR_ARG_REGS) -> Int#
83#;
        L l
_ (CmmT_GlobalArgRegs GlobalArgRegs
V16_ARG_REGS) -> Int#
84#;
        L l
_ (CmmT_GlobalArgRegs GlobalArgRegs
V32_ARG_REGS) -> Int#
85#;
        L l
_ (CmmT_GlobalArgRegs GlobalArgRegs
V64_ARG_REGS) -> Int#
86#;
        GenLocated l CmmToken
_ -> Int#
-1#;
        }
{-# NOINLINE happyTerminalToTok #-}

happyLex :: (Located CmmToken -> PD a)
-> (Int# -> Located CmmToken -> PD a) -> PD a
happyLex Located CmmToken -> PD a
kend Int# -> Located CmmToken -> PD a
kmore = (Located CmmToken -> PD a) -> PD a
forall a. (Located CmmToken -> PD a) -> PD a
cmmlex (\Located CmmToken
tk -> case Located CmmToken
tk of {
        L SrcSpan
_ CmmToken
CmmT_EOF -> Located CmmToken -> PD a
kend Located CmmToken
tk;
        Located CmmToken
_ -> Int# -> Located CmmToken -> PD a
kmore (Located CmmToken -> Int#
forall {l}. GenLocated l CmmToken -> Int#
happyTerminalToTok Located CmmToken
tk) Located CmmToken
tk })
{-# INLINE happyLex #-}

happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk = (Located CmmToken -> PD HappyAbsSyn)
-> (Int# -> Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall {a}.
(Located CmmToken -> PD a)
-> (Int# -> Located CmmToken -> PD a) -> PD a
happyLex (\Located CmmToken
tk -> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
87# Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk) (\Int#
i Located CmmToken
tk -> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
i Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk)

happyReport :: Int# -> Located CmmToken -> [String] -> PD a -> PD a
happyReport Int#
87# = Located CmmToken -> [String] -> PD a -> PD a
forall a. Located CmmToken -> [String] -> PD a -> PD a
happyReport'
happyReport Int#
_ = Located CmmToken -> [String] -> PD a -> PD a
forall a. Located CmmToken -> [String] -> PD a -> PD a
happyReport'


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 Happy_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
happyFmap1 :: (t -> b) -> PD t -> PD b
happyFmap1 t -> b
f PD t
m = PD t -> (t -> PD b) -> PD b
forall a b. PD a -> (a -> PD b) -> PD b
happyThen PD t
m (\t
a -> b -> PD b
forall a. a -> PD a
happyReturn (t -> b
f t
a))
happyReturn1 :: () => a -> (PD a)
happyReturn1 :: forall a. a -> PD a
happyReturn1 = a -> PD a
forall a. a -> PD a
happyReturn
happyReport' :: () => (Located CmmToken) -> [Happy_Prelude.String] -> (PD a) -> (PD a)
happyReport' :: forall a. Located CmmToken -> [String] -> PD a -> PD a
happyReport' = (\Located CmmToken
tokens [String]
expected PD a
resume -> PD a
forall a. PD a
happyError)

happyAbort :: () => (PD a)
happyAbort :: forall a. PD a
happyAbort = String -> PD a
forall a. HasCallStack => String -> a
Happy_Prelude.error String
"Called abort handler in non-resumptive parser"

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 {(HappyWrap5 CmmParse ()
x') = HappyAbsSyn -> HappyWrap5
happyOut5 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 <- CmmParse Platform
getPlatform
  arg_exprs <- sequence args
  return (CmmMachOp (fn (typeWidth (cmmExprType platform (head arg_exprs)))) 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. HasCallStack => 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
  pdc     <- PD PDConfig
PD.getPDConfig
  let profile = PDConfig -> Profile
PD.pdProfile PDConfig
pdc
  let align_check = PDConfig -> Bool
PD.pdSanitizeAlignment PDConfig
pdc
  case lookupUFM (exprMacros profile align_check) 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
        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
        return (f args)
     Maybe ([CmmExpr] -> CmmExpr)
Nothing -> do
        mo <- FastString -> PD (Width -> MachOp)
nameToMachOp FastString
name
        return $ mkMachOp mo 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
"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
"fmin",       Width -> MachOp
MO_F_Min ),
        ( String
"fmax",       Width -> MachOp
MO_F_Max ),

        ( String
"fmadd" ,     FMASign -> ByteOff -> Width -> MachOp
MO_FMA FMASign
FMAdd  ByteOff
1 ),
        ( String
"fmsub" ,     FMASign -> ByteOff -> Width -> MachOp
MO_FMA FMASign
FMSub  ByteOff
1 ),
        ( String
"fnmadd",     FMASign -> ByteOff -> Width -> MachOp
MO_FMA FMASign
FNMAdd ByteOff
1 ),
        ( String
"fnmsub",     FMASign -> ByteOff -> Width -> MachOp
MO_FMA FMASign
FNMSub ByteOff
1 ),

        ( 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_Truncate 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_Truncate 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_Truncate 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_Truncate 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_Round 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_Round Width
W64 ),

        ( String
"w2f_bitcast", Width -> MachOp
MO_WF_Bitcast ),
        ( String
"f2w_bitcast", Width -> MachOp
MO_FW_Bitcast )
        ]

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,) ),

        -- TODO: It would be nice to rename the following operations to

        -- acquire_fence and release_fence. Be aware that there'll be issues

        -- with an overlapping token ('acquire') in the lexer.

        ( String
"fence_acquire", (CallishMachOp
MO_AcquireFence,)),
        ( String
"fence_release", (CallishMachOp
MO_ReleaseFence,)),
        ( String
"fence_seq_cst", (CallishMachOp
MO_SeqCstFence,)),

        ( 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,)),

        ( String
"bswap16", (Width -> CallishMachOp
MO_BSwap Width
W16,) ),
        ( String
"bswap32", (Width -> CallishMachOp
MO_BSwap Width
W32,) ),
        ( String
"bswap64", (Width -> CallishMachOp
MO_BSwap Width
W64,) )
    ] [(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)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_add" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_Add)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_sub" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_Sub)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_and" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_And)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_nand" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_Nand)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_or" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_Or)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"fetch_xor" (\Width
w -> Width -> AtomicMachOp -> CallishMachOp
MO_AtomicRMW Width
w AtomicMachOp
AMO_Xor)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"mul2_" (\Width
w -> Width -> CallishMachOp
MO_S_Mul2 Width
w)
    , String
-> (Width -> CallishMachOp)
-> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
forall a.
String
-> (Width -> CallishMachOp)
-> [(FastString, a -> (CallishMachOp, a))]
allWidths String
"mul2u_" (\Width
w -> Width -> CallishMachOp
MO_U_Mul2 Width
w)
    ]
  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. HasCallStack => 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 GlobalRegUse
reg))
  | GlobalRegUse -> Bool
isPtrGlobalRegUse GlobalRegUse
reg
  = ForeignHint
AddrHint
inferCmmHint CmmExpr
_
  = ForeignHint
NoHint

isPtrGlobalRegUse :: GlobalRegUse -> Bool
isPtrGlobalRegUse :: GlobalRegUse -> Bool
isPtrGlobalRegUse (GlobalRegUse GlobalReg
reg CmmType
ty)
  | VanillaReg {} <- GlobalReg
reg
  , CmmType -> Bool
isGcPtrType CmmType
ty
  = Bool
True
  | Bool
otherwise
  = GlobalReg -> Bool
go GlobalReg
reg
  where
    go :: GlobalReg -> Bool
go GlobalReg
Sp             = Bool
True
    go GlobalReg
SpLim          = Bool
True
    go GlobalReg
Hp             = Bool
True
    go GlobalReg
HpLim          = Bool
True
    go GlobalReg
CCCS           = Bool
True
    go GlobalReg
CurrentTSO     = Bool
True
    go GlobalReg
CurrentNursery = Bool
True
    go GlobalReg
_              = Bool
False

happyError :: PD a
happyError :: forall a. PD a
happyError = (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
forall a. (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
PD ((PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a)
-> (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
forall a b. (a -> b) -> a -> b
$ \PDConfig
_ 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
        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
        code (fcode 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_GP_ARG_REGS",         \[] -> GlobalArgRegs -> FCode ()
emitSaveRegs GlobalArgRegs
GP_ARG_REGS ),
  ( String -> FastString
fsLit String
"RESTORE_GP_ARG_REGS",      \[] -> GlobalArgRegs -> FCode ()
emitRestoreRegs GlobalArgRegs
GP_ARG_REGS ),
  ( String -> FastString
fsLit String
"SAVE_SCALAR_ARG_REGS",     \[] -> GlobalArgRegs -> FCode ()
emitSaveRegs GlobalArgRegs
SCALAR_ARG_REGS ),
  ( String -> FastString
fsLit String
"RESTORE_SCALAR_ARG_REGS",  \[] -> GlobalArgRegs -> FCode ()
emitRestoreRegs GlobalArgRegs
SCALAR_ARG_REGS ),
  ( String -> FastString
fsLit String
"SAVE_V16_ARG_REGS",        \[] -> GlobalArgRegs -> FCode ()
emitSaveRegs GlobalArgRegs
V16_ARG_REGS ),
  ( String -> FastString
fsLit String
"RESTORE_V16_ARG_REGS",     \[] -> GlobalArgRegs -> FCode ()
emitRestoreRegs GlobalArgRegs
V16_ARG_REGS ),
  ( String -> FastString
fsLit String
"SAVE_V32_ARG_REGS",        \[] -> GlobalArgRegs -> FCode ()
emitSaveRegs GlobalArgRegs
V32_ARG_REGS ),
  ( String -> FastString
fsLit String
"RESTORE_V32_ARG_REGS",     \[] -> GlobalArgRegs -> FCode ()
emitRestoreRegs GlobalArgRegs
V32_ARG_REGS ),
  ( String -> FastString
fsLit String
"SAVE_V64_ARG_REGS",         \[] -> GlobalArgRegs -> FCode ()
emitSaveRegs GlobalArgRegs
V64_ARG_REGS ),
  ( String -> FastString
fsLit String
"RESTORE_V64_ARG_REGS",      \[] -> GlobalArgRegs -> FCode ()
emitRestoreRegs GlobalArgRegs
V64_ARG_REGS ),

  ( String -> FastString
fsLit String
"PUSH_SCALAR_ARG_REGS",     \[CmmExpr
live_regs] -> GlobalArgRegs -> CmmExpr -> FCode ()
emitPushArgRegs GlobalArgRegs
SCALAR_ARG_REGS CmmExpr
live_regs ),
  ( String -> FastString
fsLit String
"POP_SCALAR_ARG_REGS",      \[CmmExpr
live_regs] -> GlobalArgRegs -> CmmExpr -> FCode ()
emitPopArgRegs GlobalArgRegs
SCALAR_ARG_REGS CmmExpr
live_regs ),

  ( String -> FastString
fsLit String
"LDV_ENTER",             \[CmmExpr
e] -> CmmExpr -> FCode ()
ldvEnter CmmExpr
e ),
  ( String -> FastString
fsLit String
"PROF_HEADER_CREATE",     \[CmmExpr
e] -> CmmExpr -> FCode ()
profHeaderCreate 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 <- CmmParse Profile
getProfile
  exprs <- sequence fields
  updfr_off <- getUpdFrameOff
  let (new_updfr_off, _, g) = copyOutOflow profile NativeReturn Ret Old
                                           [] updfr_off exprs
  emit g
  withUpdFrameOff new_updfr_off 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 <- CmmParse Platform
getPlatform
  old_updfr_off <- getUpdFrameOff
  reg <- preg
  esize <- psize
  let 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
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
  emitAssign reg (CmmStackSlot Old frame)
  withUpdFrameOff frame 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 <- CmmParse Profile
getProfile
       let lits = Profile
-> CLabel
-> CostCentreStack
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
-> [CmmLit]
mkStaticClosure Profile
profile (UnitId -> FastString -> CLabel
mkCmmInfoLabel UnitId
pkg FastString
info) CostCentreStack
dontCareCCS [CmmLit]
payload [] [] [] []
       code $ emitDataLits (mkCmmDataLabel pkg (NeedExternDecl True) cl_label) 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  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)
        return $ do
          platform <- getPlatform
          results <- sequence results_code
          expr <- expr_code
          args <- sequence args_code
          let
                  (arg_exprs, arg_hints) = unzip args
                  (res_regs,  res_hints) = unzip results
                  fc = CCallConv
-> [ForeignHint]
-> [ForeignHint]
-> CmmReturnInfo
-> ForeignConvention
ForeignConvention CCallConv
conv [ForeignHint]
arg_hints [ForeignHint]
res_hints CmmReturnInfo
ret
                  target = CmmExpr -> ForeignConvention -> ForeignTarget
ForeignTarget CmmExpr
expr ForeignConvention
fc
          _ <- code $ emitForeignCall safety res_regs target arg_exprs
          return ()


doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn :: [CmmParse CmmExpr] -> CmmParse ()
doReturn [CmmParse CmmExpr]
exprs_code = do
  profile <- CmmParse Profile
getProfile
  exprs <- sequence exprs_code
  updfr_off <- getUpdFrameOff
  emit (mkReturnSimple profile exprs 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 -> [GlobalRegUse] -> CmmParse ()
doRawJump :: CmmParse CmmExpr -> [GlobalRegUse] -> CmmParse ()
doRawJump CmmParse CmmExpr
expr_code [GlobalRegUse]
vols = do
  profile <- CmmParse Profile
getProfile
  expr <- expr_code
  updfr_off <- getUpdFrameOff
  emit (mkRawJump profile expr updfr_off 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 <- CmmParse Profile
getProfile
  expr <- expr_code
  stk_args <- sequence stk_code
  args <- sequence args_code
  updfr_off <- getUpdFrameOff
  emit (mkJumpExtra profile NativeNodeCall expr args updfr_off 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
  expr <- CmmParse CmmExpr
expr_code
  args <- sequence args_code
  ress <- sequence res_code
  updfr_off <- getUpdFrameOff
  c <- code $ mkCall expr (NativeNodeCall,NativeReturn) ress args updfr_off []
  emit c

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 <- PD Platform
PD.getPlatform
    case lookupUFM (callishMachOps platform) 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
                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
                args <- sequence args_code
                let (p, args') = f args
                code (emitPrimCall (map fst results) p 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 <- CmmParse Platform
getPlatform
       addr <- addr_code
       val <- 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 = CmmType -> Width
typeWidth (Platform -> CmmExpr -> CmmType
cmmExprType Platform
platform CmmExpr
val)
           rep_width = CmmType -> Width
typeWidth CmmType
rep
       let 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
       emitStore mem_ord addr 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
     then_id <- CmmParse BlockId
forall (m :: * -> *). MonadGetUnique m => m BlockId
newBlockId
     join_id <- newBlockId
     c <- cond
     emitCond c then_id likely
     else_part
     emit (mkBranch join_id)
     emitLabel then_id
     then_part
     -- fall through to join

     emitLabel join_id

cmmRawIf :: CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
cmmRawIf CmmParse BoolExpr
cond BlockId
then_id Maybe Bool
likely = do
    c <- CmmParse BoolExpr
cond
    emitCond c then_id 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
  else_id <- CmmParse BlockId
forall (m :: * -> *). MonadGetUnique m => m BlockId
newBlockId
  emit (mkCbranch e then_id else_id likely)
  emitLabel 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
  else_id <- CmmParse BlockId
forall (m :: * -> *). MonadGetUnique m => m BlockId
newBlockId
  emitCond e else_id likely
  emit (mkBranch then_id)
  emitLabel 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.

  and_id <- CmmParse BlockId
forall (m :: * -> *). MonadGetUnique m => m BlockId
newBlockId
  else_id <- newBlockId
  emitCond e1 and_id likely
  emit (mkBranch else_id)
  emitLabel and_id
  emitCond e2 then_id likely
  emitLabel 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
  name <- CmmParse String
getName
  case combineSrcSpans (getLoc a) (getLoc b) of
    RealSrcSpan RealSrcSpan
span Maybe BufSpan
_ -> FCode () -> CmmParse ()
forall a. FCode a -> CmmParse a
code (CmmTickish -> FCode ()
emitTick (RealSrcSpan -> LexicalFastString -> CmmTickish
forall (pass :: TickishPass).
RealSrcSpan -> LexicalFastString -> GenTickish pass
SourceNote RealSrcSpan
span (LexicalFastString -> CmmTickish)
-> LexicalFastString -> CmmTickish
forall a b. (a -> b) -> a -> b
$ FastString -> LexicalFastString
LexicalFastString (FastString -> LexicalFastString)
-> FastString -> LexicalFastString
forall a b. (a -> b) -> a -> b
$ String -> FastString
mkFastString 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

        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 b <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
e; return (Just b)

        -- Compile each case branch

        table_entries <- mapM emitArm arms
        let 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 <- getPlatform
        let 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

        expr <- scrut
        -- ToDo: check for out of range and jump to default if necessary

        emit $ mkSwitch expr (mkSwitchTargets False range dflt_entry 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 <- CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
code
           return [ (i,blockid) | i <- ints ]

forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode :: CmmParse () -> CmmParse BlockId
forkLabelledCode CmmParse ()
p = do
  (_,ag) <- CmmParse () -> CmmParse ((), CmmAGraphScoped)
forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
getCodeScoped CmmParse ()
p
  l <- newBlockId
  emitOutOfLine l ag
  return 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 :: CmmParserConfig
             -> Module
             -> HomeUnit
             -> FilePath
             -> IO (Messages PsMessage, Messages PsMessage, Maybe (DCmmGroup, [InfoProvEnt]))
parseCmmFile :: CmmParserConfig
-> Module
-> HomeUnit
-> String
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (DCmmGroup, [InfoProvEnt]))
parseCmmFile CmmParserConfig
cmmpConfig Module
this_mod HomeUnit
home_unit String
filename = do
  buf <- String -> IO StringBuffer
hGetStringBuffer String
filename
  let
        init_loc = FastString -> ByteOff -> ByteOff -> RealSrcLoc
mkRealSrcLoc (String -> FastString
mkFastString String
filename) ByteOff
1 ByteOff
1
        init_state = (ParserOpts -> StringBuffer -> RealSrcLoc -> PState
initParserState (CmmParserConfig -> ParserOpts
cmmpParserOpts CmmParserConfig
cmmpConfig) StringBuffer
buf RealSrcLoc
init_loc) { lex_state = [0] }
                -- reset the lex_state: the Lexer monad leaves some stuff

                -- in there we don't want.

        pdConfig = CmmParserConfig -> PDConfig
cmmpPDConfig CmmParserConfig
cmmpConfig
  case unPD cmmParse pdConfig home_unit 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 (DCmmGroup, [InfoProvEnt]))
-> IO
     (Messages PsMessage, Messages PsMessage,
      Maybe (DCmmGroup, [InfoProvEnt]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Messages PsMessage
warnings, Messages PsMessage
errors, Maybe (DCmmGroup, [InfoProvEnt])
forall a. Maybe a
Nothing)
    POk PState
pst CmmParse ()
code -> do
        st <- IO CgState
initC
        let fstate = Platform -> FCodeState
F.initFCodeState (Profile -> Platform
profilePlatform (Profile -> Platform) -> Profile -> Platform
forall a b. (a -> b) -> a -> b
$ PDConfig -> Profile
pdProfile PDConfig
pdConfig)
        let fcode = do
              ((), cmm) <- FCode () -> FCode ((), DCmmGroup)
forall a. FCode a -> FCode (a, DCmmGroup)
getCmm (FCode () -> FCode ((), DCmmGroup))
-> FCode () -> FCode ((), DCmmGroup)
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 (PDConfig -> Profile
pdProfile PDConfig
pdConfig)) [] 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
                    | Bool
do_ipe    = (CmmInfoTable -> InfoProvEnt) -> [CmmInfoTable] -> [InfoProvEnt]
forall a b. (a -> b) -> [a] -> [b]
map (Module -> CmmInfoTable -> InfoProvEnt
cmmInfoTableToInfoProvEnt Module
this_mod) ((DCmmDecl -> Maybe CmmInfoTable) -> DCmmGroup -> [CmmInfoTable]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe DCmmDecl -> Maybe CmmInfoTable
forall a (s :: * -> *) (n :: Extensibility -> Extensibility -> *).
GenCmmDecl a DCmmTopInfo (GenGenCmmGraph s n) -> Maybe CmmInfoTable
topInfoTableD DCmmGroup
cmm)
                    | Bool
otherwise = []
                    where
                      do_ipe :: Bool
do_ipe = StgToCmmConfig -> Bool
stgToCmmInfoTableMap (StgToCmmConfig -> Bool) -> StgToCmmConfig -> Bool
forall a b. (a -> b) -> a -> b
$ CmmParserConfig -> StgToCmmConfig
cmmpStgToCmmConfig CmmParserConfig
cmmpConfig
              -- We need to pass a deterministic unique supply to generate IPE

              -- symbols deterministically. The symbols created by

              -- emitIpeBufferListNode must all be local to the object (see

              -- comment on its definition). If the symbols weren't local, using a

              -- counter starting from zero for every Cmm file would cause

              -- conflicts when compiling more than one Cmm file together.

              (_, cmm2) <- getCmm $ emitIpeBufferListNode this_mod used_info (initDUniqSupply 'P' 0)
              return (cmm ++ cmm2, used_info)
            (cmm, _) = runC (cmmpStgToCmmConfig cmmpConfig) fstate st fcode
            (warnings,errors) = getPsMessages pst
        if not (isEmptyMessages errors)
         then return (warnings, errors, Nothing)
         else return (warnings, errors, Just cmm)
#define HAPPY_COERCE 1
-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $


#if !defined(__GLASGOW_HASKELL__)
#  error This code isn't being built with GHC.
#endif

-- Get WORDS_BIGENDIAN (if defined)

#include "MachDeps.h"

-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.

#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Happy_Prelude.Bool)
#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Happy_Prelude.Bool)
#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Happy_Prelude.Bool)
#define PLUS(n,m) (n Happy_GHC_Exts.+# m)
#define MINUS(n,m) (n Happy_GHC_Exts.-# m)
#define TIMES(n,m) (n Happy_GHC_Exts.*# m)
#define NEGATE(n) (Happy_GHC_Exts.negateInt# (n))

type Happy_Int = Happy_GHC_Exts.Int#
data Happy_IntList = HappyCons Happy_Int Happy_IntList

#define INVALID_TOK -1#
#define ERROR_TOK 0#
#define CATCH_TOK 1#

#if defined(HAPPY_COERCE)
#  define GET_ERROR_TOKEN(x)  (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# i) -> i })
#  define MK_ERROR_TOKEN(i)   (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# i))
#  define MK_TOKEN(x)         (happyInTok (x))
#else
#  define GET_ERROR_TOKEN(x)  (case x of { HappyErrorToken (Happy_GHC_Exts.I# i) -> i })
#  define MK_ERROR_TOKEN(i)   (HappyErrorToken (Happy_GHC_Exts.I# i))
#  define MK_TOKEN(x)         (HappyTerminal (x))
#endif

#if defined(HAPPY_DEBUG)
#  define DEBUG_TRACE(s)    (happyTrace (s)) Happy_Prelude.$
happyTrace string expr = Happy_System_IO_Unsafe.unsafePerformIO Happy_Prelude.$ do
    Happy_System_IO.hPutStr Happy_System_IO.stderr string
    Happy_Prelude.return expr
#else
#  define DEBUG_TRACE(s)    {- nothing -}
#endif

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

-----------------------------------------------------------------------------

-- starting the parse


happyParse :: Int# -> PD HappyAbsSyn
happyParse Int#
start_state = Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
start_state Happy_IntList
forall a. a
notHappyAtAll HappyStk HappyAbsSyn
forall a. a
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 :: Int# -> p -> Int# -> p -> HappyStk a -> PD a
happyAccept ERROR_TOK tk st sts (_ `HappyStk` ans `HappyStk` _) =
        happyReturn1 ans
happyAccept Int#
j p
tk Int#
st p
sts (HappyStk a
ans HappyStk a
_) =
        (Int# -> (PD a -> PD a) -> PD a -> PD a
forall a. Int# -> a -> a
happyTcHack Int#
j (Int# -> PD a -> PD a
forall a. Int# -> a -> a
happyTcHack Int#
st)) (a -> PD a
forall a. a -> PD a
happyReturn1 a
ans)

-----------------------------------------------------------------------------

-- Arrays only: do the next action


happyDoAction :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
i Located CmmToken
tk Int#
st =
  DEBUG_TRACE("state: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++
              ",\ttoken: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++
              ",\taction: ")
  case Int# -> HappyAction
happyDecodeAction (Int# -> Int# -> Int#
happyNextAction Int#
i Int#
st) of
    HappyAction
HappyFail             -> DEBUG_TRACE("failing.\n")
                             Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyFail Int#
i Located CmmToken
tk Int#
st
    HappyAction
HappyAccept           -> DEBUG_TRACE("accept.\n")
                             Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall {p} {p} {a}. Int# -> p -> Int# -> p -> HappyStk a -> PD a
happyAccept Int#
i Located CmmToken
tk Int#
st
    HappyReduce Int#
rule      -> DEBUG_TRACE("reduce (rule " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# rule) Happy_Prelude.++ ")")
                             (Array
  ByteOff
  (Int#
   -> Located CmmToken
   -> Int#
   -> Happy_IntList
   -> HappyStk HappyAbsSyn
   -> PD HappyAbsSyn)
happyReduceArr Array
  ByteOff
  (Int#
   -> Located CmmToken
   -> Int#
   -> Happy_IntList
   -> HappyStk HappyAbsSyn
   -> PD HappyAbsSyn)
-> ByteOff
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
forall i e. Ix i => Array i e -> i -> e
Happy_Data_Array.! (Int# -> ByteOff
Happy_GHC_Exts.I# Int#
rule)) Int#
i Located CmmToken
tk Int#
st
    HappyShift  Int#
new_state -> DEBUG_TRACE("shift, enter state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")
                             Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyShift Int#
new_state Int#
i Located CmmToken
tk Int#
st

{-# INLINE happyNextAction #-}
happyNextAction :: Int# -> Int# -> Int#
happyNextAction Int#
i Int#
st = case Int# -> Int# -> Maybe ByteOff
happyIndexActionTable Int#
i Int#
st of
  Happy_Prelude.Just (Happy_GHC_Exts.I# Int#
act) -> Int#
act
  Maybe ByteOff
Happy_Prelude.Nothing                      -> HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyDefActions Int#
st

{-# INLINE happyIndexActionTable #-}
happyIndexActionTable :: Int# -> Int# -> Maybe ByteOff
happyIndexActionTable Int#
i Int#
st
  | GTE(i, 0#), GTE(off, 0#), EQ(happyIndexOffAddr happyCheck off, i)
  -- i >= 0:   Guard against INVALID_TOK (do the default action, which ultimately errors)

  -- off >= 0: Otherwise it's a default action

  -- equality check: Ensure that the entry in the compressed array is owned by st

  = ByteOff -> Maybe ByteOff
forall a. a -> Maybe a
Happy_Prelude.Just (Int# -> ByteOff
Happy_GHC_Exts.I# (HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyTable Int#
off))
  | Bool
Happy_Prelude.otherwise
  = Maybe ByteOff
forall a. Maybe a
Happy_Prelude.Nothing
  where
    off :: Int#
off = PLUS(happyIndexOffAddr happyActOffsets st, i)

data HappyAction
  = HappyFail
  | HappyAccept
  | HappyReduce Happy_Int -- rule number

  | HappyShift Happy_Int  -- new state

  deriving ByteOff -> HappyAction -> String -> String
[HappyAction] -> String -> String
HappyAction -> String
(ByteOff -> HappyAction -> String -> String)
-> (HappyAction -> String)
-> ([HappyAction] -> String -> String)
-> Show HappyAction
forall a.
(ByteOff -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: ByteOff -> HappyAction -> String -> String
showsPrec :: ByteOff -> HappyAction -> String -> String
$cshow :: HappyAction -> String
show :: HappyAction -> String
$cshowList :: [HappyAction] -> String -> String
showList :: [HappyAction] -> String -> String
Happy_Prelude.Show

{-# INLINE happyDecodeAction #-}
happyDecodeAction :: Happy_Int -> HappyAction
happyDecodeAction :: Int# -> HappyAction
happyDecodeAction  Int#
0#                        = HappyAction
HappyFail
happyDecodeAction Int#
-1#                        = HappyAction
HappyAccept
happyDecodeAction Int#
action | LT(action, 0#)    = HappyReduce NEGATE(PLUS(action, 1#))
                         | Bool
Happy_Prelude.otherwise = Int# -> HappyAction
HappyShift MINUS(action, 1#)

{-# INLINE happyIndexGotoTable #-}
happyIndexGotoTable :: Int# -> Int# -> Int#
happyIndexGotoTable Int#
nt Int#
st = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyTable Int#
off
  where
    off :: Int#
off = PLUS(happyIndexOffAddr happyGotoOffsets st, nt)

{-# INLINE happyIndexOffAddr #-}
happyIndexOffAddr :: HappyAddr -> Happy_Int -> Happy_Int
happyIndexOffAddr :: HappyAddr -> Int# -> Int#
happyIndexOffAddr (HappyA# Addr#
arr) Int#
off =
#if __GLASGOW_HASKELL__ >= 901
  Int32# -> Int#
Happy_GHC_Exts.int32ToInt# -- qualified import because it doesn't exist on older GHC's

#endif
#ifdef WORDS_BIGENDIAN
  -- The CI of `alex` tests this code path

  (Happy_GHC_Exts.word32ToInt32# (Happy_GHC_Exts.wordToWord32# (Happy_GHC_Exts.byteSwap32# (Happy_GHC_Exts.word32ToWord# (Happy_GHC_Exts.int32ToWord32#
#endif
  (Addr# -> Int# -> Int32#
Happy_GHC_Exts.indexInt32OffAddr# Addr#
arr Int#
off)
#ifdef WORDS_BIGENDIAN
  )))))
#endif

happyIndexRuleArr :: Happy_Int -> (# Happy_Int, Happy_Int #)
happyIndexRuleArr :: Int# -> (# Int#, Int# #)
happyIndexRuleArr Int#
r = (# Int#
nt, Int#
len #)
  where
    !(Happy_GHC_Exts.I# Int#
n_starts) = ByteOff
happy_n_starts
    offs :: Int#
offs = TIMES(MINUS(r,n_starts),2#)
    nt :: Int#
nt = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyRuleArr Int#
offs
    len :: Int#
len = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyRuleArr PLUS(offs,1#)

data HappyAddr = HappyA# Happy_GHC_Exts.Addr#

-----------------------------------------------------------------------------

-- Shifting a token


happyShift :: Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyShift Int#
new_state ERROR_TOK tk st sts stk@(x `HappyStk` _) =
     -- See "Error Fixup" below

     let i = GET_ERROR_TOKEN(x) in
     DEBUG_TRACE("shifting the error token")
     happyDoAction i tk new_state (HappyCons st sts) stk

happyShift Int#
new_state Int#
i Located CmmToken
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk =
     Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
new_state (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts) (MK_TOKEN(tk) `HappyStk` stk)

-- happyReduce is specialised for the common cases.


happySpecReduce_0 :: Int#
-> HappyAbsSyn
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_0 Int#
nt HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk
     = HappyAbsSyn -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a b. a -> b -> b
happySeq HappyAbsSyn
fn (Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts) (HappyAbsSyn
fn HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
stk))

happySpecReduce_1 :: Int#
-> (HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_1 Int#
nt HappyAbsSyn -> HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
old_st sts :: Happy_IntList
sts@(HappyCons Int#
st Happy_IntList
_) (HappyAbsSyn
v1 `HappyStk` HappyStk HappyAbsSyn
stk')
     = let r :: HappyAbsSyn
r = HappyAbsSyn -> HappyAbsSyn
fn HappyAbsSyn
v1 in
       Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
happyTcHack Int#
old_st (HappyAbsSyn -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a b. a -> b -> b
happySeq HappyAbsSyn
r (Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts (HappyAbsSyn
r HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
stk')))

happySpecReduce_2 :: Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_2 Int#
nt HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
old_st
  (HappyCons Int#
_ sts :: Happy_IntList
sts@(HappyCons Int#
st Happy_IntList
_))
  (HappyAbsSyn
v1 `HappyStk` HappyAbsSyn
v2 `HappyStk` HappyStk HappyAbsSyn
stk')
     = let r :: HappyAbsSyn
r = HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
fn HappyAbsSyn
v1 HappyAbsSyn
v2 in
       Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
happyTcHack Int#
old_st (HappyAbsSyn -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a b. a -> b -> b
happySeq HappyAbsSyn
r (Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts (HappyAbsSyn
r HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
stk')))

happySpecReduce_3 :: Int#
-> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happySpecReduce_3 Int#
nt HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
old_st
  (HappyCons Int#
_ (HappyCons Int#
_ sts :: Happy_IntList
sts@(HappyCons Int#
st Happy_IntList
_)))
  (HappyAbsSyn
v1 `HappyStk` HappyAbsSyn
v2 `HappyStk` HappyAbsSyn
v3 `HappyStk` HappyStk HappyAbsSyn
stk')
     = let r :: HappyAbsSyn
r = HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
fn HappyAbsSyn
v1 HappyAbsSyn
v2 HappyAbsSyn
v3 in
       Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
happyTcHack Int#
old_st (HappyAbsSyn -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a b. a -> b -> b
happySeq HappyAbsSyn
r (Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts (HappyAbsSyn
r HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
stk')))

happyReduce :: Int#
-> Int#
-> (t -> HappyStk HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> t
-> PD HappyAbsSyn
happyReduce Int#
k Int#
nt t -> HappyStk HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts t
stk
     = case Int# -> Happy_IntList -> Happy_IntList
happyDrop MINUS(k,(1# :: Happy_Int)) sts of
         sts1 :: Happy_IntList
sts1@(HappyCons Int#
st1 Happy_IntList
_) ->
                let r :: HappyStk HappyAbsSyn
r = t -> HappyStk HappyAbsSyn
fn t
stk in -- it doesn't hurt to always seq here...

                Int#
st Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
`happyTcHack` HappyStk HappyAbsSyn -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a b. a -> b -> b
happyDoSeq HappyStk HappyAbsSyn
r (Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st1 Happy_IntList
sts1 HappyStk HappyAbsSyn
r)

happyMonadReduce :: Int#
-> Int#
-> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonadReduce Int#
k Int#
nt HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
fn Int#
j Located CmmToken
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk =
      case Int# -> Happy_IntList -> Happy_IntList
happyDrop Int#
k (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts) of
        sts1 :: Happy_IntList
sts1@(HappyCons Int#
st1 Happy_IntList
_) ->
          let drop_stk :: HappyStk HappyAbsSyn
drop_stk = Int# -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall {a}. Int# -> HappyStk a -> HappyStk a
happyDropStk Int#
k HappyStk HappyAbsSyn
stk in
          Int#
j Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
`happyTcHack` PD HappyAbsSyn -> (HappyAbsSyn -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen1 (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
fn HappyStk HappyAbsSyn
stk Located CmmToken
tk)
                                     (\HappyAbsSyn
r -> Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st1 Happy_IntList
sts1 (HappyAbsSyn
r HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
drop_stk))

happyMonad2Reduce :: Int#
-> Int#
-> (HappyStk HappyAbsSyn -> t -> PD HappyAbsSyn)
-> Int#
-> t
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyMonad2Reduce Int#
k Int#
nt HappyStk HappyAbsSyn -> t -> PD HappyAbsSyn
fn Int#
j t
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk =
      case Int# -> Happy_IntList -> Happy_IntList
happyDrop Int#
k (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts) of
        sts1 :: Happy_IntList
sts1@(HappyCons Int#
st1 Happy_IntList
_) ->
          let drop_stk :: HappyStk HappyAbsSyn
drop_stk = Int# -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall {a}. Int# -> HappyStk a -> HappyStk a
happyDropStk Int#
k HappyStk HappyAbsSyn
stk
              off :: Int#
off = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyGotoOffsets Int#
st1
              off_i :: Int#
off_i = PLUS(off, nt)
              new_state :: Int#
new_state = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyTable Int#
off_i
          in
            Int#
j Int# -> PD HappyAbsSyn -> PD HappyAbsSyn
forall a. Int# -> a -> a
`happyTcHack` PD HappyAbsSyn -> (HappyAbsSyn -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall a b. PD a -> (a -> PD b) -> PD b
happyThen1 (HappyStk HappyAbsSyn -> t -> PD HappyAbsSyn
fn HappyStk HappyAbsSyn
stk t
tk)
                                       (\HappyAbsSyn
r -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyNewToken Int#
new_state Happy_IntList
sts1 (HappyAbsSyn
r HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
forall a. a -> HappyStk a -> HappyStk a
`HappyStk` HappyStk HappyAbsSyn
drop_stk))

happyDrop :: Int# -> Happy_IntList -> Happy_IntList
happyDrop Int#
0# Happy_IntList
l               = Happy_IntList
l
happyDrop Int#
n  (HappyCons Int#
_ Happy_IntList
t) = Int# -> Happy_IntList -> Happy_IntList
happyDrop MINUS(n,(1# :: Happy_Int)) t

happyDropStk :: Int# -> HappyStk a -> HappyStk a
happyDropStk Int#
0# HappyStk a
l                 = HappyStk a
l
happyDropStk Int#
n  (a
x `HappyStk` HappyStk a
xs) = Int# -> HappyStk a -> HappyStk a
happyDropStk MINUS(n,(1#::Happy_Int)) xs

-----------------------------------------------------------------------------

-- Moving to a new state after a reduction


happyGoto :: Int#
-> Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyGoto Int#
nt Int#
j Located CmmToken
tk Int#
st =
   DEBUG_TRACE(", goto state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")
   Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
j Located CmmToken
tk Int#
new_state
  where new_state :: Int#
new_state = Int# -> Int# -> Int#
happyIndexGotoTable Int#
nt Int#
st

{- Note [Error recovery]
~~~~~~~~~~~~~~~~~~~~~~~~
When there is no applicable action for the current lookahead token `tk`,
happy enters error recovery mode. Depending on whether the grammar file
declares the two action form `%error { abort } { report }` for
    Resumptive Error Handling,
it works in one (not resumptive) or two phases (resumptive):

 1. Fixup mode:
    Try to see if there is an action for the error token ERROR_TOK. If there
    is, do *not* emit an error and pretend instead that an `error` token was
    inserted.
    When there is no ERROR_TOK action, report an error.

    In non-resumptive error handling, calling the single error handler
    (e.g. `happyError`) will throw an exception and abort the parser.
    However, in resumptive error handling we enter *error resumption mode*.

 2. Error resumption mode:
    After reporting the error (with `report`), happy will attempt to find
    a good state stack to resume parsing in.
    For each candidate stack, it discards input until one of the candidates
    resumes (i.e. shifts the current input).
    If no candidate resumes before the end of input, resumption failed and
    calls the `abort` function, to much the same effect as in non-resumptive
    error handling.

    Candidate stacks are declared by the grammar author using the special
    `catch` terminal and called "catch frames".
    This mechanism is described in detail in Note [happyResume].

The `catch` resumption mechanism (2) is what usually is associated with
`error` in `bison` or `menhir`. Since `error` is used for the Fixup mechanism
(1) above, we call the corresponding token `catch`.
Furthermore, in constrast to `bison`, our implementation of `catch`
non-deterministically considers multiple catch frames on the stack for
resumption (See Note [Multiple catch frames]).

Note [happyResume]
~~~~~~~~~~~~~~~~~~
`happyResume` implements the resumption mechanism from Note [Error recovery].
It is best understood by example. Consider

Exp :: { String }
Exp : '1'                { "1" }
    | catch              { "catch" }
    | Exp '+' Exp %shift { $1 Happy_Prelude.++ " + " Happy_Prelude.++ $3 } -- %shift: associate 1 + 1 + 1 to the right
    | '(' Exp ')'        { "(" Happy_Prelude.++ $2 Happy_Prelude.++ ")" }

The idea of the use of `catch` here is that upon encountering a parse error
during expression parsing, we can gracefully degrade using the `catch` rule,
still producing a partial syntax tree and keep on parsing to find further
syntax errors.

Let's trace the parser state for input 11+1, which will error out after shifting 1.
After shifting, we have the following item stack (growing downwards and omitting
transitive closure items):

  State 0: %start_parseExp -> . Exp
  State 5: Exp -> '1' .

(Stack as a list of state numbers: [5,0].)
As Note [Error recovery] describes, we will first try Fixup mode.
That fails because no production can shift the `error` token.
Next we try Error resumption mode. This works as follows:

  1. Pop off the item stack until we find an item that can shift the `catch`
     token. (Implemented in `pop_items`.)
       * State 5 cannot shift catch. Pop.
       * State 0 can shift catch, which would transition into
          State 4: Exp -> catch .
     So record the *stack* `[4,0]` after doing the shift transition.
     We call this a *catch frame*, where the top is a *catch state*,
     corresponding to an item in which we just shifted a `catch` token.
     There can be multiple such catch stacks, see Note [Multiple catch frames].

  2. Discard tokens from the input until the lookahead can be shifted in one
     of the catch stacks. (Implemented in `discard_input_until_exp` and
     `some_catch_state_shifts`.)
       * We cannot shift the current lookahead '1' in state 4, so we discard
       * We *can* shift the next lookahead '+' in state 4, but only after
         reducing, which pops State 4 and goes to State 3:
           State 3: %start_parseExp -> Exp .
                    Exp -> Exp . '+' Exp
         Here we can shift '+'.
     As you can see, to implement this machinery we need to simulate
     the operation of the LALR automaton, especially reduction
     (`happySimulateReduce`).

Note [Multiple catch frames]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For fewer spurious error messages, it can be beneficial to trace multiple catch
items. Consider

Exp : '1'
    | catch
    | Exp '+' Exp %shift
    | '(' Exp ')'

Let's trace the parser state for input (;+1, which will error out after shifting (.
After shifting, we have the following item stack (growing downwards):

  State 0: %start_parseExp -> . Exp
  State 6: Exp -> '(' . Exp ')'

Upon error, we want to find items in the stack which can shift a catch token.
Note that both State 0 and State 6 can shift a catch token, transitioning into
  State 4: Exp -> catch .
Hence we record the catch frames `[4,6,0]` and `[4,0]` for possible resumption.

Which catch frame do we pick for resumption?
Note that resuming catch frame `[4,0]` will parse as "catch+1", whereas
resuming the innermost frame `[4,6,0]` corresponds to parsing "(catch+1".
The latter would keep discarding input until the closing ')' is found.
So we will discard + and 1, leading to a spurious syntax error at the end of
input, aborting the parse and never producing a partial syntax tree. Bad!

It is far preferable to resume with catch frame `[4,0]`, where we can resume
successfully on input +, so that is what we do.

In general, we pick the catch frame for resumption that discards the least
amount of input for a successful shift, preferring the topmost such catch frame.
-}

-- happyFail :: Happy_Int -> Token -> Happy_Int -> _

-- This function triggers Note [Error recovery].

-- If the current token is ERROR_TOK, phase (1) has failed and we might try

-- phase (2).

happyFail :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyFail ERROR_TOK = happyFixupFailed
happyFail Int#
i         = Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyTryFixup Int#
i

-- Enter Error Fixup (see Note [Error recovery]):

-- generate an error token, save the old token and carry on.

-- When a `happyShift` accepts the error token, we will pop off the error token

-- to resume parsing with the current lookahead `i`.

happyTryFixup :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyTryFixup Int#
i Located CmmToken
tk Int#
action Happy_IntList
sts HappyStk HappyAbsSyn
stk =
  DEBUG_TRACE("entering `error` fixup.\n")
  Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction ERROR_TOK tk action sts (MK_ERROR_TOKEN(i) `HappyStk` stk)
  -- NB: `happyShift` will simply pop the error token and carry on with

  --     `tk`. Hence we don't change `tk` in the call here


-- See Note [Error recovery], phase (2).

-- Enter resumption mode after reporting the error by calling `happyResume`.

happyFixupFailed :: Located CmmToken
-> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
happyFixupFailed Located CmmToken
tk Int#
st Happy_IntList
sts (HappyAbsSyn
x `HappyStk` HappyStk HappyAbsSyn
stk) =
  let i :: Int#
i = GET_ERROR_TOKEN(x) in
  DEBUG_TRACE("`error` fixup failed.\n")
  let resume :: PD HappyAbsSyn
resume   = Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyResume Int#
i Located CmmToken
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk
      expected :: [String]
expected = Int# -> Happy_IntList -> [String]
happyExpectedTokens Int#
st Happy_IntList
sts in
  Int#
-> Located CmmToken -> [String] -> PD HappyAbsSyn -> PD HappyAbsSyn
forall {a}. Int# -> Located CmmToken -> [String] -> PD a -> PD a
happyReport Int#
i Located CmmToken
tk [String]
expected PD HappyAbsSyn
resume

-- happyResume :: Happy_Int -> Token -> Happy_Int -> _

-- See Note [happyResume]

happyResume :: Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyResume Int#
i Located CmmToken
tk Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk = [(Happy_IntList, HappyStk HappyAbsSyn)]
-> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
pop_items [] Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk
  where
    !(Happy_GHC_Exts.I# Int#
n_starts) = ByteOff
happy_n_starts   -- this is to test whether we have a start token

    !(Happy_GHC_Exts.I# Int#
eof_i) = ByteOff
happy_n_terms ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Happy_Prelude.- ByteOff
1   -- this is the token number of the EOF token

    happy_list_to_list :: Happy_IntList -> [Happy_Prelude.Int]
    happy_list_to_list :: Happy_IntList -> [ByteOff]
happy_list_to_list (HappyCons Int#
st Happy_IntList
sts)
      | LT(st, n_starts)
      = [(Int# -> ByteOff
Happy_GHC_Exts.I# Int#
st)]
      | Bool
Happy_Prelude.otherwise
      = (Int# -> ByteOff
Happy_GHC_Exts.I# Int#
st) ByteOff -> [ByteOff] -> [ByteOff]
forall a. a -> [a] -> [a]
: Happy_IntList -> [ByteOff]
happy_list_to_list Happy_IntList
sts

    -- See (1) of Note [happyResume]

    pop_items :: [(Happy_IntList, HappyStk HappyAbsSyn)]
-> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
pop_items [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames Int#
st Happy_IntList
sts HappyStk HappyAbsSyn
stk
      | LT(st, n_starts)
      = DEBUG_TRACE("reached start state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", ")
        if [(Happy_IntList, HappyStk HappyAbsSyn)] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
Happy_Prelude.null [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames_new
          then DEBUG_TRACE("no resumption.\n")
               PD HappyAbsSyn
forall a. PD a
happyAbort
          else DEBUG_TRACE("now discard input, trying to anchor in states " Happy_Prelude.++ Happy_Prelude.show (Happy_Prelude.map (happy_list_to_list . Happy_Prelude.fst) (Happy_Prelude.reverse catch_frames_new)) Happy_Prelude.++ ".\n")
               Int#
-> Located CmmToken
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> PD HappyAbsSyn
discard_input_until_exp Int#
i Located CmmToken
tk ([(Happy_IntList, HappyStk HappyAbsSyn)]
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
forall a. [a] -> [a]
Happy_Prelude.reverse [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames_new)
      | (HappyCons Int#
st1 Happy_IntList
sts1) <- Happy_IntList
sts, HappyAbsSyn
_ `HappyStk` HappyStk HappyAbsSyn
stk1 <- HappyStk HappyAbsSyn
stk
      = [(Happy_IntList, HappyStk HappyAbsSyn)]
-> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
pop_items [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames_new Int#
st1 Happy_IntList
sts1 HappyStk HappyAbsSyn
stk1
      where
        !catch_frames_new :: [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames_new
          | HappyShift Int#
new_state <- Int# -> HappyAction
happyDecodeAction (Int# -> Int# -> Int#
happyNextAction CATCH_TOK st)
          , DEBUG_TRACE("can shift catch token in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", into state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")
            [(Happy_IntList, HappyStk HappyAbsSyn)] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
Happy_Prelude.null (((Happy_IntList, HappyStk HappyAbsSyn) -> Bool)
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
forall a. (a -> Bool) -> [a] -> [a]
Happy_Prelude.filter (\(HappyCons Int#
_ (HappyCons Int#
h Happy_IntList
_),HappyStk HappyAbsSyn
_) -> EQ(st,h)) catch_frames)
          = (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
new_state (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts), MK_ERROR_TOKEN(i) `HappyStk` stk):catch_frames -- MK_ERROR_TOKEN(i) is just some dummy that should not be accessed by user code

          | Bool
Happy_Prelude.otherwise
          = DEBUG_TRACE("already shifted or can't shift catch in " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ "\n")
            [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames

    -- See (2) of Note [happyResume]

    discard_input_until_exp :: Int#
-> Located CmmToken
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> PD HappyAbsSyn
discard_input_until_exp Int#
i Located CmmToken
tk [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames
      | Happy_Prelude.Just (HappyCons Int#
st (HappyCons Int#
catch_st Happy_IntList
sts), HappyStk HappyAbsSyn
catch_frame) <- Int#
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> Maybe (Happy_IntList, HappyStk HappyAbsSyn)
forall {b}.
Int# -> [(Happy_IntList, b)] -> Maybe (Happy_IntList, b)
some_catch_state_shifts Int#
i [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames
      = DEBUG_TRACE("found expected token in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ " after shifting from " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# catch_st) Happy_Prelude.++ ": " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ "\n")
        Int#
-> Located CmmToken
-> Int#
-> Happy_IntList
-> HappyStk HappyAbsSyn
-> PD HappyAbsSyn
happyDoAction Int#
i Located CmmToken
tk Int#
st (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
catch_st Happy_IntList
sts) HappyStk HappyAbsSyn
catch_frame
      | EQ(i,eof_i) -- is i EOF?

      = DEBUG_TRACE("reached EOF, cannot resume. abort parse :(\n")
        PD HappyAbsSyn
forall a. PD a
happyAbort
      | Bool
Happy_Prelude.otherwise
      = DEBUG_TRACE("discard token " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ "\n")
        (Located CmmToken -> PD HappyAbsSyn)
-> (Int# -> Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
forall {a}.
(Located CmmToken -> PD a)
-> (Int# -> Located CmmToken -> PD a) -> PD a
happyLex (\Located CmmToken
eof_tk -> Int#
-> Located CmmToken
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> PD HappyAbsSyn
discard_input_until_exp Int#
eof_i Located CmmToken
eof_tk [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames) -- eof

                 (\Int#
i Located CmmToken
tk   -> Int#
-> Located CmmToken
-> [(Happy_IntList, HappyStk HappyAbsSyn)]
-> PD HappyAbsSyn
discard_input_until_exp Int#
i Located CmmToken
tk [(Happy_IntList, HappyStk HappyAbsSyn)]
catch_frames)         -- not eof


    some_catch_state_shifts :: Int# -> [(Happy_IntList, b)] -> Maybe (Happy_IntList, b)
some_catch_state_shifts Int#
_ [] = DEBUG_TRACE("no catch state could shift.\n") Happy_Prelude.Nothing
    some_catch_state_shifts Int#
i catch_frames :: [(Happy_IntList, b)]
catch_frames@(((HappyCons Int#
st Happy_IntList
sts),b
_):[(Happy_IntList, b)]
_) = Int#
-> Int#
-> Happy_IntList
-> [(Happy_IntList, b)]
-> Maybe (Happy_IntList, b)
try_head Int#
i Int#
st Happy_IntList
sts [(Happy_IntList, b)]
catch_frames
      where
        try_head :: Int#
-> Int#
-> Happy_IntList
-> [(Happy_IntList, b)]
-> Maybe (Happy_IntList, b)
try_head Int#
i Int#
st Happy_IntList
sts [(Happy_IntList, b)]
catch_frames = -- PRECONDITION: head catch_frames = (HappyCons st sts)

          DEBUG_TRACE("trying token " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ " in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ": ")
          case Int# -> HappyAction
happyDecodeAction (Int# -> Int# -> Int#
happyNextAction Int#
i Int#
st) of
            HappyAction
HappyFail     -> DEBUG_TRACE("fail.\n")   some_catch_state_shifts i (Happy_Prelude.tail catch_frames)
            HappyAction
HappyAccept   -> DEBUG_TRACE("accept.\n") Happy_Prelude.Just (Happy_Prelude.head catch_frames)
            HappyShift Int#
_  -> DEBUG_TRACE("shift.\n")  Happy_Prelude.Just (Happy_Prelude.head catch_frames)
            HappyReduce Int#
r -> case Int# -> Int# -> Happy_IntList -> Happy_IntList
happySimulateReduce Int#
r Int#
st Happy_IntList
sts of
              (HappyCons Int#
st1 Happy_IntList
sts1) -> Int#
-> Int#
-> Happy_IntList
-> [(Happy_IntList, b)]
-> Maybe (Happy_IntList, b)
try_head Int#
i Int#
st1 Happy_IntList
sts1 [(Happy_IntList, b)]
catch_frames

happySimulateReduce :: Int# -> Int# -> Happy_IntList -> Happy_IntList
happySimulateReduce Int#
r Int#
st Happy_IntList
sts =
  DEBUG_TRACE("simulate reduction of rule " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# r) Happy_Prelude.++ ", ")
  let (# Int#
nt, Int#
len #) = Int# -> (# Int#, Int# #)
happyIndexRuleArr Int#
r in
  DEBUG_TRACE("nt " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# nt) Happy_Prelude.++ ", len: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# len) Happy_Prelude.++ ", new_st ")
  let !(sts1 :: Happy_IntList
sts1@(HappyCons Int#
st1 Happy_IntList
_)) = Int# -> Happy_IntList -> Happy_IntList
happyDrop Int#
len (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
st Happy_IntList
sts)
      new_st :: Int#
new_st = Int# -> Int# -> Int#
happyIndexGotoTable Int#
nt Int#
st1 in
  DEBUG_TRACE(Happy_Prelude.show (Happy_GHC_Exts.I# new_st) Happy_Prelude.++ ".\n")
  (Int# -> Happy_IntList -> Happy_IntList
HappyCons Int#
new_st Happy_IntList
sts1)

happyTokenToString :: Happy_Prelude.Int -> Happy_Prelude.String
happyTokenToString :: ByteOff -> String
happyTokenToString ByteOff
i = [String]
happyTokenStrings [String] -> ByteOff -> String
forall a. HasCallStack => [a] -> ByteOff -> a
Happy_Prelude.!! (ByteOff
i ByteOff -> ByteOff -> ByteOff
forall a. Num a => a -> a -> a
Happy_Prelude.- ByteOff
2) -- 2: errorTok, catchTok


happyExpectedTokens :: Happy_Int -> Happy_IntList -> [Happy_Prelude.String]
-- Upon a parse error, we want to suggest tokens that are expected in that

-- situation. This function computes such tokens.

-- It works by examining the top of the state stack.

-- For every token number that does a shift transition, record that token number.

-- For every token number that does a reduce transition, simulate that reduction

-- on the state state stack and repeat.

-- The recorded token numbers are then formatted with 'happyTokenToString' and

-- returned.

happyExpectedTokens :: Int# -> Happy_IntList -> [String]
happyExpectedTokens Int#
st Happy_IntList
sts =
  DEBUG_TRACE("constructing expected tokens.\n")
  (ByteOff -> String) -> [ByteOff] -> [String]
forall a b. (a -> b) -> [a] -> [b]
Happy_Prelude.map ByteOff -> String
happyTokenToString (Int# -> Happy_IntList -> [ByteOff] -> [ByteOff]
search_shifts Int#
st Happy_IntList
sts [])
  where
    search_shifts :: Int# -> Happy_IntList -> [ByteOff] -> [ByteOff]
search_shifts Int#
st Happy_IntList
sts [ByteOff]
shifts = ((ByteOff, ByteOff) -> [ByteOff] -> [ByteOff])
-> [ByteOff] -> [(ByteOff, ByteOff)] -> [ByteOff]
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
Happy_Prelude.foldr (Int#
-> Happy_IntList -> (ByteOff, ByteOff) -> [ByteOff] -> [ByteOff]
add_action Int#
st Happy_IntList
sts) [ByteOff]
shifts (Int# -> [(ByteOff, ByteOff)]
distinct_actions Int#
st)
    add_action :: Int#
-> Happy_IntList -> (ByteOff, ByteOff) -> [ByteOff] -> [ByteOff]
add_action Int#
st Happy_IntList
sts (Happy_GHC_Exts.I# Int#
i, Happy_GHC_Exts.I# Int#
act) [ByteOff]
shifts =
      DEBUG_TRACE("found action in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", input " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ ", " Happy_Prelude.++ Happy_Prelude.show (happyDecodeAction act) Happy_Prelude.++ "\n")
      case Int# -> HappyAction
happyDecodeAction Int#
act of
        HappyAction
HappyFail     -> [ByteOff]
shifts
        HappyAction
HappyAccept   -> [ByteOff]
shifts -- This would always be %eof or error... Not helpful

        HappyShift Int#
_  -> ByteOff -> [ByteOff] -> [ByteOff]
forall a. Ord a => a -> [a] -> [a]
Happy_Prelude.insert (Int# -> ByteOff
Happy_GHC_Exts.I# Int#
i) [ByteOff]
shifts
        HappyReduce Int#
r -> case Int# -> Int# -> Happy_IntList -> Happy_IntList
happySimulateReduce Int#
r Int#
st Happy_IntList
sts of
          (HappyCons Int#
st1 Happy_IntList
sts1) -> Int# -> Happy_IntList -> [ByteOff] -> [ByteOff]
search_shifts Int#
st1 Happy_IntList
sts1 [ByteOff]
shifts
    distinct_actions :: Int# -> [(ByteOff, ByteOff)]
distinct_actions Int#
st
      -- The (token number, action) pairs of all actions in the given state

      = ((-ByteOff
1), (Int# -> ByteOff
Happy_GHC_Exts.I# (HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyDefActions Int#
st)))
      (ByteOff, ByteOff) -> [(ByteOff, ByteOff)] -> [(ByteOff, ByteOff)]
forall a. a -> [a] -> [a]
: [ (ByteOff
i, ByteOff
act) | ByteOff
i <- [ByteOff
begin_i..ByteOff
happy_n_terms], ByteOff
act <- Int# -> ByteOff -> [ByteOff]
get_act Int#
row_off ByteOff
i ]
      where
        row_off :: Int#
row_off = HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyActOffsets Int#
st
        begin_i :: ByteOff
begin_i = ByteOff
2 -- +2: errorTok,catchTok

    get_act :: Int# -> ByteOff -> [ByteOff]
get_act Int#
off (Happy_GHC_Exts.I# Int#
i) -- happyIndexActionTable with cached row offset

      | let off_i :: Int#
off_i = PLUS(off,i)
      , GTE(off_i,0#)
      , EQ(happyIndexOffAddr happyCheck off_i,i)
      = [(Int# -> ByteOff
Happy_GHC_Exts.I# (HappyAddr -> Int# -> Int#
happyIndexOffAddr HappyAddr
happyTable Int#
off_i))]
      | Bool
Happy_Prelude.otherwise
      = []

-- Internal happy errors:


notHappyAtAll :: a
notHappyAtAll :: forall a. a
notHappyAtAll = String -> a
forall a. HasCallStack => String -> a
Happy_Prelude.error String
"Internal Happy parser panic. This is not supposed to happen! Please open a bug report at https://github.com/haskell/happy/issues.\n"

-----------------------------------------------------------------------------

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


happyTcHack :: Happy_Int -> a -> a
happyTcHack :: forall a. Int# -> a -> a
happyTcHack Int#
x a
y = a
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 :: forall a b. a -> b -> b
happyDoSeq   a
a b
b = a
a a -> b -> b
forall a b. a -> b -> b
`Happy_GHC_Exts.seq` b
b
happyDontSeq :: forall a b. a -> b -> b
happyDontSeq a
a b
b = 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.