Skip to content

Commit 66ed79c

Browse files
krystian-andrzejewskiigcbot
authored andcommitted
Fix VC BiF module generation targets
This change replaces custom targets with combination of custom commands and custom targets.
1 parent a925591 commit 66ed79c

File tree

2 files changed

+40
-28
lines changed

2 files changed

+40
-28
lines changed

IGC/VectorCompiler/lib/BiF/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ add_custom_target(VCBiFPreparation
6666
add_library(VCEmbeddedBiF OBJECT
6767
${PRINTF_OCL_32} ${PRINTF_OCL_64} ${PRINTF_ZE_32} ${PRINTF_ZE_64}
6868
${BUILTINS} ${SPIRV_BUILTINS})
69+
add_dependencies(VCEmbeddedBiF VCBiFPreparation)
6970
target_link_libraries(VCEmbeddedBiF VCHeaders)

IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -97,29 +97,34 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE)
9797
COMMAND clang-tool -cc1 ${CMCL_INCLUDES} ${VC_INCLUDES}
9898
${EXTRA_CLANG_INCLUDES} ${SPECIAL_CLANG_ARG} ${IGC_BUILD__OPAQUE_POINTERS_DEFAULT_ARG_CLANG} ${EXTRA_CLANG_FLAGS}
9999
-x cl -cl-std=clc++ -triple=${SPIR_TARGET}
100-
-O2 -disable-llvm-passes -discard-value-names -emit-llvm-bc -o "${BIF_CLANG_BC_NAME}" ${CMCL_SRC}
100+
-O2 -disable-llvm-passes -discard-value-names -emit-llvm-bc -o "${BIF_CLANG_BC_PATH}" ${CMCL_SRC}
101101
COMMENT "vc_build_bif: Compiling CMCL source ${CMCL_SRC} to BC ${BIF_CLANG_BC_NAME}"
102102
DEPENDS clang-tool "${CMCL_SRC}" ${EXTRA_DEPENDS}
103103
COMMAND_EXPAND_LISTS)
104-
list(APPEND BC_PATH_LIST ${BIF_CLANG_BC_PATH})
104+
list(APPEND BC_PATH_LIST ${BIF_CLANG_BC_PATH})
105105
endforeach()
106-
106+
107+
set(OPT_BC_DEPENDS ${BC_PATH_LIST})
107108
if (LENGTH_CMCL_SRC_PATH GREATER 1)
108109
add_custom_command(OUTPUT ${BIF_CLANG_BC_PATH_FINAL}
109-
COMMAND ${LLVM_LINK_EXE} ${OPT_OPAQUE_ARG} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_NAME_FINAL}
110+
COMMAND ${LLVM_LINK_EXE} ${OPT_OPAQUE_ARG} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_PATH_FINAL}
110111
COMMENT "vc_build_bif: Link ${BC_PATH_LIST} together to BC ${BIF_CLANG_BC_NAME_FINAL}"
111112
DEPENDS ${LLVM_LINK_EXE} ${BC_PATH_LIST}
112113
COMMAND_EXPAND_LISTS)
114+
set(OPT_BC_DEPENDS ${BIF_CLANG_BC_PATH_FINAL})
113115
endif()
116+
117+
add_custom_command(
118+
OUTPUT ${BIF_OPT_BC_PATH}
119+
COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}"
120+
COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_PATH} ${BIF_CLANG_BC_PATH_FINAL}
121+
COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_PATH} ${BIF_CMCL_BC_PATH}
122+
DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${OPT_BC_DEPENDS})
114123

115124
add_custom_target(${TARGET}
116-
COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}"
117-
COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL}
118-
COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME}
119-
DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL}
120-
BYPRODUCTS ${BIF_OPT_BC_PATH}
125+
DEPENDS ${BIF_OPT_BC_PATH}
121126
SOURCES ${CMCL_SRC_PATH})
122-
set(${RES_FILE} ${BIF_OPT_BC_NAME} PARENT_SCOPE)
127+
set(${RES_FILE} ${BIF_OPT_BC_PATH} PARENT_SCOPE)
123128
endfunction()
124129

125130
# Takes binary data as an input (LLVM bitcode is expected) and converts input
@@ -130,20 +135,23 @@ endfunction()
130135
# The name for the variable is: {BIF_NAME, PTR_BIT_SIZE, "RawData_size" }.
131136
# Args:
132137
# RES_FILE - variable name to put generated file path into.
133-
# BIF_OPT_BC_NAME - path to the binary data that needs to be embedded.
138+
# BIF_OPT_BC_PATH - path to the binary data that needs to be embedded.
134139
# MANGLED_BIF_NAME - the desired name for the embeddable source file.
135140
# Path to resulting CPP source code is stored in the specified cmake variable.
136-
function(vc_generate_embeddable_source TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_NAME)
141+
function(vc_generate_embeddable_source TARGET RES_FILE BIF_OPT_BC_PATH MANGLED_BIF_NAME)
137142
set(BIF_CPP_NAME ${MANGLED_BIF_NAME}.cpp)
138143
set(BIF_CPP_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_CPP_NAME})
139-
set(BIF_OPT_BC_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_OPT_BC_NAME})
144+
file(RELATIVE_PATH BIF_OPT_BC_NAME ${CMAKE_CURRENT_BINARY_DIR} ${BIF_OPT_BC_PATH})
140145
set(BIF_SYMBOL ${MANGLED_BIF_NAME}RawData)
141146

142-
add_custom_target(${TARGET}
147+
add_custom_command(
148+
OUTPUT ${BIF_CPP_PATH}
143149
COMMENT "vc_generate_embeddable_source: encoding LLVM IR as C array data: ${BIF_OPT_BC_NAME} -> ${BIF_CPP_NAME}"
144-
COMMAND ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_NAME} ${BIF_CPP_NAME} ${BIF_SYMBOL} no_attr
145-
DEPENDS ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH}
146-
BYPRODUCTS ${BIF_CPP_PATH})
150+
COMMAND ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH} ${BIF_CPP_PATH} ${BIF_SYMBOL} no_attr
151+
DEPENDS ${PYTHON_EXECUTABLE} ${RESOURCE_EMBEDDER_SCRIPT} ${BIF_OPT_BC_PATH})
152+
153+
add_custom_target(${TARGET}
154+
DEPENDS ${BIF_CPP_PATH})
147155
set(${RES_FILE} ${BIF_CPP_PATH} PARENT_SCOPE)
148156
endfunction()
149157

@@ -162,13 +170,12 @@ endfunction()
162170
# done by VCB tool that is invoked with "-BiFUnique" argument.
163171
# Args:
164172
# RES_FILE - variable name to put generated file path into.
165-
# BIF_OPT_BC_NAME - path to generic library (in a form of bitcode).
173+
# BIF_OPT_BC_PATH - path to generic library (in a form of bitcode).
166174
# MANGLED_BIF_NAME - the desired name for the generated source file.
167175
# Path to resulting CPP source code is stored in the specified cmake variable.
168-
function(vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_NAME)
176+
function(vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_PATH MANGLED_BIF_NAME)
169177
set(BIF_CPP_NAME ${MANGLED_BIF_NAME}.cpp)
170178
set(BIF_CPP_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_CPP_NAME})
171-
set(BIF_OPT_BC_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_OPT_BC_NAME})
172179
set(BIF_SYMBOL ${MANGLED_BIF_NAME}RawData)
173180
set(BIF_CONF_NAME "${MANGLED_BIF_NAME}.conf")
174181
set(BIF_CONF_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_CONF_NAME})
@@ -178,21 +185,25 @@ function(vc_generate_optimized_bif TARGET RES_FILE BIF_OPT_BC_NAME MANGLED_BIF_N
178185
foreach(PLTF IN LISTS SUPPORTED_VC_PLATFORMS)
179186
set(PLTF_BC_NAME "${MANGLED_BIF_NAME}_${PLTF}.vccg.bc")
180187
set(PLTF_BC_PATH ${CMAKE_CURRENT_BINARY_DIR}/${PLTF_BC_NAME})
181-
add_custom_target("${TARGET}-${PLTF}-BC"
188+
add_custom_command(
189+
OUTPUT ${PLTF_BC_PATH}
182190
COMMENT "vc_generate_optimized_bif: compile optimized BiF for ${PLTF}"
183-
COMMAND ${VCB_EXE} ${OPT_OPAQUE_ARG} -o ${PLTF_BC_NAME} -cpu ${PLTF} ${BIF_OPT_BC_NAME}
184-
DEPENDS ${VCB_EXE} ${BIF_OPT_BC_PATH}
185-
BYPRODUCTS ${PLTF_BC_NAME})
191+
COMMAND ${VCB_EXE} ${OPT_OPAQUE_ARG} -o ${PLTF_BC_PATH} -cpu ${PLTF} ${BIF_OPT_BC_PATH}
192+
DEPENDS ${VCB_EXE} ${BIF_OPT_BC_PATH})
193+
add_custom_target("${TARGET}-${PLTF}-BC"
194+
DEPENDS ${PLTF_BC_PATH})
186195
list(APPEND PLTF_BC_PATH_LIST ${PLTF_BC_PATH})
187196
endforeach()
188197

189198
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/builtins.conf.in"
190199
"${BIF_CONF_PATH}" @ONLY)
191-
add_custom_target(${TARGET}
200+
add_custom_command(
201+
OUTPUT ${BIF_CPP_PATH}
192202
COMMENT "vc_generate_optimized_bif: create hashed version of optimized functions"
193-
COMMAND ${VCB_EXE} -BiFUnique -symb ${BIF_SYMBOL} -o ${BIF_CPP_NAME} ${BIF_CONF_NAME}
194-
DEPENDS ${VCB_EXE} ${BIF_CONF_PATH} ${PLTF_BC_PATH_LIST}
195-
BYPRODUCTS ${BIF_CPP_PATH})
203+
COMMAND ${VCB_EXE} -BiFUnique -symb ${BIF_SYMBOL} -o ${BIF_CPP_PATH} ${BIF_CONF_PATH}
204+
DEPENDS ${VCB_EXE} ${BIF_CONF_PATH} ${PLTF_BC_PATH_LIST})
205+
add_custom_target(${TARGET}
206+
DEPENDS ${BIF_CPP_PATH})
196207
set(${RES_FILE} ${BIF_CPP_PATH} PARENT_SCOPE)
197208
endfunction()
198209

0 commit comments

Comments
 (0)