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