11c3f7f17SFangrui Song //===- X86LegalizerInfo.h ------------------------------------------*- C++ 21c3f7f17SFangrui Song //-*-==// 31c3f7f17SFangrui Song // 41c3f7f17SFangrui Song // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 51c3f7f17SFangrui Song // See https://llvm.org/LICENSE.txt for license information. 61c3f7f17SFangrui Song // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 71c3f7f17SFangrui Song // 81c3f7f17SFangrui Song //===----------------------------------------------------------------------===// 91c3f7f17SFangrui Song /// \file 101c3f7f17SFangrui Song /// This file declares the targeting of the Machinelegalizer class for X86. 111c3f7f17SFangrui Song /// \todo This should be generated by TableGen. 121c3f7f17SFangrui Song //===----------------------------------------------------------------------===// 131c3f7f17SFangrui Song 141c3f7f17SFangrui Song #ifndef LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 151c3f7f17SFangrui Song #define LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H 161c3f7f17SFangrui Song 171c3f7f17SFangrui Song #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" 181c3f7f17SFangrui Song 191c3f7f17SFangrui Song namespace llvm { 201c3f7f17SFangrui Song 211c3f7f17SFangrui Song class X86Subtarget; 221c3f7f17SFangrui Song class X86TargetMachine; 231c3f7f17SFangrui Song 241c3f7f17SFangrui Song class X86LegalizerInfo : public LegalizerInfo { 251c3f7f17SFangrui Song private: 261c3f7f17SFangrui Song /// Keep a reference to the X86Subtarget around so that we can 271c3f7f17SFangrui Song /// make the right decision when generating code for different targets. 281c3f7f17SFangrui Song const X86Subtarget &Subtarget; 291c3f7f17SFangrui Song 301c3f7f17SFangrui Song public: 311c3f7f17SFangrui Song X86LegalizerInfo(const X86Subtarget &STI, const X86TargetMachine &TM); 321c3f7f17SFangrui Song 3311d7203cSEvgenii Kudriashov bool legalizeCustom(LegalizerHelper &Helper, MachineInstr &MI, 3411d7203cSEvgenii Kudriashov LostDebugLocObserver &LocObserver) const override; 3511d7203cSEvgenii Kudriashov 361c3f7f17SFangrui Song bool legalizeIntrinsic(LegalizerHelper &Helper, 371c3f7f17SFangrui Song MachineInstr &MI) const override; 3811d7203cSEvgenii Kudriashov 3911d7203cSEvgenii Kudriashov private: 4011d7203cSEvgenii Kudriashov bool legalizeBuildVector(MachineInstr &MI, MachineRegisterInfo &MRI, 4111d7203cSEvgenii Kudriashov LegalizerHelper &Helper) const; 42*e9cb4409SEvgenii Kudriashov 43*e9cb4409SEvgenii Kudriashov bool legalizeFPTOUI(MachineInstr &MI, MachineRegisterInfo &MRI, 44*e9cb4409SEvgenii Kudriashov LegalizerHelper &Helper) const; 45*e9cb4409SEvgenii Kudriashov 46*e9cb4409SEvgenii Kudriashov bool legalizeUITOFP(MachineInstr &MI, MachineRegisterInfo &MRI, 47*e9cb4409SEvgenii Kudriashov LegalizerHelper &Helper) const; 481c3f7f17SFangrui Song }; 491c3f7f17SFangrui Song } // namespace llvm 501c3f7f17SFangrui Song #endif 51