/src/build/lib/Target/AMDGPU/R600GenDFAPacketizer.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* Target DFA Packetizer Tables *| |
4 | | |* *| |
5 | | |* Automatically generated file, do not edit! *| |
6 | | |* *| |
7 | | \*===----------------------------------------------------------------------===*/ |
8 | | |
9 | | |
10 | | #include "llvm/CodeGen/DFAPacketizer.h" |
11 | | namespace llvm { |
12 | | } // end namespace llvm |
13 | | |
14 | | namespace { |
15 | | constexpr unsigned R600ResourceIndices[] = { |
16 | | 0, 1, 2, 3, 1, 4, 0, 1, 2, 2, 1, 0, |
17 | | }; |
18 | | |
19 | | constexpr unsigned R600ProcResourceIndexStart[] = { |
20 | | 0, // NoSchedModel |
21 | | 0, // R600_VLIW5_ItinModel |
22 | | 6, // R600_VLIW4_ItinModel |
23 | | 12 |
24 | | }; |
25 | | |
26 | | // Input NFA has 32 states with 176 transitions. |
27 | | // Generated DFA has 23 states with 70 transitions. |
28 | | |
29 | | // A zero-terminated sequence of NFA state transitions. Every DFA |
30 | | // transition implies a set of NFA transitions. These are referred |
31 | | // to by index in R600Transitions[]. |
32 | | const std::array<NfaStatePair, 367> R600TransitionInfo = {{ |
33 | | /* 0 */ {0, 1}, {0ULL, 0ULL}, |
34 | | /* 2 */ {0, 1}, {0, 2}, {0, 4}, {0, 8}, {0ULL, 0ULL}, |
35 | | /* 7 */ {0, 1}, {0, 2}, {0, 4}, {0, 8}, {0, 16}, {0ULL, 0ULL}, |
36 | | /* 13 */ {1, 3}, {1, 5}, {1, 9}, {0ULL, 0ULL}, |
37 | | /* 17 */ {1, 3}, {1, 5}, {1, 9}, {1, 17}, {0ULL, 0ULL}, |
38 | | /* 22 */ {2, 3}, {4, 5}, {8, 9}, {0ULL, 0ULL}, |
39 | | /* 26 */ {1, 3}, {1, 5}, {1, 9}, {2, 3}, {2, 6}, {2, 10}, {4, 5}, {4, 6}, {4, 12}, {8, 9}, {8, 10}, {8, 12}, {0ULL, 0ULL}, |
40 | | /* 39 */ {1, 17}, {2, 18}, {4, 20}, {8, 24}, {0ULL, 0ULL}, |
41 | | /* 44 */ {1, 3}, {1, 5}, {1, 9}, {1, 17}, {2, 3}, {2, 6}, {2, 10}, {2, 18}, {4, 5}, {4, 6}, {4, 12}, {4, 20}, {8, 9}, {8, 10}, {8, 12}, {8, 24}, {0ULL, 0ULL}, |
42 | | /* 61 */ {3, 7}, {3, 11}, {5, 7}, {5, 13}, {9, 11}, {9, 13}, {0ULL, 0ULL}, |
43 | | /* 68 */ {3, 19}, {5, 21}, {9, 25}, {0ULL, 0ULL}, |
44 | | /* 72 */ {3, 7}, {3, 11}, {3, 19}, {5, 7}, {5, 13}, {5, 21}, {9, 11}, {9, 13}, {9, 25}, {0ULL, 0ULL}, |
45 | | /* 82 */ {6, 7}, {10, 11}, {12, 13}, {0ULL, 0ULL}, |
46 | | /* 86 */ {3, 7}, {3, 11}, {5, 7}, {5, 13}, {6, 7}, {6, 14}, {9, 11}, {9, 13}, {10, 11}, {10, 14}, {12, 13}, {12, 14}, {0ULL, 0ULL}, |
47 | | /* 99 */ {3, 19}, {5, 21}, {6, 22}, {9, 25}, {10, 26}, {12, 28}, {0ULL, 0ULL}, |
48 | | /* 106 */ {3, 7}, {3, 11}, {3, 19}, {5, 7}, {5, 13}, {5, 21}, {6, 7}, {6, 14}, {6, 22}, {9, 11}, {9, 13}, {9, 25}, {10, 11}, {10, 14}, {10, 26}, {12, 13}, {12, 14}, {12, 28}, {0ULL, 0ULL}, |
49 | | /* 125 */ {7, 15}, {11, 15}, {13, 15}, {0ULL, 0ULL}, |
50 | | /* 129 */ {7, 23}, {11, 27}, {13, 29}, {0ULL, 0ULL}, |
51 | | /* 133 */ {7, 15}, {7, 23}, {11, 15}, {11, 27}, {13, 15}, {13, 29}, {0ULL, 0ULL}, |
52 | | /* 140 */ {7, 15}, {11, 15}, {13, 15}, {14, 15}, {0ULL, 0ULL}, |
53 | | /* 145 */ {7, 23}, {11, 27}, {13, 29}, {14, 30}, {0ULL, 0ULL}, |
54 | | /* 150 */ {7, 15}, {7, 23}, {11, 15}, {11, 27}, {13, 15}, {13, 29}, {14, 15}, {14, 30}, {0ULL, 0ULL}, |
55 | | /* 159 */ {15, 31}, {0ULL, 0ULL}, |
56 | | /* 161 */ {2, 3}, {4, 5}, {8, 9}, {16, 17}, {0ULL, 0ULL}, |
57 | | /* 166 */ {1, 3}, {1, 5}, {1, 9}, {2, 3}, {2, 6}, {2, 10}, {4, 5}, {4, 6}, {4, 12}, {8, 9}, {8, 10}, {8, 12}, {16, 17}, {16, 18}, {16, 20}, {16, 24}, {0ULL, 0ULL}, |
58 | | /* 183 */ {1, 3}, {1, 5}, {1, 9}, {1, 17}, {2, 3}, {2, 6}, {2, 10}, {2, 18}, {4, 5}, {4, 6}, {4, 12}, {4, 20}, {8, 9}, {8, 10}, {8, 12}, {8, 24}, {16, 17}, {16, 18}, {16, 20}, {16, 24}, {0ULL, 0ULL}, |
59 | | /* 204 */ {3, 7}, {3, 11}, {5, 7}, {5, 13}, {9, 11}, {9, 13}, {17, 19}, {17, 21}, {17, 25}, {0ULL, 0ULL}, |
60 | | /* 214 */ {3, 7}, {3, 11}, {3, 19}, {5, 7}, {5, 13}, {5, 21}, {9, 11}, {9, 13}, {9, 25}, {17, 19}, {17, 21}, {17, 25}, {0ULL, 0ULL}, |
61 | | /* 227 */ {6, 7}, {10, 11}, {12, 13}, {18, 19}, {20, 21}, {24, 25}, {0ULL, 0ULL}, |
62 | | /* 234 */ {3, 7}, {3, 11}, {5, 7}, {5, 13}, {6, 7}, {6, 14}, {9, 11}, {9, 13}, {10, 11}, {10, 14}, {12, 13}, {12, 14}, {17, 19}, {17, 21}, {17, 25}, {18, 19}, {18, 22}, {18, 26}, {20, 21}, {20, 22}, {20, 28}, {24, 25}, {24, 26}, {24, 28}, {0ULL, 0ULL}, |
63 | | /* 259 */ {3, 7}, {3, 11}, {3, 19}, {5, 7}, {5, 13}, {5, 21}, {6, 7}, {6, 14}, {6, 22}, {9, 11}, {9, 13}, {9, 25}, {10, 11}, {10, 14}, {10, 26}, {12, 13}, {12, 14}, {12, 28}, {17, 19}, {17, 21}, {17, 25}, {18, 19}, {18, 22}, {18, 26}, {20, 21}, {20, 22}, {20, 28}, {24, 25}, {24, 26}, {24, 28}, {0ULL, 0ULL}, |
64 | | /* 290 */ {7, 15}, {11, 15}, {13, 15}, {19, 23}, {19, 27}, {21, 23}, {21, 29}, {25, 27}, {25, 29}, {0ULL, 0ULL}, |
65 | | /* 300 */ {7, 15}, {7, 23}, {11, 15}, {11, 27}, {13, 15}, {13, 29}, {19, 23}, {19, 27}, {21, 23}, {21, 29}, {25, 27}, {25, 29}, {0ULL, 0ULL}, |
66 | | /* 313 */ {14, 15}, {22, 23}, {26, 27}, {28, 29}, {0ULL, 0ULL}, |
67 | | /* 318 */ {7, 15}, {11, 15}, {13, 15}, {14, 15}, {19, 23}, {19, 27}, {21, 23}, {21, 29}, {22, 23}, {22, 30}, {25, 27}, {25, 29}, {26, 27}, {26, 30}, {28, 29}, {28, 30}, {0ULL, 0ULL}, |
68 | | /* 335 */ {7, 15}, {7, 23}, {11, 15}, {11, 27}, {13, 15}, {13, 29}, {14, 15}, {14, 30}, {19, 23}, {19, 27}, {21, 23}, {21, 29}, {22, 23}, {22, 30}, {25, 27}, {25, 29}, {26, 27}, {26, 30}, {28, 29}, {28, 30}, {0ULL, 0ULL}, |
69 | | /* 356 */ {15, 31}, {23, 31}, {27, 31}, {29, 31}, {0ULL, 0ULL}, |
70 | | /* 361 */ {15, 31}, {23, 31}, {27, 31}, {29, 31}, {30, 31}, {0ULL, 0ULL}, |
71 | | }}; |
72 | | |
73 | | // A transition in the generated R600 DFA. |
74 | | struct R600Transition { |
75 | | unsigned FromDfaState; // The transitioned-from DFA state. |
76 | | uint64_t Action; // The input symbol that causes this transition. |
77 | | unsigned ToDfaState; // The transitioned-to DFA state. |
78 | | unsigned InfoIdx; // Start index into R600TransitionInfo. |
79 | | }; |
80 | | |
81 | | // A table of DFA transitions, ordered by {FromDfaState, Action}. |
82 | | // The initial state is 1, not zero. |
83 | | const std::array<R600Transition, 70> R600Transitions = {{ |
84 | | {1, 1, 2, 11}, |
85 | | {1, 2, 3, 2}, |
86 | | {1, 3, 4, 7}, |
87 | | {1, 4, 5, 0}, |
88 | | {2, 2, 6, 178}, |
89 | | {2, 3, 6, 178}, |
90 | | {2, 4, 7, 164}, |
91 | | {3, 1, 6, 39}, |
92 | | {3, 2, 8, 26}, |
93 | | {3, 3, 9, 44}, |
94 | | {3, 4, 10, 22}, |
95 | | {4, 1, 6, 39}, |
96 | | {4, 2, 9, 166}, |
97 | | {4, 3, 9, 183}, |
98 | | {4, 4, 11, 161}, |
99 | | {5, 1, 7, 20}, |
100 | | {5, 2, 10, 13}, |
101 | | {5, 3, 11, 17}, |
102 | | {6, 2, 12, 246}, |
103 | | {6, 3, 12, 246}, |
104 | | {6, 4, 13, 230}, |
105 | | {7, 2, 13, 210}, |
106 | | {7, 3, 13, 210}, |
107 | | {8, 1, 12, 99}, |
108 | | {8, 2, 14, 86}, |
109 | | {8, 3, 15, 106}, |
110 | | {8, 4, 16, 82}, |
111 | | {9, 1, 12, 99}, |
112 | | {9, 2, 15, 234}, |
113 | | {9, 3, 15, 259}, |
114 | | {9, 4, 17, 227}, |
115 | | {10, 1, 13, 68}, |
116 | | {10, 2, 16, 61}, |
117 | | {10, 3, 17, 72}, |
118 | | {11, 1, 13, 68}, |
119 | | {11, 2, 17, 204}, |
120 | | {11, 3, 17, 214}, |
121 | | {12, 2, 18, 322}, |
122 | | {12, 3, 18, 322}, |
123 | | {12, 4, 19, 314}, |
124 | | {13, 2, 19, 293}, |
125 | | {13, 3, 19, 293}, |
126 | | {14, 1, 18, 145}, |
127 | | {14, 2, 20, 140}, |
128 | | {14, 3, 21, 150}, |
129 | | {14, 4, 20, 143}, |
130 | | {15, 1, 18, 145}, |
131 | | {15, 2, 21, 318}, |
132 | | {15, 3, 21, 335}, |
133 | | {15, 4, 22, 313}, |
134 | | {16, 1, 19, 129}, |
135 | | {16, 2, 20, 125}, |
136 | | {16, 3, 22, 133}, |
137 | | {17, 1, 19, 129}, |
138 | | {17, 2, 22, 290}, |
139 | | {17, 3, 22, 300}, |
140 | | {18, 2, 23, 362}, |
141 | | {18, 3, 23, 362}, |
142 | | {18, 4, 23, 365}, |
143 | | {19, 2, 23, 357}, |
144 | | {19, 3, 23, 357}, |
145 | | {20, 1, 23, 159}, |
146 | | {20, 3, 23, 159}, |
147 | | {21, 1, 23, 159}, |
148 | | {21, 2, 23, 362}, |
149 | | {21, 3, 23, 361}, |
150 | | {21, 4, 23, 365}, |
151 | | {22, 1, 23, 159}, |
152 | | {22, 2, 23, 357}, |
153 | | {22, 3, 23, 356}, |
154 | | |
155 | | }}; |
156 | | |
157 | | } // end anonymous namespace |
158 | | |
159 | | namespace llvm { |
160 | 0 | DFAPacketizer *R600GenSubtargetInfo::createDFAPacketizer(const InstrItineraryData *IID) const { |
161 | 0 | static Automaton<uint64_t> A(ArrayRef<R600Transition>(R600Transitions), R600TransitionInfo); |
162 | 0 | unsigned ProcResIdxStart = R600ProcResourceIndexStart[IID->SchedModel.ProcID]; |
163 | 0 | unsigned ProcResIdxNum = R600ProcResourceIndexStart[IID->SchedModel.ProcID + 1] - ProcResIdxStart; |
164 | 0 | return new DFAPacketizer(IID, A, {&R600ResourceIndices[ProcResIdxStart], ProcResIdxNum}); |
165 | |
|
166 | 0 | } |
167 | | |
168 | | } // end namespace llvm |