Skip to content

Commit

Permalink
[llvm][AArch64ISelDAGToDAG] support -{start|stop}-{before|after}=aarc…
Browse files Browse the repository at this point in the history
…h64-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 via:

   llc -stop-{before,after}=aarch64-isel

Link: #59538

See also: https://reviews.llvm.org/D140323

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D140331
  • Loading branch information
nickdesaulniers committed Dec 21, 2022
1 parent eb9cc25 commit f35d482
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 4 deletions.
1 change: 1 addition & 0 deletions llvm/lib/Target/AArch64/AArch64.h
Expand Up @@ -81,6 +81,7 @@ void initializeAArch64CompressJumpTablesPass(PassRegistry&);
void initializeAArch64CondBrTuningPass(PassRegistry &);
void initializeAArch64ConditionOptimizerPass(PassRegistry&);
void initializeAArch64ConditionalComparesPass(PassRegistry &);
void initializeAArch64DAGToDAGISelPass(PassRegistry &);
void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&);
void initializeAArch64ExpandPseudoPass(PassRegistry &);
void initializeAArch64KCFIPass(PassRegistry &);
Expand Down
7 changes: 3 additions & 4 deletions llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
Expand Up @@ -29,6 +29,7 @@
using namespace llvm;

#define DEBUG_TYPE "aarch64-isel"
#define PASS_NAME "AArch64 Instruction Selection"

//===--------------------------------------------------------------------===//
/// AArch64DAGToDAGISel - AArch64 specific code to select AArch64 machine
Expand All @@ -51,10 +52,6 @@ class AArch64DAGToDAGISel : public SelectionDAGISel {
CodeGenOpt::Level OptLevel)
: SelectionDAGISel(ID, tm, OptLevel), Subtarget(nullptr) {}

StringRef getPassName() const override {
return "AArch64 Instruction Selection";
}

bool runOnMachineFunction(MachineFunction &MF) override {
Subtarget = &MF.getSubtarget<AArch64Subtarget>();
return SelectionDAGISel::runOnMachineFunction(MF);
Expand Down Expand Up @@ -425,6 +422,8 @@ class AArch64DAGToDAGISel : public SelectionDAGISel {

char AArch64DAGToDAGISel::ID = 0;

INITIALIZE_PASS(AArch64DAGToDAGISel, DEBUG_TYPE, PASS_NAME, false, false)

/// isIntImmediate - This method tests to see if the node is a constant
/// operand. If so Imm will receive the 32-bit value.
static bool isIntImmediate(const SDNode *N, uint64_t &Imm) {
Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
Expand Up @@ -237,6 +237,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() {
initializeAArch64StackTaggingPass(*PR);
initializeAArch64StackTaggingPreRAPass(*PR);
initializeAArch64LowerHomogeneousPrologEpilogPass(*PR);
initializeAArch64DAGToDAGISelPass(*PR);
}

//===----------------------------------------------------------------------===//
Expand Down

0 comments on commit f35d482

Please sign in to comment.