LLVM  10.0.0svn
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 
19 
20 namespace llvm {
21 
22 class LLVMContext;
23 class AArch64Subtarget;
24 
25 /// This class provides the information for the target register banks.
27 public:
29 
31  MachineIRBuilder &MIRBuilder,
32  GISelChangeObserver &Observer) const override;
33 
35  MachineIRBuilder &MIRBuilder) const override;
36 
37 private:
38  bool legalizeVaArg(MachineInstr &MI, MachineRegisterInfo &MRI,
39  MachineIRBuilder &MIRBuilder) const;
40  bool legalizeLoadStore(MachineInstr &MI, MachineRegisterInfo &MRI,
41  MachineIRBuilder &MIRBuilder,
42  GISelChangeObserver &Observer) const;
43  bool legalizeShlAshrLshr(MachineInstr &MI, MachineRegisterInfo &MRI,
44  MachineIRBuilder &MIRBuilder,
45  GISelChangeObserver &Observer) const;
46 };
47 } // End llvm namespace.
48 #endif
This class represents lattice values for constants.
Definition: AllocatorList.h:23
This class provides the information for the target register banks.
bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, MachineIRBuilder &MIRBuilder) const override
Return true if MI is either legal or has been legalized and false if not legal.
Abstract class that contains various methods for clients to notify about changes. ...
unsigned const MachineRegisterInfo * MRI
AArch64LegalizerInfo(const AArch64Subtarget &ST)
Helper class to build MachineInstr.
bool legalizeCustom(MachineInstr &MI, MachineRegisterInfo &MRI, MachineIRBuilder &MIRBuilder, GISelChangeObserver &Observer) const override
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
Representation of each machine instruction.
Definition: MachineInstr.h:64
IRTranslator LLVM IR MI