xref: /qemu/tcg/i386/tcg-target-con-str.h (revision ffd642cb2ca25262342311a3bf2e8a77a00e6dfd)
1358b4923SRichard Henderson /* SPDX-License-Identifier: MIT */
2358b4923SRichard Henderson /*
3358b4923SRichard Henderson  * Define i386 target-specific operand constraints.
4358b4923SRichard Henderson  * Copyright (c) 2021 Linaro
5358b4923SRichard Henderson  *
6358b4923SRichard Henderson  */
7358b4923SRichard Henderson 
8358b4923SRichard Henderson /*
9358b4923SRichard Henderson  * Define constraint letters for register sets:
10358b4923SRichard Henderson  * REGS(letter, register_mask)
11358b4923SRichard Henderson  */
12358b4923SRichard Henderson REGS('a', 1u << TCG_REG_EAX)
13358b4923SRichard Henderson REGS('b', 1u << TCG_REG_EBX)
14358b4923SRichard Henderson REGS('c', 1u << TCG_REG_ECX)
15358b4923SRichard Henderson REGS('d', 1u << TCG_REG_EDX)
16358b4923SRichard Henderson REGS('S', 1u << TCG_REG_ESI)
17358b4923SRichard Henderson REGS('D', 1u << TCG_REG_EDI)
18358b4923SRichard Henderson 
19358b4923SRichard Henderson REGS('r', ALL_GENERAL_REGS)
20358b4923SRichard Henderson REGS('x', ALL_VECTOR_REGS)
21358b4923SRichard Henderson REGS('q', ALL_BYTEL_REGS)     /* regs that can be used as a byte operand */
22358b4923SRichard Henderson REGS('L', ALL_GENERAL_REGS & ~SOFTMMU_RESERVE_REGS)  /* qemu_ld/st */
23*33aba058SRichard Henderson REGS('s', ALL_BYTEL_REGS & ~SOFTMMU_RESERVE_REGS)    /* qemu_st MO_8 data */
24358b4923SRichard Henderson 
25358b4923SRichard Henderson /*
26358b4923SRichard Henderson  * Define constraint letters for constants:
27358b4923SRichard Henderson  * CONST(letter, TCG_CT_CONST_* bit set)
28358b4923SRichard Henderson  */
29358b4923SRichard Henderson CONST('e', TCG_CT_CONST_S32)
30358b4923SRichard Henderson CONST('I', TCG_CT_CONST_I32)
31d8387f0eSRichard Henderson CONST('O', TCG_CT_CONST_ZERO)
32d3d1c30cSRichard Henderson CONST('T', TCG_CT_CONST_TST)
33358b4923SRichard Henderson CONST('W', TCG_CT_CONST_WSZ)
34358b4923SRichard Henderson CONST('Z', TCG_CT_CONST_U32)
35