0008-add-dubhe-.md-file.patch 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. From 66b69324b10c9aeeab4ed19a4d247bec2f732afb Mon Sep 17 00:00:00 2001
  2. From: "max.ma" <max.ma@starfivetech.com>
  3. Date: Tue, 13 Sep 2022 01:22:47 -0700
  4. Subject: [PATCH 08/11] add dubhe .md file
  5. ---
  6. gcc/config/riscv/starfive-dubhe.md | 158 +++++++++++++++++++++++++++++
  7. 1 file changed, 158 insertions(+)
  8. create mode 100644 gcc/config/riscv/starfive-dubhe.md
  9. diff --git a/gcc/config/riscv/starfive-dubhe.md b/gcc/config/riscv/starfive-dubhe.md
  10. new file mode 100644
  11. index 00000000000..6cb288d2fd6
  12. --- /dev/null
  13. +++ b/gcc/config/riscv/starfive-dubhe.md
  14. @@ -0,0 +1,158 @@
  15. +(define_automaton "starfive_dubhe")
  16. +
  17. +(define_cpu_unit "dubhe_alu0" "starfive_dubhe")
  18. +(define_cpu_unit "dubhe_alu1" "starfive_dubhe")
  19. +
  20. +(define_cpu_unit "dubhe_bru" "starfive_dubhe")
  21. +
  22. +(define_cpu_unit "dubhe_div" "starfive_dubhe")
  23. +
  24. +(define_cpu_unit "dubhe_lsu0" "starfive_dubhe")
  25. +(define_cpu_unit "dubhe_lsu1" "starfive_dubhe")
  26. +
  27. +(define_cpu_unit "dubhe_fpu0" "starfive_dubhe")
  28. +(define_cpu_unit "dubhe_fpu1" "starfive_dubhe")
  29. +(define_cpu_unit "dubhe_fpu0_resource" "starfive_dubhe")
  30. +
  31. +(define_insn_reservation "dubhe_load" 3
  32. + (and (eq_attr "tune" "starfive_dubhe")
  33. + (eq_attr "type" "load"))
  34. + "dubhe_lsu0 | dubhe_lsu1")
  35. +
  36. +(define_insn_reservation "dubhe_fpload" 3
  37. + (and (eq_attr "tune" "starfive_dubhe")
  38. + (eq_attr "type" "fpload"))
  39. + "dubhe_lsu0 | dubhe_lsu1")
  40. +
  41. +(define_insn_reservation "dubhe_store" 1
  42. + (and (eq_attr "tune" "starfive_dubhe")
  43. + (eq_attr "type" "store"))
  44. + "dubhe_lsu0 | dubhe_lsu1")
  45. +
  46. +(define_insn_reservation "dubhe_fpstore" 1
  47. + (and (eq_attr "tune" "starfive_dubhe")
  48. + (eq_attr "type" "fpstore"))
  49. + "dubhe_lsu0 | dubhe_lsu1")
  50. +
  51. +(define_insn_reservation "dubhe_branch" 1
  52. + (and (eq_attr "tune" "starfive_dubhe")
  53. + (eq_attr "type" "branch"))
  54. + "dubhe_bru")
  55. +
  56. +(define_insn_reservation "dubhe_jump" 4
  57. + (and (eq_attr "tune" "starfive_dubhe")
  58. + (eq_attr "type" "jump,call"))
  59. + "dubhe_bru")
  60. +
  61. +(define_insn_reservation "dubhe_alu" 1
  62. + (and (eq_attr "tune" "starfive_dubhe")
  63. + (eq_attr "type" "unknown,arith,shift,slt,multi,logical,move"))
  64. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  65. +
  66. +(define_insn_reservation "dubhe_sfb_alu" 4
  67. + (and (eq_attr "tune" "starfive_dubhe")
  68. + (eq_attr "type" "sfb_alu"))
  69. + "(dubhe_alu0|dubhe_alu1)+dubhe_bru")
  70. +
  71. +(define_insn_reservation "dubhe_mul" 3
  72. + (and (eq_attr "tune" "starfive_dubhe")
  73. + (eq_attr "type" "imul"))
  74. + "dubhe_div")
  75. +
  76. +(define_insn_reservation "dubhe_div" 45
  77. + (and (eq_attr "tune" "starfive_dubhe")
  78. + (eq_attr "type" "idiv"))
  79. + "dubhe_div,sifive_7_idiv*45")
  80. +
  81. +(define_insn_reservation "dubhe_load_immediate" 1
  82. + (and (eq_attr "tune" "starfive_dubhe")
  83. + (eq_attr "type" "nop,const,auipc"))
  84. + "dubhe_alu0|dubhe_alu1")
  85. +
  86. +(define_insn_reservation "dubhe_sfma" 6
  87. + (and (eq_attr "tune" "starfive_dubhe")
  88. + (and (eq_attr "type" "fadd,fmul,fmadd")
  89. + (eq_attr "mode" "SF")))
  90. + "dubhe_fpu0 | dubhe_fpu1")
  91. +
  92. +(define_insn_reservation "dubhe_dfma" 6
  93. + (and (eq_attr "tune" "starfive_dubhe")
  94. + (and (eq_attr "type" "fadd,fmul,fmadd")
  95. + (eq_attr "mode" "DF")))
  96. + "dubhe_fpu0 | dubhe_fpu1")
  97. +
  98. +(define_insn_reservation "dubhe_fp_other" 3
  99. + (and (eq_attr "tune" "starfive_dubhe")
  100. + (eq_attr "type" "fcvt,fcmp,fmove"))
  101. + "dubhe_fpu1")
  102. +
  103. +(define_insn_reservation "dubhe_7_fdiv_s" 31
  104. + (and (eq_attr "tune" "starfive_dubhe")
  105. + (eq_attr "type" "fdiv,fsqrt")
  106. + (eq_attr "mode" "SF"))
  107. + "dubhe_fpu0,dubhe_fpu0_resource*31")
  108. +
  109. +(define_insn_reservation "dubhe_fdiv_d" 60
  110. + (and (eq_attr "tune" "starfive_dubhe")
  111. + (eq_attr "type" "fdiv,fsqrt")
  112. + (eq_attr "mode" "DF"))
  113. + "dubhe_fpu0,dubhe_fpu0_resource*60")
  114. +
  115. +(define_insn_reservation "dubhe_i2f" 3
  116. + (and (eq_attr "tune" "starfive_dubhe")
  117. + (eq_attr "type" "mtc"))
  118. + "dubhe_alu0|dubhe_alu1")
  119. +
  120. +(define_insn_reservation "dubhe_f2i" 3
  121. + (and (eq_attr "tune" "starfive_dubhe")
  122. + (eq_attr "type" "mfc"))
  123. + "dubhe_alu0|dubhe_alu1")
  124. +
  125. +
  126. +(define_insn_reservation "dubhe_opext" 1
  127. + (and (eq_attr "tune" "starfive_dubhe")
  128. + (eq_attr "type" "bopext"))
  129. + "dubhe_alu0|dubhe_alu1")
  130. +
  131. +(define_insn_reservation "dubhe_shiftadd" 1
  132. + (and (eq_attr "tune" "starfive_dubhe")
  133. + (eq_attr "type" "bshiftadd"))
  134. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  135. +
  136. +(define_insn_reservation "dubhe_rorate" 2
  137. + (and (eq_attr "tune" "starfive_dubhe")
  138. + (eq_attr "type" "brorate"))
  139. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  140. +
  141. +(define_insn_reservation "dubhe_lneg" 1
  142. + (and (eq_attr "tune" "starfive_dubhe")
  143. + (eq_attr "type" "blogic_neg"))
  144. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  145. +
  146. +(define_insn_reservation "dubhe_count_bit" 3
  147. + (and (eq_attr "tune" "starfive_dubhe")
  148. + (eq_attr "type" "bcount_bit"))
  149. + "dubhe_div")
  150. +
  151. +(define_insn_reservation "dubhe_minmax" 2
  152. + (and (eq_attr "tune" "starfive_dubhe")
  153. + (eq_attr "type" "blogic_neg"))
  154. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  155. +
  156. +(define_insn_reservation "dubhe_cmul" 10
  157. + (and (eq_attr "tune" "starfive_dubhe")
  158. + (eq_attr "type" "bclmul"))
  159. + "dubhe_div")
  160. +
  161. +(define_insn_reservation "dubhe_bitset" 2
  162. + (and (eq_attr "tune" "starfive_dubhe")
  163. + (eq_attr "type" "bsbit"))
  164. + "dubhe_alu0|dubhe_alu1|dubhe_div")
  165. +
  166. +(define_insn_reservation "dubhe_perm" 4
  167. + (and (eq_attr "tune" "starfive_dubhe")
  168. + (eq_attr "type" "bperm"))
  169. + "dubhe_div")
  170. +
  171. +
  172. +
  173. --
  174. 2.25.1