content: {-# LANGUAGE MagicHash #-}
  
  import GHC.Exts hiding
    ( (+#)
    , (-#)
    , (*#)
    )
  
  import GHC.Word
  import GHC.Int
  
  (+&) = plusWord8#
  (-&) = subWord8#
  (*&) = timesWord8#
  
  (+#) = plusInt8#
  (-#) = subInt8#
  (*#) = timesInt8#
  
  {-# NOINLINE testsW #-}
  -- NOINLINE otherwise basic constant folding rules (without
  -- variables) are applied
  testsW :: Word8# -> Word8# -> [Word8]
  testsW x y =
     [ W8# (w43 +& (w37 +& x))
     , W8# (w43 +& (w37 -& x))
     , W8# (w43 +& (x -& w37))
     , W8# (w43 -& (w37 +& x))
     , W8# (w43 -& (w37 -& x))
     , W8# (w43 -& (x -& w37))
     , W8# ((w43 +& x) -& w37)
     , W8# ((x +& w43) -& w37)
     , W8# ((w43 -& x) -& w37)
     , W8# ((x -& w43) -& w37)
  
     , W8# ((x +& w43) +& (y +& w37))
     , W8# ((x +& w43) +& (y -& w37))
     , W8# ((x +& w43) +& (w37 -& y))
     , W8# ((x -& w43) +& (w37 -& y))
     , W8# ((x -& w43) +& (y -& w37))
     , W8# ((w43 -& x) +& (w37 -& y))
     , W8# ((w43 -& x) +& (y -& w37))
     ]
    where
     W8# w37 = 37
     W8# w43 = 43
  
  {-# NOINLINE testsI #-}
  testsI :: Int8# -> Int8# -> [Int8]
  testsI x y =
     [ I8# (i43 +# (i37 +# x))
     , I8# (i43 +# (i37 -# x))
     , I8# (i43 +# (x -# i37))
     , I8# (i43 -# (i37 +# x))
     , I8# (i43 -# (i37 -# x))
     , I8# (i43 -# (x -# i37))
     , I8# ((i43 +# x) -# i37)
     , I8# ((x +# i43) -# i37)
     , I8# ((i43 -# x) -# i37)
     , I8# ((x -# i43) -# i37)
  
     , I8# ((x +# i43) +# (y +# i37))
     , I8# ((x +# i43) +# (y -# i37))
     , I8# ((x +# i43) +# (i37 -# y))
     , I8# ((x -# i43) +# (i37 -# y))
     , I8# ((x -# i43) +# (y -# i37))
     , I8# ((i43 -# x) +# (i37 -# y))
     , I8# ((i43 -# x) +# (y -# i37))
  
     , I8# ((x +# i43) -# (y +# i37))
     , I8# ((x +# i43) -# (y -# i37))
     , I8# ((x +# i43) -# (i37 -# y))
     , I8# ((x -# i43) -# (y +# i37))
     , I8# ((i43 -# x) -# (i37 +# y))
     , I8# ((x -# i43) -# (y -# i37))
     , I8# ((x -# i43) -# (i37 -# y))
     , I8# ((i43 -# x) -# (y -# i37))
     , I8# ((i43 -# x) -# (i37 -# y))
  
     , I8# (i43 *# (i37 *# y))
     , I8# (i43 *# (y *# i37))
     , I8# ((i43 *# x) *# (y *# i37))
  
     , I8# (i43 *# (i37 +# y))
     , I8# (i43 *# (i37 -# y))
     , I8# (i43 *# (y -# i37))
  
     , I8# (x +# x)
     , I8# ((i43 *# x) +# x)
     , I8# (x +# (i43 *# x))
     , I8# ((i43 *# x) +# (i37 *# x))
     , I8# ((i43 *# x) +# (x *# i37))
  
     , I8# (x -# x)
     , I8# ((i43 *# x) -# x)
     , I8# (x -# (i43 *# x))
     , I8# ((i43 *# x) -# (i37 *# x))
     , I8# ((i43 *# x) -# (x *# i37))
  
     , I8# (x +# (i37 +# y))
     , I8# (x +# (y +# i37))
     , I8# (x +# (i37 -# y))
     , I8# (x +# (y -# i37))
     , I8# (x -# (i37 +# y))
     , I8# (x -# (y +# i37))
     , I8# (x -# (i37 -# y))
     , I8# (x -# (y -# i37))
     , I8# ((i37 +# y) -# x)
     , I8# ((y +# i37) -# x)
     , I8# ((i37 -# y) -# x)
     , I8# ((y -# i37) -# x)
  
     , I8# (y *# y)
     ]
    where
     I8# i37 = 37
     I8# i43 = 43
  
  
  main :: IO ()
  main = do
     print (testsW w7 w13)
     print (testsI i7 i13)
    where
     W8# w7 = 7
     W8# w13 = 13
     I8# i7 = 7
     I8# i13 = 13
  