Skip to content

Commit aaeddbe

Browse files
igorban-inteligcbot
authored andcommitted
Fix pipeline and enable non-opaque build
.
1 parent b46d1c2 commit aaeddbe

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
#============================ end_copyright_notice =============================
88

99
set(OPT_OPAQUE_ARG ${IGC_BUILD__OPAQUE_POINTERS_DEFAULT_ARG_OPT})
10-
if ((${LLVM_VERSION_MAJOR} GREATER 15))
11-
set(OPT_OPAQUE_ARG "--opaque-pointers")
12-
endif()
1310

1411
# Args:
1512
# RES_LIST - generated list
@@ -90,10 +87,15 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE)
9087
set(BIF_CLANG_BC_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BIF_CLANG_BC_NAME})
9188
get_filename_component(BIF_CLANG_BC_PATH_DIR ${BIF_CLANG_BC_PATH} DIRECTORY)
9289

90+
set(SPECIAL_CLANG_ARG "")
91+
if (OPT_OPAQUE_ARG)
92+
set(SPECIAL_CLANG_ARG -mllvm ${OPT_OPAQUE_ARG} )
93+
endif()
94+
9395
add_custom_command(OUTPUT "${BIF_CLANG_BC_PATH}"
9496
COMMAND ${CMAKE_COMMAND} -E make_directory ${BIF_CLANG_BC_PATH_DIR}
9597
COMMAND clang-tool -cc1 ${CMCL_INCLUDES} ${VC_INCLUDES}
96-
${EXTRA_CLANG_INCLUDES} ${IGC_BUILD__OPAQUE_POINTERS_DEFAULT_ARG_CLANG} ${EXTRA_CLANG_FLAGS}
98+
${EXTRA_CLANG_INCLUDES} ${SPECIAL_CLANG_ARG} ${IGC_BUILD__OPAQUE_POINTERS_DEFAULT_ARG_CLANG} ${EXTRA_CLANG_FLAGS}
9799
-x cl -cl-std=clc++ -triple=${SPIR_TARGET}
98100
-O2 -disable-llvm-passes -discard-value-names -emit-llvm-bc -o "${BIF_CLANG_BC_NAME}" ${CMCL_SRC}
99101
COMMENT "vc_build_bif: Compiling CMCL source ${CMCL_SRC} to BC ${BIF_CLANG_BC_NAME}"
@@ -104,15 +106,15 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE)
104106

105107
if (LENGTH_CMCL_SRC_PATH GREATER 1)
106108
add_custom_command(OUTPUT ${BIF_CLANG_BC_PATH_FINAL}
107-
COMMAND ${LLVM_LINK_EXE} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_NAME_FINAL}
109+
COMMAND ${LLVM_LINK_EXE} ${OPT_OPAQUE_ARG} ${BC_PATH_LIST} -o ${BIF_CLANG_BC_NAME_FINAL}
108110
COMMENT "vc_build_bif: Link ${BC_PATH_LIST} together to BC ${BIF_CLANG_BC_NAME_FINAL}"
109111
DEPENDS ${LLVM_LINK_EXE} ${BC_PATH_LIST}
110112
COMMAND_EXPAND_LISTS)
111113
endif()
112114

113115
add_custom_target(${TARGET}
114116
COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}"
115-
COMMAND CMCLTranslatorTool -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL}
117+
COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL}
116118
COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME}
117119
DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL}
118120
BYPRODUCTS ${BIF_OPT_BC_PATH}

IGC/VectorCompiler/lib/Driver/Driver.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ SPDX-License-Identifier: MIT
4040
#include <llvm/MC/SubtargetFeature.h>
4141
#include <llvm/Option/ArgList.h>
4242
#include <llvm/Passes/PassBuilder.h>
43+
#include <llvm/Passes/StandardInstrumentations.h>
4344
#include <llvm/Support/Allocator.h>
4445
#include <llvm/Support/CommandLine.h>
4546
#include <llvm/Support/Error.h>
@@ -400,33 +401,38 @@ static void optimizeIR(const vc::CompileOptions &Opts,
400401

401402
PerModulePasses.run(M);
402403
#else
404+
403405
// Create the analysis managers.
404406
llvm::LoopAnalysisManager LAM;
405407
llvm::FunctionAnalysisManager FAM;
406408
llvm::CGSCCAnalysisManager CGAM;
407409
llvm::ModuleAnalysisManager MAM;
408410

411+
PassInstrumentationCallbacks PIC;
412+
// TODO: support 'print-after-all'
413+
PrintPassOptions PrintPassOpts;
414+
StandardInstrumentations SI(M.getContext(), false /*DebugLogging*/,
415+
false /*VerifyEachPass*/, PrintPassOpts);
416+
SI.registerCallbacks(PIC);
417+
409418
llvm::PipelineTuningOptions PipelineTuneOpts;
410419
// Disable vectorization.
411420
PipelineTuneOpts.LoopVectorization = false;
412421
PipelineTuneOpts.SLPVectorization = false;
413422

414-
PassBuilder PB(&TM, PipelineTuneOpts);
423+
PassBuilder PB(&TM, PipelineTuneOpts, {}, &PIC);
415424

416425
PB.registerModuleAnalyses(MAM);
417426
PB.registerCGSCCAnalyses(CGAM);
418427
PB.registerFunctionAnalyses(FAM);
419428
PB.registerLoopAnalyses(LAM);
420429
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
421430

422-
TM.registerPassBuilderCallbacks(PB);
423-
424431
llvm::ModulePassManager MPM = PB.buildPerModuleDefaultPipeline(
425432
OptLevel == 2 ? llvm::OptimizationLevel::O2
426433
: llvm::OptimizationLevel::O0);
427434

428435
MPM.run(M, MAM);
429-
430436
#endif
431437
}
432438

IGC/VectorCompiler/lib/GenXCodeGen/GenXTargetMachine.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,15 +1064,16 @@ void GenXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
10641064
MAM.registerPass([&] { return GenXBackendConfigPass(); });
10651065
});
10661066

1067-
PB.registerOptimizerEarlyEPCallback([this](ModulePassManager &PM,
1068-
OptimizationLevel Level) {
1067+
PB.registerPipelineStartEPCallback([this](ModulePassManager &PM,
1068+
OptimizationLevel Level) {
10691069
// Fix function names.
10701070
PM.addPass(createModuleToFunctionPassAdaptor(GenXFixInvalidFuncNamePass()));
10711071

10721072
// Lower aggr copies.
10731073
PM.addPass(createModuleToFunctionPassAdaptor(GenXLowerAggrCopiesPass()));
10741074

10751075
// Packetize.
1076+
PM.addPass(GenXLegalizeGVLoadUsesPass());
10761077
#ifndef NDEBUG
10771078
// PM.addPass(GenXVerifyPass(GenXVerifyStage::PostSPIRVReader));
10781079
#endif

0 commit comments

Comments
 (0)