xref: /llvm-project/llvm/lib/Target/X86/GISel/X86LegalizerInfo.h (revision e9cb44090ff7b3feda386ca1ee1252ab47c0617e)
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