Home | History | Annotate | Download | only in AArch64
      1 //===- AArch64LegalizerInfo --------------------------------------*- C++ -*-==//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 /// \file
     10 /// This file declares the targeting of the Machinelegalizer class for
     11 /// AArch64.
     12 /// \todo This should be generated by TableGen.
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64MACHINELEGALIZER_H
     16 #define LLVM_LIB_TARGET_AARCH64_AARCH64MACHINELEGALIZER_H
     17 
     18 #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
     19 
     20 namespace llvm {
     21 
     22 class LLVMContext;
     23 class AArch64Subtarget;
     24 
     25 /// This class provides the information for the target register banks.
     26 class AArch64LegalizerInfo : public LegalizerInfo {
     27 public:
     28   AArch64LegalizerInfo(const AArch64Subtarget &ST);
     29 
     30   bool legalizeCustom(MachineInstr &MI, MachineRegisterInfo &MRI,
     31                       MachineIRBuilder &MIRBuilder) const override;
     32 
     33 private:
     34   bool legalizeVaArg(MachineInstr &MI, MachineRegisterInfo &MRI,
     35                      MachineIRBuilder &MIRBuilder) const;
     36 };
     37 } // End llvm namespace.
     38 #endif
     39