Hexagon V60/HVX DFA scheduler support
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Sat, 21 Nov 2015 17:23:52 +0000 (17:23 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Sat, 21 Nov 2015 17:23:52 +0000 (17:23 +0000)
commitc7fdae24002e6bc92c0acdd16a0298345d87866f
tree76e8bbb15880b272787a2b1e757dd01df0c1056c
parent0b4392ac91b815bbb0130017d6c0cf01f2d21081
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253790 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/DFAPacketizer.h
include/llvm/Target/TargetItinerary.td
lib/CodeGen/DFAPacketizer.cpp
lib/Target/Hexagon/HexagonScheduleV60.td
utils/TableGen/DFAPacketizerEmitter.cpp