diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-11-21 19:14:40 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-11-21 19:14:40 +0100 |
| commit | 9d97ce087a460b6b5be721b3673ac1543eb77484 (patch) | |
| tree | bebe5aad4524f2586a7a7110b5b329cb65bd5961 /src | |
| parent | 3fa758e8954efb9fecfd4c2146da2c8688bc1770 (diff) | |
| download | box64-9d97ce087a460b6b5be721b3673ac1543eb77484.tar.gz box64-9d97ce087a460b6b5be721b3673ac1543eb77484.zip | |
Wrapped Vulkan libraries
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/box64context.h | 4 | ||||
| -rwxr-xr-x | src/library_list.h | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 147 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedvulkandefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedvulkantypes.h | 106 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedvulkanundefs.h | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 151 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 57 | ||||
| -rwxr-xr-x | src/wrapped/wrappedgnutls_private.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl2.c | 11 | ||||
| -rwxr-xr-x | src/wrapped/wrappedvulkan.c | 598 | ||||
| -rwxr-xr-x | src/wrapped/wrappedvulkan_private.h | 411 |
12 files changed, 1498 insertions, 9 deletions
diff --git a/src/include/box64context.h b/src/include/box64context.h index 694accb3..ecb00c3e 100755 --- a/src/include/box64context.h +++ b/src/include/box64context.h @@ -32,6 +32,7 @@ typedef struct kh_dynablocks_s kh_dynablocks_t; #define JMPTABL_SHIFT 16 typedef void* (*procaddess_t)(const char* name); +typedef void* (*vkprocaddess_t)(void* instance, const char* name); #define MAX_SIGNAL 64 @@ -111,6 +112,9 @@ typedef struct box64context_s { procaddess_t glxprocaddress; kh_symbolmap_t *alwrappers; // the map of wrapper for alGetProcAddress kh_symbolmap_t *almymap; // link to the mysymbolmap if libOpenAL + kh_symbolmap_t *vkwrappers; // the map of wrapper for VulkanProcs (TODO: check SDL2) + kh_symbolmap_t *vkmymap; // link to the mysymbolmap of libGL + vkprocaddess_t vkprocaddress; pthread_mutex_t mutex_once; pthread_mutex_t mutex_once2; diff --git a/src/library_list.h b/src/library_list.h index be2a909d..9de0f0ca 100755 --- a/src/library_list.h +++ b/src/library_list.h @@ -150,8 +150,8 @@ GO("libgnutls.so.30", gnutls) GO("libpcre.so.3", libpcre) GO("libcups.so.2", libcups) //GO("d3dadapter9.so.1", d3dadapter9) -//GO("libvulkan.so.1", vulkan) -//GO("libvulkan.so", vulkan) +GO("libvulkan.so.1", vulkan) +GO("libvulkan.so", vulkan) //GO("libwayland-client.so.0", waylandclient) GO("libxml2.so.2", xml2) GO("libxslt.so.1", xslt) diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 500b289d..ddc42db2 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -299,6 +299,10 @@ #() vFpuI #() vFpuu #() vFpup +#() vFpUi +#() vFpUu +#() vFpUU +#() vFpUp #() vFpff #() vFpdd #() vFpll @@ -308,6 +312,7 @@ #() vFpLp #() vFppi #() vFppu +#() vFppU #() vFppd #() vFppl #() vFppL @@ -369,6 +374,7 @@ #() iFpup #() iFpUi #() iFpUU +#() iFpUp #() iFpfu #() iFpff #() iFpdd @@ -520,6 +526,7 @@ #() vFEpii #() vFEpip #() vFEpup +#() vFEpUp #() vFEppp #() vFEppV #() vFEppA @@ -588,6 +595,7 @@ #() vFpiuu #() vFpiuL #() vFpiup +#() vFpiUu #() vFpifi #() vFpipi #() vFpipp @@ -598,6 +606,13 @@ #() vFpuup #() vFpudd #() vFpupp +#() vFpUui +#() vFpUuu +#() vFpUup +#() vFpUUi +#() vFpUUp +#() vFpUpp +#() vFpfff #() vFpdii #() vFpddi #() vFpddd @@ -632,6 +647,7 @@ #() iFEpip #() iFEpiV #() iFEpiA +#() iFEpUp #() iFEpLi #() iFEpLp #() iFEppi @@ -698,13 +714,18 @@ #() iFpuui #() iFpuuu #() iFpuup +#() iFpuUp #() iFpuLL #() iFpuLp #() iFpupi #() iFpupu +#() iFpupU #() iFpupL #() iFpupp #() iFpupV +#() iFpUup +#() iFpUUU +#() iFpUpp #() iFplii #() iFplip #() iFpLii @@ -945,7 +966,15 @@ #() vFpuiip #() vFpuipp #() vFpuuuu +#() vFpuuup +#() vFpuupp #() vFpuddd +#() vFpupup +#() vFpUuiu +#() vFpUUuu +#() vFpUUup +#() vFpUUUu +#() vFpUUUp #() vFpffff #() vFpddii #() vFpdddd @@ -976,6 +1005,7 @@ #() iFEpipi #() iFEpipp #() iFEpipV +#() iFEpUup #() iFEpLpp #() iFEpLpV #() iFEpLpA @@ -1027,6 +1057,7 @@ #() iFpuuup #() iFpuuLL #() iFpuupp +#() iFpupiU #() iFpuppp #() iFplluu #() iFpLiLi @@ -1145,6 +1176,7 @@ #() vFEpiLpp #() vFEpippp #() vFEpuipp +#() vFEpupup #() vFEpLLpp #() vFEppipV #() vFEppipA @@ -1211,9 +1243,16 @@ #() vFpiippp #() vFpipipV #() vFpipppi +#() vFpuiiii #() vFpuiiiu #() vFpuiipp +#() vFpuuuiu +#() vFpuuppp #() vFpudddd +#() vFpUiuup +#() vFpUiUup +#() vFpUipup +#() vFpUUiup #() vFpdddii #() vFpddddd #() vFppiiii @@ -1251,6 +1290,7 @@ #() iFEpilpV #() iFEpippi #() iFEpuppp +#() iFEpUppp #() iFEppppp #() iFiiiiii #() iFiiiiip @@ -1280,6 +1320,8 @@ #() iFpuiCpp #() iFpuippp #() iFpupuui +#() iFpUUUip +#() iFpUUUUp #() iFppiiip #() iFppiiuu #() iFppiipi @@ -1418,6 +1460,11 @@ #() vFpiipCpp #() vFpipipii #() vFpipppii +#() vFpuuuuuu +#() vFpuuUUuu +#() vFpuupppp +#() vFpUiUiup +#() vFpUUUUuu #() vFpddiidd #() vFpdddddd #() vFppiiiii @@ -1444,6 +1491,7 @@ #() vFppppppi #() vFppppppp #() iFEpupppp +#() iFEpUuppp #() iFEpLiLpV #() iFEppuppp #() iFEppLpIi @@ -1452,6 +1500,7 @@ #() iFEpppppp #() iFiiiiiip #() iFpiiiiii +#() iFpiiiiip #() iFpiiiuwp #() iFpiiuuiu #() iFpiipppp @@ -1574,8 +1623,12 @@ #() vFlipuiuip #() vFpiiiiiii #() vFpiiiipii +#() vFpiiULipp +#() vFpiUuupup #() vFpippiiuu #() vFpippiipi +#() vFpUiUiupi +#() vFpUuuUUUi #() vFppiiiiii #() vFppiiipii #() vFppipipii @@ -1600,6 +1653,7 @@ #() iFpuuiiiii #() iFpupppWWu #() iFpupppppp +#() iFpUuuLpUi #() iFppiiiiiu #() iFppIIIppp #() iFpppiiipi @@ -1642,6 +1696,7 @@ #() pFppiiiiii #() pFpppuuLLu #() pFpppppupp +#() vFEpiiiiipp #() vFEppiipppp #() vFEpppiippp #() vFiiiiiiiii @@ -1765,6 +1820,7 @@ #() pFplllllllll #() pFppuiipuuii #() pFpppppppppp +#() vFEpiiiupupup #() vFuiiiiiiiiip #() vFuiiiiiiiuip #() vFuiiiiiiiuup @@ -1780,6 +1836,7 @@ #() vFuffffffffff #() vFpipipiipiii #() vFpipppiiiipi +#() vFpupiiupupup #() vFppiiiiiiiii #() vFppiiiiipiii #() vFppiiiiddddi @@ -3416,6 +3473,96 @@ wrappedvorbisfile: - iFppplPPPP: - ov_open_callbacks - ov_test_callbacks +wrappedvulkan: +- vFpp: + - vkDestroyDevice + - vkDestroyInstance + - vkGetPhysicalDeviceMemoryProperties + - vkGetPhysicalDeviceProperties +- pFpp: + - vkGetDeviceProcAddr + - vkGetInstanceProcAddr +- vFpUp: + - vkDestroyBuffer + - vkDestroyBufferView + - vkDestroyCommandPool + - vkDestroyDescriptorPool + - vkDestroyDescriptorSetLayout + - vkDestroyDescriptorUpdateTemplate + - vkDestroyDescriptorUpdateTemplateKHR + - vkDestroyEvent + - vkDestroyFence + - vkDestroyFramebuffer + - vkDestroyImage + - vkDestroyImageView + - vkDestroyPipeline + - vkDestroyPipelineCache + - vkDestroyPipelineLayout + - vkDestroyQueryPool + - vkDestroyRenderPass + - vkDestroySampler + - vkDestroySamplerYcbcrConversionKHR + - vkDestroySemaphore + - vkDestroyShaderModule + - vkDestroySurfaceKHR + - vkDestroySwapchainKHR +- vFppp: + - vkDestroyDebugUtilsMessengerEXT +- iFpUp: + - vkFreeMemory +- iFppp: + - vkCreateInstance + - vkDestroyDebugReportCallbackEXT + - vkGetPhysicalDeviceDisplayPropertiesKHR +- iFpUup: + - vkGetDisplayPlaneCapabilitiesKHR +- iFpppp: + - vkAllocateMemory + - vkCreateBuffer + - vkCreateBufferView + - vkCreateCommandPool + - vkCreateDebugReportCallbackEXT + - vkCreateDebugUtilsMessengerEXT + - vkCreateDescriptorPool + - vkCreateDescriptorSetLayout + - vkCreateDescriptorUpdateTemplate + - vkCreateDescriptorUpdateTemplateKHR + - vkCreateDevice + - vkCreateDisplayPlaneSurfaceKHR + - vkCreateEvent + - vkCreateFence + - vkCreateFramebuffer + - vkCreateHeadlessSurfaceEXT + - vkCreateImage + - vkCreateImageView + - vkCreatePipelineCache + - vkCreatePipelineLayout + - vkCreateQueryPool + - vkCreateRenderPass + - vkCreateRenderPass2 + - vkCreateRenderPass2KHR + - vkCreateSampler + - vkCreateSamplerYcbcrConversion + - vkCreateSamplerYcbcrConversionKHR + - vkCreateSemaphore + - vkCreateShaderModule + - vkCreateSwapchainKHR + - vkCreateWaylandSurfaceKHR + - vkCreateXcbSurfaceKHR + - vkCreateXlibSurfaceKHR +- vFpupup: + - vkUpdateDescriptorSets +- iFpuppp: + - vkCreateSharedSwapchainsKHR +- iFpUppp: + - vkCreateDisplayModeKHR +- iFpUuppp: + - vkCreateComputePipelines + - vkCreateGraphicsPipelines +- vFpiiiiipp: + - vkGetPhysicalDeviceSparseImageFormatProperties +- vFpiiiupupup: + - vkCmdPipelineBarrier wrappedxinerama: wrappedxkbcommon: wrappedxkbcommonx11: diff --git a/src/wrapped/generated/wrappedvulkandefs.h b/src/wrapped/generated/wrappedvulkandefs.h new file mode 100644 index 00000000..5c1ea485 --- /dev/null +++ b/src/wrapped/generated/wrappedvulkandefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedvulkanDEFS_H_ +#define __wrappedvulkanDEFS_H_ + + +#endif // __wrappedvulkanDEFS_H_ diff --git a/src/wrapped/generated/wrappedvulkantypes.h b/src/wrapped/generated/wrappedvulkantypes.h new file mode 100644 index 00000000..a7b1e897 --- /dev/null +++ b/src/wrapped/generated/wrappedvulkantypes.h @@ -0,0 +1,106 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedvulkanTYPES_H_ +#define __wrappedvulkanTYPES_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef void (*vFpp_t)(void*, void*); +typedef void* (*pFpp_t)(void*, void*); +typedef void (*vFpUp_t)(void*, uint64_t, void*); +typedef void (*vFppp_t)(void*, void*, void*); +typedef int64_t (*iFpUp_t)(void*, uint64_t, void*); +typedef int64_t (*iFppp_t)(void*, void*, void*); +typedef int64_t (*iFpUup_t)(void*, uint64_t, uint64_t, void*); +typedef int64_t (*iFpppp_t)(void*, void*, void*, void*); +typedef void (*vFpupup_t)(void*, uint64_t, void*, uint64_t, void*); +typedef int64_t (*iFpuppp_t)(void*, uint64_t, void*, void*, void*); +typedef int64_t (*iFpUppp_t)(void*, uint64_t, void*, void*, void*); +typedef int64_t (*iFpUuppp_t)(void*, uint64_t, uint64_t, void*, void*, void*); +typedef void (*vFpiiiiipp_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*); +typedef void (*vFpiiiupupup_t)(void*, int64_t, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(vkDestroyDevice, vFpp_t) \ + GO(vkDestroyInstance, vFpp_t) \ + GO(vkGetPhysicalDeviceMemoryProperties, vFpp_t) \ + GO(vkGetPhysicalDeviceProperties, vFpp_t) \ + GO(vkGetDeviceProcAddr, pFpp_t) \ + GO(vkGetInstanceProcAddr, pFpp_t) \ + GO(vkDestroyBuffer, vFpUp_t) \ + GO(vkDestroyBufferView, vFpUp_t) \ + GO(vkDestroyCommandPool, vFpUp_t) \ + GO(vkDestroyDescriptorPool, vFpUp_t) \ + GO(vkDestroyDescriptorSetLayout, vFpUp_t) \ + GO(vkDestroyDescriptorUpdateTemplate, vFpUp_t) \ + GO(vkDestroyDescriptorUpdateTemplateKHR, vFpUp_t) \ + GO(vkDestroyEvent, vFpUp_t) \ + GO(vkDestroyFence, vFpUp_t) \ + GO(vkDestroyFramebuffer, vFpUp_t) \ + GO(vkDestroyImage, vFpUp_t) \ + GO(vkDestroyImageView, vFpUp_t) \ + GO(vkDestroyPipeline, vFpUp_t) \ + GO(vkDestroyPipelineCache, vFpUp_t) \ + GO(vkDestroyPipelineLayout, vFpUp_t) \ + GO(vkDestroyQueryPool, vFpUp_t) \ + GO(vkDestroyRenderPass, vFpUp_t) \ + GO(vkDestroySampler, vFpUp_t) \ + GO(vkDestroySamplerYcbcrConversionKHR, vFpUp_t) \ + GO(vkDestroySemaphore, vFpUp_t) \ + GO(vkDestroyShaderModule, vFpUp_t) \ + GO(vkDestroySurfaceKHR, vFpUp_t) \ + GO(vkDestroySwapchainKHR, vFpUp_t) \ + GO(vkDestroyDebugUtilsMessengerEXT, vFppp_t) \ + GO(vkFreeMemory, iFpUp_t) \ + GO(vkCreateInstance, iFppp_t) \ + GO(vkDestroyDebugReportCallbackEXT, iFppp_t) \ + GO(vkGetPhysicalDeviceDisplayPropertiesKHR, iFppp_t) \ + GO(vkGetDisplayPlaneCapabilitiesKHR, iFpUup_t) \ + GO(vkAllocateMemory, iFpppp_t) \ + GO(vkCreateBuffer, iFpppp_t) \ + GO(vkCreateBufferView, iFpppp_t) \ + GO(vkCreateCommandPool, iFpppp_t) \ + GO(vkCreateDebugReportCallbackEXT, iFpppp_t) \ + GO(vkCreateDebugUtilsMessengerEXT, iFpppp_t) \ + GO(vkCreateDescriptorPool, iFpppp_t) \ + GO(vkCreateDescriptorSetLayout, iFpppp_t) \ + GO(vkCreateDescriptorUpdateTemplate, iFpppp_t) \ + GO(vkCreateDescriptorUpdateTemplateKHR, iFpppp_t) \ + GO(vkCreateDevice, iFpppp_t) \ + GO(vkCreateDisplayPlaneSurfaceKHR, iFpppp_t) \ + GO(vkCreateEvent, iFpppp_t) \ + GO(vkCreateFence, iFpppp_t) \ + GO(vkCreateFramebuffer, iFpppp_t) \ + GO(vkCreateHeadlessSurfaceEXT, iFpppp_t) \ + GO(vkCreateImage, iFpppp_t) \ + GO(vkCreateImageView, iFpppp_t) \ + GO(vkCreatePipelineCache, iFpppp_t) \ + GO(vkCreatePipelineLayout, iFpppp_t) \ + GO(vkCreateQueryPool, iFpppp_t) \ + GO(vkCreateRenderPass, iFpppp_t) \ + GO(vkCreateRenderPass2, iFpppp_t) \ + GO(vkCreateRenderPass2KHR, iFpppp_t) \ + GO(vkCreateSampler, iFpppp_t) \ + GO(vkCreateSamplerYcbcrConversion, iFpppp_t) \ + GO(vkCreateSamplerYcbcrConversionKHR, iFpppp_t) \ + GO(vkCreateSemaphore, iFpppp_t) \ + GO(vkCreateShaderModule, iFpppp_t) \ + GO(vkCreateSwapchainKHR, iFpppp_t) \ + GO(vkCreateWaylandSurfaceKHR, iFpppp_t) \ + GO(vkCreateXcbSurfaceKHR, iFpppp_t) \ + GO(vkCreateXlibSurfaceKHR, iFpppp_t) \ + GO(vkUpdateDescriptorSets, vFpupup_t) \ + GO(vkCreateSharedSwapchainsKHR, iFpuppp_t) \ + GO(vkCreateDisplayModeKHR, iFpUppp_t) \ + GO(vkCreateComputePipelines, iFpUuppp_t) \ + GO(vkCreateGraphicsPipelines, iFpUuppp_t) \ + GO(vkGetPhysicalDeviceSparseImageFormatProperties, vFpiiiiipp_t) \ + GO(vkCmdPipelineBarrier, vFpiiiupupup_t) + +#endif // __wrappedvulkanTYPES_H_ diff --git a/src/wrapped/generated/wrappedvulkanundefs.h b/src/wrapped/generated/wrappedvulkanundefs.h new file mode 100644 index 00000000..12abcf62 --- /dev/null +++ b/src/wrapped/generated/wrappedvulkanundefs.h @@ -0,0 +1,8 @@ +/******************************************************************* + * File automatically generated by rebuild_wrappers.py (v2.1.0.16) * + *******************************************************************/ +#ifndef __wrappedvulkanUNDEFS_H_ +#define __wrappedvulkanUNDEFS_H_ + + +#endif // __wrappedvulkanUNDEFS_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 2e073166..2f55c2ff 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -333,6 +333,10 @@ typedef void (*vFpui_t)(void*, uint64_t, int64_t); typedef void (*vFpuI_t)(void*, uint64_t, int64_t); typedef void (*vFpuu_t)(void*, uint64_t, uint64_t); typedef void (*vFpup_t)(void*, uint64_t, void*); +typedef void (*vFpUi_t)(void*, uint64_t, int64_t); +typedef void (*vFpUu_t)(void*, uint64_t, uint64_t); +typedef void (*vFpUU_t)(void*, uint64_t, uint64_t); +typedef void (*vFpUp_t)(void*, uint64_t, void*); typedef void (*vFpff_t)(void*, float, float); typedef void (*vFpdd_t)(void*, double, double); typedef void (*vFpll_t)(void*, intptr_t, intptr_t); @@ -342,6 +346,7 @@ typedef void (*vFpLL_t)(void*, uintptr_t, uintptr_t); typedef void (*vFpLp_t)(void*, uintptr_t, void*); typedef void (*vFppi_t)(void*, void*, int64_t); typedef void (*vFppu_t)(void*, void*, uint64_t); +typedef void (*vFppU_t)(void*, void*, uint64_t); typedef void (*vFppd_t)(void*, void*, double); typedef void (*vFppl_t)(void*, void*, intptr_t); typedef void (*vFppL_t)(void*, void*, uintptr_t); @@ -403,6 +408,7 @@ typedef int64_t (*iFpuL_t)(void*, uint64_t, uintptr_t); typedef int64_t (*iFpup_t)(void*, uint64_t, void*); typedef int64_t (*iFpUi_t)(void*, uint64_t, int64_t); typedef int64_t (*iFpUU_t)(void*, uint64_t, uint64_t); +typedef int64_t (*iFpUp_t)(void*, uint64_t, void*); typedef int64_t (*iFpfu_t)(void*, float, uint64_t); typedef int64_t (*iFpff_t)(void*, float, float); typedef int64_t (*iFpdd_t)(void*, double, double); @@ -554,6 +560,7 @@ typedef void (*vFELLp_t)(x64emu_t*, uintptr_t, uintptr_t, void*); typedef void (*vFEpii_t)(x64emu_t*, void*, int64_t, int64_t); typedef void (*vFEpip_t)(x64emu_t*, void*, int64_t, void*); typedef void (*vFEpup_t)(x64emu_t*, void*, uint64_t, void*); +typedef void (*vFEpUp_t)(x64emu_t*, void*, uint64_t, void*); typedef void (*vFEppp_t)(x64emu_t*, void*, void*, void*); typedef void (*vFEppV_t)(x64emu_t*, void*, void*, void*); typedef void (*vFEppA_t)(x64emu_t*, void*, void*, void*); @@ -622,6 +629,7 @@ typedef void (*vFpiip_t)(void*, int64_t, int64_t, void*); typedef void (*vFpiuu_t)(void*, int64_t, uint64_t, uint64_t); typedef void (*vFpiuL_t)(void*, int64_t, uint64_t, uintptr_t); typedef void (*vFpiup_t)(void*, int64_t, uint64_t, void*); +typedef void (*vFpiUu_t)(void*, int64_t, uint64_t, uint64_t); typedef void (*vFpifi_t)(void*, int64_t, float, int64_t); typedef void (*vFpipi_t)(void*, int64_t, void*, int64_t); typedef void (*vFpipp_t)(void*, int64_t, void*, void*); @@ -632,6 +640,13 @@ typedef void (*vFpuuu_t)(void*, uint64_t, uint64_t, uint64_t); typedef void (*vFpuup_t)(void*, uint64_t, uint64_t, void*); typedef void (*vFpudd_t)(void*, uint64_t, double, double); typedef void (*vFpupp_t)(void*, uint64_t, void*, void*); +typedef void (*vFpUui_t)(void*, uint64_t, uint64_t, int64_t); +typedef void (*vFpUuu_t)(void*, uint64_t, uint64_t, uint64_t); +typedef void (*vFpUup_t)(void*, uint64_t, uint64_t, void*); +typedef void (*vFpUUi_t)(void*, uint64_t, uint64_t, int64_t); +typedef void (*vFpUUp_t)(void*, uint64_t, uint64_t, void*); +typedef void (*vFpUpp_t)(void*, uint64_t, void*, void*); +typedef void (*vFpfff_t)(void*, float, float, float); typedef void (*vFpdii_t)(void*, double, int64_t, int64_t); typedef void (*vFpddi_t)(void*, double, double, int64_t); typedef void (*vFpddd_t)(void*, double, double, double); @@ -666,6 +681,7 @@ typedef int64_t (*iFEpii_t)(x64emu_t*, void*, int64_t, int64_t); typedef int64_t (*iFEpip_t)(x64emu_t*, void*, int64_t, void*); typedef int64_t (*iFEpiV_t)(x64emu_t*, void*, int64_t, void*); typedef int64_t (*iFEpiA_t)(x64emu_t*, void*, int64_t, void*); +typedef int64_t (*iFEpUp_t)(x64emu_t*, void*, uint64_t, void*); typedef int64_t (*iFEpLi_t)(x64emu_t*, void*, uintptr_t, int64_t); typedef int64_t (*iFEpLp_t)(x64emu_t*, void*, uintptr_t, void*); typedef int64_t (*iFEppi_t)(x64emu_t*, void*, void*, int64_t); @@ -732,13 +748,18 @@ typedef int64_t (*iFpuip_t)(void*, uint64_t, int64_t, void*); typedef int64_t (*iFpuui_t)(void*, uint64_t, uint64_t, int64_t); typedef int64_t (*iFpuuu_t)(void*, uint64_t, uint64_t, uint64_t); typedef int64_t (*iFpuup_t)(void*, uint64_t, uint64_t, void*); +typedef int64_t (*iFpuUp_t)(void*, uint64_t, uint64_t, void*); typedef int64_t (*iFpuLL_t)(void*, uint64_t, uintptr_t, uintptr_t); typedef int64_t (*iFpuLp_t)(void*, uint64_t, uintptr_t, void*); typedef int64_t (*iFpupi_t)(void*, uint64_t, void*, int64_t); typedef int64_t (*iFpupu_t)(void*, uint64_t, void*, uint64_t); +typedef int64_t (*iFpupU_t)(void*, uint64_t, void*, uint64_t); typedef int64_t (*iFpupL_t)(void*, uint64_t, void*, uintptr_t); typedef int64_t (*iFpupp_t)(void*, uint64_t, void*, void*); typedef int64_t (*iFpupV_t)(void*, uint64_t, void*, void*); +typedef int64_t (*iFpUup_t)(void*, uint64_t, uint64_t, void*); +typedef int64_t (*iFpUUU_t)(void*, uint64_t, uint64_t, uint64_t); +typedef int64_t (*iFpUpp_t)(void*, uint64_t, void*, void*); typedef int64_t (*iFplii_t)(void*, intptr_t, int64_t, int64_t); typedef int64_t (*iFplip_t)(void*, intptr_t, int64_t, void*); typedef int64_t (*iFpLii_t)(void*, uintptr_t, int64_t, int64_t); @@ -979,7 +1000,15 @@ typedef void (*vFpipiu_t)(void*, int64_t, void*, int64_t, uint64_t); typedef void (*vFpuiip_t)(void*, uint64_t, int64_t, int64_t, void*); typedef void (*vFpuipp_t)(void*, uint64_t, int64_t, void*, void*); typedef void (*vFpuuuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t); +typedef void (*vFpuuup_t)(void*, uint64_t, uint64_t, uint64_t, void*); +typedef void (*vFpuupp_t)(void*, uint64_t, uint64_t, void*, void*); typedef void (*vFpuddd_t)(void*, uint64_t, double, double, double); +typedef void (*vFpupup_t)(void*, uint64_t, void*, uint64_t, void*); +typedef void (*vFpUuiu_t)(void*, uint64_t, uint64_t, int64_t, uint64_t); +typedef void (*vFpUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t); +typedef void (*vFpUUup_t)(void*, uint64_t, uint64_t, uint64_t, void*); +typedef void (*vFpUUUu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t); +typedef void (*vFpUUUp_t)(void*, uint64_t, uint64_t, uint64_t, void*); typedef void (*vFpffff_t)(void*, float, float, float, float); typedef void (*vFpddii_t)(void*, double, double, int64_t, int64_t); typedef void (*vFpdddd_t)(void*, double, double, double, double); @@ -1010,6 +1039,7 @@ typedef int64_t (*iFEpiii_t)(x64emu_t*, void*, int64_t, int64_t, int64_t); typedef int64_t (*iFEpipi_t)(x64emu_t*, void*, int64_t, void*, int64_t); typedef int64_t (*iFEpipp_t)(x64emu_t*, void*, int64_t, void*, void*); typedef int64_t (*iFEpipV_t)(x64emu_t*, void*, int64_t, void*, void*); +typedef int64_t (*iFEpUup_t)(x64emu_t*, void*, uint64_t, uint64_t, void*); typedef int64_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*); typedef int64_t (*iFEpLpV_t)(x64emu_t*, void*, uintptr_t, void*, void*); typedef int64_t (*iFEpLpA_t)(x64emu_t*, void*, uintptr_t, void*, void*); @@ -1061,6 +1091,7 @@ typedef int64_t (*iFpuuui_t)(void*, uint64_t, uint64_t, uint64_t, int64_t); typedef int64_t (*iFpuuup_t)(void*, uint64_t, uint64_t, uint64_t, void*); typedef int64_t (*iFpuuLL_t)(void*, uint64_t, uint64_t, uintptr_t, uintptr_t); typedef int64_t (*iFpuupp_t)(void*, uint64_t, uint64_t, void*, void*); +typedef int64_t (*iFpupiU_t)(void*, uint64_t, void*, int64_t, uint64_t); typedef int64_t (*iFpuppp_t)(void*, uint64_t, void*, void*, void*); typedef int64_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint64_t, uint64_t); typedef int64_t (*iFpLiLi_t)(void*, uintptr_t, int64_t, uintptr_t, int64_t); @@ -1179,6 +1210,7 @@ typedef void (*vFEiiipp_t)(x64emu_t*, int64_t, int64_t, int64_t, void*, void*); typedef void (*vFEpiLpp_t)(x64emu_t*, void*, int64_t, uintptr_t, void*, void*); typedef void (*vFEpippp_t)(x64emu_t*, void*, int64_t, void*, void*, void*); typedef void (*vFEpuipp_t)(x64emu_t*, void*, uint64_t, int64_t, void*, void*); +typedef void (*vFEpupup_t)(x64emu_t*, void*, uint64_t, void*, uint64_t, void*); typedef void (*vFEpLLpp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*, void*); typedef void (*vFEppipV_t)(x64emu_t*, void*, void*, int64_t, void*, void*); typedef void (*vFEppipA_t)(x64emu_t*, void*, void*, int64_t, void*, void*); @@ -1245,9 +1277,16 @@ typedef void (*vFpiiuuu_t)(void*, int64_t, int64_t, uint64_t, uint64_t, uint64_t typedef void (*vFpiippp_t)(void*, int64_t, int64_t, void*, void*, void*); typedef void (*vFpipipV_t)(void*, int64_t, void*, int64_t, void*, void*); typedef void (*vFpipppi_t)(void*, int64_t, void*, void*, void*, int64_t); +typedef void (*vFpuiiii_t)(void*, uint64_t, int64_t, int64_t, int64_t, int64_t); typedef void (*vFpuiiiu_t)(void*, uint64_t, int64_t, int64_t, int64_t, uint64_t); typedef void (*vFpuiipp_t)(void*, uint64_t, int64_t, int64_t, void*, void*); +typedef void (*vFpuuuiu_t)(void*, uint64_t, uint64_t, uint64_t, int64_t, uint64_t); +typedef void (*vFpuuppp_t)(void*, uint64_t, uint64_t, void*, void*, void*); typedef void (*vFpudddd_t)(void*, uint64_t, double, double, double, double); +typedef void (*vFpUiuup_t)(void*, uint64_t, int64_t, uint64_t, uint64_t, void*); +typedef void (*vFpUiUup_t)(void*, uint64_t, int64_t, uint64_t, uint64_t, void*); +typedef void (*vFpUipup_t)(void*, uint64_t, int64_t, void*, uint64_t, void*); +typedef void (*vFpUUiup_t)(void*, uint64_t, uint64_t, int64_t, uint64_t, void*); typedef void (*vFpdddii_t)(void*, double, double, double, int64_t, int64_t); typedef void (*vFpddddd_t)(void*, double, double, double, double, double); typedef void (*vFppiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t); @@ -1285,6 +1324,7 @@ typedef int64_t (*iFEpiipV_t)(x64emu_t*, void*, int64_t, int64_t, void*, void*); typedef int64_t (*iFEpilpV_t)(x64emu_t*, void*, int64_t, intptr_t, void*, void*); typedef int64_t (*iFEpippi_t)(x64emu_t*, void*, int64_t, void*, void*, int64_t); typedef int64_t (*iFEpuppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*); +typedef int64_t (*iFEpUppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*); typedef int64_t (*iFEppppp_t)(x64emu_t*, void*, void*, void*, void*, void*); typedef int64_t (*iFiiiiii_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef int64_t (*iFiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, void*); @@ -1314,6 +1354,8 @@ typedef int64_t (*iFpWpppp_t)(void*, uint16_t, void*, void*, void*, void*); typedef int64_t (*iFpuiCpp_t)(void*, uint64_t, int64_t, uint8_t, void*, void*); typedef int64_t (*iFpuippp_t)(void*, uint64_t, int64_t, void*, void*, void*); typedef int64_t (*iFpupuui_t)(void*, uint64_t, void*, uint64_t, uint64_t, int64_t); +typedef int64_t (*iFpUUUip_t)(void*, uint64_t, uint64_t, uint64_t, int64_t, void*); +typedef int64_t (*iFpUUUUp_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, void*); typedef int64_t (*iFppiiip_t)(void*, void*, int64_t, int64_t, int64_t, void*); typedef int64_t (*iFppiiuu_t)(void*, void*, int64_t, int64_t, uint64_t, uint64_t); typedef int64_t (*iFppiipi_t)(void*, void*, int64_t, int64_t, void*, int64_t); @@ -1452,6 +1494,11 @@ typedef void (*vFpiiliip_t)(void*, int64_t, int64_t, intptr_t, int64_t, int64_t, typedef void (*vFpiipCpp_t)(void*, int64_t, int64_t, void*, uint8_t, void*, void*); typedef void (*vFpipipii_t)(void*, int64_t, void*, int64_t, void*, int64_t, int64_t); typedef void (*vFpipppii_t)(void*, int64_t, void*, void*, void*, int64_t, int64_t); +typedef void (*vFpuuuuuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t); +typedef void (*vFpuuUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t); +typedef void (*vFpuupppp_t)(void*, uint64_t, uint64_t, void*, void*, void*, void*); +typedef void (*vFpUiUiup_t)(void*, uint64_t, int64_t, uint64_t, int64_t, uint64_t, void*); +typedef void (*vFpUUUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t); typedef void (*vFpddiidd_t)(void*, double, double, int64_t, int64_t, double, double); typedef void (*vFpdddddd_t)(void*, double, double, double, double, double, double); typedef void (*vFppiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t); @@ -1478,6 +1525,7 @@ typedef void (*vFpppppip_t)(void*, void*, void*, void*, void*, int64_t, void*); typedef void (*vFppppppi_t)(void*, void*, void*, void*, void*, void*, int64_t); typedef void (*vFppppppp_t)(void*, void*, void*, void*, void*, void*, void*); typedef int64_t (*iFEpupppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*, void*); +typedef int64_t (*iFEpUuppp_t)(x64emu_t*, void*, uint64_t, uint64_t, void*, void*, void*); typedef int64_t (*iFEpLiLpV_t)(x64emu_t*, void*, uintptr_t, int64_t, uintptr_t, void*, void*); typedef int64_t (*iFEppuppp_t)(x64emu_t*, void*, void*, uint64_t, void*, void*, void*); typedef int64_t (*iFEppLpIi_t)(x64emu_t*, void*, void*, uintptr_t, void*, int64_t, int64_t); @@ -1486,6 +1534,7 @@ typedef int64_t (*iFEpppppL_t)(x64emu_t*, void*, void*, void*, void*, void*, uin typedef int64_t (*iFEpppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void*); typedef int64_t (*iFiiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*); typedef int64_t (*iFpiiiiii_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); +typedef int64_t (*iFpiiiiip_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*); typedef int64_t (*iFpiiiuwp_t)(void*, int64_t, int64_t, int64_t, uint64_t, int16_t, void*); typedef int64_t (*iFpiiuuiu_t)(void*, int64_t, int64_t, uint64_t, uint64_t, int64_t, uint64_t); typedef int64_t (*iFpiipppp_t)(void*, int64_t, int64_t, void*, void*, void*, void*); @@ -1608,8 +1657,12 @@ typedef void (*vFffffffff_t)(float, float, float, float, float, float, float, fl typedef void (*vFlipuiuip_t)(intptr_t, int64_t, void*, uint64_t, int64_t, uint64_t, int64_t, void*); typedef void (*vFpiiiiiii_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef void (*vFpiiiipii_t)(void*, int64_t, int64_t, int64_t, int64_t, void*, int64_t, int64_t); +typedef void (*vFpiiULipp_t)(void*, int64_t, int64_t, uint64_t, uintptr_t, int64_t, void*, void*); +typedef void (*vFpiUuupup_t)(void*, int64_t, uint64_t, uint64_t, uint64_t, void*, uint64_t, void*); typedef void (*vFpippiiuu_t)(void*, int64_t, void*, void*, int64_t, int64_t, uint64_t, uint64_t); typedef void (*vFpippiipi_t)(void*, int64_t, void*, void*, int64_t, int64_t, void*, int64_t); +typedef void (*vFpUiUiupi_t)(void*, uint64_t, int64_t, uint64_t, int64_t, uint64_t, void*, int64_t); +typedef void (*vFpUuuUUUi_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, int64_t); typedef void (*vFppiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef void (*vFppiiipii_t)(void*, void*, int64_t, int64_t, int64_t, void*, int64_t, int64_t); typedef void (*vFppipipii_t)(void*, void*, int64_t, void*, int64_t, void*, int64_t, int64_t); @@ -1634,6 +1687,7 @@ typedef int64_t (*iFpuippLpp_t)(void*, uint64_t, int64_t, void*, void*, uintptr_ typedef int64_t (*iFpuuiiiii_t)(void*, uint64_t, uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef int64_t (*iFpupppWWu_t)(void*, uint64_t, void*, void*, void*, uint16_t, uint16_t, uint64_t); typedef int64_t (*iFpupppppp_t)(void*, uint64_t, void*, void*, void*, void*, void*, void*); +typedef int64_t (*iFpUuuLpUi_t)(void*, uint64_t, uint64_t, uint64_t, uintptr_t, void*, uint64_t, int64_t); typedef int64_t (*iFppiiiiiu_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t); typedef int64_t (*iFppIIIppp_t)(void*, void*, int64_t, int64_t, int64_t, void*, void*, void*); typedef int64_t (*iFpppiiipi_t)(void*, void*, void*, int64_t, int64_t, int64_t, void*, int64_t); @@ -1676,6 +1730,7 @@ typedef void* (*pFplpppppp_t)(void*, intptr_t, void*, void*, void*, void*, void* typedef void* (*pFppiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef void* (*pFpppuuLLu_t)(void*, void*, void*, uint64_t, uint64_t, uintptr_t, uintptr_t, uint64_t); typedef void* (*pFpppppupp_t)(void*, void*, void*, void*, void*, uint64_t, void*, void*); +typedef void (*vFEpiiiiipp_t)(x64emu_t*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*); typedef void (*vFEppiipppp_t)(x64emu_t*, void*, void*, int64_t, int64_t, void*, void*, void*, void*); typedef void (*vFEpppiippp_t)(x64emu_t*, void*, void*, void*, int64_t, int64_t, void*, void*, void*); typedef void (*vFiiiiiiiii_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); @@ -1799,6 +1854,7 @@ typedef void* (*pFpuuuwwwwWW_t)(void*, uint64_t, uint64_t, uint64_t, int16_t, in typedef void* (*pFplllllllll_t)(void*, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t); typedef void* (*pFppuiipuuii_t)(void*, void*, uint64_t, int64_t, int64_t, void*, uint64_t, uint64_t, int64_t, int64_t); typedef void* (*pFpppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); +typedef void (*vFEpiiiupupup_t)(x64emu_t*, void*, int64_t, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*); typedef void (*vFuiiiiiiiiip_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*); typedef void (*vFuiiiiiiiuip_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t, int64_t, void*); typedef void (*vFuiiiiiiiuup_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t, uint64_t, void*); @@ -1814,6 +1870,7 @@ typedef void (*vFuuddiiddiip_t)(uint64_t, uint64_t, double, double, int64_t, int typedef void (*vFuffffffffff_t)(uint64_t, float, float, float, float, float, float, float, float, float, float); typedef void (*vFpipipiipiii_t)(void*, int64_t, void*, int64_t, void*, int64_t, int64_t, void*, int64_t, int64_t, int64_t); typedef void (*vFpipppiiiipi_t)(void*, int64_t, void*, void*, void*, int64_t, int64_t, int64_t, int64_t, void*, int64_t); +typedef void (*vFpupiiupupup_t)(void*, uint64_t, void*, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*); typedef void (*vFppiiiiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t); typedef void (*vFppiiiiipiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, int64_t, int64_t, int64_t); typedef void (*vFppiiiiddddi_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, double, double, double, double, int64_t); @@ -2232,6 +2289,10 @@ void vFpui(x64emu_t *emu, uintptr_t fcn) { vFpui_t fn = (vFpui_t)fcn; fn((void*) void vFpuI(x64emu_t *emu, uintptr_t fcn) { vFpuI_t fn = (vFpuI_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); } void vFpuu(x64emu_t *emu, uintptr_t fcn) { vFpuu_t fn = (vFpuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); } void vFpup(x64emu_t *emu, uintptr_t fcn) { vFpup_t fn = (vFpup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } +void vFpUi(x64emu_t *emu, uintptr_t fcn) { vFpUi_t fn = (vFpUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); } +void vFpUu(x64emu_t *emu, uintptr_t fcn) { vFpUu_t fn = (vFpUu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); } +void vFpUU(x64emu_t *emu, uintptr_t fcn) { vFpUU_t fn = (vFpUU_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); } +void vFpUp(x64emu_t *emu, uintptr_t fcn) { vFpUp_t fn = (vFpUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } void vFpff(x64emu_t *emu, uintptr_t fcn) { vFpff_t fn = (vFpff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); } void vFpdd(x64emu_t *emu, uintptr_t fcn) { vFpdd_t fn = (vFpdd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); } void vFpll(x64emu_t *emu, uintptr_t fcn) { vFpll_t fn = (vFpll_t)fcn; fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX); } @@ -2241,6 +2302,7 @@ void vFpLL(x64emu_t *emu, uintptr_t fcn) { vFpLL_t fn = (vFpLL_t)fcn; fn((void*) void vFpLp(x64emu_t *emu, uintptr_t fcn) { vFpLp_t fn = (vFpLp_t)fcn; fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); } void vFppi(x64emu_t *emu, uintptr_t fcn) { vFppi_t fn = (vFppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); } void vFppu(x64emu_t *emu, uintptr_t fcn) { vFppu_t fn = (vFppu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX); } +void vFppU(x64emu_t *emu, uintptr_t fcn) { vFppU_t fn = (vFppU_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX); } void vFppd(x64emu_t *emu, uintptr_t fcn) { vFppd_t fn = (vFppd_t)fcn; fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0]); } void vFppl(x64emu_t *emu, uintptr_t fcn) { vFppl_t fn = (vFppl_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX); } void vFppL(x64emu_t *emu, uintptr_t fcn) { vFppL_t fn = (vFppL_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); } @@ -2302,6 +2364,7 @@ void iFpuL(x64emu_t *emu, uintptr_t fcn) { iFpuL_t fn = (iFpuL_t)fcn; R_RAX=(int void iFpup(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } void iFpUi(x64emu_t *emu, uintptr_t fcn) { iFpUi_t fn = (iFpUi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); } void iFpUU(x64emu_t *emu, uintptr_t fcn) { iFpUU_t fn = (iFpUU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); } +void iFpUp(x64emu_t *emu, uintptr_t fcn) { iFpUp_t fn = (iFpUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } void iFpfu(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].f[0], (uint64_t)R_RSI); } void iFpff(x64emu_t *emu, uintptr_t fcn) { iFpff_t fn = (iFpff_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); } void iFpdd(x64emu_t *emu, uintptr_t fcn) { iFpdd_t fn = (iFpdd_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); } @@ -2453,6 +2516,7 @@ void vFELLp(x64emu_t *emu, uintptr_t fcn) { vFELLp_t fn = (vFELLp_t)fcn; fn(emu, void vFEpii(x64emu_t *emu, uintptr_t fcn) { vFEpii_t fn = (vFEpii_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX); } void vFEpip(x64emu_t *emu, uintptr_t fcn) { vFEpip_t fn = (vFEpip_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); } void vFEpup(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } +void vFEpUp(x64emu_t *emu, uintptr_t fcn) { vFEpUp_t fn = (vFEpUp_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } void vFEppp(x64emu_t *emu, uintptr_t fcn) { vFEppp_t fn = (vFEppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); } void vFEppV(x64emu_t *emu, uintptr_t fcn) { vFEppV_t fn = (vFEppV_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); } void vFEppA(x64emu_t *emu, uintptr_t fcn) { vFEppA_t fn = (vFEppA_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); } @@ -2521,6 +2585,7 @@ void vFpiip(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn((voi void vFpiuu(x64emu_t *emu, uintptr_t fcn) { vFpiuu_t fn = (vFpiuu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); } void vFpiuL(x64emu_t *emu, uintptr_t fcn) { vFpiuL_t fn = (vFpiuL_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uintptr_t)R_RCX); } void vFpiup(x64emu_t *emu, uintptr_t fcn) { vFpiup_t fn = (vFpiup_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } +void vFpiUu(x64emu_t *emu, uintptr_t fcn) { vFpiUu_t fn = (vFpiUu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); } void vFpifi(x64emu_t *emu, uintptr_t fcn) { vFpifi_t fn = (vFpifi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, emu->xmm[0].f[0], (int64_t)R_RDX); } void vFpipi(x64emu_t *emu, uintptr_t fcn) { vFpipi_t fn = (vFpipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); } void vFpipp(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } @@ -2531,6 +2596,13 @@ void vFpuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuu_t fn = (vFpuuu_t)fcn; fn((voi void vFpuup(x64emu_t *emu, uintptr_t fcn) { vFpuup_t fn = (vFpuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } void vFpudd(x64emu_t *emu, uintptr_t fcn) { vFpudd_t fn = (vFpudd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0]); } void vFpupp(x64emu_t *emu, uintptr_t fcn) { vFpupp_t fn = (vFpupp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } +void vFpUui(x64emu_t *emu, uintptr_t fcn) { vFpUui_t fn = (vFpUui_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); } +void vFpUuu(x64emu_t *emu, uintptr_t fcn) { vFpUuu_t fn = (vFpUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); } +void vFpUup(x64emu_t *emu, uintptr_t fcn) { vFpUup_t fn = (vFpUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } +void vFpUUi(x64emu_t *emu, uintptr_t fcn) { vFpUUi_t fn = (vFpUUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); } +void vFpUUp(x64emu_t *emu, uintptr_t fcn) { vFpUUp_t fn = (vFpUUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } +void vFpUpp(x64emu_t *emu, uintptr_t fcn) { vFpUpp_t fn = (vFpUpp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } +void vFpfff(x64emu_t *emu, uintptr_t fcn) { vFpfff_t fn = (vFpfff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); } void vFpdii(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], (int64_t)R_RSI, (int64_t)R_RDX); } void vFpddi(x64emu_t *emu, uintptr_t fcn) { vFpddi_t fn = (vFpddi_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI); } void vFpddd(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); } @@ -2565,6 +2637,7 @@ void iFEpii(x64emu_t *emu, uintptr_t fcn) { iFEpii_t fn = (iFEpii_t)fcn; R_RAX=( void iFEpip(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); } void iFEpiV(x64emu_t *emu, uintptr_t fcn) { iFEpiV_t fn = (iFEpiV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)(R_RSP + 8)); } void iFEpiA(x64emu_t *emu, uintptr_t fcn) { iFEpiA_t fn = (iFEpiA_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); } +void iFEpUp(x64emu_t *emu, uintptr_t fcn) { iFEpUp_t fn = (iFEpUp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); } void iFEpLi(x64emu_t *emu, uintptr_t fcn) { iFEpLi_t fn = (iFEpLi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX); } void iFEpLp(x64emu_t *emu, uintptr_t fcn) { iFEpLp_t fn = (iFEpLp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); } void iFEppi(x64emu_t *emu, uintptr_t fcn) { iFEppi_t fn = (iFEppi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); } @@ -2631,13 +2704,18 @@ void iFpuip(x64emu_t *emu, uintptr_t fcn) { iFpuip_t fn = (iFpuip_t)fcn; R_RAX=( void iFpuui(x64emu_t *emu, uintptr_t fcn) { iFpuui_t fn = (iFpuui_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); } void iFpuuu(x64emu_t *emu, uintptr_t fcn) { iFpuuu_t fn = (iFpuuu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); } void iFpuup(x64emu_t *emu, uintptr_t fcn) { iFpuup_t fn = (iFpuup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } +void iFpuUp(x64emu_t *emu, uintptr_t fcn) { iFpuUp_t fn = (iFpuUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } void iFpuLL(x64emu_t *emu, uintptr_t fcn) { iFpuLL_t fn = (iFpuLL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); } void iFpuLp(x64emu_t *emu, uintptr_t fcn) { iFpuLp_t fn = (iFpuLp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); } void iFpupi(x64emu_t *emu, uintptr_t fcn) { iFpupi_t fn = (iFpupi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); } void iFpupu(x64emu_t *emu, uintptr_t fcn) { iFpupu_t fn = (iFpupu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX); } +void iFpupU(x64emu_t *emu, uintptr_t fcn) { iFpupU_t fn = (iFpupU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX); } void iFpupL(x64emu_t *emu, uintptr_t fcn) { iFpupL_t fn = (iFpupL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); } void iFpupp(x64emu_t *emu, uintptr_t fcn) { iFpupp_t fn = (iFpupp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFpupV(x64emu_t *emu, uintptr_t fcn) { iFpupV_t fn = (iFpupV_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } +void iFpUup(x64emu_t *emu, uintptr_t fcn) { iFpUup_t fn = (iFpUup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } +void iFpUUU(x64emu_t *emu, uintptr_t fcn) { iFpUUU_t fn = (iFpUUU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); } +void iFpUpp(x64emu_t *emu, uintptr_t fcn) { iFpUpp_t fn = (iFpUpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFplii(x64emu_t *emu, uintptr_t fcn) { iFplii_t fn = (iFplii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); } void iFplip(x64emu_t *emu, uintptr_t fcn) { iFplip_t fn = (iFplip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX); } void iFpLii(x64emu_t *emu, uintptr_t fcn) { iFpLii_t fn = (iFpLii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); } @@ -2878,7 +2956,15 @@ void vFpipiu(x64emu_t *emu, uintptr_t fcn) { vFpipiu_t fn = (vFpipiu_t)fcn; fn(( void vFpuiip(x64emu_t *emu, uintptr_t fcn) { vFpuiip_t fn = (vFpuiip_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8); } void vFpuipp(x64emu_t *emu, uintptr_t fcn) { vFpuipp_t fn = (vFpuipp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFpuuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuuu_t fn = (vFpuuuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); } +void vFpuuup(x64emu_t *emu, uintptr_t fcn) { vFpuuup_t fn = (vFpuuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } +void vFpuupp(x64emu_t *emu, uintptr_t fcn) { vFpuupp_t fn = (vFpuupp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFpuddd(x64emu_t *emu, uintptr_t fcn) { vFpuddd_t fn = (vFpuddd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); } +void vFpupup(x64emu_t *emu, uintptr_t fcn) { vFpupup_t fn = (vFpupup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } +void vFpUuiu(x64emu_t *emu, uintptr_t fcn) { vFpUuiu_t fn = (vFpUuiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); } +void vFpUUuu(x64emu_t *emu, uintptr_t fcn) { vFpUUuu_t fn = (vFpUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); } +void vFpUUup(x64emu_t *emu, uintptr_t fcn) { vFpUUup_t fn = (vFpUUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } +void vFpUUUu(x64emu_t *emu, uintptr_t fcn) { vFpUUUu_t fn = (vFpUUUu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); } +void vFpUUUp(x64emu_t *emu, uintptr_t fcn) { vFpUUUp_t fn = (vFpUUUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } void vFpffff(x64emu_t *emu, uintptr_t fcn) { vFpffff_t fn = (vFpffff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); } void vFpddii(x64emu_t *emu, uintptr_t fcn) { vFpddii_t fn = (vFpddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI, (int64_t)R_RDX); } void vFpdddd(x64emu_t *emu, uintptr_t fcn) { vFpdddd_t fn = (vFpdddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); } @@ -2909,6 +2995,7 @@ void iFEpiii(x64emu_t *emu, uintptr_t fcn) { iFEpiii_t fn = (iFEpiii_t)fcn; R_RA void iFEpipi(x64emu_t *emu, uintptr_t fcn) { iFEpipi_t fn = (iFEpipi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); } void iFEpipp(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFEpipV(x64emu_t *emu, uintptr_t fcn) { iFEpipV_t fn = (iFEpipV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } +void iFEpUup(x64emu_t *emu, uintptr_t fcn) { iFEpUup_t fn = (iFEpUup_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); } void iFEpLpp(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } void iFEpLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLpV_t fn = (iFEpLpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } void iFEpLpA(x64emu_t *emu, uintptr_t fcn) { iFEpLpA_t fn = (iFEpLpA_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); } @@ -2960,6 +3047,7 @@ void iFpuuui(x64emu_t *emu, uintptr_t fcn) { iFpuuui_t fn = (iFpuuui_t)fcn; R_RA void iFpuuup(x64emu_t *emu, uintptr_t fcn) { iFpuuup_t fn = (iFpuuup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } void iFpuuLL(x64emu_t *emu, uintptr_t fcn) { iFpuuLL_t fn = (iFpuuLL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); } void iFpuupp(x64emu_t *emu, uintptr_t fcn) { iFpuupp_t fn = (iFpuupp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8); } +void iFpupiU(x64emu_t *emu, uintptr_t fcn) { iFpupiU_t fn = (iFpupiU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); } void iFpuppp(x64emu_t *emu, uintptr_t fcn) { iFpuppp_t fn = (iFpuppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void iFplluu(x64emu_t *emu, uintptr_t fcn) { iFplluu_t fn = (iFplluu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); } void iFpLiLi(x64emu_t *emu, uintptr_t fcn) { iFpLiLi_t fn = (iFpLiLi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (int64_t)R_R8); } @@ -3078,6 +3166,7 @@ void vFEiiipp(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; f void vFEpiLpp(x64emu_t *emu, uintptr_t fcn) { vFEpiLpp_t fn = (vFEpiLpp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFEpippp(x64emu_t *emu, uintptr_t fcn) { vFEpippp_t fn = (vFEpippp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFEpuipp(x64emu_t *emu, uintptr_t fcn) { vFEpuipp_t fn = (vFEpuipp_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); } +void vFEpupup(x64emu_t *emu, uintptr_t fcn) { vFEpupup_t fn = (vFEpupup_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8); } void vFEpLLpp(x64emu_t *emu, uintptr_t fcn) { vFEpLLpp_t fn = (vFEpLLpp_t)fcn; fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); } void vFEppipV(x64emu_t *emu, uintptr_t fcn) { vFEppipV_t fn = (vFEppipV_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)(R_RSP + 8)); } void vFEppipA(x64emu_t *emu, uintptr_t fcn) { vFEppipA_t fn = (vFEppipA_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); } @@ -3144,9 +3233,16 @@ void vFpiiuuu(x64emu_t *emu, uintptr_t fcn) { vFpiiuuu_t fn = (vFpiiuuu_t)fcn; f void vFpiippp(x64emu_t *emu, uintptr_t fcn) { vFpiippp_t fn = (vFpiippp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void vFpipipV(x64emu_t *emu, uintptr_t fcn) { vFpipipV_t fn = (vFpipipV_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)(R_RSP + 8)); } void vFpipppi(x64emu_t *emu, uintptr_t fcn) { vFpipppi_t fn = (vFpipppi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9); } +void vFpuiiii(x64emu_t *emu, uintptr_t fcn) { vFpuiiii_t fn = (vFpuiiii_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); } void vFpuiiiu(x64emu_t *emu, uintptr_t fcn) { vFpuiiiu_t fn = (vFpuiiiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9); } void vFpuiipp(x64emu_t *emu, uintptr_t fcn) { vFpuiipp_t fn = (vFpuiipp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9); } +void vFpuuuiu(x64emu_t *emu, uintptr_t fcn) { vFpuuuiu_t fn = (vFpuuuiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9); } +void vFpuuppp(x64emu_t *emu, uintptr_t fcn) { vFpuuppp_t fn = (vFpuuppp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void vFpudddd(x64emu_t *emu, uintptr_t fcn) { vFpudddd_t fn = (vFpudddd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); } +void vFpUiuup(x64emu_t *emu, uintptr_t fcn) { vFpUiuup_t fn = (vFpUiuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); } +void vFpUiUup(x64emu_t *emu, uintptr_t fcn) { vFpUiUup_t fn = (vFpUiUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); } +void vFpUipup(x64emu_t *emu, uintptr_t fcn) { vFpUipup_t fn = (vFpUipup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (uint64_t)R_R8, (void*)R_R9); } +void vFpUUiup(x64emu_t *emu, uintptr_t fcn) { vFpUUiup_t fn = (vFpUUiup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); } void vFpdddii(x64emu_t *emu, uintptr_t fcn) { vFpdddii_t fn = (vFpdddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (int64_t)R_RSI, (int64_t)R_RDX); } void vFpddddd(x64emu_t *emu, uintptr_t fcn) { vFpddddd_t fn = (vFpddddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0]); } void vFppiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiii_t fn = (vFppiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); } @@ -3184,6 +3280,7 @@ void iFEpiipV(x64emu_t *emu, uintptr_t fcn) { iFEpiipV_t fn = (iFEpiipV_t)fcn; R void iFEpilpV(x64emu_t *emu, uintptr_t fcn) { iFEpilpV_t fn = (iFEpilpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX, (void*)(R_RSP + 8)); } void iFEpippi(x64emu_t *emu, uintptr_t fcn) { iFEpippi_t fn = (iFEpippi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8); } void iFEpuppp(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } +void iFEpUppp(x64emu_t *emu, uintptr_t fcn) { iFEpUppp_t fn = (iFEpUppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void iFEppppp(x64emu_t *emu, uintptr_t fcn) { iFEppppp_t fn = (iFEppppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void iFiiiiii(x64emu_t *emu, uintptr_t fcn) { iFiiiiii_t fn = (iFiiiiii_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); } void iFiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiip_t fn = (iFiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); } @@ -3213,6 +3310,8 @@ void iFpWpppp(x64emu_t *emu, uintptr_t fcn) { iFpWpppp_t fn = (iFpWpppp_t)fcn; R void iFpuiCpp(x64emu_t *emu, uintptr_t fcn) { iFpuiCpp_t fn = (iFpuiCpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint8_t)R_RCX, (void*)R_R8, (void*)R_R9); } void iFpuippp(x64emu_t *emu, uintptr_t fcn) { iFpuippp_t fn = (iFpuippp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void iFpupuui(x64emu_t *emu, uintptr_t fcn) { iFpupuui_t fn = (iFpupuui_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (int64_t)R_R9); } +void iFpUUUip(x64emu_t *emu, uintptr_t fcn) { iFpUUUip_t fn = (iFpUUUip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); } +void iFpUUUUp(x64emu_t *emu, uintptr_t fcn) { iFpUUUUp_t fn = (iFpUUUUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); } void iFppiiip(x64emu_t *emu, uintptr_t fcn) { iFppiiip_t fn = (iFppiiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); } void iFppiiuu(x64emu_t *emu, uintptr_t fcn) { iFppiiuu_t fn = (iFppiiuu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9); } void iFppiipi(x64emu_t *emu, uintptr_t fcn) { iFppiipi_t fn = (iFppiipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9); } @@ -3351,6 +3450,11 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fcn) { vFpiiliip_t fn = (vFpiiliip_t)fcn void vFpiipCpp(x64emu_t *emu, uintptr_t fcn) { vFpiipCpp_t fn = (vFpiipCpp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (uint8_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void vFpipipii(x64emu_t *emu, uintptr_t fcn) { vFpipipii_t fn = (vFpipipii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } void vFpipppii(x64emu_t *emu, uintptr_t fcn) { vFpipppii_t fn = (vFpipppii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } +void vFpuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuuuuu_t fn = (vFpuuuuuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); } +void vFpuuUUuu(x64emu_t *emu, uintptr_t fcn) { vFpuuUUuu_t fn = (vFpuuUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); } +void vFpuupppp(x64emu_t *emu, uintptr_t fcn) { vFpuupppp_t fn = (vFpuupppp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } +void vFpUiUiup(x64emu_t *emu, uintptr_t fcn) { vFpUiUiup_t fn = (vFpUiUiup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8)); } +void vFpUUUUuu(x64emu_t *emu, uintptr_t fcn) { vFpUUUUuu_t fn = (vFpUUUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); } void vFpddiidd(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI, (int64_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0]); } void vFpdddddd(x64emu_t *emu, uintptr_t fcn) { vFpdddddd_t fn = (vFpdddddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0]); } void vFppiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiii_t fn = (vFppiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } @@ -3377,6 +3481,7 @@ void vFpppppip(x64emu_t *emu, uintptr_t fcn) { vFpppppip_t fn = (vFpppppip_t)fcn void vFppppppi(x64emu_t *emu, uintptr_t fcn) { vFppppppi_t fn = (vFppppppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); } void vFppppppp(x64emu_t *emu, uintptr_t fcn) { vFppppppp_t fn = (vFppppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void iFEpupppp(x64emu_t *emu, uintptr_t fcn) { iFEpupppp_t fn = (iFEpupppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } +void iFEpUuppp(x64emu_t *emu, uintptr_t fcn) { iFEpUuppp_t fn = (iFEpUuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void iFEpLiLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLiLpV_t fn = (iFEpLiLpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)(R_RSP + 8)); } void iFEppuppp(x64emu_t *emu, uintptr_t fcn) { iFEppuppp_t fn = (iFEppuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void iFEppLpIi(x64emu_t *emu, uintptr_t fcn) { iFEppLpIi_t fn = (iFEppLpIi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9); } @@ -3385,6 +3490,7 @@ void iFEpppppL(x64emu_t *emu, uintptr_t fcn) { iFEpppppL_t fn = (iFEpppppL_t)fcn void iFEpppppp(x64emu_t *emu, uintptr_t fcn) { iFEpppppp_t fn = (iFEpppppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void iFiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiip_t fn = (iFiiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); } void iFpiiiiii(x64emu_t *emu, uintptr_t fcn) { iFpiiiiii_t fn = (iFpiiiiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); } +void iFpiiiiip(x64emu_t *emu, uintptr_t fcn) { iFpiiiiip_t fn = (iFpiiiiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); } void iFpiiiuwp(x64emu_t *emu, uintptr_t fcn) { iFpiiiuwp_t fn = (iFpiiiuwp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (int16_t)R_R9, *(void**)(R_RSP + 8)); } void iFpiiuuiu(x64emu_t *emu, uintptr_t fcn) { iFpiiuuiu_t fn = (iFpiiuuiu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (int64_t)R_R9, *(uint64_t*)(R_RSP + 8)); } void iFpiipppp(x64emu_t *emu, uintptr_t fcn) { iFpiipppp_t fn = (iFpiipppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } @@ -3507,8 +3613,12 @@ void vFffffffff(x64emu_t *emu, uintptr_t fcn) { vFffffffff_t fn = (vFffffffff_t) void vFlipuiuip(x64emu_t *emu, uintptr_t fcn) { vFlipuiuip_t fn = (vFlipuiuip_t)fcn; fn((intptr_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); } void vFpiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFpiiiiiii_t fn = (vFpiiiiiii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void vFpiiiipii(x64emu_t *emu, uintptr_t fcn) { vFpiiiipii_t fn = (vFpiiiipii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } +void vFpiiULipp(x64emu_t *emu, uintptr_t fcn) { vFpiiULipp_t fn = (vFpiiULipp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uintptr_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } +void vFpiUuupup(x64emu_t *emu, uintptr_t fcn) { vFpiUuupup_t fn = (vFpiUuupup_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); } void vFpippiiuu(x64emu_t *emu, uintptr_t fcn) { vFpippiiuu_t fn = (vFpippiiuu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); } void vFpippiipi(x64emu_t *emu, uintptr_t fcn) { vFpippiipi_t fn = (vFpippiipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } +void vFpUiUiupi(x64emu_t *emu, uintptr_t fcn) { vFpUiUiupi_t fn = (vFpUiUiupi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } +void vFpUuuUUUi(x64emu_t *emu, uintptr_t fcn) { vFpUuuUUUi_t fn = (vFpUuuUUUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void vFppiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiii_t fn = (vFppiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void vFppiiipii(x64emu_t *emu, uintptr_t fcn) { vFppiiipii_t fn = (vFppiiipii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void vFppipipii(x64emu_t *emu, uintptr_t fcn) { vFppipipii_t fn = (vFppipipii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } @@ -3533,6 +3643,7 @@ void iFpuippLpp(x64emu_t *emu, uintptr_t fcn) { iFpuippLpp_t fn = (iFpuippLpp_t) void iFpuuiiiii(x64emu_t *emu, uintptr_t fcn) { iFpuuiiiii_t fn = (iFpuuiiiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void iFpupppWWu(x64emu_t *emu, uintptr_t fcn) { iFpupppWWu_t fn = (iFpupppWWu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint16_t)R_R9, *(uint16_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); } void iFpupppppp(x64emu_t *emu, uintptr_t fcn) { iFpupppppp_t fn = (iFpupppppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } +void iFpUuuLpUi(x64emu_t *emu, uintptr_t fcn) { iFpUuuLpUi_t fn = (iFpUuuLpUi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void iFppiiiiiu(x64emu_t *emu, uintptr_t fcn) { iFppiiiiiu_t fn = (iFppiiiiiu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); } void iFppIIIppp(x64emu_t *emu, uintptr_t fcn) { iFppIIIppp_t fn = (iFppIIIppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void iFpppiiipi(x64emu_t *emu, uintptr_t fcn) { iFpppiiipi_t fn = (iFpppiiipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } @@ -3575,6 +3686,7 @@ void pFplpppppp(x64emu_t *emu, uintptr_t fcn) { pFplpppppp_t fn = (pFplpppppp_t) void pFppiiiiii(x64emu_t *emu, uintptr_t fcn) { pFppiiiiii_t fn = (pFppiiiiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); } void pFpppuuLLu(x64emu_t *emu, uintptr_t fcn) { pFpppuuLLu_t fn = (pFpppuuLLu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uintptr_t)R_R9, *(uintptr_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); } void pFpppppupp(x64emu_t *emu, uintptr_t fcn) { pFpppppupp_t fn = (pFpppppupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } +void vFEpiiiiipp(x64emu_t *emu, uintptr_t fcn) { vFEpiiiiipp_t fn = (vFEpiiiiipp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void vFEppiipppp(x64emu_t *emu, uintptr_t fcn) { vFEppiipppp_t fn = (vFEppiipppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void vFEpppiippp(x64emu_t *emu, uintptr_t fcn) { vFEpppiippp_t fn = (vFEpppiippp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); } void vFiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiii_t fn = (vFiiiiiiiii_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24)); } @@ -3698,6 +3810,7 @@ void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fcn) { pFpuuuwwwwWW_t fn = (pFpuuuwww void pFplllllllll(x64emu_t *emu, uintptr_t fcn) { pFplllllllll_t fn = (pFplllllllll_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9, *(intptr_t*)(R_RSP + 8), *(intptr_t*)(R_RSP + 16), *(intptr_t*)(R_RSP + 24), *(intptr_t*)(R_RSP + 32)); } void pFppuiipuuii(x64emu_t *emu, uintptr_t fcn) { pFppuiipuuii_t fn = (pFppuiipuuii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32)); } void pFpppppppppp(x64emu_t *emu, uintptr_t fcn) { pFpppppppppp_t fn = (pFpppppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); } +void vFEpiiiupupup(x64emu_t *emu, uintptr_t fcn) { vFEpiiiupupup_t fn = (vFEpiiiupupup_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); } void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiiip_t fn = (vFuiiiiiiiiip_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuip_t fn = (vFuiiiiiiiuip_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuup_t fn = (vFuiiiiiiiuup_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(uint64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } @@ -3713,6 +3826,7 @@ void vFuuddiiddiip(x64emu_t *emu, uintptr_t fcn) { vFuuddiiddiip_t fn = (vFuuddi void vFuffffffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffffffff_t fn = (vFuffffffffff_t)fcn; fn((uint64_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16)); } void vFpipipiipiii(x64emu_t *emu, uintptr_t fcn) { vFpipipiipiii_t fn = (vFpipipiipiii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); } void vFpipppiiiipi(x64emu_t *emu, uintptr_t fcn) { vFpipppiiiipi_t fn = (vFpipppiiiipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); } +void vFpupiiupupup(x64emu_t *emu, uintptr_t fcn) { vFpupiiupupup_t fn = (vFpupiiupupup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(uint64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); } void vFppiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiiiiii_t fn = (vFppiiiiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); } void vFppiiiiipiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiipiii_t fn = (vFppiiiiipiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); } void vFppiiiiddddi(x64emu_t *emu, uintptr_t fcn) { vFppiiiiddddi_t fn = (vFppiiiiddddi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], *(int64_t*)(R_RSP + 8)); } @@ -4102,6 +4216,10 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpuI) return 1; if (fun == &vFpuu) return 1; if (fun == &vFpup) return 1; + if (fun == &vFpUi) return 1; + if (fun == &vFpUu) return 1; + if (fun == &vFpUU) return 1; + if (fun == &vFpUp) return 1; if (fun == &vFpff) return 3; if (fun == &vFpdd) return 3; if (fun == &vFpll) return 1; @@ -4111,6 +4229,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpLp) return 1; if (fun == &vFppi) return 1; if (fun == &vFppu) return 1; + if (fun == &vFppU) return 1; if (fun == &vFppd) return 2; if (fun == &vFppl) return 1; if (fun == &vFppL) return 1; @@ -4158,6 +4277,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpup) return 1; if (fun == &iFpUi) return 1; if (fun == &iFpUU) return 1; + if (fun == &iFpUp) return 1; if (fun == &iFpfu) return 2; if (fun == &iFpff) return 3; if (fun == &iFpdd) return 3; @@ -4344,6 +4464,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpiuu) return 1; if (fun == &vFpiuL) return 1; if (fun == &vFpiup) return 1; + if (fun == &vFpiUu) return 1; if (fun == &vFpifi) return 2; if (fun == &vFpipi) return 1; if (fun == &vFpipp) return 1; @@ -4354,6 +4475,13 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpuup) return 1; if (fun == &vFpudd) return 3; if (fun == &vFpupp) return 1; + if (fun == &vFpUui) return 1; + if (fun == &vFpUuu) return 1; + if (fun == &vFpUup) return 1; + if (fun == &vFpUUi) return 1; + if (fun == &vFpUUp) return 1; + if (fun == &vFpUpp) return 1; + if (fun == &vFpfff) return 4; if (fun == &vFpdii) return 2; if (fun == &vFpddi) return 3; if (fun == &vFpddd) return 4; @@ -4434,12 +4562,17 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpuui) return 1; if (fun == &iFpuuu) return 1; if (fun == &iFpuup) return 1; + if (fun == &iFpuUp) return 1; if (fun == &iFpuLL) return 1; if (fun == &iFpuLp) return 1; if (fun == &iFpupi) return 1; if (fun == &iFpupu) return 1; + if (fun == &iFpupU) return 1; if (fun == &iFpupL) return 1; if (fun == &iFpupp) return 1; + if (fun == &iFpUup) return 1; + if (fun == &iFpUUU) return 1; + if (fun == &iFpUpp) return 1; if (fun == &iFplii) return 1; if (fun == &iFplip) return 1; if (fun == &iFpLii) return 1; @@ -4645,7 +4778,15 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpuiip) return 1; if (fun == &vFpuipp) return 1; if (fun == &vFpuuuu) return 1; + if (fun == &vFpuuup) return 1; + if (fun == &vFpuupp) return 1; if (fun == &vFpuddd) return 4; + if (fun == &vFpupup) return 1; + if (fun == &vFpUuiu) return 1; + if (fun == &vFpUUuu) return 1; + if (fun == &vFpUUup) return 1; + if (fun == &vFpUUUu) return 1; + if (fun == &vFpUUUp) return 1; if (fun == &vFpffff) return 5; if (fun == &vFpddii) return 3; if (fun == &vFpdddd) return 5; @@ -4710,6 +4851,7 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpuuup) return 1; if (fun == &iFpuuLL) return 1; if (fun == &iFpuupp) return 1; + if (fun == &iFpupiU) return 1; if (fun == &iFpuppp) return 1; if (fun == &iFplluu) return 1; if (fun == &iFpLiLi) return 1; @@ -4866,9 +5008,16 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &vFpiiuuu) return 1; if (fun == &vFpiippp) return 1; if (fun == &vFpipppi) return 1; + if (fun == &vFpuiiii) return 1; if (fun == &vFpuiiiu) return 1; if (fun == &vFpuiipp) return 1; + if (fun == &vFpuuuiu) return 1; + if (fun == &vFpuuppp) return 1; if (fun == &vFpudddd) return 5; + if (fun == &vFpUiuup) return 1; + if (fun == &vFpUiUup) return 1; + if (fun == &vFpUipup) return 1; + if (fun == &vFpUUiup) return 1; if (fun == &vFpdddii) return 4; if (fun == &vFpddddd) return 6; if (fun == &vFppiiii) return 1; @@ -4925,6 +5074,8 @@ int isSimpleWrapper(wrapper_t fun) { if (fun == &iFpuiCpp) return 1; if (fun == &iFpuippp) return 1; if (fun == &iFpupuui) return 1; + if (fun == &iFpUUUip) return 1; + if (fun == &iFpUUUUp) return 1; if (fun == &iFppiiip) return 1; if (fun == &iFppiiuu) return 1; if (fun == &iFppiipi) return 1; diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 8e3b9676..8c49be58 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -332,6 +332,10 @@ void vFpui(x64emu_t *emu, uintptr_t fnc); void vFpuI(x64emu_t *emu, uintptr_t fnc); void vFpuu(x64emu_t *emu, uintptr_t fnc); void vFpup(x64emu_t *emu, uintptr_t fnc); +void vFpUi(x64emu_t *emu, uintptr_t fnc); +void vFpUu(x64emu_t *emu, uintptr_t fnc); +void vFpUU(x64emu_t *emu, uintptr_t fnc); +void vFpUp(x64emu_t *emu, uintptr_t fnc); void vFpff(x64emu_t *emu, uintptr_t fnc); void vFpdd(x64emu_t *emu, uintptr_t fnc); void vFpll(x64emu_t *emu, uintptr_t fnc); @@ -341,6 +345,7 @@ void vFpLL(x64emu_t *emu, uintptr_t fnc); void vFpLp(x64emu_t *emu, uintptr_t fnc); void vFppi(x64emu_t *emu, uintptr_t fnc); void vFppu(x64emu_t *emu, uintptr_t fnc); +void vFppU(x64emu_t *emu, uintptr_t fnc); void vFppd(x64emu_t *emu, uintptr_t fnc); void vFppl(x64emu_t *emu, uintptr_t fnc); void vFppL(x64emu_t *emu, uintptr_t fnc); @@ -402,6 +407,7 @@ void iFpuL(x64emu_t *emu, uintptr_t fnc); void iFpup(x64emu_t *emu, uintptr_t fnc); void iFpUi(x64emu_t *emu, uintptr_t fnc); void iFpUU(x64emu_t *emu, uintptr_t fnc); +void iFpUp(x64emu_t *emu, uintptr_t fnc); void iFpfu(x64emu_t *emu, uintptr_t fnc); void iFpff(x64emu_t *emu, uintptr_t fnc); void iFpdd(x64emu_t *emu, uintptr_t fnc); @@ -553,6 +559,7 @@ void vFELLp(x64emu_t *emu, uintptr_t fnc); void vFEpii(x64emu_t *emu, uintptr_t fnc); void vFEpip(x64emu_t *emu, uintptr_t fnc); void vFEpup(x64emu_t *emu, uintptr_t fnc); +void vFEpUp(x64emu_t *emu, uintptr_t fnc); void vFEppp(x64emu_t *emu, uintptr_t fnc); void vFEppV(x64emu_t *emu, uintptr_t fnc); void vFEppA(x64emu_t *emu, uintptr_t fnc); @@ -621,6 +628,7 @@ void vFpiip(x64emu_t *emu, uintptr_t fnc); void vFpiuu(x64emu_t *emu, uintptr_t fnc); void vFpiuL(x64emu_t *emu, uintptr_t fnc); void vFpiup(x64emu_t *emu, uintptr_t fnc); +void vFpiUu(x64emu_t *emu, uintptr_t fnc); void vFpifi(x64emu_t *emu, uintptr_t fnc); void vFpipi(x64emu_t *emu, uintptr_t fnc); void vFpipp(x64emu_t *emu, uintptr_t fnc); @@ -631,6 +639,13 @@ void vFpuuu(x64emu_t *emu, uintptr_t fnc); void vFpuup(x64emu_t *emu, uintptr_t fnc); void vFpudd(x64emu_t *emu, uintptr_t fnc); void vFpupp(x64emu_t *emu, uintptr_t fnc); +void vFpUui(x64emu_t *emu, uintptr_t fnc); +void vFpUuu(x64emu_t *emu, uintptr_t fnc); +void vFpUup(x64emu_t *emu, uintptr_t fnc); +void vFpUUi(x64emu_t *emu, uintptr_t fnc); +void vFpUUp(x64emu_t *emu, uintptr_t fnc); +void vFpUpp(x64emu_t *emu, uintptr_t fnc); +void vFpfff(x64emu_t *emu, uintptr_t fnc); void vFpdii(x64emu_t *emu, uintptr_t fnc); void vFpddi(x64emu_t *emu, uintptr_t fnc); void vFpddd(x64emu_t *emu, uintptr_t fnc); @@ -665,6 +680,7 @@ void iFEpii(x64emu_t *emu, uintptr_t fnc); void iFEpip(x64emu_t *emu, uintptr_t fnc); void iFEpiV(x64emu_t *emu, uintptr_t fnc); void iFEpiA(x64emu_t *emu, uintptr_t fnc); +void iFEpUp(x64emu_t *emu, uintptr_t fnc); void iFEpLi(x64emu_t *emu, uintptr_t fnc); void iFEpLp(x64emu_t *emu, uintptr_t fnc); void iFEppi(x64emu_t *emu, uintptr_t fnc); @@ -731,13 +747,18 @@ void iFpuip(x64emu_t *emu, uintptr_t fnc); void iFpuui(x64emu_t *emu, uintptr_t fnc); void iFpuuu(x64emu_t *emu, uintptr_t fnc); void iFpuup(x64emu_t *emu, uintptr_t fnc); +void iFpuUp(x64emu_t *emu, uintptr_t fnc); void iFpuLL(x64emu_t *emu, uintptr_t fnc); void iFpuLp(x64emu_t *emu, uintptr_t fnc); void iFpupi(x64emu_t *emu, uintptr_t fnc); void iFpupu(x64emu_t *emu, uintptr_t fnc); +void iFpupU(x64emu_t *emu, uintptr_t fnc); void iFpupL(x64emu_t *emu, uintptr_t fnc); void iFpupp(x64emu_t *emu, uintptr_t fnc); void iFpupV(x64emu_t *emu, uintptr_t fnc); +void iFpUup(x64emu_t *emu, uintptr_t fnc); +void iFpUUU(x64emu_t *emu, uintptr_t fnc); +void iFpUpp(x64emu_t *emu, uintptr_t fnc); void iFplii(x64emu_t *emu, uintptr_t fnc); void iFplip(x64emu_t *emu, uintptr_t fnc); void iFpLii(x64emu_t *emu, uintptr_t fnc); @@ -978,7 +999,15 @@ void vFpipiu(x64emu_t *emu, uintptr_t fnc); void vFpuiip(x64emu_t *emu, uintptr_t fnc); void vFpuipp(x64emu_t *emu, uintptr_t fnc); void vFpuuuu(x64emu_t *emu, uintptr_t fnc); +void vFpuuup(x64emu_t *emu, uintptr_t fnc); +void vFpuupp(x64emu_t *emu, uintptr_t fnc); void vFpuddd(x64emu_t *emu, uintptr_t fnc); +void vFpupup(x64emu_t *emu, uintptr_t fnc); +void vFpUuiu(x64emu_t *emu, uintptr_t fnc); +void vFpUUuu(x64emu_t *emu, uintptr_t fnc); +void vFpUUup(x64emu_t *emu, uintptr_t fnc); +void vFpUUUu(x64emu_t *emu, uintptr_t fnc); +void vFpUUUp(x64emu_t *emu, uintptr_t fnc); void vFpffff(x64emu_t *emu, uintptr_t fnc); void vFpddii(x64emu_t *emu, uintptr_t fnc); void vFpdddd(x64emu_t *emu, uintptr_t fnc); @@ -1009,6 +1038,7 @@ void iFEpiii(x64emu_t *emu, uintptr_t fnc); void iFEpipi(x64emu_t *emu, uintptr_t fnc); void iFEpipp(x64emu_t *emu, uintptr_t fnc); void iFEpipV(x64emu_t *emu, uintptr_t fnc); +void iFEpUup(x64emu_t *emu, uintptr_t fnc); void iFEpLpp(x64emu_t *emu, uintptr_t fnc); void iFEpLpV(x64emu_t *emu, uintptr_t fnc); void iFEpLpA(x64emu_t *emu, uintptr_t fnc); @@ -1060,6 +1090,7 @@ void iFpuuui(x64emu_t *emu, uintptr_t fnc); void iFpuuup(x64emu_t *emu, uintptr_t fnc); void iFpuuLL(x64emu_t *emu, uintptr_t fnc); void iFpuupp(x64emu_t *emu, uintptr_t fnc); +void iFpupiU(x64emu_t *emu, uintptr_t fnc); void iFpuppp(x64emu_t *emu, uintptr_t fnc); void iFplluu(x64emu_t *emu, uintptr_t fnc); void iFpLiLi(x64emu_t *emu, uintptr_t fnc); @@ -1178,6 +1209,7 @@ void vFEiiipp(x64emu_t *emu, uintptr_t fnc); void vFEpiLpp(x64emu_t *emu, uintptr_t fnc); void vFEpippp(x64emu_t *emu, uintptr_t fnc); void vFEpuipp(x64emu_t *emu, uintptr_t fnc); +void vFEpupup(x64emu_t *emu, uintptr_t fnc); void vFEpLLpp(x64emu_t *emu, uintptr_t fnc); void vFEppipV(x64emu_t *emu, uintptr_t fnc); void vFEppipA(x64emu_t *emu, uintptr_t fnc); @@ -1244,9 +1276,16 @@ void vFpiiuuu(x64emu_t *emu, uintptr_t fnc); void vFpiippp(x64emu_t *emu, uintptr_t fnc); void vFpipipV(x64emu_t *emu, uintptr_t fnc); void vFpipppi(x64emu_t *emu, uintptr_t fnc); +void vFpuiiii(x64emu_t *emu, uintptr_t fnc); void vFpuiiiu(x64emu_t *emu, uintptr_t fnc); void vFpuiipp(x64emu_t *emu, uintptr_t fnc); +void vFpuuuiu(x64emu_t *emu, uintptr_t fnc); +void vFpuuppp(x64emu_t *emu, uintptr_t fnc); void vFpudddd(x64emu_t *emu, uintptr_t fnc); +void vFpUiuup(x64emu_t *emu, uintptr_t fnc); +void vFpUiUup(x64emu_t *emu, uintptr_t fnc); +void vFpUipup(x64emu_t *emu, uintptr_t fnc); +void vFpUUiup(x64emu_t *emu, uintptr_t fnc); void vFpdddii(x64emu_t *emu, uintptr_t fnc); void vFpddddd(x64emu_t *emu, uintptr_t fnc); void vFppiiii(x64emu_t *emu, uintptr_t fnc); @@ -1284,6 +1323,7 @@ void iFEpiipV(x64emu_t *emu, uintptr_t fnc); void iFEpilpV(x64emu_t *emu, uintptr_t fnc); void iFEpippi(x64emu_t *emu, uintptr_t fnc); void iFEpuppp(x64emu_t *emu, uintptr_t fnc); +void iFEpUppp(x64emu_t *emu, uintptr_t fnc); void iFEppppp(x64emu_t *emu, uintptr_t fnc); void iFiiiiii(x64emu_t *emu, uintptr_t fnc); void iFiiiiip(x64emu_t *emu, uintptr_t fnc); @@ -1313,6 +1353,8 @@ void iFpWpppp(x64emu_t *emu, uintptr_t fnc); void iFpuiCpp(x64emu_t *emu, uintptr_t fnc); void iFpuippp(x64emu_t *emu, uintptr_t fnc); void iFpupuui(x64emu_t *emu, uintptr_t fnc); +void iFpUUUip(x64emu_t *emu, uintptr_t fnc); +void iFpUUUUp(x64emu_t *emu, uintptr_t fnc); void iFppiiip(x64emu_t *emu, uintptr_t fnc); void iFppiiuu(x64emu_t *emu, uintptr_t fnc); void iFppiipi(x64emu_t *emu, uintptr_t fnc); @@ -1451,6 +1493,11 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fnc); void vFpiipCpp(x64emu_t *emu, uintptr_t fnc); void vFpipipii(x64emu_t *emu, uintptr_t fnc); void vFpipppii(x64emu_t *emu, uintptr_t fnc); +void vFpuuuuuu(x64emu_t *emu, uintptr_t fnc); +void vFpuuUUuu(x64emu_t *emu, uintptr_t fnc); +void vFpuupppp(x64emu_t *emu, uintptr_t fnc); +void vFpUiUiup(x64emu_t *emu, uintptr_t fnc); +void vFpUUUUuu(x64emu_t *emu, uintptr_t fnc); void vFpddiidd(x64emu_t *emu, uintptr_t fnc); void vFpdddddd(x64emu_t *emu, uintptr_t fnc); void vFppiiiii(x64emu_t *emu, uintptr_t fnc); @@ -1477,6 +1524,7 @@ void vFpppppip(x64emu_t *emu, uintptr_t fnc); void vFppppppi(x64emu_t *emu, uintptr_t fnc); void vFppppppp(x64emu_t *emu, uintptr_t fnc); void iFEpupppp(x64emu_t *emu, uintptr_t fnc); +void iFEpUuppp(x64emu_t *emu, uintptr_t fnc); void iFEpLiLpV(x64emu_t *emu, uintptr_t fnc); void iFEppuppp(x64emu_t *emu, uintptr_t fnc); void iFEppLpIi(x64emu_t *emu, uintptr_t fnc); @@ -1485,6 +1533,7 @@ void iFEpppppL(x64emu_t *emu, uintptr_t fnc); void iFEpppppp(x64emu_t *emu, uintptr_t fnc); void iFiiiiiip(x64emu_t *emu, uintptr_t fnc); void iFpiiiiii(x64emu_t *emu, uintptr_t fnc); +void iFpiiiiip(x64emu_t *emu, uintptr_t fnc); void iFpiiiuwp(x64emu_t *emu, uintptr_t fnc); void iFpiiuuiu(x64emu_t *emu, uintptr_t fnc); void iFpiipppp(x64emu_t *emu, uintptr_t fnc); @@ -1607,8 +1656,12 @@ void vFffffffff(x64emu_t *emu, uintptr_t fnc); void vFlipuiuip(x64emu_t *emu, uintptr_t fnc); void vFpiiiiiii(x64emu_t *emu, uintptr_t fnc); void vFpiiiipii(x64emu_t *emu, uintptr_t fnc); +void vFpiiULipp(x64emu_t *emu, uintptr_t fnc); +void vFpiUuupup(x64emu_t *emu, uintptr_t fnc); void vFpippiiuu(x64emu_t *emu, uintptr_t fnc); void vFpippiipi(x64emu_t *emu, uintptr_t fnc); +void vFpUiUiupi(x64emu_t *emu, uintptr_t fnc); +void vFpUuuUUUi(x64emu_t *emu, uintptr_t fnc); void vFppiiiiii(x64emu_t *emu, uintptr_t fnc); void vFppiiipii(x64emu_t *emu, uintptr_t fnc); void vFppipipii(x64emu_t *emu, uintptr_t fnc); @@ -1633,6 +1686,7 @@ void iFpuippLpp(x64emu_t *emu, uintptr_t fnc); void iFpuuiiiii(x64emu_t *emu, uintptr_t fnc); void iFpupppWWu(x64emu_t *emu, uintptr_t fnc); void iFpupppppp(x64emu_t *emu, uintptr_t fnc); +void iFpUuuLpUi(x64emu_t *emu, uintptr_t fnc); void iFppiiiiiu(x64emu_t *emu, uintptr_t fnc); void iFppIIIppp(x64emu_t *emu, uintptr_t fnc); void iFpppiiipi(x64emu_t *emu, uintptr_t fnc); @@ -1675,6 +1729,7 @@ void pFplpppppp(x64emu_t *emu, uintptr_t fnc); void pFppiiiiii(x64emu_t *emu, uintptr_t fnc); void pFpppuuLLu(x64emu_t *emu, uintptr_t fnc); void pFpppppupp(x64emu_t *emu, uintptr_t fnc); +void vFEpiiiiipp(x64emu_t *emu, uintptr_t fnc); void vFEppiipppp(x64emu_t *emu, uintptr_t fnc); void vFEpppiippp(x64emu_t *emu, uintptr_t fnc); void vFiiiiiiiii(x64emu_t *emu, uintptr_t fnc); @@ -1798,6 +1853,7 @@ void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fnc); void pFplllllllll(x64emu_t *emu, uintptr_t fnc); void pFppuiipuuii(x64emu_t *emu, uintptr_t fnc); void pFpppppppppp(x64emu_t *emu, uintptr_t fnc); +void vFEpiiiupupup(x64emu_t *emu, uintptr_t fnc); void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fnc); void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fnc); void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fnc); @@ -1813,6 +1869,7 @@ void vFuuddiiddiip(x64emu_t *emu, uintptr_t fnc); void vFuffffffffff(x64emu_t *emu, uintptr_t fnc); void vFpipipiipiii(x64emu_t *emu, uintptr_t fnc); void vFpipppiiiipi(x64emu_t *emu, uintptr_t fnc); +void vFpupiiupupup(x64emu_t *emu, uintptr_t fnc); void vFppiiiiiiiii(x64emu_t *emu, uintptr_t fnc); void vFppiiiiipiii(x64emu_t *emu, uintptr_t fnc); void vFppiiiiddddi(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedgnutls_private.h b/src/wrapped/wrappedgnutls_private.h index 5dbba17b..65c88d7c 100755 --- a/src/wrapped/wrappedgnutls_private.h +++ b/src/wrapped/wrappedgnutls_private.h @@ -527,7 +527,7 @@ GO(gnutls_pk_to_sign, pFpp) GO(gnutls_priority_set_direct, iFppp) //GO(gnutls_priority_sign_list, //GO(gnutls_priority_string_list, -//GO(gnutls_privkey_decrypt_data, +GO(gnutls_privkey_decrypt_data, iFpipp) GO(gnutls_privkey_deinit, vFp) GO(gnutls_privkey_export_dsa_raw, iFpppppp) GO(gnutls_privkey_export_ecc_raw, iFppppp) diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c index 59f2a97e..5416b52b 100755 --- a/src/wrapped/wrappedsdl2.c +++ b/src/wrapped/wrappedsdl2.c @@ -864,14 +864,13 @@ EXPORT int64_t my2_SDL_IsJoystickHIDAPI(x64emu_t* emu, uint64_t a, uint64_t b) void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* device, void* name); EXPORT void* my2_SDL_Vulkan_GetVkGetInstanceProcAddr(x64emu_t* emu) { - (void)emu; - //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2; + sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2; - //if(!emu->context->vkprocaddress) - // emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr(); + if(!emu->context->vkprocaddress) + emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr(); - //if(emu->context->vkprocaddress) - // return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0); + if(emu->context->vkprocaddress) + return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0, "vkGetInstanceProcAddr"); return NULL; } diff --git a/src/wrapped/wrappedvulkan.c b/src/wrapped/wrappedvulkan.c new file mode 100755 index 00000000..e9528f05 --- /dev/null +++ b/src/wrapped/wrappedvulkan.c @@ -0,0 +1,598 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "box64context.h" +#include "librarian.h" +#include "callback.h" + +//extern char* libvulkan; + +const char* vulkanName = "libvulkan.so.1"; +#define LIBNAME vulkan +static library_t *my_lib = NULL; + +typedef void(*vFpUp_t) (void*, uint64_t, void*); + +#define ADDED_FUNCTIONS() \ + GO(vkDestroySamplerYcbcrConversion, vFpUp_t) \ + + +#include "generated/wrappedvulkantypes.h" + +typedef struct vulkan_my_s { + // functions + #define GO(A, B) B A; + SUPER() + #undef GO + void* currentInstance; // track current instance. If using multiple instance, that will be a mess! +} vulkan_my_t; + +void* getVulkanMy(library_t* lib) +{ + vulkan_my_t* my = (vulkan_my_t*)calloc(1, sizeof(vulkan_my_t)); + #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); + SUPER() + #undef GO + return my; +} +void freeVulkanMy(void* p) +{ + //vulkan_my_t* my = (vulkan_my_t*)p; +} +void updateInstance(vulkan_my_t* my) +{ + void* p; + #define GO(A, W) p = my_context->vkprocaddress(my->currentInstance, #A); if(p) my->A = p; + SUPER() + #undef GO +} + +void fillVulkanProcWrapper(box64context_t*); +void freeVulkanProcWrapper(box64context_t*); + +static void* resolveSymbol(x64emu_t* emu, void* symbol, const char* rname) +{ + // check if alread bridged + uintptr_t ret = CheckBridged(emu->context->system, symbol); + if(ret) { + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", (void*)ret); + return (void*)ret; // already bridged + } + // get wrapper + khint_t k = kh_get(symbolmap, emu->context->vkwrappers, rname); + if(k==kh_end(emu->context->vkwrappers) && strstr(rname, "KHR")==NULL) { + // try again, adding KHR at the end if not present + char tmp[200]; + strcpy(tmp, rname); + strcat(tmp, "KHR"); + k = kh_get(symbolmap, emu->context->vkwrappers, tmp); + } + if(k==kh_end(emu->context->vkwrappers)) { + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL); + if(dlsym_error) printf_log(LOG_NONE, "Warning, no wrapper for %s\n", rname); + return NULL; + } + const char* constname = kh_key(emu->context->vkwrappers, k); + AddOffsetSymbol(emu->context->maplib, symbol, constname); + ret = AddBridge(emu->context->system, kh_value(emu->context->vkwrappers, k), symbol, 0, constname); + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p (%p)\n", (void*)ret, symbol); + return (void*)ret; +} + +EXPORT void* my_vkGetDeviceProcAddr(x64emu_t* emu, void* device, void* name) +{ + khint_t k; + const char* rname = (const char*)name; + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "Calling my_vkGetDeviceProcAddr(%p, \"%s\") => ", device, rname); + if(!emu->context->vkwrappers) + fillVulkanProcWrapper(emu->context); + k = kh_get(symbolmap, emu->context->vkmymap, rname); + int is_my = (k==kh_end(emu->context->vkmymap))?0:1; + void* symbol; + if(is_my) { + // try again, by using custom "my_" now... + char tmp[200]; + strcpy(tmp, "my_"); + strcat(tmp, rname); + symbol = dlsym(emu->context->box64lib, tmp); + // need to update symbol link maybe + #define GO(A, W) if(!strcmp(rname, #A)) my->A = (W)my->vkGetDeviceProcAddr(device, name); + SUPER() + #undef GO + } else + symbol = my->vkGetDeviceProcAddr(device, name); + if(!symbol) { + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL); + return NULL; // easy + } + return resolveSymbol(emu, symbol, rname); +} + +EXPORT void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* instance, void* name) +{ + khint_t k; + const char* rname = (const char*)name; + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "Calling my_vkGetInstanceProcAddr(%p, \"%s\") => ", instance, rname); + if(!emu->context->vkwrappers) + fillVulkanProcWrapper(emu->context); + if(instance!=my->currentInstance) { + my->currentInstance = instance; + updateInstance(my); + } + // check if vkprocaddress is filled, and search for lib and fill it if needed + // get proc adress using actual glXGetProcAddress + k = kh_get(symbolmap, emu->context->vkmymap, rname); + int is_my = (k==kh_end(emu->context->vkmymap))?0:1; + void* symbol = my_context->vkprocaddress(instance, rname); + if(!symbol) { + if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL); + return NULL; // easy + } + if(is_my) { + // try again, by using custom "my_" now... + char tmp[200]; + strcpy(tmp, "my_"); + strcat(tmp, rname); + symbol = dlsym(emu->context->box64lib, tmp); + // need to update symbol link maybe + #define GO(A, W) if(!strcmp(rname, #A)) my->A = (W)my_context->vkprocaddress(instance, rname);; + SUPER() + #undef GO + } + return resolveSymbol(emu, symbol, rname); +} + +#undef SUPER + +typedef struct my_VkAllocationCallbacks_s { + void* pUserData; + void* pfnAllocation; + void* pfnReallocation; + void* pfnFree; + void* pfnInternalAllocation; + void* pfnInternalFree; +} my_VkAllocationCallbacks_t; + + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) \ +GO(4) + +// Allocation ... +#define GO(A) \ +static uintptr_t my_Allocation_fct_##A = 0; \ +static void* my_Allocation_##A(void* a, size_t b, size_t c, int d) \ +{ \ + return (void*)RunFunction(my_context, my_Allocation_fct_##A, 4, a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_Allocation_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Allocation_fct_##A == (uintptr_t)fct) return my_Allocation_##A; + SUPER() + #undef GO + #define GO(A) if(my_Allocation_fct_##A == 0) {my_Allocation_fct_##A = (uintptr_t)fct; return my_Allocation_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan Allocation callback\n"); + return NULL; +} +// Reallocation ... +#define GO(A) \ +static uintptr_t my_Reallocation_fct_##A = 0; \ +static void* my_Reallocation_##A(void* a, void* b, size_t c, size_t d, int e) \ +{ \ + return (void*)RunFunction(my_context, my_Reallocation_fct_##A, 5, a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_Reallocation_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Reallocation_fct_##A == (uintptr_t)fct) return my_Reallocation_##A; + SUPER() + #undef GO + #define GO(A) if(my_Reallocation_fct_##A == 0) {my_Reallocation_fct_##A = (uintptr_t)fct; return my_Reallocation_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan Reallocation callback\n"); + return NULL; +} +// Free ... +#define GO(A) \ +static uintptr_t my_Free_fct_##A = 0; \ +static void my_Free_##A(void* a, void* b) \ +{ \ + RunFunction(my_context, my_Free_fct_##A, 2, a, b); \ +} +SUPER() +#undef GO +static void* find_Free_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Free_fct_##A == (uintptr_t)fct) return my_Free_##A; + SUPER() + #undef GO + #define GO(A) if(my_Free_fct_##A == 0) {my_Free_fct_##A = (uintptr_t)fct; return my_Free_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan Free callback\n"); + return NULL; +} +// InternalAllocNotification ... +#define GO(A) \ +static uintptr_t my_InternalAllocNotification_fct_##A = 0; \ +static void my_InternalAllocNotification_##A(void* a, size_t b, int c, int d) \ +{ \ + RunFunction(my_context, my_InternalAllocNotification_fct_##A, 4, a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_InternalAllocNotification_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_InternalAllocNotification_fct_##A == (uintptr_t)fct) return my_InternalAllocNotification_##A; + SUPER() + #undef GO + #define GO(A) if(my_InternalAllocNotification_fct_##A == 0) {my_InternalAllocNotification_fct_##A = (uintptr_t)fct; return my_InternalAllocNotification_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan InternalAllocNotification callback\n"); + return NULL; +} +// InternalFreeNotification ... +#define GO(A) \ +static uintptr_t my_InternalFreeNotification_fct_##A = 0; \ +static void my_InternalFreeNotification_##A(void* a, size_t b, int c, int d) \ +{ \ + RunFunction(my_context, my_InternalFreeNotification_fct_##A, 4, a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_InternalFreeNotification_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_InternalFreeNotification_fct_##A == (uintptr_t)fct) return my_InternalFreeNotification_##A; + SUPER() + #undef GO + #define GO(A) if(my_InternalFreeNotification_fct_##A == 0) {my_InternalFreeNotification_fct_##A = (uintptr_t)fct; return my_InternalFreeNotification_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan InternalFreeNotification callback\n"); + return NULL; +} +// DebugReportCallbackEXT ... +#define GO(A) \ +static uintptr_t my_DebugReportCallbackEXT_fct_##A = 0; \ +static int my_DebugReportCallbackEXT_##A(int a, int b, uint64_t c, size_t d, int e, void* f, void* g, void* h) \ +{ \ + return RunFunction(my_context, my_DebugReportCallbackEXT_fct_##A, 8, a, b, c, d, e, f, g, h); \ +} +SUPER() +#undef GO +static void* find_DebugReportCallbackEXT_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_DebugReportCallbackEXT_fct_##A == (uintptr_t)fct) return my_DebugReportCallbackEXT_##A; + SUPER() + #undef GO + #define GO(A) if(my_DebugReportCallbackEXT_fct_##A == 0) {my_DebugReportCallbackEXT_fct_##A = (uintptr_t)fct; return my_DebugReportCallbackEXT_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan DebugReportCallbackEXT callback\n"); + return NULL; +} + +#undef SUPER + +//#define PRE_INIT if(libGL) {lib->priv.w.lib = dlopen(libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(libGL);} else + +#define PRE_INIT \ + if(box64_novulkan) \ + return -1; + +#define CUSTOM_INIT \ + my_lib = lib; \ + lib->priv.w.p2 = getVulkanMy(lib); \ + lib->priv.w.priv = dlsym(lib->priv.w.lib, "vkGetInstanceProcAddr"); \ + box64->vkprocaddress = lib->priv.w.priv; + +#define CUSTOM_FINI \ + my_lib = NULL; \ + freeVulkanMy(lib->priv.w.p2); \ + free(lib->priv.w.p2); + +#include "wrappedlib_init.h" + +void fillVulkanProcWrapper(box64context_t* context) +{ + int cnt, ret; + khint_t k; + kh_symbolmap_t * symbolmap = kh_init(symbolmap); + // populates maps... + cnt = sizeof(vulkansymbolmap)/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, vulkansymbolmap[i].name, &ret); + kh_value(symbolmap, k) = vulkansymbolmap[i].w; + } + // and the my_ symbols map + cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, vulkanmysymbolmap[i].name, &ret); + kh_value(symbolmap, k) = vulkanmysymbolmap[i].w; + } + context->vkwrappers = symbolmap; + // my_* map + symbolmap = kh_init(symbolmap); + cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, vulkanmysymbolmap[i].name, &ret); + kh_value(symbolmap, k) = vulkanmysymbolmap[i].w; + } + context->vkmymap = symbolmap; +} +void freeVulkanProcWrapper(box64context_t* context) +{ + if(!context) + return; + if(context->vkwrappers) + kh_destroy(symbolmap, context->vkwrappers); + if(context->vkmymap) + kh_destroy(symbolmap, context->vkmymap); + context->vkwrappers = NULL; + context->vkmymap = NULL; +} + +my_VkAllocationCallbacks_t* find_VkAllocationCallbacks(my_VkAllocationCallbacks_t* dest, my_VkAllocationCallbacks_t* src) +{ + if(!src) return src; + dest->pUserData = src->pUserData; + dest->pfnAllocation = find_Allocation_Fct(src->pfnAllocation); + dest->pfnReallocation = find_Reallocation_Fct(src->pfnReallocation); + dest->pfnFree = find_Free_Fct(src->pfnFree); + dest->pfnInternalAllocation = find_InternalAllocNotification_Fct(src->pfnInternalAllocation); + dest->pfnInternalFree = find_InternalFreeNotification_Fct(src->pfnInternalFree); + return dest; +} +// functions.... +#define CREATE(A) \ +EXPORT int my_##A(x64emu_t* emu, void* device, void* pAllocateInfo, my_VkAllocationCallbacks_t* pAllocator, void* p) \ +{ \ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \ + my_VkAllocationCallbacks_t my_alloc; \ + return my->A(device, pAllocateInfo, find_VkAllocationCallbacks(&my_alloc, pAllocator), p); \ +} +#define DESTROY(A) \ +EXPORT void my_##A(x64emu_t* emu, void* device, void* p, my_VkAllocationCallbacks_t* pAllocator) \ +{ \ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \ + my_VkAllocationCallbacks_t my_alloc; \ + my->A(device, p, find_VkAllocationCallbacks(&my_alloc, pAllocator)); \ +} +#define DESTROY64(A) \ +EXPORT void my_##A(x64emu_t* emu, void* device, uint64_t p, my_VkAllocationCallbacks_t* pAllocator) \ +{ \ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \ + my_VkAllocationCallbacks_t my_alloc; \ + my->A(device, p, find_VkAllocationCallbacks(&my_alloc, pAllocator)); \ +} + +CREATE(vkAllocateMemory) +CREATE(vkCreateBuffer) +CREATE(vkCreateBufferView) +CREATE(vkCreateCommandPool) + +EXPORT int my_vkCreateComputePipelines(x64emu_t* emu, void* device, uint64_t pipelineCache, uint32_t count, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pPipelines) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + int ret = my->vkCreateComputePipelines(device, pipelineCache, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pPipelines); + return ret; +} + +CREATE(vkCreateDescriptorPool) +CREATE(vkCreateDescriptorSetLayout) +CREATE(vkCreateDescriptorUpdateTemplate) +CREATE(vkCreateDescriptorUpdateTemplateKHR) +CREATE(vkCreateDevice) + +EXPORT int my_vkCreateDisplayModeKHR(x64emu_t* emu, void* physical, uint64_t display, void* pCreateInfo, my_VkAllocationCallbacks_t* pAllocator, void* pMode) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + return my->vkCreateDisplayModeKHR(physical, display, pCreateInfo, find_VkAllocationCallbacks(&my_alloc, pAllocator), pMode); +} + +CREATE(vkCreateDisplayPlaneSurfaceKHR) +CREATE(vkCreateEvent) +CREATE(vkCreateFence) +CREATE(vkCreateFramebuffer) + +EXPORT int my_vkCreateGraphicsPipelines(x64emu_t* emu, void* device, uint64_t pipelineCache, uint32_t count, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pPipelines) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + int ret = my->vkCreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pPipelines); + return ret; +} + +CREATE(vkCreateImage) +CREATE(vkCreateImageView) + +EXPORT int my_vkCreateInstance(x64emu_t* emu, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pInstance) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + return my->vkCreateInstance(pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pInstance); +} + +CREATE(vkCreatePipelineCache) +CREATE(vkCreatePipelineLayout) +CREATE(vkCreateQueryPool) +CREATE(vkCreateRenderPass) +CREATE(vkCreateSampler) +CREATE(vkCreateSamplerYcbcrConversion) +CREATE(vkCreateSemaphore) +CREATE(vkCreateShaderModule) + +EXPORT int my_vkCreateSharedSwapchainsKHR(x64emu_t* emu, void* device, uint32_t count, void** pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pSwapchains) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + int ret = my->vkCreateSharedSwapchainsKHR(device, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pSwapchains); + return ret; +} + +CREATE(vkCreateSwapchainKHR) +CREATE(vkCreateWaylandSurfaceKHR) +CREATE(vkCreateXcbSurfaceKHR) +CREATE(vkCreateXlibSurfaceKHR) +CREATE(vkCreateRenderPass2) +CREATE(vkCreateRenderPass2KHR) + +DESTROY64(vkDestroyBuffer) +DESTROY64(vkDestroyBufferView) +DESTROY64(vkDestroyCommandPool) +DESTROY64(vkDestroyDescriptorPool) +DESTROY64(vkDestroyDescriptorSetLayout) +DESTROY64(vkDestroyDescriptorUpdateTemplate) +DESTROY64(vkDestroyDescriptorUpdateTemplateKHR) + +EXPORT void my_vkDestroyDevice(x64emu_t* emu, void* pDevice, my_VkAllocationCallbacks_t* pAllocator) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + my->vkDestroyDevice(pDevice, find_VkAllocationCallbacks(&my_alloc, pAllocator)); +} + +DESTROY64(vkDestroyEvent) +DESTROY64(vkDestroyFence) +DESTROY64(vkDestroyFramebuffer) +DESTROY64(vkDestroyImage) +DESTROY64(vkDestroyImageView) + +EXPORT void my_vkDestroyInstance(x64emu_t* emu, void* instance, my_VkAllocationCallbacks_t* pAllocator) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + my->vkDestroyInstance(instance, find_VkAllocationCallbacks(&my_alloc, pAllocator)); +} + +DESTROY64(vkDestroyPipeline) +DESTROY64(vkDestroyPipelineCache) +DESTROY64(vkDestroyPipelineLayout) +DESTROY64(vkDestroyQueryPool) +DESTROY64(vkDestroyRenderPass) +DESTROY64(vkDestroySampler) +DESTROY64(vkDestroySamplerYcbcrConversion) +DESTROY64(vkDestroySemaphore) +DESTROY64(vkDestroyShaderModule) +DESTROY64(vkDestroySwapchainKHR) + +DESTROY64(vkFreeMemory) + +CREATE(vkCreateDebugUtilsMessengerEXT) +DESTROY(vkDestroyDebugUtilsMessengerEXT) + +DESTROY64(vkDestroySurfaceKHR) + +DESTROY64(vkDestroySamplerYcbcrConversionKHR) + +EXPORT void my_vkGetPhysicalDeviceProperties(x64emu_t* emu, void* device, void* pProps) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my->vkGetPhysicalDeviceProperties(device, pProps); +} + +EXPORT void my_vkGetPhysicalDeviceSparseImageFormatProperties(x64emu_t* emu, void* device, int format, int type, int samples, int usage, int tiling, uint32_t* count, void** pProps) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my->vkGetPhysicalDeviceSparseImageFormatProperties(device, format, type, samples, usage, tiling, count, pProps); +} + +EXPORT void my_vkUpdateDescriptorSets(x64emu_t* emu, void* device, uint32_t writeCount, void* writeSet, uint32_t copyCount, void* copySet) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my->vkUpdateDescriptorSets(device, writeCount, writeSet, copyCount, copySet); +} + +EXPORT int my_vkGetDisplayPlaneCapabilitiesKHR(x64emu_t* emu, void* device, uint64_t mode, uint32_t index, void* pCap) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + int ret = my->vkGetDisplayPlaneCapabilitiesKHR(device, mode, index, pCap); + return ret; +} + +EXPORT int my_vkGetPhysicalDeviceDisplayPropertiesKHR(x64emu_t* emu, void* device, uint32_t* count, void* pProp) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + int ret = my->vkGetPhysicalDeviceDisplayPropertiesKHR(device, count, pProp); + return ret; +} + +EXPORT void my_vkGetPhysicalDeviceMemoryProperties(x64emu_t* emu, void* device, void* pProps) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my->vkGetPhysicalDeviceMemoryProperties(device, pProps); +} + +EXPORT void my_vkCmdPipelineBarrier(x64emu_t* emu, void* device, int src, int dst, int dep, + uint32_t barrierCount, void* pBarriers, uint32_t bufferCount, void* pBuffers, uint32_t imageCount, void* pImages) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my->vkCmdPipelineBarrier(device, src, dst, dep, barrierCount, pBarriers, bufferCount, pBuffers, imageCount, pImages); +} + +typedef struct my_VkDebugReportCallbackCreateInfoEXT_s { + int sType; + void* pNext; + uint32_t flags; + void* pfnCallback; + void* pUserData; +} my_VkDebugReportCallbackCreateInfoEXT_t; + +EXPORT int my_vkCreateDebugReportCallbackEXT(x64emu_t* emu, void* instance, + my_VkDebugReportCallbackCreateInfoEXT_t* create, + my_VkAllocationCallbacks_t* alloc, void* callback) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkDebugReportCallbackCreateInfoEXT_t dbg = *create; + my_VkAllocationCallbacks_t my_alloc; + dbg.pfnCallback = find_DebugReportCallbackEXT_Fct(dbg.pfnCallback); + return my->vkCreateDebugReportCallbackEXT(instance, &dbg, find_VkAllocationCallbacks(&my_alloc, alloc), callback); +} + +EXPORT int my_vkDestroyDebugReportCallbackEXT(x64emu_t* emu, void* instance, void* callback, void* alloc) +{ + vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; + my_VkAllocationCallbacks_t my_alloc; + return my->vkDestroyDebugReportCallbackEXT(instance, callback, find_VkAllocationCallbacks(&my_alloc, alloc)); +} + +CREATE(vkCreateHeadlessSurfaceEXT) \ No newline at end of file diff --git a/src/wrapped/wrappedvulkan_private.h b/src/wrapped/wrappedvulkan_private.h new file mode 100755 index 00000000..1489ea76 --- /dev/null +++ b/src/wrapped/wrappedvulkan_private.h @@ -0,0 +1,411 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error meh! +#endif + +// VK_VERSION_1_0 +GO(vkAllocateCommandBuffers, iFppp) +GO(vkAllocateDescriptorSets, iFppp) +GOM(vkAllocateMemory, iFEpppp) +GO(vkBeginCommandBuffer, iFpp) +GO(vkBindBufferMemory, iFpUUU) +GO(vkBindImageMemory, iFpUUU) +GO(vkCmdBeginQuery, vFpUui) +GO(vkCmdBeginRenderPass, vFppp) +GO(vkCmdBindDescriptorSets, vFpiUuupup) +GO(vkCmdBindIndexBuffer, vFpUUi) +GO(vkCmdBindPipeline, vFppU) +GO(vkCmdBindVertexBuffers, vFpuupp) +GO(vkCmdBlitImage, vFpUiUiupi) +GO(vkCmdClearAttachments, vFpupup) +GO(vkCmdClearColorImage, vFpUipup) +GO(vkCmdClearDepthStencilImage, vFpUipup) +GO(vkCmdCopyBuffer, vFpUUup) +GO(vkCmdCopyBufferToImage, vFpUUiup) +GO(vkCmdCopyImage, vFpUiUiup) +GO(vkCmdCopyImageToBuffer, vFpUiUup) +GO(vkCmdCopyQueryPoolResults, vFpUuuUUUi) +GO(vkCmdDispatch, vFpuuu) +GO(vkCmdDispatchIndirect, vFpUU) +GO(vkCmdDraw, vFpuuuu) +GO(vkCmdDrawIndexed, vFpuuuiu) +GO(vkCmdDrawIndexedIndirect, vFpUUuu) +GO(vkCmdDrawIndirect, vFpUUuu) +GO(vkCmdEndQuery, vFpUu) +GO(vkCmdEndRenderPass, vFp) +GO(vkCmdExecuteCommands, vFpup) +GO(vkCmdFillBuffer, vFpUUUu) +GO(vkCmdNextSubpass, vFpi) +GOM(vkCmdPipelineBarrier, vFEpiiiupupup) +GO(vkCmdPushConstants, vFpUiuup) +GO(vkCmdResetEvent, vFpUi) +GO(vkCmdResetQueryPool, vFpUuu) +GO(vkCmdResolveImage, vFpUiUiup) +GO(vkCmdSetBlendConstants, vFpp) +GO(vkCmdSetDepthBias, vFpfff) +GO(vkCmdSetDepthBounds, vFpff) +GO(vkCmdSetEvent, vFpUi) +GO(vkCmdSetLineWidth, vFpf) +GO(vkCmdSetScissor, vFpuup) +GO(vkCmdSetStencilCompareMask, vFpiu) +GO(vkCmdSetStencilReference, vFpiu) +GO(vkCmdSetStencilWriteMask, vFpiu) +GO(vkCmdSetViewport, vFpuup) +GO(vkCmdUpdateBuffer, vFpUUUp) +GO(vkCmdWaitEvents, vFpupiiupupup) +GO(vkCmdWriteTimestamp, vFpiUu) +GOM(vkCreateBuffer, iFEpppp) +GOM(vkCreateBufferView, iFEpppp) +GOM(vkCreateCommandPool, iFEpppp) +GOM(vkCreateComputePipelines, iFEpUuppp) +GOM(vkCreateDescriptorPool, iFEpppp) +GOM(vkCreateDescriptorSetLayout, iFEpppp) +GOM(vkCreateDevice, iFEpppp) +GOM(vkCreateEvent, iFEpppp) +GOM(vkCreateFence, iFEpppp) +GOM(vkCreateFramebuffer, iFEpppp) +GOM(vkCreateGraphicsPipelines, iFEpUuppp) +GOM(vkCreateImage, iFEpppp) +GOM(vkCreateImageView, iFEpppp) +GOM(vkCreateInstance, iFEppp) +GOM(vkCreatePipelineCache, iFEpppp) +GOM(vkCreatePipelineLayout, iFEpppp) +GOM(vkCreateQueryPool, iFEpppp) +GOM(vkCreateRenderPass, iFEpppp) +GOM(vkCreateSampler, iFEpppp) +GOM(vkCreateSemaphore, iFEpppp) +GOM(vkCreateShaderModule, iFEpppp) +GOM(vkDestroyBuffer, vFEpUp) +GOM(vkDestroyBufferView, vFEpUp) +GOM(vkDestroyCommandPool, vFEpUp) +GOM(vkDestroyDescriptorPool, vFEpUp) +GOM(vkDestroyDescriptorSetLayout, vFEpUp) +GOM(vkDestroyDevice, vFEpp) +GOM(vkDestroyEvent, vFEpUp) +GOM(vkDestroyFence, vFEpUp) +GOM(vkDestroyFramebuffer, vFEpUp) +GOM(vkDestroyImage, vFEpUp) +GOM(vkDestroyImageView, vFEpUp) +GOM(vkDestroyInstance, vFEpp) +GOM(vkDestroyPipeline, vFEpUp) +GOM(vkDestroyPipelineCache, vFEpUp) +GOM(vkDestroyPipelineLayout, vFEpUp) +GOM(vkDestroyQueryPool, vFEpUp) +GOM(vkDestroyRenderPass, vFEpUp) +GOM(vkDestroySampler, vFEpUp) +GOM(vkDestroySemaphore, vFEpUp) +GOM(vkDestroyShaderModule, vFEpUp) +GO(vkDeviceWaitIdle, iFp) +GO(vkEndCommandBuffer, iFp) +GO(vkEnumerateDeviceExtensionProperties, iFpppp) +GO(vkEnumerateDeviceLayerProperties, iFppp) +GO(vkEnumerateInstanceExtensionProperties, iFppp) +GO(vkEnumerateInstanceLayerProperties, iFpp) +GO(vkEnumeratePhysicalDevices, iFppp) +GO(vkFlushMappedMemoryRanges, iFpup) // should wrap the array of VkMappedMemoryRange +GO(vkFreeCommandBuffers, vFpUup) +GO(vkFreeDescriptorSets, iFpUup) +GOM(vkFreeMemory, iFEpUp) +GO(vkGetBufferMemoryRequirements, iFpUp) +GO(vkGetDeviceMemoryCommitment, vFpUp) +GOM(vkGetDeviceProcAddr, pFEpp) +GO(vkGetDeviceQueue, vFpuup) +GO(vkGetEventStatus, iFpU) +GO(vkGetFenceStatus, iFpU) +GO(vkGetImageMemoryRequirements, vFpUp) +GO(vkGetImageSparseMemoryRequirements, vFpUpp) +GO(vkGetImageSubresourceLayout, vFpUpp) +GOM(vkGetInstanceProcAddr, pFEpp) +GO(vkGetPhysicalDeviceFeatures, vFpp) +GO(vkGetPhysicalDeviceFormatProperties, vFpip) +GO(vkGetPhysicalDeviceImageFormatProperties, iFpiiiiip) //VkImageFormatProperties sems OK +GOM(vkGetPhysicalDeviceMemoryProperties, vFEpp) +GOM(vkGetPhysicalDeviceProperties, vFEpp) +GO(vkGetPhysicalDeviceQueueFamilyProperties, vFppp) //VkQueueFamilyProperties is OK +GOM(vkGetPhysicalDeviceSparseImageFormatProperties, vFEpiiiiipp) +GO(vkGetPipelineCacheData, iFpUpp) +GO(vkGetQueryPoolResults, iFpUuuLpUi) +GO(vkGetRenderAreaGranularity, vFpUp) +GO(vkInvalidateMappedMemoryRanges, iFpup) //VkMappedMemoryRange seems OK +GO(vkMapMemory, iFpUUUip) +GO(vkMergePipelineCaches, iFpUup) +GO(vkQueueBindSparse, iFpupU) +GO(vkQueueSubmit, iFpupU) +GO(vkQueueWaitIdle, iFp) +GO(vkResetCommandBuffer, iFpi) +GO(vkResetCommandPool, iFpUi) +GO(vkResetDescriptorPool, iFpUi) +GO(vkResetEvent, iFpU) +GO(vkResetFences, iFpup) +GO(vkSetEvent, iFpU) +GO(vkUnmapMemory, vFpU) +GOM(vkUpdateDescriptorSets, vFEpupup) +GO(vkWaitForFences, iFpupiU) + +// VK_VERSION_1_1 +GO(vkBindBufferMemory2, iFpup) +GO(vkBindImageMemory2, iFpup) +GO(vkCmdDispatchBase, vFpuuuuuu) +GO(vkCmdSetDeviceMask, vFpu) +GOM(vkCreateDescriptorUpdateTemplate, iFEpppp) +GOM(vkCreateSamplerYcbcrConversion, iFEpppp) +GOM(vkDestroyDescriptorUpdateTemplate, vFEpUp) +GO(vkEnumerateInstanceVersion, iFp) +GO(vkEnumeratePhysicalDeviceGroups, iFppp) //VkPhysicalDeviceGroupProperties seems OK +GO(vkGetBufferMemoryRequirements2, iFppp) +GO(vkGetImageMemoryRequirements2, vFppp) +GO(vkGetImageSparseMemoryRequirements2, vFpppp) +GO(vkGetDescriptorSetLayoutSupport, vFppp) +GO(vkGetDeviceGroupPeerMemoryFeatures, vFpuuup) +GO(vkGetDeviceQueue2, vFppp) +GO(vkGetPhysicalDeviceExternalBufferProperties, vFppp) +GO(vkGetPhysicalDeviceExternalFenceProperties, vFppp) +GO(vkGetPhysicalDeviceExternalSemaphoreProperties, vFppp) +GO(vkGetPhysicalDeviceFeatures2, vFpp) +GO(vkGetPhysicalDeviceFormatProperties2, vFpip) +GO(vkGetPhysicalDeviceImageFormatProperties2, vFppp) +GO(vkGetPhysicalDeviceMemoryProperties2, vFpp) +GO(vkGetPhysicalDeviceProperties2, vFpp) +GO(vkGetPhysicalDeviceQueueFamilyProperties2, vFppp) //VkQueueFamilyProperties2 seems OK +GO(vkGetPhysicalDeviceSparseImageFormatProperties2, vFpppp) //VkSparseImageFormatProperties2 seems OK +GO(vkUpdateDescriptorSetWithTemplate, vFpUUp) +GO(vkTrimCommandPool, vFpUi) + +// VK_VERSION_1_2 +GO(vkResetQueryPool, vFpUuu) +GO(vkCmdBeginRenderPass2, vFppp) +GO(vkCmdEndRenderPass2, vFpp) +GO(vkCmdNextSubpass2, vFppp) +GOM(vkCreateRenderPass2, iFEpppp) +GO(vkCmdDrawIndexedIndirectCount, vFpUUUUuu) +GO(vkCmdDrawIndirectCount, vFpUUUUuu) + +// VK_EXT_debug_report +GOM(vkCreateDebugReportCallbackEXT, iFEpppp) +GO(vkDebugReportMessageEXT, vFpiiULipp) +GOM(vkDestroyDebugReportCallbackEXT, iFEppp) + +//VK_EXT_debug_utils +GO(vkCmdBeginDebugUtilsLabelEXT, vFpp) //TODO: Cehck alignement of this extension +GO(vkCmdEndDebugUtilsLabelEXT, vFp) +GO(vkCmdInsertDebugUtilsLabelEXT, vFpp) +GOM(vkCreateDebugUtilsMessengerEXT, iFEpppp) +GOM(vkDestroyDebugUtilsMessengerEXT, vFEppp) +GO(vkQueueBeginDebugUtilsLabelEXT, vFpp) +GO(vkQueueEndDebugUtilsLabelEXT, vFp) +GO(vkQueueInsertDebugUtilsLabelEXT, vFpp) +GO(vkSetDebugUtilsObjectNameEXT, iFpp) +GO(vkSetDebugUtilsObjectTagEXT, iFpp) +//GOM(vkSubmitDebugUtilsMessageEXT, vFEpppp) // callback in last arguments + +// VK_KHR_external_memory_capabilities +GO(vkGetPhysicalDeviceExternalBufferPropertiesKHR, vFppp) + +// VK_KHR_get_physical_device_properties2 +GO(vkGetPhysicalDeviceFeatures2KHR, vFpp) +GO(vkGetPhysicalDeviceFormatProperties2KHR, vFpip) +GO(vkGetPhysicalDeviceImageFormatProperties2KHR, vFppp) +GO(vkGetPhysicalDeviceMemoryProperties2KHR, vFpp) +GO(vkGetPhysicalDeviceProperties2KHR, vFpp) +GO(vkGetPhysicalDeviceQueueFamilyProperties2KHR, vFppp) +GO(vkGetPhysicalDeviceSparseImageFormatProperties2KHR, vFpppp) //VkSparseImageFormatProperties2 seems OK + +// VK_KHR_get_surface_capabilities2 +GO(vkGetPhysicalDeviceSurfaceCapabilities2KHR, iFppp) +GO(vkGetPhysicalDeviceSurfaceFormats2KHR, iFpppp) //VkSurfaceFormat2KHR seems OK (but array) + +// VK_KHR_surface +GOM(vkDestroySurfaceKHR, vFEpUp) +GO(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, iFpUp) //VkSurfaceCapabilitiesKHR seems OK +GO(vkGetPhysicalDeviceSurfaceFormatsKHR, iFpUpp) +GO(vkGetPhysicalDeviceSurfacePresentModesKHR, iFpUpp) +GO(vkGetPhysicalDeviceSurfaceSupportKHR, iFpuUp) + +// VK_KHR_xcb_surface +GOM(vkCreateXcbSurfaceKHR, iFEpppp) +GO(vkGetPhysicalDeviceXcbPresentationSupportKHR, iFpupp) + +// VK_KHR_xlib_surface +GOM(vkCreateXlibSurfaceKHR, iFEpppp) +GO(vkGetPhysicalDeviceXlibPresentationSupportKHR, iFpupp) + +// VK_KHR_swapchain +GO(vkAcquireNextImageKHR, iFpUUUUp) +GO(vkAcquireNextImage2KHR, iFppp) +GOM(vkCreateSwapchainKHR, iFEpppp) +GOM(vkDestroySwapchainKHR, vFEpUp) +GO(vkGetDeviceGroupPresentCapabilitiesKHR, iFpp) +GO(vkGetDeviceGroupSurfacePresentModesKHR, iFpUp) +GO(vkGetPhysicalDevicePresentRectanglesKHR, iFpUpp) +GO(vkGetSwapchainImagesKHR, iFpUpp) +GO(vkQueuePresentKHR, iFpp) + +// VK_KHR_bind_memory2 +GO(vkBindBufferMemory2KHR, iFpup) +GO(vkBindImageMemory2KHR, iFpup) + +// VK_KHR_display +GOM(vkCreateDisplayModeKHR, iFEpUppp) +GOM(vkCreateDisplayPlaneSurfaceKHR, iFEpppp) +GO(vkGetDisplayModePropertiesKHR, iFpUpp) //VkDisplayModePropertiesKHR seems OK +GOM(vkGetDisplayPlaneCapabilitiesKHR, iFEpUup) +GO(vkGetDisplayPlaneSupportedDisplaysKHR, iFpupp) +GO(vkGetPhysicalDeviceDisplayPlanePropertiesKHR, iFppp) //VkDisplayPlanePropertiesKHR is OK +GOM(vkGetPhysicalDeviceDisplayPropertiesKHR, iFEppp) + +// VK_KHR_descriptor_update_template +GOM(vkCreateDescriptorUpdateTemplateKHR, iFEpppp) +GOM(vkDestroyDescriptorUpdateTemplateKHR, vFEpUp) +GO(vkUpdateDescriptorSetWithTemplateKHR, vFpUUp) +GO(vkCmdPushDescriptorSetWithTemplateKHR, vFpUUup) + +// VK_EXT_display_surface_counter +GO(vkGetPhysicalDeviceSurfaceCapabilities2EXT, iFpUp) + +// VK_KHR_get_display_properties2 +GO(vkGetDisplayModeProperties2KHR, iFpUpp) +GO(vkGetDisplayPlaneCapabilities2KHR, iFppp) +GO(vkGetPhysicalDeviceDisplayPlaneProperties2KHR, iFppp) +GO(vkGetPhysicalDeviceDisplayProperties2KHR, iFppp) + +// VK_KHR_device_group +GO(vkCmdDispatchBaseKHR, vFpuuuuuu) +GO(vkCmdSetDeviceMaskKHR, vFpu) +GO(vkGetDeviceGroupPeerMemoryFeaturesKHR, vFpuuup) + +// VK_KHR_sampler_ycbcr_conversion +GOM(vkCreateSamplerYcbcrConversionKHR, iFEpppp) +GOM(vkDestroySamplerYcbcrConversionKHR, vFEpUp) + +// VK_KHR_display_swapchain +GOM(vkCreateSharedSwapchainsKHR, iFEpuppp) + +// VK_KHR_wayland_surface +GOM(vkCreateWaylandSurfaceKHR, iFEpppp) +GO(vkGetPhysicalDeviceWaylandPresentationSupportKHR, iFpup) + +// VK_KHR_device_group_creation +GO(vkEnumeratePhysicalDeviceGroupsKHR, iFppp) + +// VK_KHR_get_memory_requirements2 +GO(vkGetBufferMemoryRequirements2KHR, iFppp) +GO(vkGetImageMemoryRequirements2KHR, vFppp) +GO(vkGetImageSparseMemoryRequirements2KHR, vFpppp) + +// VK_KHR_external_fence_capabilities +GO(vkGetPhysicalDeviceExternalFencePropertiesKHR, vFppp) + +// VK_KHR_external_semaphore_capabilities +GO(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, vFppp) + +// VK_KHR_maintenance1 +GO(vkTrimCommandPoolKHR, vFpUi) + +// VK_KHR_maintenance2 +// no functions + +// VK_KHR_maintenance3 +GO(vkGetDescriptorSetLayoutSupportKHR, vFppp) + +// VK_KHR_external_memory_fd +GO(vkGetMemoryFdKHR, iFppp) +GO(vkGetMemoryFdPropertiesKHR, iFpiip) + +// VK_KHR_dedicated_allocation +// no functions + +// VK_KHR_image_format_list +// no functions + +// VK_KHR_shader_draw_parameters +// no functions + +// VK_EXT_conditional_rendering +GO(vkCmdBeginConditionalRenderingEXT, vFpp) +GO(vkCmdEndConditionalRenderingEXT, vFp) + +// VK_EXT_depth_clip_enable +// no functions + +// VK_EXT_host_query_reset +GO(vkResetQueryPoolEXT, vFpUuu) + +// VK_EXT_memory_priority +// no functions + +// VK_EXT_shader_demote_to_helper_invocation +// no functions + +// VK_EXT_transform_feedback +GO(vkCmdBeginQueryIndexedEXT, vFpUuiu) +GO(vkCmdBeginTransformFeedbackEXT, vFpuupp) +GO(vkCmdBindTransformFeedbackBuffersEXT, vFpuuppp) +GO(vkCmdDrawIndirectByteCountEXT, vFpuuUUuu) +GO(vkCmdEndQueryIndexedEXT, vFpUuu) +GO(vkCmdEndTransformFeedbackEXT, vFpuupp) + +// VK_EXT_vertex_attribute_divisor +// no functions + +// VK_EXT_full_screen_exclusive +GO(vkAcquireFullScreenExclusiveModeEXT, iFpU) +GO(vkGetPhysicalDeviceSurfacePresentModes2EXT, iFpppp) +GO(vkReleaseFullScreenExclusiveModeEXT, iFpU) +GO(vkGetDeviceGroupSurfacePresentModes2EXT, iFppp) + +// VK_EXT_calibrated_timestamps +GO(vkGetCalibratedTimestampsEXT, iFpuppp) +GO(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, iFppp) + +// VK_EXT_sample_locations +GO(vkCmdSetSampleLocationsEXT, vFpp) +GO(vkGetPhysicalDeviceMultisamplePropertiesEXT, vFpip) + +// VK_EXT_headless_surface +GOM(vkCreateHeadlessSurfaceEXT, iFEpppp) + +//VK_KHR_performance_query +GO(vkAcquireProfilingLockKHR, iFpp) +GO(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, iFpuppp) +GO(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, vFppp) +GO(vkReleaseProfilingLockKHR, vFp) + +// VK_NV_cooperative_matrix +GO(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, iFppp) + +// VK_KHR_fragment_shading_rate +GO(vkCmdSetFragmentShadingRateKHR, vFppp) +GO(vkGetPhysicalDeviceFragmentShadingRatesKHR, iFppp) + +// VK_NV_coverage_reduction_mode +GO(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, iFppp) + +// VK_EXT_tooling_info +GO(vkGetPhysicalDeviceToolPropertiesEXT, iFppp) + +// VK_KHR_create_renderpass2 +GO(vkCmdBeginRenderPass2KHR, vFppp) +GO(vkCmdEndRenderPass2KHR, vFpp) +GO(vkCmdNextSubpass2KHR, vFppp) +GOM(vkCreateRenderPass2KHR, iFEpppp) + +// VK_EXT_extended_dynamic_state +GO(vkCmdBindVertexBuffers2EXT, vFpuupppp) +GO(vkCmdSetCullModeEXT, vFpu) +GO(vkCmdSetDepthBoundsTestEnableEXT, vFpu) +GO(vkCmdSetDepthCompareOpEXT, vFpu) +GO(vkCmdSetDepthTestEnableEXT, vFpu) +GO(vkCmdSetDepthWriteEnableEXT, vFpu) +GO(vkCmdSetFrontFaceEXT, vFpu) +GO(vkCmdSetPrimitiveTopologyEXT, vFpi) +GO(vkCmdSetScissorWithCountEXT, vFup) +GO(vkCmdSetStencilOpEXT, vFpuiiii) +GO(vkCmdSetStencilTestEnableEXT, vFpu) +GO(vkCmdSetViewportWithCountEXT, vFpup) + +// VK_KHR_draw_indirect_count +GO(vkCmdDrawIndexedIndirectCountKHR, vFpUUUUuu) +GO(vkCmdDrawIndirectCountKHR, vFpUUUUuu) + +// VK_AMD_draw_indirect_count +GO(vkCmdDrawIndexedIndirectCountAMD, vFpUUUUuu) +GO(vkCmdDrawIndirectCountAMD, vFpUUUUuu) |