{-# LANGUAGE MultiParamTypeClasses, TemplateHaskell, QuasiQuotes #-} module LLVM.Internal.CallingConvention where import LLVM.Prelude import LLVM.Internal.Coding import Foreign.C.Types (CUInt(..)) import qualified LLVM.Internal.FFI.LLVMCTypes as FFI import LLVM.Internal.FFI.LLVMCTypes (callingConventionP) import qualified LLVM.AST.CallingConvention as A.CC instance Monad m => EncodeM m A.CC.CallingConvention FFI.CallingConvention where encodeM :: HasCallStack => CallingConvention -> m CallingConvention encodeM CallingConvention cc = CallingConvention -> m CallingConvention forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (CallingConvention -> m CallingConvention) -> CallingConvention -> m CallingConvention forall a b. (a -> b) -> a -> b $ case CallingConvention cc of CallingConvention A.CC.C -> CallingConvention FFI.callingConventionC CallingConvention A.CC.Fast -> CallingConvention FFI.callingConventionFast CallingConvention A.CC.Cold -> CallingConvention FFI.callingConventionCold CallingConvention A.CC.GHC -> CallingConvention FFI.callingConventionGHC CallingConvention A.CC.HiPE -> CallingConvention FFI.callingConventionHiPE CallingConvention A.CC.WebKit_JS -> CallingConvention FFI.callingConventionWebKit_JS CallingConvention A.CC.AnyReg -> CallingConvention FFI.callingConventionAnyReg CallingConvention A.CC.PreserveMost -> CallingConvention FFI.callingConventionPreserveMost CallingConvention A.CC.PreserveAll -> CallingConvention FFI.callingConventionPreserveAll CallingConvention A.CC.Swift -> CallingConvention FFI.callingConventionSwift CallingConvention A.CC.CXX_FastTLS -> CallingConvention FFI.callingConventionCXX_FAST_TLS CallingConvention A.CC.X86_StdCall -> CallingConvention FFI.callingConventionX86_StdCall CallingConvention A.CC.X86_FastCall -> CallingConvention FFI.callingConventionX86_FastCall CallingConvention A.CC.ARM_APCS -> CallingConvention FFI.callingConventionARM_APCS CallingConvention A.CC.ARM_AAPCS -> CallingConvention FFI.callingConventionARM_AAPCS CallingConvention A.CC.ARM_AAPCS_VFP -> CallingConvention FFI.callingConventionARM_AAPCS_VFP CallingConvention A.CC.MSP430_INTR -> CallingConvention FFI.callingConventionMSP430_INTR CallingConvention A.CC.X86_ThisCall -> CallingConvention FFI.callingConventionX86_ThisCall CallingConvention A.CC.PTX_Kernel -> CallingConvention FFI.callingConventionPTX_Kernel CallingConvention A.CC.PTX_Device -> CallingConvention FFI.callingConventionPTX_Device CallingConvention A.CC.SPIR_FUNC -> CallingConvention FFI.callingConventionSPIR_FUNC CallingConvention A.CC.SPIR_KERNEL -> CallingConvention FFI.callingConventionSPIR_KERNEL CallingConvention A.CC.Intel_OCL_BI -> CallingConvention FFI.callingConventionIntel_OCL_BI CallingConvention A.CC.X86_64_SysV -> CallingConvention FFI.callingConventionX86_64_SysV CallingConvention A.CC.Win64 -> CallingConvention FFI.callingConventionWin64 CallingConvention A.CC.X86_VectorCall -> CallingConvention FFI.callingConventionX86_VectorCall CallingConvention A.CC.HHVM -> CallingConvention FFI.callingConventionHHVM CallingConvention A.CC.HHVM_C -> CallingConvention FFI.callingConventionHHVM_C CallingConvention A.CC.X86_Intr -> CallingConvention FFI.callingConventionX86_INTR CallingConvention A.CC.AVR_Intr -> CallingConvention FFI.callingConventionAVR_INTR CallingConvention A.CC.AVR_Signal -> CallingConvention FFI.callingConventionAVR_SIGNAL CallingConvention A.CC.AVR_Builtin -> CallingConvention FFI.callingConventionAVR_BUILTIN CallingConvention A.CC.AMDGPU_VS -> CallingConvention FFI.callingConventionAMDGPU_VS CallingConvention A.CC.AMDGPU_HS -> CallingConvention FFI.callingConventionAMDGPU_HS CallingConvention A.CC.AMDGPU_GS -> CallingConvention FFI.callingConventionAMDGPU_GS CallingConvention A.CC.AMDGPU_PS -> CallingConvention FFI.callingConventionAMDGPU_PS CallingConvention A.CC.AMDGPU_CS -> CallingConvention FFI.callingConventionAMDGPU_CS CallingConvention A.CC.AMDGPU_Kernel -> CallingConvention FFI.callingConventionAMDGPU_KERNEL CallingConvention A.CC.X86_RegCall -> CallingConvention FFI.callingConventionX86_RegCall CallingConvention A.CC.MSP430_Builtin -> CallingConvention FFI.callingConventionMSP430_BUILTIN A.CC.Numbered Word32 cc' -> CUInt -> CallingConvention FFI.CallingConvention (Word32 -> CUInt forall a b. (Integral a, Num b) => a -> b fromIntegral Word32 cc') instance Monad m => DecodeM m A.CC.CallingConvention FFI.CallingConvention where decodeM :: HasCallStack => CallingConvention -> m CallingConvention decodeM CallingConvention cc = CallingConvention -> m CallingConvention forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (CallingConvention -> m CallingConvention) -> CallingConvention -> m CallingConvention forall a b. (a -> b) -> a -> b $ case CallingConvention cc of CallingConvention [callingConventionP|C|] -> CallingConvention A.CC.C CallingConvention [callingConventionP|Fast|] -> CallingConvention A.CC.Fast CallingConvention [callingConventionP|Cold|] -> CallingConvention A.CC.Cold CallingConvention [callingConventionP|GHC|] -> CallingConvention A.CC.GHC CallingConvention [callingConventionP|HiPE|] -> CallingConvention A.CC.HiPE CallingConvention [callingConventionP|WebKit_JS|] -> CallingConvention A.CC.WebKit_JS CallingConvention [callingConventionP|AnyReg|] -> CallingConvention A.CC.AnyReg CallingConvention [callingConventionP|PreserveMost|] -> CallingConvention A.CC.PreserveMost CallingConvention [callingConventionP|PreserveAll|] -> CallingConvention A.CC.PreserveAll CallingConvention [callingConventionP|Swift|] -> CallingConvention A.CC.Swift CallingConvention [callingConventionP|CXX_FAST_TLS|] -> CallingConvention A.CC.CXX_FastTLS CallingConvention [callingConventionP|X86_StdCall|] -> CallingConvention A.CC.X86_StdCall CallingConvention [callingConventionP|X86_FastCall|] -> CallingConvention A.CC.X86_FastCall CallingConvention [callingConventionP|ARM_APCS|] -> CallingConvention A.CC.ARM_APCS CallingConvention [callingConventionP|ARM_AAPCS|] -> CallingConvention A.CC.ARM_AAPCS CallingConvention [callingConventionP|ARM_AAPCS_VFP|] -> CallingConvention A.CC.ARM_AAPCS_VFP CallingConvention [callingConventionP|MSP430_INTR|] -> CallingConvention A.CC.MSP430_INTR CallingConvention [callingConventionP|X86_ThisCall|] -> CallingConvention A.CC.X86_ThisCall CallingConvention [callingConventionP|PTX_Kernel|] -> CallingConvention A.CC.PTX_Kernel CallingConvention [callingConventionP|PTX_Device|] -> CallingConvention A.CC.PTX_Device CallingConvention [callingConventionP|SPIR_FUNC|] -> CallingConvention A.CC.SPIR_FUNC CallingConvention [callingConventionP|SPIR_KERNEL|] -> CallingConvention A.CC.SPIR_KERNEL CallingConvention [callingConventionP|Intel_OCL_BI|] -> CallingConvention A.CC.Intel_OCL_BI CallingConvention [callingConventionP|X86_64_SysV|] -> CallingConvention A.CC.X86_64_SysV CallingConvention [callingConventionP|Win64|] -> CallingConvention A.CC.Win64 CallingConvention [callingConventionP|X86_VectorCall|] -> CallingConvention A.CC.X86_VectorCall CallingConvention [callingConventionP|HHVM|] -> CallingConvention A.CC.HHVM CallingConvention [callingConventionP|HHVM_C|] -> CallingConvention A.CC.HHVM_C CallingConvention [callingConventionP|X86_INTR|] -> CallingConvention A.CC.X86_Intr CallingConvention [callingConventionP|AVR_INTR|] -> CallingConvention A.CC.AVR_Intr CallingConvention [callingConventionP|AVR_SIGNAL|] -> CallingConvention A.CC.AVR_Signal CallingConvention [callingConventionP|AVR_BUILTIN|] -> CallingConvention A.CC.AVR_Builtin CallingConvention [callingConventionP|AMDGPU_VS|] -> CallingConvention A.CC.AMDGPU_VS CallingConvention [callingConventionP|AMDGPU_HS|] -> CallingConvention A.CC.AMDGPU_HS CallingConvention [callingConventionP|AMDGPU_GS|] -> CallingConvention A.CC.AMDGPU_GS CallingConvention [callingConventionP|AMDGPU_PS|] -> CallingConvention A.CC.AMDGPU_PS CallingConvention [callingConventionP|AMDGPU_CS|] -> CallingConvention A.CC.AMDGPU_CS CallingConvention [callingConventionP|AMDGPU_KERNEL|] -> CallingConvention A.CC.AMDGPU_Kernel CallingConvention [callingConventionP|X86_RegCall|] -> CallingConvention A.CC.X86_RegCall CallingConvention [callingConventionP|MSP430_BUILTIN|] -> CallingConvention A.CC.MSP430_Builtin FFI.CallingConvention (CUInt Word32 ci) | Word32 ci Word32 -> Word32 -> Bool forall a. Ord a => a -> a -> Bool >= Word32 64 -> Word32 -> CallingConvention A.CC.Numbered (Word32 -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral Word32 ci) | Bool otherwise -> [Char] -> CallingConvention forall a. HasCallStack => [Char] -> a error ([Char] "Unknown calling convention: " [Char] -> [Char] -> [Char] forall a. Semigroup a => a -> a -> a <> Word32 -> [Char] forall a. Show a => a -> [Char] show Word32 ci)