insn-modes-inline.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. /* Generated automatically from machmode.def and config/riscv/riscv-modes.def
  2. by genmodes. */
  3. #ifndef GCC_INSN_MODES_INLINE_H
  4. #define GCC_INSN_MODES_INLINE_H
  5. #if !defined (USED_FOR_TARGET) && GCC_VERSION >= 4001
  6. #ifdef __cplusplus
  7. inline __attribute__((__always_inline__))
  8. #else
  9. extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
  10. #endif
  11. poly_uint16
  12. mode_size_inline (machine_mode mode)
  13. {
  14. extern const poly_uint16_pod mode_size[NUM_MACHINE_MODES];
  15. gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  16. switch (mode)
  17. {
  18. case E_VOIDmode: return 0;
  19. case E_BLKmode: return 0;
  20. case E_CCmode: return 4;
  21. case E_BImode: return 1;
  22. case E_QImode: return 1;
  23. case E_HImode: return 2;
  24. case E_SImode: return 4;
  25. case E_DImode: return 8;
  26. case E_TImode: return 16;
  27. case E_QQmode: return 1;
  28. case E_HQmode: return 2;
  29. case E_SQmode: return 4;
  30. case E_DQmode: return 8;
  31. case E_TQmode: return 16;
  32. case E_UQQmode: return 1;
  33. case E_UHQmode: return 2;
  34. case E_USQmode: return 4;
  35. case E_UDQmode: return 8;
  36. case E_UTQmode: return 16;
  37. case E_HAmode: return 2;
  38. case E_SAmode: return 4;
  39. case E_DAmode: return 8;
  40. case E_TAmode: return 16;
  41. case E_UHAmode: return 2;
  42. case E_USAmode: return 4;
  43. case E_UDAmode: return 8;
  44. case E_UTAmode: return 16;
  45. case E_SFmode: return 4;
  46. case E_DFmode: return 8;
  47. case E_TFmode: return 16;
  48. case E_SDmode: return 4;
  49. case E_DDmode: return 8;
  50. case E_TDmode: return 16;
  51. case E_CQImode: return 2;
  52. case E_CHImode: return 4;
  53. case E_CSImode: return 8;
  54. case E_CDImode: return 16;
  55. case E_CTImode: return 32;
  56. case E_SCmode: return 8;
  57. case E_DCmode: return 16;
  58. case E_TCmode: return 32;
  59. default: return mode_size[mode];
  60. }
  61. }
  62. #ifdef __cplusplus
  63. inline __attribute__((__always_inline__))
  64. #else
  65. extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
  66. #endif
  67. poly_uint16
  68. mode_nunits_inline (machine_mode mode)
  69. {
  70. extern const poly_uint16_pod mode_nunits[NUM_MACHINE_MODES];
  71. switch (mode)
  72. {
  73. case E_VOIDmode: return 0;
  74. case E_BLKmode: return 0;
  75. case E_CCmode: return 1;
  76. case E_BImode: return 1;
  77. case E_QImode: return 1;
  78. case E_HImode: return 1;
  79. case E_SImode: return 1;
  80. case E_DImode: return 1;
  81. case E_TImode: return 1;
  82. case E_QQmode: return 1;
  83. case E_HQmode: return 1;
  84. case E_SQmode: return 1;
  85. case E_DQmode: return 1;
  86. case E_TQmode: return 1;
  87. case E_UQQmode: return 1;
  88. case E_UHQmode: return 1;
  89. case E_USQmode: return 1;
  90. case E_UDQmode: return 1;
  91. case E_UTQmode: return 1;
  92. case E_HAmode: return 1;
  93. case E_SAmode: return 1;
  94. case E_DAmode: return 1;
  95. case E_TAmode: return 1;
  96. case E_UHAmode: return 1;
  97. case E_USAmode: return 1;
  98. case E_UDAmode: return 1;
  99. case E_UTAmode: return 1;
  100. case E_SFmode: return 1;
  101. case E_DFmode: return 1;
  102. case E_TFmode: return 1;
  103. case E_SDmode: return 1;
  104. case E_DDmode: return 1;
  105. case E_TDmode: return 1;
  106. case E_CQImode: return 2;
  107. case E_CHImode: return 2;
  108. case E_CSImode: return 2;
  109. case E_CDImode: return 2;
  110. case E_CTImode: return 2;
  111. case E_SCmode: return 2;
  112. case E_DCmode: return 2;
  113. case E_TCmode: return 2;
  114. default: return mode_nunits[mode];
  115. }
  116. }
  117. #ifdef __cplusplus
  118. inline __attribute__((__always_inline__))
  119. #else
  120. extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
  121. #endif
  122. unsigned char
  123. mode_inner_inline (machine_mode mode)
  124. {
  125. extern const unsigned char mode_inner[NUM_MACHINE_MODES];
  126. gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  127. switch (mode)
  128. {
  129. case E_VOIDmode: return E_VOIDmode;
  130. case E_BLKmode: return E_BLKmode;
  131. case E_CCmode: return E_CCmode;
  132. case E_BImode: return E_BImode;
  133. case E_QImode: return E_QImode;
  134. case E_HImode: return E_HImode;
  135. case E_SImode: return E_SImode;
  136. case E_DImode: return E_DImode;
  137. case E_TImode: return E_TImode;
  138. case E_QQmode: return E_QQmode;
  139. case E_HQmode: return E_HQmode;
  140. case E_SQmode: return E_SQmode;
  141. case E_DQmode: return E_DQmode;
  142. case E_TQmode: return E_TQmode;
  143. case E_UQQmode: return E_UQQmode;
  144. case E_UHQmode: return E_UHQmode;
  145. case E_USQmode: return E_USQmode;
  146. case E_UDQmode: return E_UDQmode;
  147. case E_UTQmode: return E_UTQmode;
  148. case E_HAmode: return E_HAmode;
  149. case E_SAmode: return E_SAmode;
  150. case E_DAmode: return E_DAmode;
  151. case E_TAmode: return E_TAmode;
  152. case E_UHAmode: return E_UHAmode;
  153. case E_USAmode: return E_USAmode;
  154. case E_UDAmode: return E_UDAmode;
  155. case E_UTAmode: return E_UTAmode;
  156. case E_SFmode: return E_SFmode;
  157. case E_DFmode: return E_DFmode;
  158. case E_TFmode: return E_TFmode;
  159. case E_SDmode: return E_SDmode;
  160. case E_DDmode: return E_DDmode;
  161. case E_TDmode: return E_TDmode;
  162. case E_CQImode: return E_QImode;
  163. case E_CHImode: return E_HImode;
  164. case E_CSImode: return E_SImode;
  165. case E_CDImode: return E_DImode;
  166. case E_CTImode: return E_TImode;
  167. case E_SCmode: return E_SFmode;
  168. case E_DCmode: return E_DFmode;
  169. case E_TCmode: return E_TFmode;
  170. default: return mode_inner[mode];
  171. }
  172. }
  173. #ifdef __cplusplus
  174. inline __attribute__((__always_inline__))
  175. #else
  176. extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
  177. #endif
  178. unsigned char
  179. mode_unit_size_inline (machine_mode mode)
  180. {
  181. extern CONST_MODE_UNIT_SIZE unsigned char mode_unit_size[NUM_MACHINE_MODES];
  182. gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  183. switch (mode)
  184. {
  185. case E_VOIDmode: return 0;
  186. case E_BLKmode: return 0;
  187. case E_CCmode: return 4;
  188. case E_BImode: return 1;
  189. case E_QImode: return 1;
  190. case E_HImode: return 2;
  191. case E_SImode: return 4;
  192. case E_DImode: return 8;
  193. case E_TImode: return 16;
  194. case E_QQmode: return 1;
  195. case E_HQmode: return 2;
  196. case E_SQmode: return 4;
  197. case E_DQmode: return 8;
  198. case E_TQmode: return 16;
  199. case E_UQQmode: return 1;
  200. case E_UHQmode: return 2;
  201. case E_USQmode: return 4;
  202. case E_UDQmode: return 8;
  203. case E_UTQmode: return 16;
  204. case E_HAmode: return 2;
  205. case E_SAmode: return 4;
  206. case E_DAmode: return 8;
  207. case E_TAmode: return 16;
  208. case E_UHAmode: return 2;
  209. case E_USAmode: return 4;
  210. case E_UDAmode: return 8;
  211. case E_UTAmode: return 16;
  212. case E_SFmode: return 4;
  213. case E_DFmode: return 8;
  214. case E_TFmode: return 16;
  215. case E_SDmode: return 4;
  216. case E_DDmode: return 8;
  217. case E_TDmode: return 16;
  218. case E_CQImode: return 1;
  219. case E_CHImode: return 2;
  220. case E_CSImode: return 4;
  221. case E_CDImode: return 8;
  222. case E_CTImode: return 16;
  223. case E_SCmode: return 4;
  224. case E_DCmode: return 8;
  225. case E_TCmode: return 16;
  226. default: return mode_unit_size[mode];
  227. }
  228. }
  229. #ifdef __cplusplus
  230. inline __attribute__((__always_inline__))
  231. #else
  232. extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
  233. #endif
  234. unsigned short
  235. mode_unit_precision_inline (machine_mode mode)
  236. {
  237. extern const unsigned short mode_unit_precision[NUM_MACHINE_MODES];
  238. gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  239. switch (mode)
  240. {
  241. case E_VOIDmode: return 0;
  242. case E_BLKmode: return 0;
  243. case E_CCmode: return 4*BITS_PER_UNIT;
  244. case E_BImode: return 1;
  245. case E_QImode: return 1*BITS_PER_UNIT;
  246. case E_HImode: return 2*BITS_PER_UNIT;
  247. case E_SImode: return 4*BITS_PER_UNIT;
  248. case E_DImode: return 8*BITS_PER_UNIT;
  249. case E_TImode: return 16*BITS_PER_UNIT;
  250. case E_QQmode: return 1*BITS_PER_UNIT;
  251. case E_HQmode: return 2*BITS_PER_UNIT;
  252. case E_SQmode: return 4*BITS_PER_UNIT;
  253. case E_DQmode: return 8*BITS_PER_UNIT;
  254. case E_TQmode: return 16*BITS_PER_UNIT;
  255. case E_UQQmode: return 1*BITS_PER_UNIT;
  256. case E_UHQmode: return 2*BITS_PER_UNIT;
  257. case E_USQmode: return 4*BITS_PER_UNIT;
  258. case E_UDQmode: return 8*BITS_PER_UNIT;
  259. case E_UTQmode: return 16*BITS_PER_UNIT;
  260. case E_HAmode: return 2*BITS_PER_UNIT;
  261. case E_SAmode: return 4*BITS_PER_UNIT;
  262. case E_DAmode: return 8*BITS_PER_UNIT;
  263. case E_TAmode: return 16*BITS_PER_UNIT;
  264. case E_UHAmode: return 2*BITS_PER_UNIT;
  265. case E_USAmode: return 4*BITS_PER_UNIT;
  266. case E_UDAmode: return 8*BITS_PER_UNIT;
  267. case E_UTAmode: return 16*BITS_PER_UNIT;
  268. case E_SFmode: return 4*BITS_PER_UNIT;
  269. case E_DFmode: return 8*BITS_PER_UNIT;
  270. case E_TFmode: return 16*BITS_PER_UNIT;
  271. case E_SDmode: return 4*BITS_PER_UNIT;
  272. case E_DDmode: return 8*BITS_PER_UNIT;
  273. case E_TDmode: return 16*BITS_PER_UNIT;
  274. case E_CQImode: return 1*BITS_PER_UNIT;
  275. case E_CHImode: return 2*BITS_PER_UNIT;
  276. case E_CSImode: return 4*BITS_PER_UNIT;
  277. case E_CDImode: return 8*BITS_PER_UNIT;
  278. case E_CTImode: return 16*BITS_PER_UNIT;
  279. case E_SCmode: return 4*BITS_PER_UNIT;
  280. case E_DCmode: return 8*BITS_PER_UNIT;
  281. case E_TCmode: return 16*BITS_PER_UNIT;
  282. default: return mode_unit_precision[mode];
  283. }
  284. }
  285. #endif /* GCC_VERSION >= 4001 */
  286. #endif /* insn-modes-inline.h */