1 //===- X86LegalizerInfo.h ------------------------------------------*- C++ 2 //-*-==// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 /// \file 10 /// This file declares the targeting of the Machinelegalizer class for X86. 11 /// \todo This should be generated by TableGen. 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 15 #define LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 16 17 #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" 18 19 namespace llvm { 20 21 class X86Subtarget; 22 class X86TargetMachine; 23 24 class X86LegalizerInfo : public LegalizerInfo { 25 private: 26 /// Keep a reference to the X86Subtarget around so that we can 27 /// make the right decision when generating code for different targets. 28 const X86Subtarget &Subtarget; 29 30 public: 31 X86LegalizerInfo(const X86Subtarget &STI, const X86TargetMachine &TM); 32 33 bool legalizeCustom(LegalizerHelper &Helper, MachineInstr &MI, 34 LostDebugLocObserver &LocObserver) const override; 35 36 bool legalizeIntrinsic(LegalizerHelper &Helper, 37 MachineInstr &MI) const override; 38 39 private: 40 bool legalizeBuildVector(MachineInstr &MI, MachineRegisterInfo &MRI, 41 LegalizerHelper &Helper) const; 42 }; 43 } // namespace llvm 44 #endif 45