15f757f3fSDimitry Andric //===- X86LegalizerInfo.h ------------------------------------------*- C++ 25f757f3fSDimitry Andric //-*-==// 35f757f3fSDimitry Andric // 45f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 55f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 65f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 75f757f3fSDimitry Andric // 85f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 95f757f3fSDimitry Andric /// \file 105f757f3fSDimitry Andric /// This file declares the targeting of the Machinelegalizer class for X86. 115f757f3fSDimitry Andric /// \todo This should be generated by TableGen. 125f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 135f757f3fSDimitry Andric 145f757f3fSDimitry Andric #ifndef LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 155f757f3fSDimitry Andric #define LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 165f757f3fSDimitry Andric 175f757f3fSDimitry Andric #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" 185f757f3fSDimitry Andric 195f757f3fSDimitry Andric namespace llvm { 205f757f3fSDimitry Andric 215f757f3fSDimitry Andric class X86Subtarget; 225f757f3fSDimitry Andric class X86TargetMachine; 235f757f3fSDimitry Andric 245f757f3fSDimitry Andric class X86LegalizerInfo : public LegalizerInfo { 255f757f3fSDimitry Andric private: 265f757f3fSDimitry Andric /// Keep a reference to the X86Subtarget around so that we can 275f757f3fSDimitry Andric /// make the right decision when generating code for different targets. 285f757f3fSDimitry Andric const X86Subtarget &Subtarget; 295f757f3fSDimitry Andric 305f757f3fSDimitry Andric public: 315f757f3fSDimitry Andric X86LegalizerInfo(const X86Subtarget &STI, const X86TargetMachine &TM); 325f757f3fSDimitry Andric 33*0fca6ea1SDimitry Andric bool legalizeCustom(LegalizerHelper &Helper, MachineInstr &MI, 34*0fca6ea1SDimitry Andric LostDebugLocObserver &LocObserver) const override; 35*0fca6ea1SDimitry Andric 365f757f3fSDimitry Andric bool legalizeIntrinsic(LegalizerHelper &Helper, 375f757f3fSDimitry Andric MachineInstr &MI) const override; 38*0fca6ea1SDimitry Andric 39*0fca6ea1SDimitry Andric private: 40*0fca6ea1SDimitry Andric bool legalizeBuildVector(MachineInstr &MI, MachineRegisterInfo &MRI, 41*0fca6ea1SDimitry Andric LegalizerHelper &Helper) const; 425f757f3fSDimitry Andric }; 435f757f3fSDimitry Andric } // namespace llvm 445f757f3fSDimitry Andric #endif 45