Skip to content

Commit 1bc9b67

Browse files
authored
Scalarizer: Replace cl::opts with pass parameters (#110645)
Preserve the existing defaults (although load-store defaulting to false is a really bad one). Also migrate DirectX tests to new PM.
1 parent 4f6ad17 commit 1bc9b67

23 files changed

+93
-64
lines changed

llvm/include/llvm/Transforms/Scalar/Scalarizer.h

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,25 @@ class Function;
2727
class FunctionPass;
2828

2929
struct ScalarizerPassOptions {
30-
// These options correspond 1:1 to cl::opt options defined in
31-
// Scalarizer.cpp. When the cl::opt are specified, they take precedence.
32-
// When the cl::opt are not specified, the present optional values allow to
33-
// override the cl::opt's default values.
34-
std::optional<bool> ScalarizeVariableInsertExtract;
35-
std::optional<bool> ScalarizeLoadStore;
36-
std::optional<unsigned> ScalarizeMinBits;
30+
/// Instruct the scalarizer pass to attempt to keep values of a minimum number
31+
/// of bits.
32+
33+
/// Split vectors larger than this size into fragments, where each fragment is
34+
/// either a vector no larger than this size or a scalar.
35+
///
36+
/// Instructions with operands or results of different sizes that would be
37+
/// split into a different number of fragments are currently left as-is.
38+
unsigned ScalarizeMinBits = 0;
39+
40+
/// Allow the scalarizer pass to scalarize insertelement/extractelement with
41+
/// variable index.
42+
bool ScalarizeVariableInsertExtract = true;
43+
44+
/// Allow the scalarizer pass to scalarize loads and store
45+
///
46+
/// This is disabled by default because having separate loads and stores makes
47+
/// it more likely that the -combiner-alias-analysis limits will be reached.
48+
bool ScalarizeLoadStore = false;
3749
};
3850

3951
class ScalarizerPass : public PassInfoMixin<ScalarizerPass> {

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,40 @@ Expected<IPSCCPOptions> parseIPSCCPOptions(StringRef Params) {
10471047
return Result;
10481048
}
10491049

1050+
Expected<ScalarizerPassOptions> parseScalarizerOptions(StringRef Params) {
1051+
ScalarizerPassOptions Result;
1052+
while (!Params.empty()) {
1053+
StringRef ParamName;
1054+
std::tie(ParamName, Params) = Params.split(';');
1055+
1056+
if (ParamName.consume_front("min-bits=")) {
1057+
if (ParamName.getAsInteger(0, Result.ScalarizeMinBits)) {
1058+
return make_error<StringError>(
1059+
formatv("invalid argument to Scalarizer pass min-bits "
1060+
"parameter: '{0}' ",
1061+
ParamName)
1062+
.str(),
1063+
inconvertibleErrorCode());
1064+
}
1065+
1066+
continue;
1067+
}
1068+
1069+
bool Enable = !ParamName.consume_front("no-");
1070+
if (ParamName == "load-store")
1071+
Result.ScalarizeLoadStore = Enable;
1072+
else if (ParamName == "variable-insert-extract")
1073+
Result.ScalarizeVariableInsertExtract = Enable;
1074+
else {
1075+
return make_error<StringError>(
1076+
formatv("invalid Scalarizer pass parameter '{0}' ", ParamName).str(),
1077+
inconvertibleErrorCode());
1078+
}
1079+
}
1080+
1081+
return Result;
1082+
}
1083+
10501084
Expected<SROAOptions> parseSROAOptions(StringRef Params) {
10511085
if (Params.empty() || Params == "modify-cfg")
10521086
return SROAOptions::ModifyCFG;

llvm/lib/Passes/PassRegistry.def

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,6 @@ FUNCTION_PASS("reg2mem", RegToMemPass())
456456
FUNCTION_PASS("safe-stack", SafeStackPass(TM))
457457
FUNCTION_PASS("sandbox-vectorizer", SandboxVectorizerPass())
458458
FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass())
459-
FUNCTION_PASS("scalarizer", ScalarizerPass())
460459
FUNCTION_PASS("sccp", SCCPPass())
461460
FUNCTION_PASS("select-optimize", SelectOptimizePass(TM))
462461
FUNCTION_PASS("separate-const-offset-from-gep",
@@ -573,6 +572,12 @@ FUNCTION_PASS_WITH_PARAMS(
573572
return StackLifetimePrinterPass(dbgs(), Type);
574573
},
575574
parseStackLifetimeOptions, "may;must")
575+
FUNCTION_PASS_WITH_PARAMS(
576+
"scalarizer", "ScalarizerPass",
577+
[](ScalarizerPassOptions Opts) { return ScalarizerPass(Opts); },
578+
parseScalarizerOptions,
579+
"load-store;no-load-store;variable-insert-extract;"
580+
"no-variable-insert-extract;min-bits=N;")
576581
FUNCTION_PASS_WITH_PARAMS(
577582
"separate-const-offset-from-gep", "SeparateConstOffsetFromGEPPass",
578583
[](bool LowerGEP) { return SeparateConstOffsetFromGEPPass(LowerGEP); },

llvm/lib/Target/DirectX/DirectXPassRegistry.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ MODULE_ANALYSIS("dxil-resource-md", DXILResourceMDAnalysis())
2323
#ifndef MODULE_PASS
2424
#define MODULE_PASS(NAME, CREATE_PASS)
2525
#endif
26+
MODULE_PASS("dxil-data-scalarization", DXILDataScalarization())
2627
MODULE_PASS("dxil-intrinsic-expansion", DXILIntrinsicExpansion())
2728
MODULE_PASS("dxil-op-lower", DXILOpLowering())
2829
MODULE_PASS("dxil-pretty-printer", DXILPrettyPrinterPass(dbgs()))

llvm/lib/Target/DirectX/DirectXTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "DirectXTargetMachine.h"
15+
#include "DXILDataScalarization.h"
1516
#include "DXILIntrinsicExpansion.h"
1617
#include "DXILOpLowering.h"
1718
#include "DXILPrettyPrinter.h"

llvm/lib/Transforms/Scalar/Scalarizer.cpp

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
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-
7653
namespace {
7754

7855
BasicBlock::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-
283253
class ScalarizerVisitor : public InstVisitor<ScalarizerVisitor, bool> {
284254
public:
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

llvm/test/CodeGen/DirectX/rsqrt.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2-
; RUN: opt -S -scalarizer -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
2+
; RUN: opt -S -passes='function(scalarizer<load-store>),dxil-op-lower' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
33

44
; Make sure dxil operation function calls for rsqrt are generated for float and half.
55

llvm/test/CodeGen/DirectX/scalar-data.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -S -dxil-data-scalarization -scalarizer -scalarize-load-store -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
1+
; RUN: opt -S -passes='dxil-data-scalarization,function(scalarizer<load-store>),dxil-op-lower' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
22
; RUN: llc %s -mtriple=dxil-pc-shadermodel6.3-library --filetype=asm -o - | FileCheck %s
33

44
; Make sure we don't touch arrays without vectors and that can recurse multiple-dimension arrays of vectors

llvm/test/CodeGen/DirectX/scalar-load.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -S -dxil-data-scalarization -scalarizer -scalarize-load-store -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
1+
; RUN: opt -S -passes='dxil-data-scalarization,function(scalarizer<load-store>),dxil-op-lower' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
22
; RUN: llc %s -mtriple=dxil-pc-shadermodel6.3-library --filetype=asm -o - | FileCheck %s
33

44
; Make sure we can load groupshared, static vectors and arrays of vectors

llvm/test/CodeGen/DirectX/scalar-store.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -S -dxil-data-scalarization -scalarizer -scalarize-load-store -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
1+
; RUN: opt -S -passes='dxil-data-scalarization,scalarizer<load-store>,dxil-op-lower' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
22
; RUN: llc %s -mtriple=dxil-pc-shadermodel6.3-library --filetype=asm -o - | FileCheck %s
33

44
; Make sure we can store groupshared, static vectors and arrays of vectors

llvm/test/Transforms/Scalarizer/basic-inseltpoison.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -S | FileCheck %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>,dce)' -S | FileCheck %s
33
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
44

55
declare <4 x float> @ext(<4 x float>)

llvm/test/Transforms/Scalarizer/basic.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -S | FileCheck %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>,dce)' -S | FileCheck %s
33
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
44

55
declare <4 x float> @ext(<4 x float>)

llvm/test/Transforms/Scalarizer/constant-extractelement.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -S | FileCheck --check-prefixes=ALL %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>,dce)' -S | FileCheck --check-prefixes=ALL %s
33

44
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
55

llvm/test/Transforms/Scalarizer/constant-insertelement.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -S | FileCheck --check-prefixes=ALL %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>,dce)' -S | FileCheck --check-prefixes=ALL %s
33

44
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
55

llvm/test/Transforms/Scalarizer/dbginfo.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt %s -passes='function(scalarizer)' -scalarize-load-store -S --experimental-debuginfo-iterators=false | FileCheck %s
1+
; RUN: opt %s -passes='function(scalarizer<load-store>)' -S --experimental-debuginfo-iterators=false | FileCheck %s
22
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
33
; FIXME: the test output here changes if we use the RemoveDIs non-intrinsic
44
; debug-info format for the test. Specifically, the intrinsics no longer

llvm/test/Transforms/Scalarizer/min-bits.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -scalarize-min-bits=16 -S | FileCheck %s --check-prefixes=CHECK,MIN16
3-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -scalarize-min-bits=32 -S | FileCheck %s --check-prefixes=CHECK,MIN32
2+
; RUN: opt %s -passes='function(scalarizer<load-store;min-bits=16>,dce)' -S | FileCheck %s --check-prefixes=CHECK,MIN16
3+
; RUN: opt %s -passes='function(scalarizer<load-store;min-bits=32>,dce)' -S | FileCheck %s --check-prefixes=CHECK,MIN32
44
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
55

66
define void @load_add_store_v2i16(ptr %pa, ptr %pb) {

llvm/test/Transforms/Scalarizer/opaque-ptr-bug.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='scalarizer,dce' -S -scalarize-load-store -o - | FileCheck %s
2+
; RUN: opt %s -passes='scalarizer<load-store>,dce' -S -o - | FileCheck %s
33

44
; This used to crash because the same (pointer) value was scattered by
55
; different amounts.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
; RUN: not opt -passes='scalarizer<unknown>' -disable-output %s 2>&1 | FileCheck -check-prefix=UNKNOWNERR %s
2+
; RUN: not opt -passes='scalarizer<;>' -disable-output %s 2>&1 | FileCheck -check-prefix=UNKNOWNERR %s
3+
; RUN: not opt -passes='scalarizer<min-bits=>' -disable-output %s 2>&1 | FileCheck -check-prefix=MINBITS-EMPTY-ERR %s
4+
; RUN: not opt -passes='scalarizer<min-bits=x>' -disable-output %s 2>&1 | FileCheck -check-prefix=MINBITS-NOTINT-ERR %s
5+
; RUN: not opt -passes='scalarizer<no-min-bits=10>' -disable-output %s 2>&1 | FileCheck -check-prefix=UNKNOWNERR %s
6+
7+
; UNKNOWNERR: invalid Scalarizer pass parameter '{{.*}}'
8+
; MINBITS-EMPTY-ERR: invalid argument to Scalarizer pass min-bits parameter: ''
9+
; MINBITS-NOTINT-ERR: invalid argument to Scalarizer pass min-bits parameter: 'x'

llvm/test/Transforms/Scalarizer/scatter-order.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer)' -scalarize-load-store -S | FileCheck %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>)' -S | FileCheck %s
33

44
; This verifies that the order of extract element instructions is
55
; deterministic. In the past we could end up with different results depending

llvm/test/Transforms/Scalarizer/store-bug.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -passes='function(scalarizer)' -scalarize-load-store -S < %s | FileCheck %s
1+
; RUN: opt -passes='function(scalarizer<load-store>)' -S < %s | FileCheck %s
22
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
33

44
; This input caused the scalarizer not to clear cached results

llvm/test/Transforms/Scalarizer/variable-extractelement.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt %s -passes='function(scalarizer,dce)' -S | FileCheck --check-prefix=DEFAULT %s
3-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-variable-insert-extract=false -S | FileCheck --check-prefix=OFF %s
4-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-variable-insert-extract=true -S | FileCheck --check-prefix=DEFAULT %s
3+
; RUN: opt %s -passes='function(scalarizer<no-variable-insert-extract>,dce)' -S | FileCheck --check-prefix=OFF %s
4+
; RUN: opt %s -passes='function(scalarizer<variable-insert-extract>,dce)' -S | FileCheck --check-prefix=DEFAULT %s
55

66
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
77

llvm/test/Transforms/Scalarizer/variable-insertelement.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt %s -passes='function(scalarizer,dce)' -S | FileCheck --check-prefix=DEFAULT %s
3-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-variable-insert-extract=false -S | FileCheck --check-prefix=OFF %s
4-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-variable-insert-extract=true -S | FileCheck --check-prefix=DEFAULT %s
3+
; RUN: opt %s -passes='function(scalarizer<no-variable-insert-extract>,dce)' -S | FileCheck --check-prefix=OFF %s
4+
; RUN: opt %s -passes='function(scalarizer<variable-insert-extract>,dce)' -S | FileCheck --check-prefix=DEFAULT %s
55

66
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
77

llvm/test/Transforms/Scalarizer/vector-of-pointer-to-vector.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2-
; RUN: opt %s -passes='function(scalarizer,dce)' -scalarize-load-store -S | FileCheck %s
2+
; RUN: opt %s -passes='function(scalarizer<load-store>,dce)' -S | FileCheck %s
33
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
44

55
define <1 x i32> @f1(<1 x ptr> %src, i32 %index) {

0 commit comments

Comments
 (0)