diff --git a/llvm/lib/Target/ARM/ARMInstrFormats.td b/llvm/lib/Target/ARM/ARMInstrFormats.td --- a/llvm/lib/Target/ARM/ARMInstrFormats.td +++ b/llvm/lib/Target/ARM/ARMInstrFormats.td @@ -124,14 +124,15 @@ def IndexModeUpd : IndexMode<3>; // Instruction execution domain. -class Domain val> { - bits<3> Value = val; +class Domain val> { + bits<4> Value = val; } def GenericDomain : Domain<0>; def VFPDomain : Domain<1>; // Instructions in VFP domain only def NeonDomain : Domain<2>; // Instructions in Neon domain only def VFPNeonDomain : Domain<3>; // Instructions in both VFP & Neon domains def VFPNeonA8Domain : Domain<5>; // Instructions in VFP & Neon under A8 +def MVEDomain : Domain<8>; // Instructions in MVE and ARMv8.1m //===----------------------------------------------------------------------===// // ARM special operands. @@ -328,8 +329,8 @@ let TSFlags{12-7} = Form; let TSFlags{13} = isUnaryDataProc; let TSFlags{14} = canXformTo16Bit; - let TSFlags{17-15} = D.Value; - let TSFlags{18} = thumbArithFlagSetting; + let TSFlags{18-15} = D.Value; + let TSFlags{19} = thumbArithFlagSetting; let Constraints = cstr; let Itinerary = itin; diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h b/llvm/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h @@ -393,16 +393,17 @@ // instruction. Used by the parser to determine whether to require the 'S' // suffix on the mnemonic (when not in an IT block) or preclude it (when // in an IT block). - ThumbArithFlagSetting = 1 << 18, + ThumbArithFlagSetting = 1 << 19, //===------------------------------------------------------------------===// // Code domain. DomainShift = 15, - DomainMask = 7 << DomainShift, + DomainMask = 15 << DomainShift, DomainGeneral = 0 << DomainShift, DomainVFP = 1 << DomainShift, DomainNEON = 2 << DomainShift, DomainNEONA8 = 4 << DomainShift, + DomainMVE = 8 << DomainShift, //===------------------------------------------------------------------===// // Field shifts - such shifts are used to set field while generating