2
0

tcg-has.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /* SPDX-License-Identifier: MIT */
  2. /*
  3. * Define target-specific opcode support
  4. * Copyright (c) 2024 Linaro, Ltd.
  5. */
  6. #ifndef TCG_HAS_H
  7. #define TCG_HAS_H
  8. #include "tcg-target-has.h"
  9. #if TCG_TARGET_REG_BITS == 32
  10. /* Turn some undef macros into false macros. */
  11. #define TCG_TARGET_HAS_extr_i64_i32 0
  12. #define TCG_TARGET_HAS_div_i64 0
  13. #define TCG_TARGET_HAS_rem_i64 0
  14. #define TCG_TARGET_HAS_div2_i64 0
  15. #define TCG_TARGET_HAS_rot_i64 0
  16. #define TCG_TARGET_HAS_ext8s_i64 0
  17. #define TCG_TARGET_HAS_ext16s_i64 0
  18. #define TCG_TARGET_HAS_ext32s_i64 0
  19. #define TCG_TARGET_HAS_ext8u_i64 0
  20. #define TCG_TARGET_HAS_ext16u_i64 0
  21. #define TCG_TARGET_HAS_ext32u_i64 0
  22. #define TCG_TARGET_HAS_bswap16_i64 0
  23. #define TCG_TARGET_HAS_bswap32_i64 0
  24. #define TCG_TARGET_HAS_bswap64_i64 0
  25. #define TCG_TARGET_HAS_not_i64 0
  26. #define TCG_TARGET_HAS_andc_i64 0
  27. #define TCG_TARGET_HAS_orc_i64 0
  28. #define TCG_TARGET_HAS_eqv_i64 0
  29. #define TCG_TARGET_HAS_nand_i64 0
  30. #define TCG_TARGET_HAS_nor_i64 0
  31. #define TCG_TARGET_HAS_clz_i64 0
  32. #define TCG_TARGET_HAS_ctz_i64 0
  33. #define TCG_TARGET_HAS_ctpop_i64 0
  34. #define TCG_TARGET_HAS_extract2_i64 0
  35. #define TCG_TARGET_HAS_negsetcond_i64 0
  36. #define TCG_TARGET_HAS_add2_i64 0
  37. #define TCG_TARGET_HAS_sub2_i64 0
  38. #define TCG_TARGET_HAS_mulu2_i64 0
  39. #define TCG_TARGET_HAS_muls2_i64 0
  40. #define TCG_TARGET_HAS_muluh_i64 0
  41. #define TCG_TARGET_HAS_mulsh_i64 0
  42. /* Turn some undef macros into true macros. */
  43. #define TCG_TARGET_HAS_add2_i32 1
  44. #define TCG_TARGET_HAS_sub2_i32 1
  45. #endif
  46. /* Only one of DIV or DIV2 should be defined. */
  47. #if defined(TCG_TARGET_HAS_div_i32)
  48. #define TCG_TARGET_HAS_div2_i32 0
  49. #elif defined(TCG_TARGET_HAS_div2_i32)
  50. #define TCG_TARGET_HAS_div_i32 0
  51. #define TCG_TARGET_HAS_rem_i32 0
  52. #endif
  53. #if defined(TCG_TARGET_HAS_div_i64)
  54. #define TCG_TARGET_HAS_div2_i64 0
  55. #elif defined(TCG_TARGET_HAS_div2_i64)
  56. #define TCG_TARGET_HAS_div_i64 0
  57. #define TCG_TARGET_HAS_rem_i64 0
  58. #endif
  59. #if !defined(TCG_TARGET_HAS_v64) \
  60. && !defined(TCG_TARGET_HAS_v128) \
  61. && !defined(TCG_TARGET_HAS_v256)
  62. #define TCG_TARGET_MAYBE_vec 0
  63. #define TCG_TARGET_HAS_abs_vec 0
  64. #define TCG_TARGET_HAS_neg_vec 0
  65. #define TCG_TARGET_HAS_not_vec 0
  66. #define TCG_TARGET_HAS_andc_vec 0
  67. #define TCG_TARGET_HAS_orc_vec 0
  68. #define TCG_TARGET_HAS_nand_vec 0
  69. #define TCG_TARGET_HAS_nor_vec 0
  70. #define TCG_TARGET_HAS_eqv_vec 0
  71. #define TCG_TARGET_HAS_roti_vec 0
  72. #define TCG_TARGET_HAS_rots_vec 0
  73. #define TCG_TARGET_HAS_rotv_vec 0
  74. #define TCG_TARGET_HAS_shi_vec 0
  75. #define TCG_TARGET_HAS_shs_vec 0
  76. #define TCG_TARGET_HAS_shv_vec 0
  77. #define TCG_TARGET_HAS_mul_vec 0
  78. #define TCG_TARGET_HAS_sat_vec 0
  79. #define TCG_TARGET_HAS_minmax_vec 0
  80. #define TCG_TARGET_HAS_bitsel_vec 0
  81. #define TCG_TARGET_HAS_cmpsel_vec 0
  82. #define TCG_TARGET_HAS_tst_vec 0
  83. #else
  84. #define TCG_TARGET_MAYBE_vec 1
  85. #endif
  86. #ifndef TCG_TARGET_HAS_v64
  87. #define TCG_TARGET_HAS_v64 0
  88. #endif
  89. #ifndef TCG_TARGET_HAS_v128
  90. #define TCG_TARGET_HAS_v128 0
  91. #endif
  92. #ifndef TCG_TARGET_HAS_v256
  93. #define TCG_TARGET_HAS_v256 0
  94. #endif
  95. #endif