66 lines · c
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-exception7//8//===----------------------------------------------------------------------===//9/// \file10/// 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_H15#define LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H16 17#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"18 19namespace llvm {20 21class X86Subtarget;22class X86TargetMachine;23 24class X86LegalizerInfo : public LegalizerInfo {25private:26 /// Keep a reference to the X86Subtarget around so that we can27 /// make the right decision when generating code for different targets.28 const X86Subtarget &Subtarget;29 30public: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 39private:40 bool legalizeBuildVector(MachineInstr &MI, MachineRegisterInfo &MRI,41 LegalizerHelper &Helper) const;42 43 bool legalizeFPTOUI(MachineInstr &MI, MachineRegisterInfo &MRI,44 LegalizerHelper &Helper) const;45 46 bool legalizeUITOFP(MachineInstr &MI, MachineRegisterInfo &MRI,47 LegalizerHelper &Helper) const;48 49 bool legalizeNarrowingStore(MachineInstr &MI, MachineRegisterInfo &MRI,50 LegalizerHelper &Helper) const;51 52 bool legalizeSITOFP(MachineInstr &MI, MachineRegisterInfo &MRI,53 LegalizerHelper &Helper) const;54 55 bool legalizeFPTOSI(MachineInstr &MI, MachineRegisterInfo &MRI,56 LegalizerHelper &Helper) const;57 58 bool legalizeGETROUNDING(MachineInstr &MI, MachineRegisterInfo &MRI,59 LegalizerHelper &Helper) const;60 61 bool legalizeSETROUNDING(MachineInstr &MI, MachineRegisterInfo &MRI,62 LegalizerHelper &Helper) const;63};64} // namespace llvm65#endif66