tm-preds.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. /* Generated automatically by the program 'build/genpreds'
  2. from the machine description file '/data/jenkins/workspace/GNU-toolchain/arm-10-2/src/gcc/gcc/config/aarch64/aarch64.md'. */
  3. #ifndef GCC_TM_PREDS_H
  4. #define GCC_TM_PREDS_H
  5. #ifdef HAVE_MACHINE_MODES
  6. extern int general_operand (rtx, machine_mode);
  7. extern int address_operand (rtx, machine_mode);
  8. extern int register_operand (rtx, machine_mode);
  9. extern int pmode_register_operand (rtx, machine_mode);
  10. extern int scratch_operand (rtx, machine_mode);
  11. extern int immediate_operand (rtx, machine_mode);
  12. extern int const_int_operand (rtx, machine_mode);
  13. extern int const_scalar_int_operand (rtx, machine_mode);
  14. extern int const_double_operand (rtx, machine_mode);
  15. extern int nonimmediate_operand (rtx, machine_mode);
  16. extern int nonmemory_operand (rtx, machine_mode);
  17. extern int push_operand (rtx, machine_mode);
  18. extern int pop_operand (rtx, machine_mode);
  19. extern int memory_operand (rtx, machine_mode);
  20. extern int indirect_operand (rtx, machine_mode);
  21. extern int ordered_comparison_operator (rtx, machine_mode);
  22. extern int comparison_operator (rtx, machine_mode);
  23. extern int cc_register (rtx, machine_mode);
  24. extern int aarch64_call_insn_operand (rtx, machine_mode);
  25. extern int aarch64_general_reg (rtx, machine_mode);
  26. extern int const0_operand (rtx, machine_mode);
  27. extern int const_1_to_3_operand (rtx, machine_mode);
  28. extern int subreg_lowpart_operator (rtx, machine_mode);
  29. extern int aarch64_ccmp_immediate (rtx, machine_mode);
  30. extern int aarch64_ccmp_operand (rtx, machine_mode);
  31. extern int aarch64_simd_register (rtx, machine_mode);
  32. extern int aarch64_reg_or_zero (rtx, machine_mode);
  33. extern int aarch64_reg_or_fp_zero (rtx, machine_mode);
  34. extern int aarch64_reg_zero_or_fp_zero (rtx, machine_mode);
  35. extern int aarch64_reg_zero_or_m1_or_1 (rtx, machine_mode);
  36. extern int aarch64_reg_or_orr_imm (rtx, machine_mode);
  37. extern int aarch64_reg_or_bic_imm (rtx, machine_mode);
  38. extern int aarch64_fp_compare_operand (rtx, machine_mode);
  39. extern int aarch64_fp_pow2 (rtx, machine_mode);
  40. extern int aarch64_fp_pow2_recip (rtx, machine_mode);
  41. extern int aarch64_fp_vec_pow2 (rtx, machine_mode);
  42. extern int aarch64_sve_cnt_immediate (rtx, machine_mode);
  43. extern int aarch64_sub_immediate (rtx, machine_mode);
  44. extern int aarch64_plus_immediate (rtx, machine_mode);
  45. extern int aarch64_plus_operand (rtx, machine_mode);
  46. extern int aarch64_plushi_immediate (rtx, machine_mode);
  47. extern int aarch64_plushi_operand (rtx, machine_mode);
  48. extern int aarch64_pluslong_immediate (rtx, machine_mode);
  49. extern int aarch64_pluslong_strict_immedate (rtx, machine_mode);
  50. extern int aarch64_sve_scalar_inc_dec_immediate (rtx, machine_mode);
  51. extern int aarch64_sve_addvl_addpl_immediate (rtx, machine_mode);
  52. extern int aarch64_sve_plus_immediate (rtx, machine_mode);
  53. extern int aarch64_split_add_offset_immediate (rtx, machine_mode);
  54. extern int aarch64_pluslong_operand (rtx, machine_mode);
  55. extern int aarch64_pluslong_or_poly_operand (rtx, machine_mode);
  56. extern int aarch64_logical_immediate (rtx, machine_mode);
  57. extern int aarch64_logical_operand (rtx, machine_mode);
  58. extern int aarch64_mov_imm_operand (rtx, machine_mode);
  59. extern int aarch64_logical_and_immediate (rtx, machine_mode);
  60. extern int aarch64_shift_imm_si (rtx, machine_mode);
  61. extern int aarch64_shift_imm_di (rtx, machine_mode);
  62. extern int aarch64_shift_imm64_di (rtx, machine_mode);
  63. extern int aarch64_reg_or_shift_imm_si (rtx, machine_mode);
  64. extern int aarch64_reg_or_shift_imm_di (rtx, machine_mode);
  65. extern int aarch64_imm3 (rtx, machine_mode);
  66. extern int aarch64_imm2 (rtx, machine_mode);
  67. extern int aarch64_lane_imm3 (rtx, machine_mode);
  68. extern int aarch64_imm24 (rtx, machine_mode);
  69. extern int aarch64_pwr_imm3 (rtx, machine_mode);
  70. extern int aarch64_pwr_2_si (rtx, machine_mode);
  71. extern int aarch64_pwr_2_di (rtx, machine_mode);
  72. extern int aarch64_mem_pair_offset (rtx, machine_mode);
  73. extern int aarch64_mem_pair_operand (rtx, machine_mode);
  74. extern int aarch64_mem_pair_lanes_operand (rtx, machine_mode);
  75. extern int aarch64_prefetch_operand (rtx, machine_mode);
  76. extern int aarch64_valid_symref (rtx, machine_mode);
  77. extern int aarch64_tls_ie_symref (rtx, machine_mode);
  78. extern int aarch64_tls_le_symref (rtx, machine_mode);
  79. extern int aarch64_mov_operand (rtx, machine_mode);
  80. extern int aarch64_nonmemory_operand (rtx, machine_mode);
  81. extern int aarch64_movti_operand (rtx, machine_mode);
  82. extern int aarch64_reg_or_imm (rtx, machine_mode);
  83. extern int aarch64_comparison_operator (rtx, machine_mode);
  84. extern int aarch64_comparison_operator_mode (rtx, machine_mode);
  85. extern int aarch64_comparison_operation (rtx, machine_mode);
  86. extern int aarch64_equality_operator (rtx, machine_mode);
  87. extern int aarch64_carry_operation (rtx, machine_mode);
  88. extern int aarch64_borrow_operation (rtx, machine_mode);
  89. extern int aarch64_sync_memory_operand (rtx, machine_mode);
  90. extern int aarch64_9bit_offset_memory_operand (rtx, machine_mode);
  91. extern int aarch64_rcpc_memory_operand (rtx, machine_mode);
  92. extern int vect_par_cnst_hi_half (rtx, machine_mode);
  93. extern int vect_par_cnst_lo_half (rtx, machine_mode);
  94. extern int descending_int_parallel (rtx, machine_mode);
  95. extern int ascending_int_parallel (rtx, machine_mode);
  96. extern int aarch64_simd_lshift_imm (rtx, machine_mode);
  97. extern int aarch64_simd_rshift_imm (rtx, machine_mode);
  98. extern int aarch64_simd_imm_zero (rtx, machine_mode);
  99. extern int aarch64_simd_imm_one (rtx, machine_mode);
  100. extern int aarch64_simd_or_scalar_imm_zero (rtx, machine_mode);
  101. extern int aarch64_simd_imm_minus_one (rtx, machine_mode);
  102. extern int aarch64_simd_reg_or_zero (rtx, machine_mode);
  103. extern int aarch64_simd_reg_or_minus_one (rtx, machine_mode);
  104. extern int aarch64_simd_struct_operand (rtx, machine_mode);
  105. extern int aarch64_simd_general_operand (rtx, machine_mode);
  106. extern int aarch64_simd_nonimmediate_operand (rtx, machine_mode);
  107. extern int aarch64_simd_shift_imm_qi (rtx, machine_mode);
  108. extern int aarch64_simd_shift_imm_hi (rtx, machine_mode);
  109. extern int aarch64_simd_shift_imm_si (rtx, machine_mode);
  110. extern int aarch64_simd_shift_imm_di (rtx, machine_mode);
  111. extern int aarch64_simd_shift_imm_offset_qi (rtx, machine_mode);
  112. extern int aarch64_simd_shift_imm_offset_hi (rtx, machine_mode);
  113. extern int aarch64_simd_shift_imm_offset_si (rtx, machine_mode);
  114. extern int aarch64_simd_shift_imm_offset_di (rtx, machine_mode);
  115. extern int aarch64_simd_shift_imm_bitsize_qi (rtx, machine_mode);
  116. extern int aarch64_simd_shift_imm_bitsize_hi (rtx, machine_mode);
  117. extern int aarch64_simd_shift_imm_bitsize_si (rtx, machine_mode);
  118. extern int aarch64_simd_shift_imm_bitsize_di (rtx, machine_mode);
  119. extern int aarch64_constant_pool_symref (rtx, machine_mode);
  120. extern int aarch64_constant_vector_operand (rtx, machine_mode);
  121. extern int aarch64_sve_ld1r_operand (rtx, machine_mode);
  122. extern int aarch64_sve_ld1rq_operand (rtx, machine_mode);
  123. extern int aarch64_sve_ld1ro_operand_b (rtx, machine_mode);
  124. extern int aarch64_sve_ld1ro_operand_h (rtx, machine_mode);
  125. extern int aarch64_sve_ld1ro_operand_w (rtx, machine_mode);
  126. extern int aarch64_sve_ld1ro_operand_d (rtx, machine_mode);
  127. extern int aarch64_sve_ldff1_operand (rtx, machine_mode);
  128. extern int aarch64_sve_ldnf1_operand (rtx, machine_mode);
  129. extern int aarch64_sve_ldr_operand (rtx, machine_mode);
  130. extern int aarch64_sve_prefetch_operand (rtx, machine_mode);
  131. extern int aarch64_sve_nonimmediate_operand (rtx, machine_mode);
  132. extern int aarch64_sve_general_operand (rtx, machine_mode);
  133. extern int aarch64_sve_struct_memory_operand (rtx, machine_mode);
  134. extern int aarch64_sve_struct_nonimmediate_operand (rtx, machine_mode);
  135. extern int aarch64_sve_dup_operand (rtx, machine_mode);
  136. extern int aarch64_sve_ptrue_svpattern_immediate (rtx, machine_mode);
  137. extern int aarch64_sve_arith_immediate (rtx, machine_mode);
  138. extern int aarch64_sve_sub_arith_immediate (rtx, machine_mode);
  139. extern int aarch64_sve_qadd_immediate (rtx, machine_mode);
  140. extern int aarch64_sve_qsub_immediate (rtx, machine_mode);
  141. extern int aarch64_sve_vector_inc_dec_immediate (rtx, machine_mode);
  142. extern int aarch64_sve_gather_immediate_b (rtx, machine_mode);
  143. extern int aarch64_sve_gather_immediate_h (rtx, machine_mode);
  144. extern int aarch64_sve_gather_immediate_w (rtx, machine_mode);
  145. extern int aarch64_sve_gather_immediate_d (rtx, machine_mode);
  146. extern int aarch64_sve_uxtb_immediate (rtx, machine_mode);
  147. extern int aarch64_sve_uxth_immediate (rtx, machine_mode);
  148. extern int aarch64_sve_uxtw_immediate (rtx, machine_mode);
  149. extern int aarch64_sve_uxt_immediate (rtx, machine_mode);
  150. extern int aarch64_sve_logical_immediate (rtx, machine_mode);
  151. extern int aarch64_sve_vsb_immediate (rtx, machine_mode);
  152. extern int aarch64_sve_vsm_immediate (rtx, machine_mode);
  153. extern int aarch64_sve_dup_immediate (rtx, machine_mode);
  154. extern int aarch64_sve_cmp_vsc_immediate (rtx, machine_mode);
  155. extern int aarch64_sve_cmp_vsd_immediate (rtx, machine_mode);
  156. extern int aarch64_sve_index_immediate (rtx, machine_mode);
  157. extern int aarch64_sve_float_arith_immediate (rtx, machine_mode);
  158. extern int aarch64_sve_float_negated_arith_immediate (rtx, machine_mode);
  159. extern int aarch64_sve_float_arith_with_sub_immediate (rtx, machine_mode);
  160. extern int aarch64_sve_float_mul_immediate (rtx, machine_mode);
  161. extern int aarch64_sve_float_maxmin_immediate (rtx, machine_mode);
  162. extern int aarch64_sve_arith_operand (rtx, machine_mode);
  163. extern int aarch64_sve_add_operand (rtx, machine_mode);
  164. extern int aarch64_sve_sqadd_operand (rtx, machine_mode);
  165. extern int aarch64_sve_pred_and_operand (rtx, machine_mode);
  166. extern int aarch64_sve_logical_operand (rtx, machine_mode);
  167. extern int aarch64_sve_gather_offset_b (rtx, machine_mode);
  168. extern int aarch64_sve_gather_offset_h (rtx, machine_mode);
  169. extern int aarch64_sve_gather_offset_w (rtx, machine_mode);
  170. extern int aarch64_sve_gather_offset_d (rtx, machine_mode);
  171. extern int aarch64_sve_lshift_operand (rtx, machine_mode);
  172. extern int aarch64_sve_rshift_operand (rtx, machine_mode);
  173. extern int aarch64_sve_vsb_operand (rtx, machine_mode);
  174. extern int aarch64_sve_vsm_operand (rtx, machine_mode);
  175. extern int aarch64_sve_reg_or_dup_imm (rtx, machine_mode);
  176. extern int aarch64_sve_cmp_vsc_operand (rtx, machine_mode);
  177. extern int aarch64_sve_cmp_vsd_operand (rtx, machine_mode);
  178. extern int aarch64_sve_index_operand (rtx, machine_mode);
  179. extern int aarch64_sve_float_arith_operand (rtx, machine_mode);
  180. extern int aarch64_sve_float_arith_with_sub_operand (rtx, machine_mode);
  181. extern int aarch64_sve_float_mul_operand (rtx, machine_mode);
  182. extern int aarch64_sve_float_maxmin_operand (rtx, machine_mode);
  183. extern int aarch64_sve_vec_perm_operand (rtx, machine_mode);
  184. extern int aarch64_sve_ptrue_flag (rtx, machine_mode);
  185. extern int aarch64_sve_gp_strictness (rtx, machine_mode);
  186. extern int aarch64_gather_scale_operand_b (rtx, machine_mode);
  187. extern int aarch64_gather_scale_operand_h (rtx, machine_mode);
  188. extern int aarch64_gather_scale_operand_w (rtx, machine_mode);
  189. extern int aarch64_gather_scale_operand_d (rtx, machine_mode);
  190. extern int aarch64_any_register_operand (rtx, machine_mode);
  191. extern int aarch64_sve_any_binary_operator (rtx, machine_mode);
  192. extern int aarch64_bytes_per_sve_vector_operand (rtx, machine_mode);
  193. extern int aarch64_memtag_tag_offset (rtx, machine_mode);
  194. extern int aarch64_granule16_uimm6 (rtx, machine_mode);
  195. extern int aarch64_granule16_simm9 (rtx, machine_mode);
  196. #endif /* HAVE_MACHINE_MODES */
  197. #define CONSTRAINT_NUM_DEFINED_P 1
  198. enum constraint_num
  199. {
  200. CONSTRAINT__UNKNOWN = 0,
  201. CONSTRAINT_r,
  202. CONSTRAINT_k,
  203. CONSTRAINT_Ucs,
  204. CONSTRAINT_Ucr,
  205. CONSTRAINT_w,
  206. CONSTRAINT_Upa,
  207. CONSTRAINT_Upl,
  208. CONSTRAINT_x,
  209. CONSTRAINT_y,
  210. CONSTRAINT_I,
  211. CONSTRAINT_J,
  212. CONSTRAINT_K,
  213. CONSTRAINT_L,
  214. CONSTRAINT_M,
  215. CONSTRAINT_N,
  216. CONSTRAINT_m,
  217. CONSTRAINT_o,
  218. CONSTRAINT_Q,
  219. CONSTRAINT_Ust,
  220. CONSTRAINT_Ump,
  221. CONSTRAINT_Umn,
  222. CONSTRAINT_Utf,
  223. CONSTRAINT_Utn,
  224. CONSTRAINT_Utr,
  225. CONSTRAINT_Utv,
  226. CONSTRAINT_Utq,
  227. CONSTRAINT_UtQ,
  228. CONSTRAINT_UOb,
  229. CONSTRAINT_UOh,
  230. CONSTRAINT_UOw,
  231. CONSTRAINT_UOd,
  232. CONSTRAINT_Uty,
  233. CONSTRAINT_Utx,
  234. CONSTRAINT_p,
  235. CONSTRAINT_UPb,
  236. CONSTRAINT_UPd,
  237. CONSTRAINT_UPh,
  238. CONSTRAINT_UPw,
  239. CONSTRAINT_Dp,
  240. CONSTRAINT_Uaa,
  241. CONSTRAINT_Uai,
  242. CONSTRAINT_Uav,
  243. CONSTRAINT_Uat,
  244. CONSTRAINT_Uti,
  245. CONSTRAINT_UsO,
  246. CONSTRAINT_UsP,
  247. CONSTRAINT_S,
  248. CONSTRAINT_Y,
  249. CONSTRAINT_Ush,
  250. CONSTRAINT_Usa,
  251. CONSTRAINT_Uss,
  252. CONSTRAINT_Usn,
  253. CONSTRAINT_Usd,
  254. CONSTRAINT_Usf,
  255. CONSTRAINT_Usg,
  256. CONSTRAINT_Usj,
  257. CONSTRAINT_Ulc,
  258. CONSTRAINT_Usv,
  259. CONSTRAINT_Usi,
  260. CONSTRAINT_Ui2,
  261. CONSTRAINT_Ui3,
  262. CONSTRAINT_Ui7,
  263. CONSTRAINT_Up3,
  264. CONSTRAINT_Uph,
  265. CONSTRAINT_Ufc,
  266. CONSTRAINT_Uvi,
  267. CONSTRAINT_Do,
  268. CONSTRAINT_Db,
  269. CONSTRAINT_Dn,
  270. CONSTRAINT_Dh,
  271. CONSTRAINT_Dq,
  272. CONSTRAINT_Dt,
  273. CONSTRAINT_Dl,
  274. CONSTRAINT_Dr,
  275. CONSTRAINT_Dz,
  276. CONSTRAINT_Dm,
  277. CONSTRAINT_Dd,
  278. CONSTRAINT_Ds,
  279. CONSTRAINT_vgb,
  280. CONSTRAINT_vgd,
  281. CONSTRAINT_vgh,
  282. CONSTRAINT_vgw,
  283. CONSTRAINT_vsa,
  284. CONSTRAINT_vsb,
  285. CONSTRAINT_vsc,
  286. CONSTRAINT_vsd,
  287. CONSTRAINT_vsi,
  288. CONSTRAINT_vsn,
  289. CONSTRAINT_vsQ,
  290. CONSTRAINT_vsS,
  291. CONSTRAINT_vsl,
  292. CONSTRAINT_vsm,
  293. CONSTRAINT_vsA,
  294. CONSTRAINT_vsB,
  295. CONSTRAINT_vsM,
  296. CONSTRAINT_vsN,
  297. CONSTRAINT_c,
  298. CONSTRAINT_V,
  299. CONSTRAINT__l,
  300. CONSTRAINT__g,
  301. CONSTRAINT_i,
  302. CONSTRAINT_s,
  303. CONSTRAINT_n,
  304. CONSTRAINT_E,
  305. CONSTRAINT_F,
  306. CONSTRAINT_X,
  307. CONSTRAINT_Z,
  308. CONSTRAINT_UsM,
  309. CONSTRAINT_Ui1,
  310. CONSTRAINT_vss,
  311. CONSTRAINT__LIMIT
  312. };
  313. extern enum constraint_num lookup_constraint_1 (const char *);
  314. extern const unsigned char lookup_constraint_array[];
  315. /* Return the constraint at the beginning of P, or CONSTRAINT__UNKNOWN if it
  316. isn't recognized. */
  317. static inline enum constraint_num
  318. lookup_constraint (const char *p)
  319. {
  320. unsigned int index = lookup_constraint_array[(unsigned char) *p];
  321. return (index == UCHAR_MAX
  322. ? lookup_constraint_1 (p)
  323. : (enum constraint_num) index);
  324. }
  325. extern bool (*constraint_satisfied_p_array[]) (rtx);
  326. /* Return true if X satisfies constraint C. */
  327. static inline bool
  328. constraint_satisfied_p (rtx x, enum constraint_num c)
  329. {
  330. int i = (int) c - (int) CONSTRAINT_I;
  331. return i >= 0 && constraint_satisfied_p_array[i] (x);
  332. }
  333. static inline bool
  334. insn_extra_register_constraint (enum constraint_num c)
  335. {
  336. return c >= CONSTRAINT_r && c <= CONSTRAINT_y;
  337. }
  338. static inline bool
  339. insn_extra_memory_constraint (enum constraint_num c)
  340. {
  341. return c >= CONSTRAINT_m && c <= CONSTRAINT_Utx;
  342. }
  343. static inline bool
  344. insn_extra_special_memory_constraint (enum constraint_num)
  345. {
  346. return false;
  347. }
  348. static inline bool
  349. insn_extra_address_constraint (enum constraint_num c)
  350. {
  351. return c >= CONSTRAINT_p && c <= CONSTRAINT_Dp;
  352. }
  353. static inline void
  354. insn_extra_constraint_allows_reg_mem (enum constraint_num c,
  355. bool *allows_reg, bool *allows_mem)
  356. {
  357. if (c >= CONSTRAINT_Uaa && c <= CONSTRAINT_vsN)
  358. return;
  359. if (c >= CONSTRAINT_c && c <= CONSTRAINT_c)
  360. {
  361. *allows_reg = true;
  362. return;
  363. }
  364. if (c >= CONSTRAINT_V && c <= CONSTRAINT__g)
  365. {
  366. *allows_mem = true;
  367. return;
  368. }
  369. (void) c;
  370. *allows_reg = true;
  371. *allows_mem = true;
  372. }
  373. static inline size_t
  374. insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED)
  375. {
  376. switch (fc)
  377. {
  378. case 'D': return 2;
  379. case 'U': return 3;
  380. case 'v': return 3;
  381. default: break;
  382. }
  383. return 1;
  384. }
  385. #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_)
  386. extern enum reg_class reg_class_for_constraint_1 (enum constraint_num);
  387. static inline enum reg_class
  388. reg_class_for_constraint (enum constraint_num c)
  389. {
  390. if (insn_extra_register_constraint (c))
  391. return reg_class_for_constraint_1 (c);
  392. return NO_REGS;
  393. }
  394. extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num);
  395. #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
  396. insn_const_int_ok_for_constraint (v_, lookup_constraint (s_))
  397. enum constraint_type
  398. {
  399. CT_REGISTER,
  400. CT_CONST_INT,
  401. CT_MEMORY,
  402. CT_SPECIAL_MEMORY,
  403. CT_ADDRESS,
  404. CT_FIXED_FORM
  405. };
  406. static inline enum constraint_type
  407. get_constraint_type (enum constraint_num c)
  408. {
  409. if (c >= CONSTRAINT_p)
  410. {
  411. if (c >= CONSTRAINT_Uaa)
  412. return CT_FIXED_FORM;
  413. return CT_ADDRESS;
  414. }
  415. if (c >= CONSTRAINT_m)
  416. return CT_MEMORY;
  417. if (c >= CONSTRAINT_I)
  418. return CT_CONST_INT;
  419. return CT_REGISTER;
  420. }
  421. #endif /* tm-preds.h */