Skip to content

Commit be8fd64

Browse files
[llvm][X86ISelDAGToDAG] support -{start|stop}-{before|after}=x86-isel
Follow a similar pattern as AMDGPUDAGToDAGISel's constructor so that we can use INITIALIZE_PASS to register a pass. This allows for more fine grain testability of SelectionDAGISel. Link: llvm/llvm-project#59538 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D140323
1 parent 8ab032f commit be8fd64

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

llvm/lib/Target/X86/X86.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,35 +164,36 @@ FunctionPass *createX86SpeculativeLoadHardeningPass();
164164
FunctionPass *createX86SpeculativeExecutionSideEffectSuppression();
165165

166166
void initializeEvexToVexInstPassPass(PassRegistry &);
167+
void initializeFPSPass(PassRegistry &);
167168
void initializeFixupBWInstPassPass(PassRegistry &);
168169
void initializeFixupLEAPassPass(PassRegistry &);
169-
void initializeFPSPass(PassRegistry &);
170170
void initializeWinEHStatePassPass(PassRegistry &);
171171
void initializeX86AvoidSFBPassPass(PassRegistry &);
172172
void initializeX86AvoidTrailingCallPassPass(PassRegistry &);
173173
void initializeX86CallFrameOptimizationPass(PassRegistry &);
174174
void initializeX86CmovConverterPassPass(PassRegistry &);
175+
void initializeX86DAGToDAGISelPass(PassRegistry &);
175176
void initializeX86DomainReassignmentPass(PassRegistry &);
176177
void initializeX86ExecutionDomainFixPass(PassRegistry &);
177178
void initializeX86ExpandPseudoPass(PassRegistry &);
179+
void initializeX86FastPreTileConfigPass(PassRegistry &);
180+
void initializeX86FastTileConfigPass(PassRegistry &);
178181
void initializeX86FixupSetCCPassPass(PassRegistry &);
179182
void initializeX86FlagsCopyLoweringPassPass(PassRegistry &);
180183
void initializeX86KCFIPass(PassRegistry &);
181184
void initializeX86LoadValueInjectionLoadHardeningPassPass(PassRegistry &);
182185
void initializeX86LoadValueInjectionRetHardeningPassPass(PassRegistry &);
186+
void initializeX86LowerAMXIntrinsicsLegacyPassPass(PassRegistry &);
187+
void initializeX86LowerAMXTypeLegacyPassPass(PassRegistry &);
188+
void initializeX86LowerTileCopyPass(PassRegistry &);
183189
void initializeX86OptimizeLEAPassPass(PassRegistry &);
184190
void initializeX86PartialReductionPass(PassRegistry &);
185-
void initializeX86SpeculativeLoadHardeningPassPass(PassRegistry &);
186-
void initializeX86SpeculativeExecutionSideEffectSuppressionPass(PassRegistry &);
187-
void initializeX86PreTileConfigPass(PassRegistry &);
188-
void initializeX86FastPreTileConfigPass(PassRegistry &);
189-
void initializeX86FastTileConfigPass(PassRegistry &);
190-
void initializeX86TileConfigPass(PassRegistry &);
191-
void initializeX86LowerAMXTypeLegacyPassPass(PassRegistry &);
192191
void initializeX86PreAMXConfigPassPass(PassRegistry &);
193-
void initializeX86LowerTileCopyPass(PassRegistry &);
194-
void initializeX86LowerAMXIntrinsicsLegacyPassPass(PassRegistry &);
192+
void initializeX86PreTileConfigPass(PassRegistry &);
195193
void initializeX86ReturnThunksPass(PassRegistry &);
194+
void initializeX86SpeculativeExecutionSideEffectSuppressionPass(PassRegistry &);
195+
void initializeX86SpeculativeLoadHardeningPassPass(PassRegistry &);
196+
void initializeX86TileConfigPass(PassRegistry &);
196197

197198
namespace X86AS {
198199
enum : unsigned {

llvm/lib/Target/X86/X86ISelDAGToDAG.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
using namespace llvm;
3636

3737
#define DEBUG_TYPE "x86-isel"
38+
#define PASS_NAME "X86 DAG->DAG Instruction Selection"
3839

3940
STATISTIC(NumLoadMoved, "Number of loads moved below TokenFactor");
4041

@@ -176,10 +177,6 @@ namespace {
176177
: SelectionDAGISel(ID, tm, OptLevel), Subtarget(nullptr),
177178
OptForMinSize(false), IndirectTlsSegRefs(false) {}
178179

179-
StringRef getPassName() const override {
180-
return "X86 DAG->DAG Instruction Selection";
181-
}
182-
183180
bool runOnMachineFunction(MachineFunction &MF) override {
184181
// Reset the subtarget each time through.
185182
Subtarget = &MF.getSubtarget<X86Subtarget>();
@@ -580,6 +577,8 @@ namespace {
580577

581578
char X86DAGToDAGISel::ID = 0;
582579

580+
INITIALIZE_PASS(X86DAGToDAGISel, DEBUG_TYPE, PASS_NAME, false, false)
581+
583582
// Returns true if this masked compare can be implemented legally with this
584583
// type.
585584
static bool isLegalMaskCompare(SDNode *N, const X86Subtarget *Subtarget) {

llvm/lib/Target/X86/X86TargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86Target() {
102102
initializeX86PartialReductionPass(PR);
103103
initializePseudoProbeInserterPass(PR);
104104
initializeX86ReturnThunksPass(PR);
105+
initializeX86DAGToDAGISelPass(PR);
105106
}
106107

107108
static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {

0 commit comments

Comments
 (0)