xref: /openbmc/qemu/tcg/tci/tcg-target-has.h (revision 32a97c5d05c5deb54a42315d48cecf86cbeadaf4)
18ae72b38SRichard Henderson /* SPDX-License-Identifier: MIT */
28ae72b38SRichard Henderson /*
38ae72b38SRichard Henderson  * Define target-specific opcode support
48ae72b38SRichard Henderson  * Copyright (c) 2009, 2011 Stefan Weil
58ae72b38SRichard Henderson  */
68ae72b38SRichard Henderson 
78ae72b38SRichard Henderson #ifndef TCG_TARGET_HAS_H
88ae72b38SRichard Henderson #define TCG_TARGET_HAS_H
98ae72b38SRichard Henderson 
108ae72b38SRichard Henderson #define TCG_TARGET_HAS_bswap16_i32      1
118ae72b38SRichard Henderson #define TCG_TARGET_HAS_bswap32_i32      1
128ae72b38SRichard Henderson #define TCG_TARGET_HAS_div_i32          1
138ae72b38SRichard Henderson #define TCG_TARGET_HAS_rem_i32          1
148ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext8s_i32        1
158ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext16s_i32       1
168ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext8u_i32        1
178ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext16u_i32       1
188ae72b38SRichard Henderson #define TCG_TARGET_HAS_andc_i32         1
198ae72b38SRichard Henderson #define TCG_TARGET_HAS_extract2_i32     0
208ae72b38SRichard Henderson #define TCG_TARGET_HAS_eqv_i32          1
218ae72b38SRichard Henderson #define TCG_TARGET_HAS_nand_i32         1
228ae72b38SRichard Henderson #define TCG_TARGET_HAS_nor_i32          1
238ae72b38SRichard Henderson #define TCG_TARGET_HAS_clz_i32          1
248ae72b38SRichard Henderson #define TCG_TARGET_HAS_ctz_i32          1
258ae72b38SRichard Henderson #define TCG_TARGET_HAS_ctpop_i32        1
268ae72b38SRichard Henderson #define TCG_TARGET_HAS_not_i32          1
278ae72b38SRichard Henderson #define TCG_TARGET_HAS_orc_i32          1
288ae72b38SRichard Henderson #define TCG_TARGET_HAS_rot_i32          1
298ae72b38SRichard Henderson #define TCG_TARGET_HAS_negsetcond_i32   0
308ae72b38SRichard Henderson #define TCG_TARGET_HAS_muls2_i32        1
318ae72b38SRichard Henderson #define TCG_TARGET_HAS_muluh_i32        0
328ae72b38SRichard Henderson #define TCG_TARGET_HAS_mulsh_i32        0
338ae72b38SRichard Henderson #define TCG_TARGET_HAS_qemu_st8_i32     0
348ae72b38SRichard Henderson 
358ae72b38SRichard Henderson #if TCG_TARGET_REG_BITS == 64
368ae72b38SRichard Henderson #define TCG_TARGET_HAS_extr_i64_i32     0
378ae72b38SRichard Henderson #define TCG_TARGET_HAS_bswap16_i64      1
388ae72b38SRichard Henderson #define TCG_TARGET_HAS_bswap32_i64      1
398ae72b38SRichard Henderson #define TCG_TARGET_HAS_bswap64_i64      1
408ae72b38SRichard Henderson #define TCG_TARGET_HAS_extract2_i64     0
418ae72b38SRichard Henderson #define TCG_TARGET_HAS_div_i64          1
428ae72b38SRichard Henderson #define TCG_TARGET_HAS_rem_i64          1
438ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext8s_i64        1
448ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext16s_i64       1
458ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext32s_i64       1
468ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext8u_i64        1
478ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext16u_i64       1
488ae72b38SRichard Henderson #define TCG_TARGET_HAS_ext32u_i64       1
498ae72b38SRichard Henderson #define TCG_TARGET_HAS_andc_i64         1
508ae72b38SRichard Henderson #define TCG_TARGET_HAS_eqv_i64          1
518ae72b38SRichard Henderson #define TCG_TARGET_HAS_nand_i64         1
528ae72b38SRichard Henderson #define TCG_TARGET_HAS_nor_i64          1
538ae72b38SRichard Henderson #define TCG_TARGET_HAS_clz_i64          1
548ae72b38SRichard Henderson #define TCG_TARGET_HAS_ctz_i64          1
558ae72b38SRichard Henderson #define TCG_TARGET_HAS_ctpop_i64        1
568ae72b38SRichard Henderson #define TCG_TARGET_HAS_not_i64          1
578ae72b38SRichard Henderson #define TCG_TARGET_HAS_orc_i64          1
588ae72b38SRichard Henderson #define TCG_TARGET_HAS_rot_i64          1
598ae72b38SRichard Henderson #define TCG_TARGET_HAS_negsetcond_i64   0
608ae72b38SRichard Henderson #define TCG_TARGET_HAS_muls2_i64        1
618ae72b38SRichard Henderson #define TCG_TARGET_HAS_add2_i32         1
628ae72b38SRichard Henderson #define TCG_TARGET_HAS_sub2_i32         1
638ae72b38SRichard Henderson #define TCG_TARGET_HAS_mulu2_i32        1
648ae72b38SRichard Henderson #define TCG_TARGET_HAS_add2_i64         1
658ae72b38SRichard Henderson #define TCG_TARGET_HAS_sub2_i64         1
668ae72b38SRichard Henderson #define TCG_TARGET_HAS_mulu2_i64        1
678ae72b38SRichard Henderson #define TCG_TARGET_HAS_muluh_i64        0
688ae72b38SRichard Henderson #define TCG_TARGET_HAS_mulsh_i64        0
698ae72b38SRichard Henderson #else
708ae72b38SRichard Henderson #define TCG_TARGET_HAS_mulu2_i32        1
718ae72b38SRichard Henderson #endif /* TCG_TARGET_REG_BITS == 64 */
728ae72b38SRichard Henderson 
738ae72b38SRichard Henderson #define TCG_TARGET_HAS_qemu_ldst_i128   0
748ae72b38SRichard Henderson 
758ae72b38SRichard Henderson #define TCG_TARGET_HAS_tst              1
768ae72b38SRichard Henderson 
77d9336b72SRichard Henderson #define TCG_TARGET_extract_valid(type, ofs, len)   1
78d9336b72SRichard Henderson #define TCG_TARGET_sextract_valid(type, ofs, len)  1
79*6482e9d2SRichard Henderson #define TCG_TARGET_deposit_valid(type, ofs, len)   1
80d9336b72SRichard Henderson 
818ae72b38SRichard Henderson #endif
82