xref: /openbmc/qemu/tcg/sparc64/tcg-target-has.h (revision 32a97c5d05c5deb54a42315d48cecf86cbeadaf4)
166ba44cfSRichard Henderson /* SPDX-License-Identifier: MIT */
266ba44cfSRichard Henderson /*
366ba44cfSRichard Henderson  * Define target-specific opcode support
466ba44cfSRichard Henderson  * Copyright (c) 2008 Fabrice Bellard
566ba44cfSRichard Henderson  */
666ba44cfSRichard Henderson 
766ba44cfSRichard Henderson #ifndef TCG_TARGET_HAS_H
866ba44cfSRichard Henderson #define TCG_TARGET_HAS_H
966ba44cfSRichard Henderson 
1066ba44cfSRichard Henderson #if defined(__VIS__) && __VIS__ >= 0x300
1166ba44cfSRichard Henderson #define use_vis3_instructions  1
1266ba44cfSRichard Henderson #else
1366ba44cfSRichard Henderson extern bool use_vis3_instructions;
1466ba44cfSRichard Henderson #endif
1566ba44cfSRichard Henderson 
1666ba44cfSRichard Henderson /* optional instructions */
1766ba44cfSRichard Henderson #define TCG_TARGET_HAS_div_i32		1
1866ba44cfSRichard Henderson #define TCG_TARGET_HAS_rem_i32		0
1966ba44cfSRichard Henderson #define TCG_TARGET_HAS_rot_i32          0
2066ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext8s_i32        0
2166ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext16s_i32       0
2266ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext8u_i32        0
2366ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext16u_i32       0
2466ba44cfSRichard Henderson #define TCG_TARGET_HAS_bswap16_i32      0
2566ba44cfSRichard Henderson #define TCG_TARGET_HAS_bswap32_i32      0
2666ba44cfSRichard Henderson #define TCG_TARGET_HAS_not_i32          1
2766ba44cfSRichard Henderson #define TCG_TARGET_HAS_andc_i32         1
2866ba44cfSRichard Henderson #define TCG_TARGET_HAS_orc_i32          1
2966ba44cfSRichard Henderson #define TCG_TARGET_HAS_eqv_i32          0
3066ba44cfSRichard Henderson #define TCG_TARGET_HAS_nand_i32         0
3166ba44cfSRichard Henderson #define TCG_TARGET_HAS_nor_i32          0
3266ba44cfSRichard Henderson #define TCG_TARGET_HAS_clz_i32          0
3366ba44cfSRichard Henderson #define TCG_TARGET_HAS_ctz_i32          0
3466ba44cfSRichard Henderson #define TCG_TARGET_HAS_ctpop_i32        0
3566ba44cfSRichard Henderson #define TCG_TARGET_HAS_extract2_i32     0
3666ba44cfSRichard Henderson #define TCG_TARGET_HAS_negsetcond_i32   1
3766ba44cfSRichard Henderson #define TCG_TARGET_HAS_add2_i32         1
3866ba44cfSRichard Henderson #define TCG_TARGET_HAS_sub2_i32         1
3966ba44cfSRichard Henderson #define TCG_TARGET_HAS_mulu2_i32        1
4066ba44cfSRichard Henderson #define TCG_TARGET_HAS_muls2_i32        1
4166ba44cfSRichard Henderson #define TCG_TARGET_HAS_muluh_i32        0
4266ba44cfSRichard Henderson #define TCG_TARGET_HAS_mulsh_i32        0
4366ba44cfSRichard Henderson #define TCG_TARGET_HAS_qemu_st8_i32     0
4466ba44cfSRichard Henderson 
4566ba44cfSRichard Henderson #define TCG_TARGET_HAS_extr_i64_i32     0
4666ba44cfSRichard Henderson #define TCG_TARGET_HAS_div_i64          1
4766ba44cfSRichard Henderson #define TCG_TARGET_HAS_rem_i64          0
4866ba44cfSRichard Henderson #define TCG_TARGET_HAS_rot_i64          0
4966ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext8s_i64        0
5066ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext16s_i64       0
5166ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext32s_i64       1
5266ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext8u_i64        0
5366ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext16u_i64       0
5466ba44cfSRichard Henderson #define TCG_TARGET_HAS_ext32u_i64       1
5566ba44cfSRichard Henderson #define TCG_TARGET_HAS_bswap16_i64      0
5666ba44cfSRichard Henderson #define TCG_TARGET_HAS_bswap32_i64      0
5766ba44cfSRichard Henderson #define TCG_TARGET_HAS_bswap64_i64      0
5866ba44cfSRichard Henderson #define TCG_TARGET_HAS_not_i64          1
5966ba44cfSRichard Henderson #define TCG_TARGET_HAS_andc_i64         1
6066ba44cfSRichard Henderson #define TCG_TARGET_HAS_orc_i64          1
6166ba44cfSRichard Henderson #define TCG_TARGET_HAS_eqv_i64          0
6266ba44cfSRichard Henderson #define TCG_TARGET_HAS_nand_i64         0
6366ba44cfSRichard Henderson #define TCG_TARGET_HAS_nor_i64          0
6466ba44cfSRichard Henderson #define TCG_TARGET_HAS_clz_i64          0
6566ba44cfSRichard Henderson #define TCG_TARGET_HAS_ctz_i64          0
6666ba44cfSRichard Henderson #define TCG_TARGET_HAS_ctpop_i64        0
6766ba44cfSRichard Henderson #define TCG_TARGET_HAS_extract2_i64     0
6866ba44cfSRichard Henderson #define TCG_TARGET_HAS_negsetcond_i64   1
6966ba44cfSRichard Henderson #define TCG_TARGET_HAS_add2_i64         1
7066ba44cfSRichard Henderson #define TCG_TARGET_HAS_sub2_i64         1
7166ba44cfSRichard Henderson #define TCG_TARGET_HAS_mulu2_i64        0
7266ba44cfSRichard Henderson #define TCG_TARGET_HAS_muls2_i64        0
7366ba44cfSRichard Henderson #define TCG_TARGET_HAS_muluh_i64        use_vis3_instructions
7466ba44cfSRichard Henderson #define TCG_TARGET_HAS_mulsh_i64        0
7566ba44cfSRichard Henderson 
7666ba44cfSRichard Henderson #define TCG_TARGET_HAS_qemu_ldst_i128   0
7766ba44cfSRichard Henderson 
7866ba44cfSRichard Henderson #define TCG_TARGET_HAS_tst              1
7966ba44cfSRichard Henderson 
803dc7e1dbSRichard Henderson #define TCG_TARGET_extract_valid(type, ofs, len) \
813dc7e1dbSRichard Henderson     ((type) == TCG_TYPE_I64 && (ofs) + (len) == 32)
823dc7e1dbSRichard Henderson 
833dc7e1dbSRichard Henderson #define TCG_TARGET_sextract_valid  TCG_TARGET_extract_valid
843dc7e1dbSRichard Henderson 
85*6482e9d2SRichard Henderson #define TCG_TARGET_deposit_valid(type, ofs, len) 0
86*6482e9d2SRichard Henderson 
8766ba44cfSRichard Henderson #endif
88