private static eKernelMethodType GetKernelMethodType(eCudafyType? attr, MethodInfo mi) { eKernelMethodType kmt; if (attr == eCudafyType.Auto) kmt = mi.ReturnType.Name == "Void" ? eKernelMethodType.Global : eKernelMethodType.Device; else if (attr == eCudafyType.Device) kmt = eKernelMethodType.Device; else if (attr == eCudafyType.Global && mi.ReturnType.Name != "Void") throw new CudafyException(CudafyException.csX_NOT_SUPPORTED, "Return values on global methods"); else if (attr == eCudafyType.Global) kmt = eKernelMethodType.Global; else if (attr == eCudafyType.Struct) throw new CudafyException(CudafyException.csX_NOT_SUPPORTED, "Cudafy struct attribute on methods"); else throw new CudafyFatalException(attr.ToString()); return kmt; }