AArch64SchedA57WriteRes.td 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. //=- AArch64SchedA57WriteRes.td - ARM Cortex-A57 Write Res ---*- tablegen -*-=//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // Contains all of the Cortex-A57 specific SchedWriteRes types. The approach
  10. // below is to define a generic SchedWriteRes for every combination of
  11. // latency and microOps. The naming conventions is to use a prefix, one field
  12. // for latency, and one or more microOp count/type designators.
  13. // Prefix: A57Write
  14. // Latency: #cyc
  15. // MicroOp Count/Types: #(B|I|M|L|S|X|W|V)
  16. // Postfix (optional): (XYZ)_Forward
  17. //
  18. // The postfix is added to differentiate SchedWriteRes that are used in
  19. // subsequent SchedReadAdvances.
  20. //
  21. // e.g. A57Write_6cyc_1I_6S_4V means the total latency is 6 and there are
  22. // 11 micro-ops to be issued down one I pipe, six S pipes and four V pipes.
  23. //
  24. //===----------------------------------------------------------------------===//
  25. //===----------------------------------------------------------------------===//
  26. // Define Generic 1 micro-op types
  27. def A57Write_5cyc_1L : SchedWriteRes<[A57UnitL]> { let Latency = 5; }
  28. def A57Write_5cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 5; }
  29. def A57Write_5cyc_1V : SchedWriteRes<[A57UnitV]> { let Latency = 5; }
  30. def A57Write_5cyc_1V_FP_Forward : SchedWriteRes<[A57UnitV]> { let Latency = 5; }
  31. def A57Write_5cyc_1W : SchedWriteRes<[A57UnitW]> { let Latency = 5; }
  32. def A57Write_5cyc_1W_Mul_Forward : SchedWriteRes<[A57UnitW]> { let Latency = 5; }
  33. def A57Write_10cyc_1V : SchedWriteRes<[A57UnitV]> { let Latency = 10; }
  34. def A57Write_17cyc_1W : SchedWriteRes<[A57UnitW]> { let Latency = 17;
  35. let ResourceCycles = [17]; }
  36. def A57Write_19cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 19;
  37. let ResourceCycles = [19]; }
  38. def A57Write_1cyc_1B : SchedWriteRes<[A57UnitB]> { let Latency = 1; }
  39. def A57Write_1cyc_1I : SchedWriteRes<[A57UnitI]> { let Latency = 1; }
  40. def A57Write_1cyc_1S : SchedWriteRes<[A57UnitS]> { let Latency = 1; }
  41. def A57Write_2cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 2; }
  42. def A57Write_32cyc_1W : SchedWriteRes<[A57UnitW]> { let Latency = 32;
  43. let ResourceCycles = [32]; }
  44. def A57Write_35cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 35;
  45. let ResourceCycles = [35]; }
  46. def A57Write_3cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 3; }
  47. def A57Write_3cyc_1V : SchedWriteRes<[A57UnitV]> { let Latency = 3; }
  48. def A57Write_3cyc_1W : SchedWriteRes<[A57UnitW]> { let Latency = 3; }
  49. def A57Write_3cyc_1X : SchedWriteRes<[A57UnitX]> { let Latency = 3; }
  50. def A57Write_4cyc_1L : SchedWriteRes<[A57UnitL]> { let Latency = 4; }
  51. def A57Write_4cyc_1X : SchedWriteRes<[A57UnitX]> { let Latency = 4; }
  52. def A57Write_4cyc_1X_NonMul_Forward : SchedWriteRes<[A57UnitX]> { let Latency = 4; }
  53. def A57Write_9cyc_1V : SchedWriteRes<[A57UnitV]> { let Latency = 9; }
  54. def A57Write_6cyc_1M : SchedWriteRes<[A57UnitM]> { let Latency = 6; }
  55. def A57Write_6cyc_1V : SchedWriteRes<[A57UnitV]> { let Latency = 6; }
  56. //===----------------------------------------------------------------------===//
  57. // Define Generic 2 micro-op types
  58. def A57Write_64cyc_2W : SchedWriteRes<[A57UnitW, A57UnitW]> {
  59. let Latency = 64;
  60. let NumMicroOps = 2;
  61. let ResourceCycles = [32, 32];
  62. }
  63. def A57Write_6cyc_1I_1L : SchedWriteRes<[A57UnitI,
  64. A57UnitL]> {
  65. let Latency = 6;
  66. let NumMicroOps = 2;
  67. }
  68. def A57Write_7cyc_1V_1X : SchedWriteRes<[A57UnitV,
  69. A57UnitX]> {
  70. let Latency = 7;
  71. let NumMicroOps = 2;
  72. }
  73. def A57Write_8cyc_1L_1V : SchedWriteRes<[A57UnitL,
  74. A57UnitV]> {
  75. let Latency = 8;
  76. let NumMicroOps = 2;
  77. }
  78. def A57Write_9cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  79. let Latency = 9;
  80. let NumMicroOps = 2;
  81. }
  82. def A57Write_8cyc_2X : SchedWriteRes<[A57UnitX, A57UnitX]> {
  83. let Latency = 8;
  84. let NumMicroOps = 2;
  85. }
  86. def A57Write_6cyc_2L : SchedWriteRes<[A57UnitL, A57UnitL]> {
  87. let Latency = 6;
  88. let NumMicroOps = 2;
  89. }
  90. def A57Write_6cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  91. let Latency = 6;
  92. let NumMicroOps = 2;
  93. }
  94. def A57Write_6cyc_2W : SchedWriteRes<[A57UnitW, A57UnitW]> {
  95. let Latency = 6;
  96. let NumMicroOps = 2;
  97. }
  98. def A57Write_6cyc_2W_Mul_Forward : SchedWriteRes<[A57UnitW, A57UnitW]> {
  99. let Latency = 6;
  100. let NumMicroOps = 2;
  101. }
  102. def A57Write_5cyc_1I_1L : SchedWriteRes<[A57UnitI,
  103. A57UnitL]> {
  104. let Latency = 5;
  105. let NumMicroOps = 2;
  106. }
  107. def A57Write_5cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  108. let Latency = 5;
  109. let NumMicroOps = 2;
  110. }
  111. def A57Write_5cyc_2V_FP_Forward : SchedWriteRes<[A57UnitV, A57UnitV]> {
  112. let Latency = 5;
  113. let NumMicroOps = 2;
  114. }
  115. def A57Write_5cyc_2X : SchedWriteRes<[A57UnitX, A57UnitX]> {
  116. let Latency = 5;
  117. let NumMicroOps = 2;
  118. }
  119. def A57Write_5cyc_2X_NonMul_Forward : SchedWriteRes<[A57UnitX, A57UnitX]> {
  120. let Latency = 5;
  121. let NumMicroOps = 2;
  122. }
  123. def A57Write_10cyc_1L_1V : SchedWriteRes<[A57UnitL,
  124. A57UnitV]> {
  125. let Latency = 10;
  126. let NumMicroOps = 2;
  127. }
  128. def A57Write_10cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  129. let Latency = 10;
  130. let NumMicroOps = 2;
  131. }
  132. def A57Write_1cyc_1B_1I : SchedWriteRes<[A57UnitB,
  133. A57UnitI]> {
  134. let Latency = 1;
  135. let NumMicroOps = 2;
  136. }
  137. def A57Write_1cyc_1I_1S : SchedWriteRes<[A57UnitI,
  138. A57UnitS]> {
  139. let Latency = 1;
  140. let NumMicroOps = 2;
  141. }
  142. def A57Write_2cyc_1B_1I : SchedWriteRes<[A57UnitB,
  143. A57UnitI]> {
  144. let Latency = 2;
  145. let NumMicroOps = 2;
  146. }
  147. def A57Write_2cyc_2S : SchedWriteRes<[A57UnitS, A57UnitS]> {
  148. let Latency = 2;
  149. let NumMicroOps = 2;
  150. }
  151. def A57Write_2cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  152. let Latency = 2;
  153. let NumMicroOps = 2;
  154. }
  155. def A57Write_34cyc_2W : SchedWriteRes<[A57UnitW, A57UnitW]> {
  156. let Latency = 34;
  157. let NumMicroOps = 2;
  158. let ResourceCycles = [17, 17];
  159. }
  160. def A57Write_3cyc_1I_1M : SchedWriteRes<[A57UnitI,
  161. A57UnitM]> {
  162. let Latency = 3;
  163. let NumMicroOps = 2;
  164. }
  165. def A57Write_3cyc_1I_1S : SchedWriteRes<[A57UnitI,
  166. A57UnitS]> {
  167. let Latency = 3;
  168. let NumMicroOps = 2;
  169. }
  170. def A57Write_3cyc_1S_1V : SchedWriteRes<[A57UnitS,
  171. A57UnitV]> {
  172. let Latency = 3;
  173. let NumMicroOps = 2;
  174. }
  175. def A57Write_3cyc_2V : SchedWriteRes<[A57UnitV, A57UnitV]> {
  176. let Latency = 3;
  177. let NumMicroOps = 2;
  178. }
  179. def A57Write_4cyc_1I_1L : SchedWriteRes<[A57UnitI,
  180. A57UnitL]> {
  181. let Latency = 4;
  182. let NumMicroOps = 2;
  183. }
  184. def A57Write_4cyc_2X : SchedWriteRes<[A57UnitX, A57UnitX]> {
  185. let Latency = 4;
  186. let NumMicroOps = 2;
  187. }
  188. //===----------------------------------------------------------------------===//
  189. // Define Generic 3 micro-op types
  190. def A57Write_10cyc_3V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV]> {
  191. let Latency = 10;
  192. let NumMicroOps = 3;
  193. }
  194. def A57Write_2cyc_1I_2S : SchedWriteRes<[A57UnitI,
  195. A57UnitS, A57UnitS]> {
  196. let Latency = 2;
  197. let NumMicroOps = 3;
  198. }
  199. def A57Write_3cyc_1I_1S_1V : SchedWriteRes<[A57UnitI,
  200. A57UnitS,
  201. A57UnitV]> {
  202. let Latency = 3;
  203. let NumMicroOps = 3;
  204. }
  205. def A57Write_3cyc_1M_2S : SchedWriteRes<[A57UnitM,
  206. A57UnitS, A57UnitS]> {
  207. let Latency = 3;
  208. let NumMicroOps = 3;
  209. }
  210. def A57Write_3cyc_3S : SchedWriteRes<[A57UnitS, A57UnitS, A57UnitS]> {
  211. let Latency = 3;
  212. let NumMicroOps = 3;
  213. }
  214. def A57Write_3cyc_2S_1V : SchedWriteRes<[A57UnitS, A57UnitS,
  215. A57UnitV]> {
  216. let Latency = 3;
  217. let NumMicroOps = 3;
  218. }
  219. def A57Write_5cyc_1I_2L : SchedWriteRes<[A57UnitI,
  220. A57UnitL, A57UnitL]> {
  221. let Latency = 5;
  222. let NumMicroOps = 3;
  223. }
  224. def A57Write_6cyc_1I_2L : SchedWriteRes<[A57UnitI,
  225. A57UnitL, A57UnitL]> {
  226. let Latency = 6;
  227. let NumMicroOps = 3;
  228. }
  229. def A57Write_6cyc_3V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV]> {
  230. let Latency = 6;
  231. let NumMicroOps = 3;
  232. }
  233. def A57Write_7cyc_3L : SchedWriteRes<[A57UnitL, A57UnitL, A57UnitL]> {
  234. let Latency = 7;
  235. let NumMicroOps = 3;
  236. }
  237. def A57Write_8cyc_1I_1L_1V : SchedWriteRes<[A57UnitI,
  238. A57UnitL,
  239. A57UnitV]> {
  240. let Latency = 8;
  241. let NumMicroOps = 3;
  242. }
  243. def A57Write_8cyc_1L_2V : SchedWriteRes<[A57UnitL,
  244. A57UnitV, A57UnitV]> {
  245. let Latency = 8;
  246. let NumMicroOps = 3;
  247. }
  248. def A57Write_8cyc_3V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV]> {
  249. let Latency = 8;
  250. let NumMicroOps = 3;
  251. }
  252. def A57Write_9cyc_3V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV]> {
  253. let Latency = 9;
  254. let NumMicroOps = 3;
  255. }
  256. //===----------------------------------------------------------------------===//
  257. // Define Generic 4 micro-op types
  258. def A57Write_2cyc_2I_2S : SchedWriteRes<[A57UnitI, A57UnitI,
  259. A57UnitS, A57UnitS]> {
  260. let Latency = 2;
  261. let NumMicroOps = 4;
  262. }
  263. def A57Write_3cyc_2I_2S : SchedWriteRes<[A57UnitI, A57UnitI,
  264. A57UnitS, A57UnitS]> {
  265. let Latency = 3;
  266. let NumMicroOps = 4;
  267. }
  268. def A57Write_3cyc_1I_3S : SchedWriteRes<[A57UnitI,
  269. A57UnitS, A57UnitS, A57UnitS]> {
  270. let Latency = 3;
  271. let NumMicroOps = 4;
  272. }
  273. def A57Write_3cyc_1I_2S_1V : SchedWriteRes<[A57UnitI,
  274. A57UnitS, A57UnitS,
  275. A57UnitV]> {
  276. let Latency = 3;
  277. let NumMicroOps = 4;
  278. }
  279. def A57Write_4cyc_4S : SchedWriteRes<[A57UnitS, A57UnitS,
  280. A57UnitS, A57UnitS]> {
  281. let Latency = 4;
  282. let NumMicroOps = 4;
  283. }
  284. def A57Write_7cyc_1I_3L : SchedWriteRes<[A57UnitI,
  285. A57UnitL, A57UnitL, A57UnitL]> {
  286. let Latency = 7;
  287. let NumMicroOps = 4;
  288. }
  289. def A57Write_5cyc_2I_2L : SchedWriteRes<[A57UnitI, A57UnitI,
  290. A57UnitL, A57UnitL]> {
  291. let Latency = 5;
  292. let NumMicroOps = 4;
  293. }
  294. def A57Write_8cyc_1I_1L_2V : SchedWriteRes<[A57UnitI,
  295. A57UnitL,
  296. A57UnitV, A57UnitV]> {
  297. let Latency = 8;
  298. let NumMicroOps = 4;
  299. }
  300. def A57Write_8cyc_4L : SchedWriteRes<[A57UnitL, A57UnitL,
  301. A57UnitL, A57UnitL]> {
  302. let Latency = 8;
  303. let NumMicroOps = 4;
  304. }
  305. def A57Write_9cyc_2L_2V : SchedWriteRes<[A57UnitL, A57UnitL,
  306. A57UnitV, A57UnitV]> {
  307. let Latency = 9;
  308. let NumMicroOps = 4;
  309. }
  310. def A57Write_9cyc_1L_3V : SchedWriteRes<[A57UnitL,
  311. A57UnitV, A57UnitV, A57UnitV]> {
  312. let Latency = 9;
  313. let NumMicroOps = 4;
  314. }
  315. def A57Write_12cyc_4V : SchedWriteRes<[A57UnitV, A57UnitV,
  316. A57UnitV, A57UnitV]> {
  317. let Latency = 12;
  318. let NumMicroOps = 4;
  319. }
  320. //===----------------------------------------------------------------------===//
  321. // Define Generic 5 micro-op types
  322. def A57Write_3cyc_3S_2V : SchedWriteRes<[A57UnitS, A57UnitS, A57UnitS,
  323. A57UnitV, A57UnitV]> {
  324. let Latency = 3;
  325. let NumMicroOps = 5;
  326. }
  327. def A57Write_8cyc_1I_4L : SchedWriteRes<[A57UnitI,
  328. A57UnitL, A57UnitL,
  329. A57UnitL, A57UnitL]> {
  330. let Latency = 8;
  331. let NumMicroOps = 5;
  332. }
  333. def A57Write_4cyc_1I_4S : SchedWriteRes<[A57UnitI,
  334. A57UnitS, A57UnitS,
  335. A57UnitS, A57UnitS]> {
  336. let Latency = 4;
  337. let NumMicroOps = 5;
  338. }
  339. def A57Write_9cyc_1I_2L_2V : SchedWriteRes<[A57UnitI,
  340. A57UnitL, A57UnitL,
  341. A57UnitV, A57UnitV]> {
  342. let Latency = 9;
  343. let NumMicroOps = 5;
  344. }
  345. def A57Write_9cyc_1I_1L_3V : SchedWriteRes<[A57UnitI,
  346. A57UnitL,
  347. A57UnitV, A57UnitV, A57UnitV]> {
  348. let Latency = 9;
  349. let NumMicroOps = 5;
  350. }
  351. def A57Write_9cyc_2L_3V : SchedWriteRes<[A57UnitL, A57UnitL,
  352. A57UnitV, A57UnitV, A57UnitV]> {
  353. let Latency = 9;
  354. let NumMicroOps = 5;
  355. }
  356. def A57Write_9cyc_5V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV,
  357. A57UnitV, A57UnitV]> {
  358. let Latency = 9;
  359. let NumMicroOps = 5;
  360. }
  361. //===----------------------------------------------------------------------===//
  362. // Define Generic 6 micro-op types
  363. def A57Write_3cyc_1I_3S_2V : SchedWriteRes<[A57UnitI,
  364. A57UnitS, A57UnitS, A57UnitS,
  365. A57UnitV, A57UnitV]> {
  366. let Latency = 3;
  367. let NumMicroOps = 6;
  368. }
  369. def A57Write_4cyc_2I_4S : SchedWriteRes<[A57UnitI, A57UnitI,
  370. A57UnitS, A57UnitS,
  371. A57UnitS, A57UnitS]> {
  372. let Latency = 4;
  373. let NumMicroOps = 6;
  374. }
  375. def A57Write_4cyc_4S_2V : SchedWriteRes<[A57UnitS, A57UnitS,
  376. A57UnitS, A57UnitS,
  377. A57UnitV, A57UnitV]> {
  378. let Latency = 4;
  379. let NumMicroOps = 6;
  380. }
  381. def A57Write_6cyc_6S : SchedWriteRes<[A57UnitS, A57UnitS, A57UnitS,
  382. A57UnitS, A57UnitS, A57UnitS]> {
  383. let Latency = 6;
  384. let NumMicroOps = 6;
  385. }
  386. def A57Write_9cyc_1I_2L_3V : SchedWriteRes<[A57UnitI,
  387. A57UnitL, A57UnitL,
  388. A57UnitV, A57UnitV, A57UnitV]> {
  389. let Latency = 9;
  390. let NumMicroOps = 6;
  391. }
  392. def A57Write_9cyc_1I_1L_4V : SchedWriteRes<[A57UnitI,
  393. A57UnitL,
  394. A57UnitV, A57UnitV,
  395. A57UnitV, A57UnitV]> {
  396. let Latency = 9;
  397. let NumMicroOps = 6;
  398. }
  399. def A57Write_9cyc_2L_4V : SchedWriteRes<[A57UnitL, A57UnitL,
  400. A57UnitV, A57UnitV,
  401. A57UnitV, A57UnitV]> {
  402. let Latency = 9;
  403. let NumMicroOps = 6;
  404. }
  405. //===----------------------------------------------------------------------===//
  406. // Define Generic 7 micro-op types
  407. def A57Write_10cyc_3L_4V : SchedWriteRes<[A57UnitL, A57UnitL, A57UnitL,
  408. A57UnitV, A57UnitV,
  409. A57UnitV, A57UnitV]> {
  410. let Latency = 10;
  411. let NumMicroOps = 7;
  412. }
  413. def A57Write_4cyc_1I_4S_2V : SchedWriteRes<[A57UnitI,
  414. A57UnitS, A57UnitS,
  415. A57UnitS, A57UnitS,
  416. A57UnitV, A57UnitV]> {
  417. let Latency = 4;
  418. let NumMicroOps = 7;
  419. }
  420. def A57Write_6cyc_1I_6S : SchedWriteRes<[A57UnitI,
  421. A57UnitS, A57UnitS, A57UnitS,
  422. A57UnitS, A57UnitS, A57UnitS]> {
  423. let Latency = 6;
  424. let NumMicroOps = 7;
  425. }
  426. def A57Write_9cyc_1I_2L_4V : SchedWriteRes<[A57UnitI,
  427. A57UnitL, A57UnitL,
  428. A57UnitV, A57UnitV,
  429. A57UnitV, A57UnitV]> {
  430. let Latency = 9;
  431. let NumMicroOps = 7;
  432. }
  433. def A57Write_12cyc_7V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV,
  434. A57UnitV, A57UnitV,
  435. A57UnitV, A57UnitV]> {
  436. let Latency = 12;
  437. let NumMicroOps = 7;
  438. }
  439. //===----------------------------------------------------------------------===//
  440. // Define Generic 8 micro-op types
  441. def A57Write_10cyc_1I_3L_4V : SchedWriteRes<[A57UnitI,
  442. A57UnitL, A57UnitL, A57UnitL,
  443. A57UnitV, A57UnitV,
  444. A57UnitV, A57UnitV]> {
  445. let Latency = 10;
  446. let NumMicroOps = 8;
  447. }
  448. def A57Write_11cyc_4L_4V : SchedWriteRes<[A57UnitL, A57UnitL,
  449. A57UnitL, A57UnitL,
  450. A57UnitV, A57UnitV,
  451. A57UnitV, A57UnitV]> {
  452. let Latency = 11;
  453. let NumMicroOps = 8;
  454. }
  455. def A57Write_8cyc_8S : SchedWriteRes<[A57UnitS, A57UnitS,
  456. A57UnitS, A57UnitS,
  457. A57UnitS, A57UnitS,
  458. A57UnitS, A57UnitS]> {
  459. let Latency = 8;
  460. let NumMicroOps = 8;
  461. }
  462. //===----------------------------------------------------------------------===//
  463. // Define Generic 9 micro-op types
  464. def A57Write_8cyc_1I_8S : SchedWriteRes<[A57UnitI,
  465. A57UnitS, A57UnitS,
  466. A57UnitS, A57UnitS,
  467. A57UnitS, A57UnitS,
  468. A57UnitS, A57UnitS]> {
  469. let Latency = 8;
  470. let NumMicroOps = 9;
  471. }
  472. def A57Write_11cyc_1I_4L_4V : SchedWriteRes<[A57UnitI,
  473. A57UnitL, A57UnitL,
  474. A57UnitL, A57UnitL,
  475. A57UnitV, A57UnitV,
  476. A57UnitV, A57UnitV]> {
  477. let Latency = 11;
  478. let NumMicroOps = 9;
  479. }
  480. def A57Write_15cyc_9V : SchedWriteRes<[A57UnitV, A57UnitV, A57UnitV,
  481. A57UnitV, A57UnitV, A57UnitV,
  482. A57UnitV, A57UnitV, A57UnitV]> {
  483. let Latency = 15;
  484. let NumMicroOps = 9;
  485. }
  486. //===----------------------------------------------------------------------===//
  487. // Define Generic 10 micro-op types
  488. def A57Write_6cyc_6S_4V : SchedWriteRes<[A57UnitS, A57UnitS, A57UnitS,
  489. A57UnitS, A57UnitS, A57UnitS,
  490. A57UnitV, A57UnitV,
  491. A57UnitV, A57UnitV]> {
  492. let Latency = 6;
  493. let NumMicroOps = 10;
  494. }
  495. //===----------------------------------------------------------------------===//
  496. // Define Generic 11 micro-op types
  497. def A57Write_6cyc_1I_6S_4V : SchedWriteRes<[A57UnitI,
  498. A57UnitS, A57UnitS, A57UnitS,
  499. A57UnitS, A57UnitS, A57UnitS,
  500. A57UnitV, A57UnitV,
  501. A57UnitV, A57UnitV]> {
  502. let Latency = 6;
  503. let NumMicroOps = 11;
  504. }
  505. //===----------------------------------------------------------------------===//
  506. // Define Generic 12 micro-op types
  507. def A57Write_8cyc_8S_4V : SchedWriteRes<[A57UnitS, A57UnitS, A57UnitS, A57UnitS,
  508. A57UnitS, A57UnitS, A57UnitS, A57UnitS,
  509. A57UnitV, A57UnitV,
  510. A57UnitV, A57UnitV]> {
  511. let Latency = 8;
  512. let NumMicroOps = 12;
  513. }
  514. //===----------------------------------------------------------------------===//
  515. // Define Generic 13 micro-op types
  516. def A57Write_8cyc_1I_8S_4V : SchedWriteRes<[A57UnitI,
  517. A57UnitS, A57UnitS, A57UnitS,
  518. A57UnitS, A57UnitS, A57UnitS,
  519. A57UnitS, A57UnitS,
  520. A57UnitV, A57UnitV,
  521. A57UnitV, A57UnitV]> {
  522. let Latency = 8;
  523. let NumMicroOps = 13;
  524. }