diff options
Diffstat (limited to 'lib/Target/Hexagon/HexagonInstrFormats.td')
| -rw-r--r-- | lib/Target/Hexagon/HexagonInstrFormats.td | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/lib/Target/Hexagon/HexagonInstrFormats.td b/lib/Target/Hexagon/HexagonInstrFormats.td index 636a439ba6a9a..1bb3bc1ea31bb 100644 --- a/lib/Target/Hexagon/HexagonInstrFormats.td +++ b/lib/Target/Hexagon/HexagonInstrFormats.td @@ -24,14 +24,14 @@ class MemAccessSize<bits<4> value> { bits<4> Value = value; } -// MemAccessSize is represented as 1+log2(N) where N is size in bits. -def NoMemAccess : MemAccessSize<0>;// Not a memory access instruction. -def ByteAccess : MemAccessSize<1>;// Byte access instruction (memb). -def HalfWordAccess : MemAccessSize<2>;// Half word access instruction (memh). -def WordAccess : MemAccessSize<3>;// Word access instruction (memw). -def DoubleWordAccess : MemAccessSize<4>;// Double word access instruction (memd) -def Vector64Access : MemAccessSize<7>;// Vector access instruction (memv) -def Vector128Access : MemAccessSize<8>;// Vector access instruction (memv) +// These numbers must match the MemAccessSize enumeration values in +// HexagonBaseInfo.h. +def NoMemAccess : MemAccessSize<0>; +def ByteAccess : MemAccessSize<1>; +def HalfWordAccess : MemAccessSize<2>; +def WordAccess : MemAccessSize<3>; +def DoubleWordAccess : MemAccessSize<4>; +def HVXVectorAccess : MemAccessSize<5>; //===----------------------------------------------------------------------===// @@ -77,9 +77,9 @@ class InstHexagon<dag outs, dag ins, string asmstr, list<dag> pattern, // Packed only with A or X-type instructions. bits<1> isSoloAX = 0; let TSFlags{7} = isSoloAX; - // Only A-type instruction in first slot or nothing. - bits<1> isSoloAin1 = 0; - let TSFlags{8} = isSoloAin1; + // Restricts slot 1 to ALU-only instructions. + bits<1> isRestrictSlot1AOK = 0; + let TSFlags{8} = isRestrictSlot1AOK; // Predicated instructions. bits<1> isPredicated = 0; @@ -121,6 +121,16 @@ class InstHexagon<dag outs, dag ins, string asmstr, list<dag> pattern, bits<2> opExtentAlign = 0; let TSFlags{34-33} = opExtentAlign; // Alignment exponent before extending. + bit cofMax1 = 0; + let TSFlags{35} = cofMax1; + bit cofRelax1 = 0; + let TSFlags{36} = cofRelax1; + bit cofRelax2 = 0; + let TSFlags{37} = cofRelax2; + + bit isRestrictNoSlot1Store = 0; + let TSFlags{38} = isRestrictNoSlot1Store; + // Addressing mode for load/store instructions. AddrModeType addrMode = NoAddrMode; let TSFlags{43-41} = addrMode.Value; @@ -135,6 +145,9 @@ class InstHexagon<dag outs, dag ins, string asmstr, list<dag> pattern, bits<1> isFP = 0; let TSFlags {49} = isFP; // Floating-point. + bits<1> isSomeOK = 0; + let TSFlags {50} = isSomeOK; // Relax some grouping constraints. + bits<1> hasNewValue2 = 0; let TSFlags{51} = hasNewValue2; // Second New-value producer insn. bits<3> opNewValue2 = 0; @@ -146,8 +159,8 @@ class InstHexagon<dag outs, dag ins, string asmstr, list<dag> pattern, bits<1> prefersSlot3 = 0; let TSFlags{56} = prefersSlot3; // Complex XU - bit cofMax1 = 0; - let TSFlags{60} = cofMax1; + bits<1> hasTmpDst = 0; + let TSFlags{59} = hasTmpDst; // v65 : 'fake" register VTMP is set bit CVINew = 0; let TSFlags{61} = CVINew; @@ -229,15 +242,8 @@ class PseudoM<dag outs, dag ins, string asmstr, list<dag> pattern = [], include "HexagonInstrFormatsV4.td" //===----------------------------------------------------------------------===// -// V55 Instruction Format Definitions + -//===----------------------------------------------------------------------===// - -//===----------------------------------------------------------------------===// -// V60 Instruction Format Definitions + +// V60+ Instruction Format Definitions + //===----------------------------------------------------------------------===// include "HexagonInstrFormatsV60.td" - -//===----------------------------------------------------------------------===// -// V62 Instruction Format Definitions + -//===----------------------------------------------------------------------===// +include "HexagonInstrFormatsV65.td" |
