Skip to content

Commit b1ee1e5

Browse files
authored
Merge pull request #114 from frasercrmck/clear-up-multi-llvm
[compiler] Reduce uses of multi_llvm
2 parents 4dfa386 + 4231550 commit b1ee1e5

File tree

54 files changed

+220
-374
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+220
-374
lines changed

doc/overview/tutorials/creating-a-new-mux-target/adapting-target-pass-pipeline.rst

-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ This will need the following includes and settings:
9090
#include <compiler/utils/metadata.h>
9191
#include <compiler/utils/pass_functions.h>
9292
#include <llvm/IR/IRBuilder.h>
93-
#include <multi_llvm/opaque_pointers.h>
9493
#include <compiler/utils/scheduling.h>
9594
using namespace llvm;
9695

examples/refsi/refsi_g1_wi/compiler/refsi_g1_wi/source/refsi_pass_machinery.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#include <llvm/Passes/PassBuilder.h>
3232
#include <llvm/Transforms/Utils/Cloning.h>
3333
#include <metadata/handler/vectorize_info_metadata.h>
34-
#include <multi_llvm/optional_helper.h>
3534
#include <refsi_g1_wi/refsi_pass_machinery.h>
3635
#include <refsi_g1_wi/refsi_wg_loop_pass.h>
3736
#include <riscv/ir_to_builtins_pass.h>

examples/refsi/refsi_m1/compiler/refsi_m1/source/refsi_mux_builtin_info.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <llvm/ADT/StringSwitch.h>
1919
#include <llvm/IR/Operator.h>
2020
#include <multi_llvm/llvm_version.h>
21-
#include <multi_llvm/opaque_pointers.h>
2221
#include <refsi_m1/refsi_mux_builtin_info.h>
2322

2423
#include <cstdint>
@@ -356,9 +355,6 @@ void defineRefSiDmaWait(Function &F) {
356355
auto *CoreDMAEventTy =
357356
compiler::utils::getOrCreateMuxDMAEventType(*F.getParent());
358357
auto *EventPtrTy = CoreDMAEventTy->getPointerTo();
359-
assert(multi_llvm::isOpaqueOrPointeeTypeMatches(
360-
cast<PointerType>(EventList->getType()), EventPtrTy) &&
361-
"__mux_dma_wait() parameter expected to be __mux_dma_event_t**");
362358
auto *EventGep = BodyBuilder.CreateGEP(EventPtrTy, EventList, LoopIVPhi);
363359
auto *Event = BodyBuilder.CreateLoad(EventPtrTy, EventGep);
364360
auto *EventID = BodyBuilder.CreatePtrToInt(Event, XferIdTy, "xfer_id");

examples/refsi/refsi_m1/compiler/refsi_m1/source/refsi_pass_machinery.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include <llvm/Passes/PassBuilder.h>
3333
#include <llvm/Transforms/Utils/Cloning.h>
3434
#include <metadata/handler/vectorize_info_metadata.h>
35-
#include <multi_llvm/optional_helper.h>
3635
#include <refsi_m1/refsi_pass_machinery.h>
3736
#include <refsi_m1/refsi_wrapper_pass.h>
3837
#include <riscv/ir_to_builtins_pass.h>

examples/refsi/refsi_m1/compiler/refsi_m1/source/refsi_wrapper_pass.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <compiler/utils/pass_functions.h>
1919
#include <compiler/utils/scheduling.h>
2020
#include <llvm/IR/IRBuilder.h>
21-
#include <multi_llvm/opaque_pointers.h>
2221
#include <refsi_m1/refsi_wrapper_pass.h>
2322

2423
using namespace llvm;
@@ -36,9 +35,7 @@ namespace {
3635
void storeToSchedStruct(IRBuilder<> &Builder, StructType *MuxWorkGroupStructTy,
3736
Value *Sched, uint32_t Element, uint32_t Index,
3837
Value *Val) {
39-
assert(Sched->getType()->isPointerTy() &&
40-
multi_llvm::isOpaqueOrPointeeTypeMatches(
41-
cast<PointerType>(Sched->getType()), MuxWorkGroupStructTy));
38+
assert(Sched->getType()->isPointerTy());
4239

4340
Value *IndicesArray[3] = {Builder.getInt32(0), Builder.getInt32(Element),
4441
Builder.getInt32(Index)};
@@ -69,9 +66,7 @@ void storeToSchedStruct(IRBuilder<> &Builder, StructType *MuxWorkGroupStructTy,
6966
Value *loadFromSchedStruct(IRBuilder<> &Builder,
7067
StructType *MuxWorkGroupStructTy, Value *Sched,
7168
uint32_t Element, uint32_t Index) {
72-
assert(Sched->getType()->isPointerTy() &&
73-
multi_llvm::isOpaqueOrPointeeTypeMatches(
74-
cast<PointerType>(Sched->getType()), MuxWorkGroupStructTy));
69+
assert(Sched->getType()->isPointerTy());
7570
Value *IndicesArray[3] = {Builder.getInt32(0), Builder.getInt32(Element),
7671
Builder.getInt32(Index)};
7772
// Check if it's an array type

modules/compiler/cookie/{{cookiecutter.target_name}}/source/module.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include <llvm/Support/Process.h>
3333
#include <llvm/Target/TargetMachine.h>
3434
#include <multi_llvm/multi_llvm.h>
35-
#include <multi_llvm/optional_helper.h>
3635
#include <{{cookiecutter.target_name}}/module.h>
3736
#include <{{cookiecutter.target_name}}/target.h>
3837
#include <vecz/pass.h>

modules/compiler/cookie/{{cookiecutter.target_name}}/source/{{cookiecutter.target_name}}_pass_machinery.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
#include <llvm/Passes/PassBuilder.h>
4040
#include <llvm/Transforms/Utils/Cloning.h>
4141
#include <metadata/handler/vectorize_info_metadata.h>
42-
#include <multi_llvm/optional_helper.h>
4342
#include <optional>
4443
#include <vecz/pass.h>
4544
// Add our pass machinery

modules/compiler/multi_llvm/include/multi_llvm/opaque_pointers.h

-42
This file was deleted.

modules/compiler/riscv/source/module.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#include <llvm/Support/Process.h>
3232
#include <llvm/Target/TargetMachine.h>
3333
#include <multi_llvm/multi_llvm.h>
34-
#include <multi_llvm/optional_helper.h>
3534
#include <riscv/ir_to_builtins_pass.h>
3635
#include <riscv/module.h>
3736
#include <riscv/riscv_pass_machinery.h>

modules/compiler/riscv/source/riscv_pass_machinery.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include <llvm/Passes/PassBuilder.h>
3434
#include <llvm/Transforms/Utils/Cloning.h>
3535
#include <metadata/handler/vectorize_info_metadata.h>
36-
#include <multi_llvm/optional_helper.h>
3736
#include <riscv/ir_to_builtins_pass.h>
3837
#include <riscv/riscv_pass_machinery.h>
3938

modules/compiler/source/base/include/base/base_module_pass_machinery.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class BaseModulePassMachinery : public compiler::utils::PassMachinery {
4141
public:
4242
BaseModulePassMachinery(
4343
llvm::LLVMContext &Ctx, llvm::TargetMachine *TM,
44-
multi_llvm::Optional<compiler::utils::DeviceInfo> Info,
44+
std::optional<compiler::utils::DeviceInfo> Info,
4545
compiler::utils::BuiltinInfoAnalysis::CallbackFn BICallback,
4646
bool verifyEach, compiler::utils::DebugLogging debugLogging,
4747
bool timePasses)
@@ -75,7 +75,7 @@ class BaseModulePassMachinery : public compiler::utils::PassMachinery {
7575

7676
/// @brief Device-specific information about the ComputeMux target being
7777
/// compiled for.
78-
multi_llvm::Optional<compiler::utils::DeviceInfo> Info;
78+
std::optional<compiler::utils::DeviceInfo> Info;
7979

8080
/// @brief An optional callback function that provides target-specific
8181
/// BuiltinInfo information to supply to the BuiltinInfoAnalysis analysis

modules/compiler/source/base/include/base/module.h

+3-5
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
#include <compiler/module.h>
3838
#include <compiler/utils/pass_machinery.h>
3939
#include <llvm/IR/PassManager.h>
40-
#include <multi_llvm/optional_helper.h>
4140
#include <mux/mux.hpp>
4241

4342
#include <mutex>
43+
#include <optional>
4444

4545
namespace compiler {
4646

@@ -489,10 +489,8 @@ class BaseModule : public Module {
489489
/// @param[in] late_passes Module pass manager populated with late passes.
490490
void runOpenCLFrontendPipeline(
491491
const clang::CodeGenOptions &codeGenOpts,
492-
multi_llvm::Optional<llvm::ModulePassManager> early_passes =
493-
multi_llvm::None,
494-
multi_llvm::Optional<llvm::ModulePassManager> late_passes =
495-
multi_llvm::None);
492+
std::optional<llvm::ModulePassManager> early_passes = std::nullopt,
493+
std::optional<llvm::ModulePassManager> late_passes = std::nullopt);
496494

497495
/// @brief LLVM module produced by the `Module::finalize` method.
498496
std::unique_ptr<llvm::Module> finalized_llvm_module;

modules/compiler/source/base/include/base/pass_pipelines.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
#include <compiler/module.h>
2525
#include <llvm/IR/CallingConv.h>
2626
#include <llvm/IR/PassManager.h>
27-
#include <multi_llvm/optional_helper.h>
27+
28+
#include <optional>
2829

2930
namespace llvm {
3031
class Module;
@@ -105,8 +106,7 @@ Result emitCodeGenFile(llvm::Module &M, llvm::TargetMachine *TM,
105106
bool create_assembly = false);
106107

107108
void encodeVectorizationMode(llvm::Function &, VectorizationMode);
108-
multi_llvm::Optional<VectorizationMode> getVectorizationMode(
109-
const llvm::Function &);
109+
std::optional<VectorizationMode> getVectorizationMode(const llvm::Function &);
110110

111111
} // namespace compiler
112112

modules/compiler/source/base/source/image_argument_substitution_pass.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <llvm/IR/IRBuilder.h>
2323
#include <llvm/IR/Instructions.h>
2424
#include <llvm/IR/Module.h>
25+
#include <multi_llvm/llvm_version.h>
2526

2627
#include <map>
2728

modules/compiler/source/base/source/module.cpp

+8-9
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
#include <llvm/Transforms/Vectorize/SLPVectorizer.h>
9090
#include <multi_llvm/llvm_version.h>
9191
#include <multi_llvm/multi_llvm.h>
92-
#include <multi_llvm/optional_helper.h>
9392
#include <multi_llvm/triple.h>
9493
#include <mux/mux.hpp>
9594
#include <spirv-ll/module.h>
@@ -117,7 +116,7 @@ namespace {
117116
// changed around; not a big deal, just a few ugly ifdefs
118117
inline llvm::ModulePassManager buildPerModuleDefaultPipeline(
119118
llvm::PassBuilder &PB, llvm::OptimizationLevel OL,
120-
multi_llvm::Optional<llvm::ModulePassManager> EP) {
119+
std::optional<llvm::ModulePassManager> EP) {
121120
assert(OL != llvm::OptimizationLevel::O0);
122121
if (EP.has_value()) {
123122
PB.registerPipelineStartEPCallback(
@@ -134,7 +133,7 @@ inline llvm::ModulePassManager buildPerModuleDefaultPipeline(
134133
}
135134

136135
inline llvm::ModulePassManager buildO0DefaultPipeline(
137-
llvm::PassBuilder &PB, multi_llvm::Optional<llvm::ModulePassManager> EP) {
136+
llvm::PassBuilder &PB, std::optional<llvm::ModulePassManager> EP) {
138137
if (EP.has_value()) {
139138
PB.registerPipelineStartEPCallback(
140139
[&EP](llvm::ModulePassManager &MPM, llvm::OptimizationLevel) {
@@ -146,7 +145,7 @@ inline llvm::ModulePassManager buildO0DefaultPipeline(
146145

147146
inline llvm::ModulePassManager buildPipeline(
148147
llvm::PassBuilder &PB, clang::CodeGenOptions Opts,
149-
multi_llvm::Optional<llvm::ModulePassManager> EP) {
148+
std::optional<llvm::ModulePassManager> EP) {
150149
return Opts.OptimizationLevel == 0
151150
? buildO0DefaultPipeline(PB, std::move(EP))
152151
: buildPerModuleDefaultPipeline(PB, llvm::OptimizationLevel::O3,
@@ -166,8 +165,8 @@ inline llvm::ModulePassManager buildPipeline(
166165
void runFrontendPipeline(
167166
compiler::BaseModule &base_module, llvm::Module &module,
168167
const clang::CodeGenOptions &CGO,
169-
multi_llvm::Optional<llvm::ModulePassManager> EP = multi_llvm::None,
170-
multi_llvm::Optional<llvm::ModulePassManager> LP = multi_llvm::None) {
168+
std::optional<llvm::ModulePassManager> EP = std::nullopt,
169+
std::optional<llvm::ModulePassManager> LP = std::nullopt) {
171170
llvm::PipelineTuningOptions PTO;
172171
PTO.LoopUnrolling = CGO.UnrollLoops;
173172
auto PassMach = base_module.createPassMachinery();
@@ -1355,8 +1354,8 @@ void BaseModule::loadBuiltinsPCH(clang::CompilerInstance &instance) {
13551354

13561355
void BaseModule::runOpenCLFrontendPipeline(
13571356
const clang::CodeGenOptions &codeGenOpts,
1358-
multi_llvm::Optional<llvm::ModulePassManager> early_passes,
1359-
multi_llvm::Optional<llvm::ModulePassManager> late_passes) {
1357+
std::optional<llvm::ModulePassManager> early_passes,
1358+
std::optional<llvm::ModulePassManager> late_passes) {
13601359
if (options.fast_math) {
13611360
if (late_passes.has_value()) {
13621361
late_passes->addPass(FastMathPass());
@@ -2059,7 +2058,7 @@ void BaseModule::populateOpenCLOpts(clang::CompilerInstance &instance,
20592058
std::unique_ptr<compiler::utils::PassMachinery>
20602059
BaseModule::createPassMachinery() {
20612060
return std::make_unique<BaseModulePassMachinery>(
2062-
llvm_module->getContext(), /*TM*/ nullptr, /*Info*/ multi_llvm::None,
2061+
llvm_module->getContext(), /*TM*/ nullptr, /*Info*/ std::nullopt,
20632062
/*BICallback*/ nullptr, target.getContext().isLLVMVerifyEachEnabled(),
20642063
target.getContext().getLLVMDebugLoggingLevel(),
20652064
target.getContext().isLLVMTimePassesEnabled());

modules/compiler/source/base/source/pass_pipelines.cpp

+9-10
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
#include <llvm/Transforms/IPO/GlobalOpt.h>
3737
#include <llvm/Transforms/IPO/Inliner.h>
3838
#include <llvm/Transforms/IPO/Internalize.h>
39-
#include <multi_llvm/optional_helper.h>
39+
40+
#include <optional>
4041

4142
using namespace llvm;
4243

@@ -125,8 +126,7 @@ void addLLVMDefaultPerModulePipeline(ModulePassManager &PM, PassBuilder &PB,
125126
Result emitCodeGenFile(llvm::Module &M, TargetMachine *TM,
126127
raw_pwrite_stream &ostream, bool create_assembly) {
127128
legacy::PassManager PM;
128-
CodeGenFileType type =
129-
!create_assembly ? llvm::CGFT_ObjectFile : llvm::CGFT_AssemblyFile;
129+
CodeGenFileType type = !create_assembly ? CGFT_ObjectFile : CGFT_AssemblyFile;
130130
if (TM->addPassesToEmitFile(PM, ostream, /*DwoOut*/ nullptr, type,
131131
/*DisableVerify*/ false)) {
132132
return compiler::Result::FAILURE;
@@ -135,7 +135,7 @@ Result emitCodeGenFile(llvm::Module &M, TargetMachine *TM,
135135
return compiler::Result::SUCCESS;
136136
}
137137

138-
void encodeVectorizationMode(llvm::Function &F, VectorizationMode mode) {
138+
void encodeVectorizationMode(Function &F, VectorizationMode mode) {
139139
switch (mode) {
140140
case VectorizationMode::AUTO:
141141
F.addFnAttr("vecz-mode", "auto");
@@ -149,18 +149,17 @@ void encodeVectorizationMode(llvm::Function &F, VectorizationMode mode) {
149149
}
150150
}
151151

152-
multi_llvm::Optional<VectorizationMode> getVectorizationMode(
153-
const llvm::Function &F) {
154-
llvm::Attribute Attr = F.getFnAttribute("vecz-mode");
152+
std::optional<VectorizationMode> getVectorizationMode(const Function &F) {
153+
Attribute Attr = F.getFnAttribute("vecz-mode");
155154
if (Attr.isValid()) {
156-
return StringSwitch<multi_llvm::Optional<VectorizationMode>>(
155+
return StringSwitch<std::optional<VectorizationMode>>(
157156
Attr.getValueAsString())
158157
.Case("auto", VectorizationMode::AUTO)
159158
.Case("always", VectorizationMode::ALWAYS)
160159
.Case("never", VectorizationMode::NEVER)
161-
.Default(multi_llvm::None);
160+
.Default(std::nullopt);
162161
}
163-
return multi_llvm::None;
162+
return std::nullopt;
164163
}
165164

166165
} // namespace compiler

modules/compiler/source/base/source/printf_replacement_pass.cpp

+1-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#include <llvm/IR/Module.h>
3131
#include <llvm/IR/Type.h>
3232
#include <llvm/Support/FormatVariadic.h>
33-
#include <multi_llvm/opaque_pointers.h>
3433
#include <multi_llvm/vector_type_helper.h>
3534
#include <stddef.h>
3635
#include <stdint.h>
@@ -660,10 +659,7 @@ void compiler::PrintfReplacementPass::rewritePrintfCall(
660659
auto *buffer_elt_ty = getBufferEltTy(module.getContext());
661660

662661
// Double-check the buffer is the type we expect, unless it's opaque.
663-
assert(isa<PointerType>(full_buffer->getType()) &&
664-
multi_llvm::isOpaqueOrPointeeTypeMatches(
665-
cast<PointerType>(full_buffer->getType()), buffer_elt_ty) &&
666-
"Unknown buffer type");
662+
assert(full_buffer->getType()->isPointerTy() && "Unknown buffer type");
667663

668664
// entry block
669665
ir.SetInsertPoint(entry_block);

modules/compiler/source/base/source/program_metadata.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <llvm/IR/Metadata.h>
2929
#include <llvm/IR/Module.h>
3030
#include <llvm/IR/Type.h>
31+
#include <multi_llvm/llvm_version.h>
3132
#include <multi_llvm/vector_type_helper.h>
3233

3334
#include <sstream>

0 commit comments

Comments
 (0)