From patchwork Fri Apr 25 21:52:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 884455 Delivered-To: patch@linaro.org Received: by 2002:a5d:474d:0:b0:38f:210b:807b with SMTP id o13csp4177552wrs; Fri, 25 Apr 2025 14:58:46 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXBtPgGsknR8im5zBQTYPc4Zx2ZoU3zfxBjEtltLl8/fyTXZqM52wiPG2F9gwknpJgVwg4j8g==@linaro.org X-Google-Smtp-Source: AGHT+IG4HQcj/St9/IpoKBKmQMV+epW84CRD5X8QFBa4sfnwtxieJjyF1Z6pUJwOzaH1EdMSLJiE X-Received: by 2002:a05:620a:1a08:b0:7c5:a542:10f with SMTP id af79cd13be357-7c96078774dmr638953685a.35.1745618326424; Fri, 25 Apr 2025 14:58:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1745618326; cv=none; d=google.com; s=arc-20240605; b=b58N3v0SbdemUScWfKfy9MVVDSoT62jq7gulfPE8AHg58SEwEpSLPx0sRB4OGdjMt2 Qf6ItzLqvOmSVxDgjLGTocIrqiaZFNLUTBpuh1Yh85vCtcFoea/frfh0JEFVX7pmKze4 aTKMvSd7UNe6itHYf8cKCtCh1SU4c0YbEIMdWopzYndMOa05OTa1wr1UpZpdfogmteh7 sISUA1pmAFmu7Oq6xCV6dGnLOiWlxxlHSWfYpMaWyv05fqf3QbUPkviz57MtOs3cyBAV Jdy0Ik/zY1IALE7cOW3hKvRYhMPVbA/nCIDymz9MBmgdWTkMaWneXa966UtyZgplhwmh 6KDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=jJ49qOggxaOALZDDdCCbdOb8Gq8YmHGfvvakgW39fM8=; fh=kQadAhxV42GJ3cd2VUw1RyURv/zJQGvmUdF7iLEVTtc=; b=VL2vMxEoSZtdVzsd1pKejhbrTW9uUkIrEzk1Dx1ffhWb+LHxwl5rWXaSZ1vy94JufX gpQUALbqwVzeT3r3Lrycm7hOJOljAJmG8t/HmI20HIrPXzHnf/d2N5HDfZwK174DcAU4 sj/6jSDXdJZiKKoCgZ7/2G/dbGoaPPVieprdntWk43d4/XiwMbkXCcOMvsLcRvwf/saU 40cE5OT8ijRhc+xJwlA8FLN1lEvSRwqi60lYftciQpKVXkIUvHlqs7J9n2rsbJY4+eS2 JlYKd9BTU62E+RHDMr4egrMFPUyfzCKLbvgTXTkaY7Kq/+BBEDyRwvfswXwffVw9vI4d J2SA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cTRXWon8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7c958c9cab5si453545485a.51.2025.04.25.14.58.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 25 Apr 2025 14:58:46 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cTRXWon8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u8R0j-0007Eo-9q; Fri, 25 Apr 2025 17:55:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u8R0f-0007Cn-BT for qemu-devel@nongnu.org; Fri, 25 Apr 2025 17:55:01 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u8R0c-0000ID-2A for qemu-devel@nongnu.org; Fri, 25 Apr 2025 17:55:01 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-736a72220edso2826925b3a.3 for ; Fri, 25 Apr 2025 14:54:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745618096; x=1746222896; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jJ49qOggxaOALZDDdCCbdOb8Gq8YmHGfvvakgW39fM8=; b=cTRXWon8vVWyS+dSzwBy5jHQ1zDCbDjdeKIRssqeNq4mK6cYlzS7TNMZjddv8U3uA9 /gv8fMLhFiXSLSuz61hd7iw9mU/5l5N9vBLL5FR+GFVs6oU5KPmEI5vJj2oSE7ioSxra vBLOd4taX7JInkKirqpXNuvm52K7Oz27kTo18+3Ubzeh+5aTYw5DxDX0/LxxZDcbH8dG HfeCXDSvbO/Iw5T6lTIsjeAz1NoktM178fh74n40N+Z/e2Nvcq6hfdZRtFd2/WdCYMcu NXJp1vRRErELIgU16gnNO9Owx4C/LFTN5nMW7JGhkpTCnRnaZ5IEyov1rfMNxF4JYXts aukA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745618096; x=1746222896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jJ49qOggxaOALZDDdCCbdOb8Gq8YmHGfvvakgW39fM8=; b=JhBFvMua0Oh0rNt4Je1y4qB38deu4IpNUqHvEYUOQT4jd1cRBjBhUV3pcgf6LMKaXC zMqsG9jcL1OM4n3Gc0GDo+yJinTdRjGjw5bsnvVLFRRLWgby8DiSiPznmGa38EoBlTYk 7LLfDBALC7IwlpVw5d2OndpCRfygnTOxJ2Uqnedz0Clk9qpbkHbQDPZQ+dEeYeBc51rw 7I1A7Lja0/1iP40oZPYg1/InHdgth8FvV6Oy6TAFTuC1j47MZcbCD2iDChvN71KDVUZF ksvsK1zynbIU8SZGozve8COqpjABXBiit4vY0ht+DtMil3BvGaFozB6FeL3SKZqvg0m6 mV6A== X-Gm-Message-State: AOJu0Yx4RGLqRa1+3Ad6huLDnFswVTZr6SQVkUGIq3wXdMuVtjZTqM2N FasfOBHREef3A0+V6MFEQoXKDzhagS7F895VkBbq9ZdsNCpzwds56mN2txv09mEss+wtw8I3vfN A X-Gm-Gg: ASbGncukjUYgcngBAN7L10IMq6DlIP9A2NinNzw2mWyqdOcyAgbzBUeTWbfsFVVDEOw PCYHo3WCeWGkCQOyiNW1SK9gcDtHw+gwKjKoJZDZKedyF4XbQDCn2+gTv9XrKAi/XVdBYrj3q/q bRMBFpC1ULBUNKqhs8zYelXMFhzXGpKCrBZh0wM+A7tyVCZzwD8BcRibrSK8wiPVOzoB9kGPihM H2lWW0qWFMfxLbzIcz5Rvl59UBK8UPy0c46RbvfiScqf22u4P5OMJ3hqcS//poT9lbZdOCH8JFE U6n3YKVsGJttFFBbj+QAMVa87SNWXcXXeEWAYtFb7QlGWQpl6M2zHRTviPG2UkvIt4ywgvm6EDa G6AtpMFh3Ow== X-Received: by 2002:a05:6a00:2382:b0:730:99cb:7c2f with SMTP id d2e1a72fcca58-73fd6fdd3aemr4716462b3a.6.1745618096351; Fri, 25 Apr 2025 14:54:56 -0700 (PDT) Received: from stoup.. (71-212-47-143.tukw.qwest.net. [71.212.47.143]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73e259414b0sm3664392b3a.48.2025.04.25.14.54.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 14:54:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 002/159] tcg/loongarch64: Improve constraints for TCG_CT_CONST_VCMP Date: Fri, 25 Apr 2025 14:52:16 -0700 Message-ID: <20250425215454.886111-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250425215454.886111-1-richard.henderson@linaro.org> References: <20250425215454.886111-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Use the TCGCond given to tcg_target_const_match to exactly match the supported constant. Adjust the code generation to assume this has been done -- recall that encode_*_insn contain assertions that the constants are valid. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.c.inc | 38 ++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc index 740b7c264d..879f66f255 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -213,8 +213,18 @@ static bool tcg_target_const_match(int64_t val, int ct, } if (ct & (TCG_CT_CONST_VCMP | TCG_CT_CONST_VADD)) { int64_t vec_val = sextract64(val, 0, 8 << vece); - if ((ct & TCG_CT_CONST_VCMP) && -0x10 <= vec_val && vec_val <= 0x1f) { - return true; + if (ct & TCG_CT_CONST_VCMP) { + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_LE: + case TCG_COND_LT: + return -0x10 <= vec_val && vec_val <= 0x0f; + case TCG_COND_LEU: + case TCG_COND_LTU: + return 0x00 <= vec_val && vec_val <= 0x1f; + default: + return false; + } } if ((ct & TCG_CT_CONST_VADD) && -0x1f <= vec_val && vec_val <= 0x1f) { return true; @@ -2029,28 +2039,22 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc, * Try vseqi/vslei/vslti */ int64_t value = sextract64(a2, 0, 8 << vece); - if ((cond == TCG_COND_EQ || - cond == TCG_COND_LE || - cond == TCG_COND_LT) && - (-0x10 <= value && value <= 0x0f)) { + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_LE: + case TCG_COND_LT: insn = cmp_vec_imm_insn[cond][lasx][vece]; tcg_out32(s, encode_vdvjsk5_insn(insn, a0, a1, value)); break; - } else if ((cond == TCG_COND_LEU || - cond == TCG_COND_LTU) && - (0x00 <= value && value <= 0x1f)) { + case TCG_COND_LEU: + case TCG_COND_LTU: insn = cmp_vec_imm_insn[cond][lasx][vece]; tcg_out32(s, encode_vdvjuk5_insn(insn, a0, a1, value)); break; + default: + g_assert_not_reached(); } - - /* - * Fallback to: - * dupi_vec temp, a2 - * cmp_vec a0, a1, temp, cond - */ - tcg_out_dupi_vec(s, type, vece, TCG_VEC_TMP0, a2); - a2 = TCG_VEC_TMP0; + break; } insn = cmp_vec_insn[cond][lasx][vece];