From 5ab4023cb9ac1ae18d008ab698cf549c0271c923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 17 Mar 2026 23:57:25 +0800 Subject: [PATCH] feat(gen): finish def func & simple typedef parsing --- core/CacheLineSize.go | 3 - core/EUCount.go | 3 - core/PCIProperties.go | 3 - core/RTAS.go | 3 - core/RTASBuilder.go | 3 - core/SRGB.go | 3 - core/bandwidth.go | 3 - core/barrier.go | 3 - core/bfloat16conversions.go | 3 - core/bindlessimages.go | 3 - core/cacheReservation.go | 3 - core/callbacks.go | 3 - core/cmdlist.go | 3 - core/cmdqueue.go | 3 - core/commandListClone.go | 3 - core/common.go | 81 ++++++++++++++++++ core/context.go | 3 - core/copy.go | 3 - core/counterbasedeventpool.go | 3 - core/device.go | 3 - core/deviceLUID.go | 3 - core/deviceVectorSizes.go | 3 - core/deviceipversion.go | 3 - core/deviceusablememproperties.go | 3 - core/driver.go | 3 - core/driverDDIHandles.go | 3 - core/event.go | 3 - core/eventQueryKernelTimestamps.go | 3 - core/eventquerytimestamps.go | 3 - core/externalMemMap.go | 3 - core/externalSemaphores.go | 3 - core/fabric.go | 3 - core/fence.go | 3 - core/floatAtomics.go | 3 - core/globaloffset.go | 3 - core/image.go | 3 - core/imageCopy.go | 3 - core/imageFormatSupport.go | 3 - core/imageQueryAllocProperties.go | 3 - core/imagememoryproperties.go | 3 - core/imageview.go | 3 - core/imageviewplanar.go | 3 - core/immediateCommandListAppend.go | 3 - core/ipcMemHandleType.go | 3 - core/kernelAllocationProperties.go | 3 - core/kernelBinary.go | 3 - core/kernelMaxGroupSizeProperties.go | 3 - core/kernelSchedulingHints.go | 3 - core/linkageInspection.go | 3 - core/linkonceodr.go | 3 - core/memory.go | 3 - core/memoryCompressionHints.go | 3 - core/memoryFreePolicies.go | 3 - core/memoryProperties.go | 3 - core/module.go | 3 - core/mutableCommandList.go | 3 - core/powersavinghint.go | 3 - core/program.go | 3 - core/raytracing.go | 3 - core/relaxedAllocLimits.go | 3 - core/residency.go | 3 - core/sampler.go | 3 - core/subAllocationsProperties.go | 3 - core/subgroups.go | 3 - core/virtual.go | 3 - gen/main.go | 10 ++- gen/scan.go | 122 ++++++++++++++++++++++++--- gen/skip.go | 46 ---------- gen/{symb.go => symbol.go} | 10 +-- gen/utils.go | 88 +++++++++++++++++++ 70 files changed, 291 insertions(+), 258 deletions(-) delete mode 100644 core/CacheLineSize.go delete mode 100644 core/EUCount.go delete mode 100644 core/PCIProperties.go delete mode 100644 core/RTAS.go delete mode 100644 core/RTASBuilder.go delete mode 100644 core/SRGB.go delete mode 100644 core/bandwidth.go delete mode 100644 core/barrier.go delete mode 100644 core/bfloat16conversions.go delete mode 100644 core/bindlessimages.go delete mode 100644 core/cacheReservation.go delete mode 100644 core/callbacks.go delete mode 100644 core/cmdlist.go delete mode 100644 core/cmdqueue.go delete mode 100644 core/commandListClone.go delete mode 100644 core/context.go delete mode 100644 core/copy.go delete mode 100644 core/counterbasedeventpool.go delete mode 100644 core/device.go delete mode 100644 core/deviceLUID.go delete mode 100644 core/deviceVectorSizes.go delete mode 100644 core/deviceipversion.go delete mode 100644 core/deviceusablememproperties.go delete mode 100644 core/driver.go delete mode 100644 core/driverDDIHandles.go delete mode 100644 core/event.go delete mode 100644 core/eventQueryKernelTimestamps.go delete mode 100644 core/eventquerytimestamps.go delete mode 100644 core/externalMemMap.go delete mode 100644 core/externalSemaphores.go delete mode 100644 core/fabric.go delete mode 100644 core/fence.go delete mode 100644 core/floatAtomics.go delete mode 100644 core/globaloffset.go delete mode 100644 core/image.go delete mode 100644 core/imageCopy.go delete mode 100644 core/imageFormatSupport.go delete mode 100644 core/imageQueryAllocProperties.go delete mode 100644 core/imagememoryproperties.go delete mode 100644 core/imageview.go delete mode 100644 core/imageviewplanar.go delete mode 100644 core/immediateCommandListAppend.go delete mode 100644 core/ipcMemHandleType.go delete mode 100644 core/kernelAllocationProperties.go delete mode 100644 core/kernelBinary.go delete mode 100644 core/kernelMaxGroupSizeProperties.go delete mode 100644 core/kernelSchedulingHints.go delete mode 100644 core/linkageInspection.go delete mode 100644 core/linkonceodr.go delete mode 100644 core/memory.go delete mode 100644 core/memoryCompressionHints.go delete mode 100644 core/memoryFreePolicies.go delete mode 100644 core/memoryProperties.go delete mode 100644 core/module.go delete mode 100644 core/mutableCommandList.go delete mode 100644 core/powersavinghint.go delete mode 100644 core/program.go delete mode 100644 core/raytracing.go delete mode 100644 core/relaxedAllocLimits.go delete mode 100644 core/residency.go delete mode 100644 core/sampler.go delete mode 100644 core/subAllocationsProperties.go delete mode 100644 core/subgroups.go delete mode 100644 core/virtual.go delete mode 100644 gen/skip.go rename gen/{symb.go => symbol.go} (87%) create mode 100644 gen/utils.go diff --git a/core/CacheLineSize.go b/core/CacheLineSize.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/CacheLineSize.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/EUCount.go b/core/EUCount.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/EUCount.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/PCIProperties.go b/core/PCIProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/PCIProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/RTAS.go b/core/RTAS.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/RTAS.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/RTASBuilder.go b/core/RTASBuilder.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/RTASBuilder.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/SRGB.go b/core/SRGB.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/SRGB.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/bandwidth.go b/core/bandwidth.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/bandwidth.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/barrier.go b/core/barrier.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/barrier.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/bfloat16conversions.go b/core/bfloat16conversions.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/bfloat16conversions.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/bindlessimages.go b/core/bindlessimages.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/bindlessimages.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/cacheReservation.go b/core/cacheReservation.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/cacheReservation.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/callbacks.go b/core/callbacks.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/callbacks.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/cmdlist.go b/core/cmdlist.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/cmdlist.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/cmdqueue.go b/core/cmdqueue.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/cmdqueue.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/commandListClone.go b/core/commandListClone.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/commandListClone.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/common.go b/core/common.go index e9b3bcc..3ccc30e 100644 --- a/core/common.go +++ b/core/common.go @@ -1,3 +1,84 @@ // Code generated by gen. DO NOT EDIT. +/* + * + * Copyright (C) 2019-2025 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + * @file ze_api.h + * @version v1.15-r1.15.31 + * + */ + package core + +/// @brief Generates generic 'oneAPI' API versions +func ZE_MAKE_VERSION[T ~int | ~uint64 | ~uintptr](_major T, _minor T) T { + return (( _major << 16 )|( _minor & 0x0000ffff)) +} + +/// @brief Extracts 'oneAPI' API major version +func ZE_MAJOR_VERSION[T ~int | ~uint64 | ~uintptr](_ver T) T { + return ( _ver >> 16 ) +} + +/// @brief Extracts 'oneAPI' API minor version +func ZE_MINOR_VERSION[T ~int | ~uint64 | ~uintptr](_ver T) T { + return ( _ver & 0x0000ffff ) +} + +/// @brief compiler-independent type +type ZeBool uint8 + +/// @brief Handle of a driver instance +type ZeDriverHandle uintptr + +/// @brief Handle of driver's device object +type ZeDeviceHandle uintptr + +/// @brief Handle of driver's context object +type ZeContextHandle uintptr + +/// @brief Handle of driver's command queue object +type ZeCommandQueueHandle uintptr + +/// @brief Handle of driver's command list object +type ZeCommandListHandle uintptr + +/// @brief Handle of driver's fence object +type ZeFenceHandle uintptr + +/// @brief Handle of driver's event pool object +type ZeEventPoolHandle uintptr + +/// @brief Handle of driver's event object +type ZeEventHandle uintptr + +/// @brief Handle of driver's image object +type ZeImageHandle uintptr + +/// @brief Handle of driver's module object +type ZeModuleHandle uintptr + +/// @brief Handle of module's build log object +type ZeModuleBuildLogHandle uintptr + +/// @brief Handle of driver's kernel object +type ZeKernelHandle uintptr + +/// @brief Handle of driver's sampler object +type ZeSamplerHandle uintptr + +/// @brief Handle of physical memory object +type ZePhysicalMemHandle uintptr + +/// @brief Handle of driver's fabric vertex object +type ZeFabricVertexHandle uintptr + +/// @brief Handle of driver's fabric edge object +type ZeFabricEdgeHandle uintptr + +/// @brief Maximum IPC handle size +const ZE_MAX_IPC_HANDLE_SIZE = 64 + diff --git a/core/context.go b/core/context.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/context.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/copy.go b/core/copy.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/copy.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/counterbasedeventpool.go b/core/counterbasedeventpool.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/counterbasedeventpool.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/device.go b/core/device.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/device.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/deviceLUID.go b/core/deviceLUID.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/deviceLUID.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/deviceVectorSizes.go b/core/deviceVectorSizes.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/deviceVectorSizes.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/deviceipversion.go b/core/deviceipversion.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/deviceipversion.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/deviceusablememproperties.go b/core/deviceusablememproperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/deviceusablememproperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/driver.go b/core/driver.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/driver.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/driverDDIHandles.go b/core/driverDDIHandles.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/driverDDIHandles.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/event.go b/core/event.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/event.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/eventQueryKernelTimestamps.go b/core/eventQueryKernelTimestamps.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/eventQueryKernelTimestamps.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/eventquerytimestamps.go b/core/eventquerytimestamps.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/eventquerytimestamps.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/externalMemMap.go b/core/externalMemMap.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/externalMemMap.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/externalSemaphores.go b/core/externalSemaphores.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/externalSemaphores.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/fabric.go b/core/fabric.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/fabric.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/fence.go b/core/fence.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/fence.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/floatAtomics.go b/core/floatAtomics.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/floatAtomics.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/globaloffset.go b/core/globaloffset.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/globaloffset.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/image.go b/core/image.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/image.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imageCopy.go b/core/imageCopy.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imageCopy.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imageFormatSupport.go b/core/imageFormatSupport.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imageFormatSupport.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imageQueryAllocProperties.go b/core/imageQueryAllocProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imageQueryAllocProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imagememoryproperties.go b/core/imagememoryproperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imagememoryproperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imageview.go b/core/imageview.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imageview.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/imageviewplanar.go b/core/imageviewplanar.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/imageviewplanar.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/immediateCommandListAppend.go b/core/immediateCommandListAppend.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/immediateCommandListAppend.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/ipcMemHandleType.go b/core/ipcMemHandleType.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/ipcMemHandleType.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/kernelAllocationProperties.go b/core/kernelAllocationProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/kernelAllocationProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/kernelBinary.go b/core/kernelBinary.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/kernelBinary.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/kernelMaxGroupSizeProperties.go b/core/kernelMaxGroupSizeProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/kernelMaxGroupSizeProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/kernelSchedulingHints.go b/core/kernelSchedulingHints.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/kernelSchedulingHints.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/linkageInspection.go b/core/linkageInspection.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/linkageInspection.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/linkonceodr.go b/core/linkonceodr.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/linkonceodr.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/memory.go b/core/memory.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/memory.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/memoryCompressionHints.go b/core/memoryCompressionHints.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/memoryCompressionHints.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/memoryFreePolicies.go b/core/memoryFreePolicies.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/memoryFreePolicies.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/memoryProperties.go b/core/memoryProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/memoryProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/module.go b/core/module.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/module.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/mutableCommandList.go b/core/mutableCommandList.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/mutableCommandList.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/powersavinghint.go b/core/powersavinghint.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/powersavinghint.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/program.go b/core/program.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/program.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/raytracing.go b/core/raytracing.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/raytracing.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/relaxedAllocLimits.go b/core/relaxedAllocLimits.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/relaxedAllocLimits.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/residency.go b/core/residency.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/residency.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/sampler.go b/core/sampler.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/sampler.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/subAllocationsProperties.go b/core/subAllocationsProperties.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/subAllocationsProperties.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/subgroups.go b/core/subgroups.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/subgroups.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/core/virtual.go b/core/virtual.go deleted file mode 100644 index e9b3bcc..0000000 --- a/core/virtual.go +++ /dev/null @@ -1,3 +0,0 @@ -// Code generated by gen. DO NOT EDIT. - -package core diff --git a/gen/main.go b/gen/main.go index 92f4029..d7a1205 100644 --- a/gen/main.go +++ b/gen/main.go @@ -22,6 +22,7 @@ func main() { if strings.HasPrefix(*spec, "v") { ver := (*spec)[1:] u := fmt.Sprintf("https://github.com/oneapi-src/level-zero/releases/download/v%s/level-zero-win-sdk-%s.zip", ver, ver) + fmt.Println("[main] downloading spec from", u) resp, err := http.Get(u) if err != nil { panic(err) @@ -37,6 +38,7 @@ func main() { } specdir = r } else { + fmt.Println("[main] reading local spec from", *spec) specdir = os.DirFS(*spec) } @@ -45,7 +47,7 @@ func main() { if err != nil { panic(err) } - scanheader("core", bufio.NewScanner(f)) + scanHeader("core", bufio.NewScanner(f)) _ = f.Close() fmt.Println("[main] finish parsing core") @@ -54,7 +56,7 @@ func main() { if err != nil { panic(err) } - scanheader("rntm", bufio.NewScanner(f)) + scanHeader("rntm", bufio.NewScanner(f)) _ = f.Close() fmt.Println("[main] finish parsing runtime") @@ -63,7 +65,7 @@ func main() { if err != nil { panic(err) } - scanheader("sysm", bufio.NewScanner(f)) + scanHeader("sysm", bufio.NewScanner(f)) _ = f.Close() fmt.Println("[main] finish parsing sysman") @@ -72,7 +74,7 @@ func main() { if err != nil { panic(err) } - scanheader("tols", bufio.NewScanner(f)) + scanHeader("tols", bufio.NewScanner(f)) _ = f.Close() fmt.Println("[main] finish parsing tools") } diff --git a/gen/scan.go b/gen/scan.go index 2a373b6..cd5056c 100644 --- a/gen/scan.go +++ b/gen/scan.go @@ -14,12 +14,12 @@ func infh(name string) string { if s, ok := infhcache[name]; ok { return s } - s := " [" + name + "]" + s := " [" + name + "]" infhcache[name] = s return s } -func scanheader(name string, scan *bufio.Scanner) { +func scanHeader(name string, scan *bufio.Scanner) { ln := 0 var regionfile *os.File symtab := symbolTable{ @@ -27,13 +27,19 @@ func scanheader(name string, scan *bufio.Scanner) { "ZE_APIEXPORT": symbol{symbolTypeConst, "ZE_APIEXPORT", []string{""}}, "ZE_DLLEXPORT": symbol{symbolTypeConst, "ZE_DLLEXPORT", []string{""}}, } + fileheadersb := strings.Builder{} + region := "" for scan.Scan() { ln++ t := scan.Text() switch { + // file headers + case strings.HasPrefix(t, "/*") || strings.HasPrefix(t, " *") || strings.HasPrefix(t, " */"): + fileheadersb.WriteString(t) + fileheadersb.WriteString("\n") // pragma start case strings.HasPrefix(t, "#pragma region "): - region := strings.TrimSpace(t[15:]) + region = strings.TrimSpace(t[15:]) if region == "" { panic(fmt.Sprintf("%s L%d: unexpected empty region", name, ln)) } @@ -47,25 +53,49 @@ func scanheader(name string, scan *bufio.Scanner) { if err != nil { panic(fmt.Sprintf("%s L%d: cannot create region %s, err: %v", name, ln, region, err)) } - f.WriteString("// Code generated by gen. DO NOT EDIT.\n\npackage ") - f.WriteString(name) + f.WriteString("// Code generated by gen. DO NOT EDIT.\n\n") + f.WriteString(fileheadersb.String()) f.WriteString("\n") + f.WriteString("package ") + f.WriteString(name) + f.WriteString("\n\n") regionfile = f // block barrier case strings.HasPrefix(t, "///////////////////////////////////////////////////////////////////////////////"): - regionfile.WriteString(t) - regionfile.WriteString("\n") - ln = scanblocks(name, scan, regionfile, ln, symtab) + fmt.Println(" [scan] enter", region, "block") + ln = scanBlocks(name, scan, regionfile, ln, symtab) + fmt.Println(" [scan] leave", region, "block") // pragma end case strings.HasPrefix(t, "#pragma endregion"): fmt.Println(infh(name), "close region", regionfile.Name()) _ = regionfile.Close() regionfile = nil + // skip outer # + case strings.HasPrefix(t, "#") || t == "" || strings.HasPrefix(t, "// ") || + strings.HasPrefix(t, "extern "): + fmt.Println(" [scan] skip", t) + continue + default: + panic(fmt.Sprintf("%s L%d: unexpected line %s", name, ln, t)) } } } -func scanblocks( +func checkSymbolName( + symtab symbolTable, ln int, name, sname string, + sb *strings.Builder, f *os.File, eq func() symbol) { + if _, ok := symtab[sname]; ok { + panic(fmt.Sprintf("%s L%d: func #define %s has been defined", name, ln, sname)) + } + symtab[sname] = eq() + if sb.Len() == 0 { + panic(fmt.Sprintf("%s L%d: unexpected non-comment for symbol %s", name, ln, sname)) + } + f.WriteString(sb.String()) + sb.Reset() +} + +func scanBlocks( name string, scan *bufio.Scanner, f *os.File, ln int, symtab symbolTable, ) int { @@ -118,8 +148,78 @@ func scanblocks( if ifdepth < 0 { panic(fmt.Sprintf("%s L%d: unexpected unpaired #endif", name, ln)) } - case strings.HasPrefix(t, "#define"): - + case strings.HasPrefix(t, "#define "): + if !strings.Contains(t, "(") { // is const define + argseval := trimEmptyStringArray(strings.Split(t[8:], " ")) + if len(argseval) != 2 { + panic(fmt.Sprintf("%s L%d: unexpected const #define line %s", name, ln, t)) + } + sname := strings.TrimSpace(argseval[0]) + val := strings.TrimSpace(argseval[1]) + checkSymbolName(symtab, ln, name, sname, &sb, f, func() symbol { + return newSymbolConst(sname, val) + }) + f.WriteString("const ") + f.WriteString(sname) + f.WriteString(" = ") + f.WriteString(val) + f.WriteString("\n\n") + continue + } + sname, argseval, ok := strings.Cut(t[8:], "(") + if !ok { + panic(fmt.Sprintf("%s L%d: unexpected #define line %s", name, ln, t)) + } + args, n, err := getInsideRoundBrakets(argseval) + if err != nil { + panic(fmt.Sprintf("%s L%d: unexpected args bracket err: %v", name, ln, err)) + } + sname = strings.TrimSpace(sname) + args = strings.TrimSpace(args) + eval := strings.TrimSpace(argseval[n+1:]) + checkSymbolName(symtab, ln, name, sname, &sb, f, func() symbol { + return newSymbolFunc(sname, args, eval) + }) + f.WriteString("func ") + f.WriteString(sname) + f.WriteString("[T ~int | ~uint64 | ~uintptr](") + f.WriteString(strings.Join(strings.Split(args, ","), " T,")) + f.WriteString(" T) T {\n\treturn ") + f.WriteString(eval) + f.WriteString("\n}\n\n") + case strings.HasPrefix(t, "typedef "): + s, newln := get1sentence(t, scan, ln) + if newln < 0 { + panic(fmt.Sprintf("%s L%d: unexpected sentence end from", name, ln)) + } + ln = newln + typs := trimEmptyStringArray(strings.Split(s[8:], " ")) + if len(typs) == 0 { + panic(fmt.Sprintf("%s L%d: unexpected typdef line %s", name, ln, t)) + } + if strings.TrimSpace(typs[0]) == "struct" { + if len(typs) != 3 || !strings.Contains(typs[1], "handle_t") || + !strings.Contains(typs[2], "*") { + panic(fmt.Sprintf("%s L%d: unexpected typdef line %s", name, ln, t)) + } + typs = typs[1:] + typs[0] = "uintptr" + typs[1] = strings.TrimPrefix(strings.TrimSpace(typs[1]), "*") + } + if len(typs) != 2 { + panic(fmt.Sprintf("%s L%d: unexpected typdef line %s", name, ln, t)) + } + sname := strings.TrimSpace(strings.TrimSuffix(strings.TrimSpace(typs[1]), ";")) + val := us2camel(strings.TrimSuffix(sname, "_t")) + origtyp := strings.TrimSuffix(strings.TrimSpace(typs[0]), "_t") + checkSymbolName(symtab, ln, name, sname, &sb, f, func() symbol { + return newSymbolConst(sname, val) + }) + f.WriteString("type ") + f.WriteString(val) + f.WriteString(" ") + f.WriteString(origtyp) + f.WriteString("\n\n") } } return ln diff --git a/gen/skip.go b/gen/skip.go deleted file mode 100644 index 9879b10..0000000 --- a/gen/skip.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "bufio" - "errors" - "strings" -) - -func skip2endif(scan *bufio.Scanner, ln int) int { - depth := 1 - for scan.Scan() { - ln++ - t := scan.Text() - switch { - case strings.HasPrefix(t, "#endif"): - depth-- - case strings.HasPrefix(t, "#if"): - depth++ - default: - } - if depth <= 0 { - break - } - } - return ln -} - -func getinside0brakets(txt string) (string, int, error) { - depth := 0 - a := 0 - for i, t := range txt { - switch t { - case '(': - if depth == 0 { - a = i + 1 - } - depth++ - case ')': - depth-- - if depth <= 0 { - return txt[a:i], i, nil - } - } - } - return "", 0, errors.New("no round brakets pair in " + txt) -} diff --git a/gen/symb.go b/gen/symbol.go similarity index 87% rename from gen/symb.go rename to gen/symbol.go index 759d226..0e2108f 100644 --- a/gen/symb.go +++ b/gen/symbol.go @@ -40,7 +40,7 @@ type symbol struct { fields []string } -func newsymbolconst(name, val string) symbol { +func newSymbolConst(name, val string) symbol { return symbol{ stype: symbolTypeConst, name: name, @@ -48,7 +48,7 @@ func newsymbolconst(name, val string) symbol { } } -func newsymbolfunc(name, paras, evals string) symbol { +func newSymbolFunc(name, paras, evals string) symbol { return symbol{ stype: symbolTypeConst, name: name, @@ -56,7 +56,7 @@ func newsymbolfunc(name, paras, evals string) symbol { } } -func (s *symbol) extractfirstfunc(txt string) (args []string, a, b int, err error) { +func (s *symbol) extract1stFunc(txt string) (args []string, a, b int, err error) { if s.stype == symbolTypeConst { return nil, 0, 0, errIsConstReplace } @@ -64,7 +64,7 @@ func (s *symbol) extractfirstfunc(txt string) (args []string, a, b int, err erro if a < 0 { return nil, 0, 0, errNoSuchSymbol } - str, off, err := getinside0brakets(txt[a:]) + str, off, err := getInsideRoundBrakets(txt[a:]) if err != nil { return nil, 0, 0, err } @@ -82,7 +82,7 @@ func (s *symbol) replace(txt string) string { case symbolTypeFunc: paras := strings.Split(s.fields[0], ",") for { - args, a, b, err := s.extractfirstfunc(txt) + args, a, b, err := s.extract1stFunc(txt) if err == errNoSuchSymbol { return txt } diff --git a/gen/utils.go b/gen/utils.go new file mode 100644 index 0000000..c4753fd --- /dev/null +++ b/gen/utils.go @@ -0,0 +1,88 @@ +package main + +import ( + "bufio" + "errors" + "strings" + "unicode" +) + +func skip2endif(scan *bufio.Scanner, ln int) int { + depth := 1 + for scan.Scan() { + ln++ + t := scan.Text() + switch { + case strings.HasPrefix(t, "#endif"): + depth-- + case strings.HasPrefix(t, "#if"): + depth++ + default: + } + if depth <= 0 { + break + } + } + return ln +} + +func getInsideRoundBrakets(txt string) (string, int, error) { + depth := 0 + a := 0 + for i, t := range txt { + switch t { + case '(': + if depth == 0 { + a = i + 1 + } + depth++ + case ')': + depth-- + if depth <= 0 { + return txt[a:i], i, nil + } + } + } + return "", 0, errors.New("no round brakets pair in " + txt) +} + +func get1sentence(firstln string, scan *bufio.Scanner, ln int) (string, int) { + if strings.Contains(firstln, ";") { + return firstln, ln + } + sb := strings.Builder{} + sb.WriteString(firstln) + for scan.Scan() { + sb.WriteString("\n") + t := scan.Text() + ln++ + sb.WriteString(t) + if strings.Contains(t, ";") { + return sb.String(), ln + } + } + return "", -1 +} + +func us2camel(t string) string { + sb := strings.Builder{} + for s := range strings.SplitSeq(t, "_") { + rs := []rune(s) + sb.WriteRune(unicode.ToUpper(rs[0])) + for _, r := range rs[1:] { + sb.WriteRune(unicode.ToLower(r)) + } + } + return sb.String() +} + +func trimEmptyStringArray(arr []string) []string { + news := make([]string, 0, len(arr)) + for _, s := range arr { + if s == "" { + continue + } + news = append(news, s) + } + return news +}