Hexagon V60/HVX DFA scheduler support
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Sat, 21 Nov 2015 20:00:45 +0000 (20:00 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Sat, 21 Nov 2015 20:00:45 +0000 (20:00 +0000)
commitbf390b05bc5c3674520ae480af69d1a935a06f2b
tree3dba74a9f06fbef4fa306b241559245ca60f1454
parent9ea618ed346dfa88a6fe029e3f46503efde7f4f7
Hexagon V60/HVX DFA scheduler support

Extended DFA tablegen to:
  - added "-debug-only dfa-emitter" support to llvm-tblgen

  - defined CVI_PIPE* resources for the V60 vector coprocessor

  - allow specification of multiple required resources
    - supports ANDs of ORs
    - e.g. [SLOT2, SLOT3], [CVI_MPY0, CVI_MPY1] means:
           (SLOT2 OR SLOT3) AND (CVI_MPY0 OR CVI_MPY1)

  - added support for combo resources
    - allows specifying ORs of ANDs
    - e.g. [CVI_XLSHF, CVI_MPY01] means:
           (CVI_XLANE AND CVI_SHIFT) OR (CVI_MPY0 AND CVI_MPY1)

  - increased DFA input size from 32-bit to 64-bit
    - allows for a maximum of 4 AND'ed terms of 16 resources

  - supported expressions now include:

    expression     => term [AND term] [AND term] [AND term]
    term           => resource [OR resource]*
    resource       => one_resource | combo_resource
    combo_resource => (one_resource [AND one_resource]*)

Author: Dan Palermo <dpalermo@codeaurora.org>

kparzysz: Verified AMDGPU codegen to be unchanged on all llc
tests, except those dealing with instruction encodings.

Reapply the previous patch, this time without circular dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253793 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/DFAPacketizer.h
include/llvm/CodeGen/DFAPacketizerDefs.h [new file with mode: 0644]
include/llvm/Target/TargetItinerary.td
lib/CodeGen/DFAPacketizer.cpp
lib/Target/Hexagon/HexagonScheduleV60.td
utils/TableGen/DFAPacketizerEmitter.cpp