diff --git a/llvm/lib/Target/ARC/ARC.td b/llvm/lib/Target/ARC/ARC.td --- a/llvm/lib/Target/ARC/ARC.td +++ b/llvm/lib/Target/ARC/ARC.td @@ -8,6 +8,18 @@ include "llvm/Target/Target.td" +//===----------------------------------------------------------------------===// +// ARC Subtarget features +//===----------------------------------------------------------------------===// + +def FeatureNORM + : SubtargetFeature<"norm", "Xnorm", "true", + "Enable support for norm instruction.">; + +//===----------------------------------------------------------------------===// +// Registers, calling conventions, instruction descriptions +//===----------------------------------------------------------------------===// + include "ARCRegisterInfo.td" include "ARCInstrInfo.td" include "ARCCallingConv.td" diff --git a/llvm/lib/Target/ARC/ARCSubtarget.h b/llvm/lib/Target/ARC/ARCSubtarget.h --- a/llvm/lib/Target/ARC/ARCSubtarget.h +++ b/llvm/lib/Target/ARC/ARCSubtarget.h @@ -29,6 +29,8 @@ class TargetMachine; class ARCSubtarget : public ARCGenSubtargetInfo { + bool Xnorm = false; + virtual void anchor(); ARCInstrInfo InstrInfo; ARCFrameLowering FrameLowering; @@ -58,6 +60,8 @@ const SelectionDAGTargetInfo *getSelectionDAGInfo() const override { return &TSInfo; } + + bool hasNorm() const { return Xnorm; } }; } // end namespace llvm