diff options
Diffstat (limited to 'contrib/llvm/lib/Target/X86/X86LegalizerInfo.h')
-rw-r--r-- | contrib/llvm/lib/Target/X86/X86LegalizerInfo.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/llvm/lib/Target/X86/X86LegalizerInfo.h b/contrib/llvm/lib/Target/X86/X86LegalizerInfo.h new file mode 100644 index 0000000..135950a --- /dev/null +++ b/contrib/llvm/lib/Target/X86/X86LegalizerInfo.h @@ -0,0 +1,49 @@ +//===- X86LegalizerInfo.h ------------------------------------------*- C++ +//-*-==// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// \file +/// This file declares the targeting of the Machinelegalizer class for X86. +/// \todo This should be generated by TableGen. +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H +#define LLVM_LIB_TARGET_X86_X86MACHINELEGALIZER_H + +#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" + +namespace llvm { + +class X86Subtarget; +class X86TargetMachine; + +/// This class provides the information for the target register banks. +class X86LegalizerInfo : public LegalizerInfo { +private: + /// Keep a reference to the X86Subtarget around so that we can + /// make the right decision when generating code for different targets. + const X86Subtarget &Subtarget; + const X86TargetMachine &TM; + +public: + X86LegalizerInfo(const X86Subtarget &STI, const X86TargetMachine &TM); + +private: + void setLegalizerInfo32bit(); + void setLegalizerInfo64bit(); + void setLegalizerInfoSSE1(); + void setLegalizerInfoSSE2(); + void setLegalizerInfoSSE41(); + void setLegalizerInfoAVX(); + void setLegalizerInfoAVX2(); + void setLegalizerInfoAVX512(); + void setLegalizerInfoAVX512DQ(); + void setLegalizerInfoAVX512BW(); +}; +} // namespace llvm +#endif |