summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonInstrFormats.td')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrFormats.td34
1 files changed, 20 insertions, 14 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrFormats.td b/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
index 4da2edc24f3..1bb3bc1ea31 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
+++ b/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
@@ -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"
OpenPOWER on IntegriCloud