content: {-# LANGUAGE BangPatterns #-}
  {-# LANGUAGE MagicHash #-}
  {-# LANGUAGE UnboxedTuples #-}
  
  import GHC.Exts
  import GHC.Word (Word8(..), Word16(..), Word32(..))
  
  -- We expect these ifs to be rewritten into core switches. Then they
  -- will become C-- switches possibly after ifs again. Either way, C--
  -- switches only supported native comparisons before, so this tests that
  -- non-native ones work.
  
  main :: IO ()
  main = do
    let W8# five = 5
    switch8 five
    let W16# five = 5
    switch16 five
    let W32# five = 5
    switch32 five
  
  {-# NOINLINE switch8 #-}
  switch8 :: Word8# -> IO ()
  switch8 n =
      if isTrue# (n `eqWord8#` three)
      then putStrLn "Word8 is 3"
      else putStrLn "Word8 is not 3"
    where
        W8# three = 3
  
  {-# NOINLINE switch16 #-}
  switch16 :: Word16# -> IO ()
  switch16 n =
      if isTrue# (n `eqWord16#` three)
      then putStrLn "Word16 is 3"
      else putStrLn "Word16 is not 3"
    where
        W16# three = 3
  
  {-# NOINLINE switch32 #-}
  switch32 :: Word32# -> IO ()
  switch32 n =
      if isTrue# (n `eqWord32#` three)
      then putStrLn "Word32 is 3"
      else putStrLn "Word32 is not 3"
    where
        W32# three = 3
  