-- | Various utilities used in generating assembler.
--
-- These are used not only by the native code generator, but also by the
-- "DriverPipeline".
module AsmUtils
    ( sectionType
    ) where

import GhcPrelude

import GHC.Platform
import Outputable

-- | Generate a section type (e.g. @\@progbits@). See #13937.
sectionType :: String -- ^ section type
            -> SDoc   -- ^ pretty assembler fragment
sectionType :: String -> SDoc
sectionType String
ty = (Platform -> SDoc) -> SDoc
sdocWithPlatform ((Platform -> SDoc) -> SDoc) -> (Platform -> SDoc) -> SDoc
forall a b. (a -> b) -> a -> b
$ \Platform
platform ->
    case Platform -> Arch
platformArch Platform
platform of
      ArchARM{} -> Char -> SDoc
char Char
'%' SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
ty
      Arch
_         -> Char -> SDoc
char Char
'@' SDoc -> SDoc -> SDoc
<> String -> SDoc
text String
ty