LLVM 19.0.0git
AArch64LegalizerInfo.h
Go to the documentation of this file.
1//===- AArch64LegalizerInfo --------------------------------------*- 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/// \file
9/// This file declares the targeting of the Machinelegalizer class for
10/// AArch64.
11/// \todo This should be generated by TableGen.
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64MACHINELEGALIZER_H
15#define LLVM_LIB_TARGET_AARCH64_AARCH64MACHINELEGALIZER_H
16
21
22namespace llvm {
23
24class AArch64Subtarget;
25
27public:
29
31 LostDebugLocObserver &LocObserver) const override;
32
34 MachineInstr &MI) const override;
35
36private:
37 bool legalizeVaArg(MachineInstr &MI, MachineRegisterInfo &MRI,
38 MachineIRBuilder &MIRBuilder) const;
39 bool legalizeLoadStore(MachineInstr &MI, MachineRegisterInfo &MRI,
40 MachineIRBuilder &MIRBuilder,
41 GISelChangeObserver &Observer) const;
42 bool legalizeShlAshrLshr(MachineInstr &MI, MachineRegisterInfo &MRI,
43 MachineIRBuilder &MIRBuilder,
44 GISelChangeObserver &Observer) const;
45
46 bool legalizeSmallCMGlobalValue(MachineInstr &MI, MachineRegisterInfo &MRI,
47 MachineIRBuilder &MIRBuilder,
48 GISelChangeObserver &Observer) const;
49 bool legalizeBitfieldExtract(MachineInstr &MI, MachineRegisterInfo &MRI,
50 LegalizerHelper &Helper) const;
51 bool legalizeRotate(MachineInstr &MI, MachineRegisterInfo &MRI,
52 LegalizerHelper &Helper) const;
53 bool legalizeFunnelShift(MachineInstr &MI, MachineRegisterInfo &MRI,
54 MachineIRBuilder &MIRBuilder,
55 GISelChangeObserver &Observer,
56 LegalizerHelper &Helper) const;
57 bool legalizeCTPOP(MachineInstr &MI, MachineRegisterInfo &MRI,
58 LegalizerHelper &Helper) const;
59 bool legalizeAtomicCmpxchg128(MachineInstr &MI, MachineRegisterInfo &MRI,
60 LegalizerHelper &Helper) const;
61 bool legalizeCTTZ(MachineInstr &MI, LegalizerHelper &Helper) const;
62 bool legalizeMemOps(MachineInstr &MI, LegalizerHelper &Helper) const;
63 bool legalizeExtractVectorElt(MachineInstr &MI, MachineRegisterInfo &MRI,
64 LegalizerHelper &Helper) const;
65 bool legalizeDynStackAlloc(MachineInstr &MI, LegalizerHelper &Helper) const;
66 bool legalizePrefetch(MachineInstr &MI, LegalizerHelper &Helper) const;
67 const AArch64Subtarget *ST;
68};
69} // End llvm namespace.
70#endif
unsigned const MachineRegisterInfo * MRI
This contains common code to allow clients to notify changes to machine instr.
IRTranslator LLVM IR MI
Interface for Targets to specify which operations they can successfully select and how the others sho...
bool legalizeCustom(LegalizerHelper &Helper, MachineInstr &MI, LostDebugLocObserver &LocObserver) const override
Called for instructions with the Custom LegalizationAction.
bool legalizeIntrinsic(LegalizerHelper &Helper, MachineInstr &MI) const override
Abstract class that contains various methods for clients to notify about changes.
Helper class to build MachineInstr.
Representation of each machine instruction.
Definition: MachineInstr.h:69
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18