Skip to content

Commit 2f66670

Browse files
krystian-andrzejewskiigcbot
authored andcommitted
IGC intrinsic generator refactor
The change introduces the new IGC intrinsic generator. Moreover, it replaces IntrinsicGenISA.gen with new files which defines intrinsic definitions in a descriptive way.
1 parent 971b72e commit 2f66670

22 files changed

+2281
-1162
lines changed

IGC/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ message(STATUS "Using precompiled headers")
18741874

18751875
add_dependencies(${_target}
18761876
intrinsics_gen # generate *inc files for llvm/IR/Attributes.h
1877-
GenGenISAIntrinsics # generate IntrinsicGenISA.gen for GenISAIntrinsics/GenIntrinsics.h
1877+
IntrinsicDefintionGenerator # generate IntrinsicGenISA.gen for GenIntrinsicEnum.h
18781878
)
18791879

18801880
target_precompile_headers(${_target}

IGC/Compiler/CodeGenPublic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ SPDX-License-Identifier: MIT
5454
#include "Probe/Assertion.h"
5555
#include <optional>
5656
#include <Metrics/IGCMetric.h>
57+
#include "llvmWrapper/IR/Module.h"
5758

5859
/************************************************************************
5960
This file contains the interface structure and functions to communicate

IGC/GenISAIntrinsics/CMakeLists.txt

Lines changed: 81 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,50 +13,104 @@ set(IGC_BUILD__PROJ_LABEL__GenISAIntrinsics "${IGC_BUILD__PROJ__GenISAIntrinsics
1313

1414
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
1515

16-
# IntrinsicGenISA.gen is generated by python script and will be included
17-
# by GenIntrinsics.h
18-
set(_fileOutput "${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/IntrinsicGenISA.gen")
16+
set(IGC_BUILD__GenISAIntrinsics_GENERATOR_INPUT_MODULES
17+
"${CMAKE_CURRENT_SOURCE_DIR}/Intrinsic_definitions.py"
18+
)
19+
20+
set(IGC_BUILD__GenISAIntrinsics_GENERATOR_SCRIPTS
21+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/generate_intrinsic_files.py"
22+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/Intrinsic_definition_objects.py"
23+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/Intrinsic_definition_translation.py"
24+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/Intrinsic_generator.py"
25+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/Intrinsic_utils.py"
26+
)
27+
28+
set(IGC_BUILD__GenISAIntrinsics_GENERATOR_TEMPLATES
29+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/templates/GenIntrinsicDescription.h.mako"
30+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/templates/GenIntrinsicDefinition.cpp.mako"
31+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/templates/GenIntrinsicDefinition.h.mako"
32+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/templates/GenIntrinsicEnum.h.mako"
33+
"${CMAKE_CURRENT_SOURCE_DIR}/generator/templates/GenIntrinsicLookupTable.h.mako"
34+
)
35+
36+
set(IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_HEADERS
37+
"${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/GenIntrinsicDescription.h"
38+
"${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/GenIntrinsicDefinition.h"
39+
"${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/GenIntrinsicEnum.h"
40+
"${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/GenIntrinsicLookupTable.h"
41+
)
42+
43+
set(IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_SOURCES
44+
"${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}/GenIntrinsicDefinition.cpp"
45+
)
46+
47+
add_custom_command(
48+
OUTPUT
49+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_HEADERS}
50+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_SOURCES}
51+
COMMAND
52+
${CMAKE_COMMAND} -E env "PYTHONPATH=${BS_DIR_EXTERNAL_COMPONENTS}/build-tools/python-site-packages"
53+
${PYTHON_EXECUTABLE} generate_intrinsic_files.py
54+
"${IGC_BUILD__GenISAIntrinsics_GENERATOR_INPUT_MODULES}" --output ${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}
55+
$<$<NOT:$<CONFIG:Release>>:"--use_comments">
56+
DEPENDS
57+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_INPUT_MODULES}
58+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_SCRIPTS}
59+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_TEMPLATES}
60+
WORKING_DIRECTORY
61+
${CMAKE_CURRENT_SOURCE_DIR}/generator
62+
COMMAND_EXPAND_LISTS
63+
)
64+
65+
add_custom_target(IntrinsicDefintionGenerator
66+
DEPENDS
67+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_HEADERS}
68+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_SOURCES}
69+
SOURCES
70+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_INPUT_MODULES}
71+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_SCRIPTS}
72+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_TEMPLATES}
73+
)
74+
75+
source_group(
76+
TREE
77+
${CMAKE_CURRENT_SOURCE_DIR}
78+
FILES
79+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_INPUT_MODULES}
80+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_SCRIPTS}
81+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_TEMPLATES}
82+
)
83+
84+
set_property(TARGET IntrinsicDefintionGenerator PROPERTY FOLDER "CommonGenerators")
1985

2086
set(IGC_BUILD__SRC__GenISAIntrinsics
87+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_SOURCES}
2188
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsics.cpp"
89+
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsicFunctions.cpp"
90+
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsicLookup.cpp"
91+
"${CMAKE_CURRENT_SOURCE_DIR}/LlvmTypesMapping.cpp"
2292
)
2393

2494
set(IGC_BUILD__HDR__GenISAIntrinsics
95+
${IGC_BUILD__GenISAIntrinsics_GENERATOR_OUTPUT_HEADERS}
2596
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsicInst.h"
2697
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsics.h"
27-
"${_fileOutput}"
98+
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsicFunctions.h"
99+
"${CMAKE_CURRENT_SOURCE_DIR}/GenIntrinsicLookup.h"
100+
"${CMAKE_CURRENT_SOURCE_DIR}/LlvmTypesMapping.h"
28101
)
29102

30103
add_library("${IGC_BUILD__PROJ__GenISAIntrinsics}" STATIC
31104
${IGC_BUILD__SRC__GenISAIntrinsics}
32105
${IGC_BUILD__HDR__GenISAIntrinsics}
33-
"${CMAKE_CURRENT_SOURCE_DIR}/Intrinsic_definitions.py"
34106
)
107+
target_include_directories("${IGC_BUILD__PROJ__GenISAIntrinsics}"
108+
PRIVATE
109+
${IGC_OPTION__OUTPUT_DIR}/${IGC_CMAKE_CFG_INTDIR}
110+
)
35111
set_property(TARGET "${IGC_BUILD__PROJ__GenISAIntrinsics}" PROPERTY
36112
PROJECT_LABEL "${IGC_BUILD__PROJ_LABEL__GenISAIntrinsics}")
37113

38-
# ===========================================================================
39-
# ===================================== BUILD STEP CONFIGURATION ============
40-
# ===========================================================================
41-
42-
43-
set(_intrinsicScript "${IGC_SOURCE_DIR}/GenISAIntrinsics/Intrinsics.py")
44-
45-
set(_InstCmdline)
46-
set(_fileInput "Intrinsic_definitions.py")
47-
48-
list(APPEND _InstCmdline ${_fileInput})
49-
add_custom_command(OUTPUT "${_fileOutput}"
50-
COMMAND "${PYTHON_EXECUTABLE}"
51-
ARGS ${_intrinsicScript} ${_InstCmdline} ${_fileOutput}
52-
DEPENDS "${_intrinsicScript}" ${_fileInput}
53-
COMMENT "Generating Gen intrinsic definition file: ${_fileOutput}"
54-
)
55-
add_custom_target("Gen${IGC_BUILD__PROJ__GenISAIntrinsics}"
56-
DEPENDS "${_fileOutput}"
57-
)
58-
add_dependencies("${IGC_BUILD__PROJ__GenISAIntrinsics}" "Gen${IGC_BUILD__PROJ__GenISAIntrinsics}")
59-
60114
#set up standard defines from the common WDK path.
61115
if(MSVC)
62116
bs_set_wdk(${IGC_BUILD__PROJ__GenISAIntrinsics})

0 commit comments

Comments
 (0)