{-# LANGUAGE LambdaCase #-}
module Text.LLVM.Triple.Print
( archName
, vendorName
, osName
, envName
, objFmtName
, printTriple
) where
import qualified Data.List as List
import Text.LLVM.Triple.AST
archName :: Arch -> String
archName :: Arch -> String
archName =
\case
Arch
UnknownArch -> String
"unknown"
Arch
AArch64 -> String
"aarch64"
Arch
AArch64_32 -> String
"aarch64_32"
Arch
AArch64_BE -> String
"aarch64_be"
Arch
AMDGCN -> String
"amdgcn"
Arch
AMDIL64 -> String
"amdil64"
Arch
AMDIL -> String
"amdil"
Arch
ARC -> String
"arc"
Arch
ARM -> String
"arm"
Arch
ARMEB -> String
"armeb"
Arch
AVR -> String
"avr"
Arch
BPFEB -> String
"bpfeb"
Arch
BPFEL -> String
"bpfel"
Arch
CSKY -> String
"csky"
Arch
DXIL -> String
"dxil"
Arch
Hexagon -> String
"hexagon"
Arch
HSAIL64 -> String
"hsail64"
Arch
HSAIL -> String
"hsail"
Arch
Kalimba -> String
"kalimba"
Arch
Lanai -> String
"lanai"
Arch
Le32 -> String
"le32"
Arch
Le64 -> String
"le64"
Arch
LoongArch32 -> String
"loongarch32"
Arch
LoongArch64 -> String
"loongarch64"
Arch
M68k -> String
"m68k"
Arch
MIPS64 -> String
"mips64"
Arch
MIPS64EL -> String
"mips64el"
Arch
MIPS -> String
"mips"
Arch
MIPSEL -> String
"mipsel"
Arch
MSP430 -> String
"msp430"
Arch
NVPTX64 -> String
"nvptx64"
Arch
NVPTX -> String
"nvptx"
Arch
PPC64 -> String
"powerpc64"
Arch
PPC64LE -> String
"powerpc64le"
Arch
PPC -> String
"powerpc"
Arch
PPCLE -> String
"powerpcle"
Arch
R600 -> String
"r600"
Arch
RenderScript32 -> String
"renderscript32"
Arch
RenderScript64 -> String
"renderscript64"
Arch
RISCV32 -> String
"riscv32"
Arch
RISCV64 -> String
"riscv64"
Arch
SHAVE -> String
"shave"
Arch
Sparc -> String
"sparc"
Arch
SparcEL -> String
"sparcel"
Arch
Sparcv9 -> String
"sparcv9"
Arch
SPIR64 -> String
"spir64"
Arch
SPIR -> String
"spir"
Arch
SPIRV32 -> String
"spirv32"
Arch
SPIRV64 -> String
"spirv64"
Arch
SystemZ -> String
"s390x"
Arch
TCE -> String
"tce"
Arch
TCELE -> String
"tcele"
Arch
Thumb -> String
"thumb"
Arch
ThumbEB -> String
"thumbeb"
Arch
VE -> String
"ve"
Arch
Wasm32 -> String
"wasm32"
Arch
Wasm64 -> String
"wasm64"
Arch
X86 -> String
"i386"
Arch
X86_64 -> String
"x86_64"
Arch
XCore -> String
"xcore"
vendorName :: Vendor -> String
vendorName :: Vendor -> String
vendorName =
\case
Vendor
UnknownVendor -> String
"unknown"
Vendor
AMD -> String
"amd"
Vendor
Apple -> String
"apple"
Vendor
CSR -> String
"csr"
Vendor
Freescale -> String
"fsl"
Vendor
IBM -> String
"ibm"
Vendor
ImaginationTechnologies -> String
"img"
Vendor
Mesa -> String
"mesa"
Vendor
MipsTechnologies -> String
"mti"
Vendor
Myriad -> String
"myriad"
Vendor
NVIDIA -> String
"nvidia"
Vendor
OpenEmbedded -> String
"oe"
Vendor
PC -> String
"pc"
Vendor
SCEI -> String
"scei"
Vendor
SUSE -> String
"suse"
osName :: OS -> String
osName :: OS -> String
osName =
\case
OS
UnknownOS -> String
"unknown"
OS
AIX -> String
"aix"
OS
AMDHSA -> String
"amdhsa"
OS
AMDPAL -> String
"amdpal"
OS
Ananas -> String
"ananas"
OS
CUDA -> String
"cuda"
OS
CloudABI -> String
"cloudabi"
OS
Contiki -> String
"contiki"
OS
Darwin -> String
"darwin"
OS
DragonFly -> String
"dragonfly"
OS
DriverKit -> String
"driverkit"
OS
ELFIAMCU -> String
"elfiamcu"
OS
Emscripten -> String
"emscripten"
OS
FreeBSD -> String
"freebsd"
OS
Fuchsia -> String
"fuchsia"
OS
Haiku -> String
"haiku"
OS
HermitCore -> String
"hermit"
OS
Hurd -> String
"hurd"
OS
IOS -> String
"ios"
OS
KFreeBSD -> String
"kfreebsd"
OS
Linux -> String
"linux"
OS
Lv2 -> String
"lv2"
OS
MacOSX -> String
"macosx"
OS
Mesa3D -> String
"mesa3d"
OS
Minix -> String
"minix"
OS
NVCL -> String
"nvcl"
OS
NaCl -> String
"nacl"
OS
NetBSD -> String
"netbsd"
OS
OpenBSD -> String
"openbsd"
OS
PS4 -> String
"ps4"
OS
PS5 -> String
"ps5"
OS
RTEMS -> String
"rtems"
OS
Solaris -> String
"solaris"
OS
TvOS -> String
"tvos"
OS
WASI -> String
"wasi"
OS
WatchOS -> String
"watchos"
OS
Win32 -> String
"windows"
OS
ZOS -> String
"zos"
OS
ShaderModel -> String
"shadermodel"
envName :: Environment -> String
envName :: Environment -> String
envName =
\case
Environment
UnknownEnvironment -> String
"unknown"
Environment
Android -> String
"android"
Environment
CODE16 -> String
"code16"
Environment
CoreCLR -> String
"coreclr"
Environment
Cygnus -> String
"cygnus"
Environment
EABI -> String
"eabi"
Environment
EABIHF -> String
"eabihf"
Environment
GNU -> String
"gnu"
Environment
GNUABI64 -> String
"gnuabi64"
Environment
GNUABIN32 -> String
"gnuabin32"
Environment
GNUEABI -> String
"gnueabi"
Environment
GNUEABIHF -> String
"gnueabihf"
Environment
GNUX32 -> String
"gnux32"
Environment
GNUILP32 -> String
"gnu_ilp32"
Environment
Itanium -> String
"itanium"
Environment
MSVC -> String
"msvc"
Environment
MacABI -> String
"macabi"
Environment
Musl -> String
"musl"
Environment
MuslEABI -> String
"musleabi"
Environment
MuslEABIHF -> String
"musleabihf"
Environment
MuslX32 -> String
"muslx32"
Environment
Simulator -> String
"simulator"
Environment
Pixel -> String
"pixel"
Environment
Vertex -> String
"vertex"
Environment
Geometry -> String
"geometry"
Environment
Hull -> String
"hull"
Environment
Domain -> String
"domain"
Environment
Compute -> String
"compute"
Environment
Library -> String
"library"
Environment
RayGeneration -> String
"raygeneration"
Environment
Intersection -> String
"intersection"
Environment
AnyHit -> String
"anyhit"
Environment
ClosestHit -> String
"closesthit"
Environment
Miss -> String
"miss"
Environment
Callable -> String
"callable"
Environment
Mesh -> String
"mesh"
Environment
Amplification -> String
"amplification"
objFmtName :: ObjectFormat -> String
objFmtName :: ObjectFormat -> String
objFmtName =
\case
ObjectFormat
UnknownObjectFormat -> String
""
ObjectFormat
COFF -> String
"coff"
ObjectFormat
ELF -> String
"elf"
ObjectFormat
GOFF -> String
"goff"
ObjectFormat
MachO -> String
"macho"
ObjectFormat
Wasm -> String
"wasm"
ObjectFormat
XCOFF -> String
"xcoff"
ObjectFormat
DXContainer -> String
"dxcontainer"
ObjectFormat
SPIRV -> String
"spirv"
printTriple :: TargetTriple -> String
printTriple :: TargetTriple -> String
printTriple TargetTriple
tt =
String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
List.intercalate
String
"-"
[ Arch -> String
archName (TargetTriple -> Arch
ttArch TargetTriple
tt)
, Vendor -> String
vendorName (TargetTriple -> Vendor
ttVendor TargetTriple
tt)
, OS -> String
osName (TargetTriple -> OS
ttOS TargetTriple
tt)
, Environment -> String
envName (TargetTriple -> Environment
ttEnv TargetTriple
tt)
, ObjectFormat -> String
objFmtName (TargetTriple -> ObjectFormat
ttObjFmt TargetTriple
tt)
]