3939#include " llvm/IR/Value.h"
4040#include " llvm/InitializePasses.h"
4141#include " llvm/Support/Casting.h"
42- #include " llvm/Support/CommandLine.h"
4342#include " llvm/Transforms/Utils/Local.h"
4443#include < cassert>
4544#include < cstdint>
@@ -51,28 +50,6 @@ using namespace llvm;
5150
5251#define DEBUG_TYPE " scalarizer"
5352
54- static cl::opt<bool > ClScalarizeVariableInsertExtract (
55- " scalarize-variable-insert-extract" , cl::init(true ), cl::Hidden,
56- cl::desc(" Allow the scalarizer pass to scalarize "
57- " insertelement/extractelement with variable index" ));
58-
59- // This is disabled by default because having separate loads and stores
60- // makes it more likely that the -combiner-alias-analysis limits will be
61- // reached.
62- static cl::opt<bool > ClScalarizeLoadStore (
63- " scalarize-load-store" , cl::init(false ), cl::Hidden,
64- cl::desc(" Allow the scalarizer pass to scalarize loads and store" ));
65-
66- // Split vectors larger than this size into fragments, where each fragment is
67- // either a vector no larger than this size or a scalar.
68- //
69- // Instructions with operands or results of different sizes that would be split
70- // into a different number of fragments are currently left as-is.
71- static cl::opt<unsigned > ClScalarizeMinBits (
72- " scalarize-min-bits" , cl::init(0 ), cl::Hidden,
73- cl::desc(" Instruct the scalarizer pass to attempt to keep values of a "
74- " minimum number of bits" ));
75-
7653namespace {
7754
7855BasicBlock::iterator skipPastPhiNodesAndDbg (BasicBlock::iterator Itr) {
@@ -273,24 +250,14 @@ static Value *concatenate(IRBuilder<> &Builder, ArrayRef<Value *> Fragments,
273250 return Res;
274251}
275252
276- template <typename T>
277- T getWithDefaultOverride (const cl::opt<T> &ClOption,
278- const std::optional<T> &DefaultOverride) {
279- return ClOption.getNumOccurrences () ? ClOption
280- : DefaultOverride.value_or (ClOption);
281- }
282-
283253class ScalarizerVisitor : public InstVisitor <ScalarizerVisitor, bool > {
284254public:
285255 ScalarizerVisitor (DominatorTree *DT, const TargetTransformInfo *TTI,
286256 ScalarizerPassOptions Options)
287- : DT(DT), TTI(TTI), ScalarizeVariableInsertExtract(getWithDefaultOverride(
288- ClScalarizeVariableInsertExtract,
289- Options.ScalarizeVariableInsertExtract)),
290- ScalarizeLoadStore (getWithDefaultOverride(ClScalarizeLoadStore,
291- Options.ScalarizeLoadStore)),
292- ScalarizeMinBits(getWithDefaultOverride(ClScalarizeMinBits,
293- Options.ScalarizeMinBits)) {}
257+ : DT(DT), TTI(TTI),
258+ ScalarizeVariableInsertExtract (Options.ScalarizeVariableInsertExtract),
259+ ScalarizeLoadStore(Options.ScalarizeLoadStore),
260+ ScalarizeMinBits(Options.ScalarizeMinBits) {}
294261
295262 bool visit (Function &F);
296263
0 commit comments