module LLVM.Test.CallingConvention where import Test.Tasty import Test.Tasty.HUnit import LLVM.Test.Support import Data.Maybe import qualified Data.Set as Set import qualified Data.Map as Map import LLVM.Context import LLVM.Module import LLVM.AST import LLVM.AST.Type as T import qualified LLVM.AST.CallingConvention as CC import qualified LLVM.AST.Global as G tests = testGroup "CallingConvention" [ testCase name $ strCheck (defaultModule { moduleDefinitions = [ GlobalDefinition $ functionDefaults { G.returnType = i32, G.name = Name "foo", G.callingConvention = cc } ] }) ("; ModuleID = ''\n\ \source_filename = \"\"\n\ \\n\ \declare" ++ (if name == "" then "" else (" " ++ name)) ++ " i32 @foo()\n") | (name, cc) <- [ ("", CC.C), ("fastcc", CC.Fast), ("coldcc", CC.Cold), ("ghccc", CC.GHC), ("cc11", CC.HiPE), ("webkit_jscc", CC.WebKit_JS), ("anyregcc", CC.AnyReg), ("preserve_mostcc", CC.PreserveMost), ("preserve_allcc", CC.PreserveAll), ("x86_stdcallcc", CC.X86_StdCall), ("x86_fastcallcc", CC.X86_FastCall), ("arm_apcscc", CC.ARM_APCS), ("arm_aapcscc", CC.ARM_AAPCS), ("arm_aapcs_vfpcc", CC.ARM_AAPCS_VFP), ("msp430_intrcc", CC.MSP430_INTR), ("x86_thiscallcc", CC.X86_ThisCall), ("ptx_kernel", CC.PTX_Kernel), ("ptx_device", CC.PTX_Device), ("spir_func", CC.SPIR_FUNC), ("spir_kernel", CC.SPIR_KERNEL), ("intel_ocl_bicc", CC.Intel_OCL_BI), ("x86_64_sysvcc", CC.X86_64_SysV), ("x86_64_win64cc", CC.X86_64_Win64) ] ]