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 |