LLVM 20.0.0git
InstructionSelector.h
Go to the documentation of this file.
1//===- llvm/CodeGen/GlobalISel/InstructionSelector.h ------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9/// \file This file declares the API for the instruction selector.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CODEGEN_GLOBALISEL_INSTRUCTIONSELECTOR_H
14#define LLVM_CODEGEN_GLOBALISEL_INSTRUCTIONSELECTOR_H
15
17
18namespace llvm {
19class GISelObserverWrapper;
20
22public:
24
25 /// Select the (possibly generic) instruction \p I to only use target-specific
26 /// opcodes. It is OK to insert multiple instructions, but they cannot be
27 /// generic pre-isel instructions.
28 ///
29 /// \returns whether selection succeeded.
30 /// \pre I.getParent() && I.getParent()->getParent()
31 /// \post
32 /// if returns true:
33 /// for I in all mutated/inserted instructions:
34 /// !isPreISelGenericOpcode(I.getOpcode())
35 virtual bool select(MachineInstr &I) = 0;
36
37 // FIXME: Eliminate dependency on TargetPassConfig for NewPM transition
38 const TargetPassConfig *TPC = nullptr;
39
41
42 /// Note: InstructionSelect does not track changed instructions.
43 /// changingInstr() and changedInstr() will never be called on these
44 /// observers.
46};
47} // namespace llvm
48
49#endif
#define I(x, y, z)
Definition: MD5.cpp:58
Provides the logic to execute GlobalISel match tables, which are used by the instruction selector and...
Simple wrapper observer that takes several observers, and calls each one for each event.
GISelObserverWrapper * AllObservers
Note: InstructionSelect does not track changed instructions.
virtual bool select(MachineInstr &I)=0
Select the (possibly generic) instruction I to only use target-specific opcodes.
const TargetPassConfig * TPC
MachineOptimizationRemarkEmitter * MORE
Representation of each machine instruction.
Definition: MachineInstr.h:69
Target-Independent Code Generator Pass Configuration Options.
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18