0e95be93c1
Adjust the constraints to allow any int32_t for immediate addition. Split immediate adds into addu16i + addi, which covers quite a lot of the immediate space. For the hole in the middle, load the constant into TMP0 instead. Reviewed-by: WANG Xuerui <git@xen0n.name> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
29 lines
666 B
C
29 lines
666 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Define LoongArch target-specific operand constraints.
|
|
*
|
|
* Copyright (c) 2021 WANG Xuerui <git@xen0n.name>
|
|
*
|
|
* Based on tcg/riscv/tcg-target-con-str.h
|
|
*
|
|
* Copyright (c) 2021 Linaro
|
|
*/
|
|
|
|
/*
|
|
* Define constraint letters for register sets:
|
|
* REGS(letter, register_mask)
|
|
*/
|
|
REGS('r', ALL_GENERAL_REGS)
|
|
REGS('L', ALL_GENERAL_REGS & ~SOFTMMU_RESERVE_REGS)
|
|
|
|
/*
|
|
* Define constraint letters for constants:
|
|
* CONST(letter, TCG_CT_CONST_* bit set)
|
|
*/
|
|
CONST('I', TCG_CT_CONST_S12)
|
|
CONST('J', TCG_CT_CONST_S32)
|
|
CONST('U', TCG_CT_CONST_U12)
|
|
CONST('Z', TCG_CT_CONST_ZERO)
|
|
CONST('C', TCG_CT_CONST_C12)
|
|
CONST('W', TCG_CT_CONST_WSZ)
|