From patchwork Tue Apr 15 19:24:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 881364 Delivered-To: patch@linaro.org Received: by 2002:adf:f902:0:b0:38f:210b:807b with SMTP id b2csp642628wrr; Tue, 15 Apr 2025 13:19:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUUN3m69QKrMvi0WvfpkfDVKqPgl6dxlSkIYk1Psv0sdtkI1/wMNwHy2855oiS7FeBESpZilQ==@linaro.org X-Google-Smtp-Source: AGHT+IHdMdXCoGK9Wa6252byN5dUJ4X3HovwYJ+nk20TzmqcHCsUydLSqSu4W+y+sY2R/eUjF6PE X-Received: by 2002:a05:620a:2b45:b0:7c3:ca9d:210b with SMTP id af79cd13be357-7c914197d7amr159848685a.6.1744748346843; Tue, 15 Apr 2025 13:19:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1744748346; cv=none; d=google.com; s=arc-20240605; b=Tjmj3YM6IvVV9EsjwRMKXvtf/U0PLbX0YDqz9OxTbHpKa/WH2E6Jy1Dj/ZY8G3g3Hr Fw5SoUQHPaK0xkrWxc7SA8+1JyCunTsZYuOKHXzhm+MX/5uhMTVJMix+Vr+IWUL9W6Im vsnOhjB9uPH99m4deK+6dY2LT1eL5LJk6xhgok7rx4zGy48Iwx2VLdKzXuWNILS4bmdD 52RGtkSk9KlCw2jDPEw7IL6/ZM+hbKoHOy4R732lYN7+DDvoYC4Y6tIiMztZYLyX0hHu bzAtKDpAyvjdWjBmUgUF+ZnoK/F8Q9a2yyDnVW4V4dw7D7YQrsORTp82GMlx2rFO0NaO 8kow== 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:to:from :dkim-signature; bh=g2aEMv6VWYiRAak841rTooQ/oVOB//HHfLEvL0eFv/M=; fh=PnYt+qEB9tAfMKoqBm2xjKOFpYyFFGPudh5cVIoieJM=; b=OyWXfwP7xVk/L2ZeCGK2h55NN9DvEiKzVcpR+7idklE261zSYkFluwWYkktTq7nMVW OcFuj4MF8NbN06tE6NtvmLQJ0q6hD1U5l08MArzYymMqARWWRMkg30w4ds6dhQGcGaOG 8lHUD3cFgxX0uLBXcszabrV/z9aJepvl9qPDlyiy18iMMw8F9egTnZrGPl9EJvuq2pz7 U9RYbtWJTxFJ//Z8TNZFqDpr90MTjA5sW3JeefzfBPAStIq5Qc5MrxptWSm+FhjbXvXO X897W//H8K3ae/nV3yraStFXKXqu1NcIvn2Yk+bdCsNF/gHMLZAQJGevnaZhf2pAf/G0 1jpg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=f2HyIJ2M; 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-7c7a894c80bsi1107256785a.9.2025.04.15.13.19.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 15 Apr 2025 13:19:06 -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=f2HyIJ2M; 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 1u4mHJ-0003GK-BF; Tue, 15 Apr 2025 15:49:10 -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 1u4m9d-0005e9-0J for qemu-devel@nongnu.org; Tue, 15 Apr 2025 15:41:32 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u4m94-0006oL-Td for qemu-devel@nongnu.org; Tue, 15 Apr 2025 15:40:41 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2240b4de12bso81525425ad.2 for ; Tue, 15 Apr 2025 12:40:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744746031; x=1745350831; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g2aEMv6VWYiRAak841rTooQ/oVOB//HHfLEvL0eFv/M=; b=f2HyIJ2Mi4/ZoXoEvvK0x2LF7zVKBvCW6oR3IvcMYF7qiIuBp3gtAUkRKjhZ/a47P5 VzXhXnr2t80Jv42pj8ABKs3Zi8+bX+TiIj+H6v0f1oiNX++izAMnZ6iE1dKENSPLr2pR 5m5dRH94H+jfDclA7LKu0BORGRkYCTx7XAW4KdHr1LPEb3zAGo1q7ugSLEf7Gu7wqu3E Fp+/L2OK1aXoa/pLGgWiGEHYvgDv/3CfT1B1lGewuTFiY5RdyYBDX18wXDpXCA6913P8 oXRwNZS0vLfTDK0f0Rj8jGguP/nm/cz+G4GXpx11okTw6LcFZ2azsHY6F5rE9xHc9GWY wSkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744746031; x=1745350831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g2aEMv6VWYiRAak841rTooQ/oVOB//HHfLEvL0eFv/M=; b=vLqLDLrwmzZZ/ngTHngIy0cLoHgz60At1JzRj0DF8gJ4ycynhEGf2tWniXVojeNqN1 rHJKEWBYU7/paS+ulJaSnf1ttIhJAnAEYC4NXvcmZeApcFgZHkfOcXxV5vo/FPYa306t FLVOvhyhxibgL+R0NTAT0tffvPcA55ryXJqyQbTPBoalPwQszwMWpv09cHy3sGa4DFpZ +U/Yn+igQX4LMf32ILu0fZO/RCKigor9L73Awb5BCzRokIoSR3UzLQiOW22RQjqK/lYl Jp6m45839johoy/qSFX8NQ+TmD7uduxYTQdDJjFQuXC5g1/AULoctzQ50ZqTEI1p9Lky MFtQ== X-Gm-Message-State: AOJu0YwHqG5L2r/9pM66ARGt0JncdkpEw6ihwHg/pbg+T2XqyXDp0X4q thav63iwUHwLYa9VIToTjhdmslRqJ5CJ++WL2TZ1vHEmPuTmk8pCz5DeTokNNPn7gNsLws0hw1X t X-Gm-Gg: ASbGncstopj5qxZLfcLO+83gSOlnD4VJv818AnOjl450OAn1WdWV3fR987ta5oj6fvC xkkmE1fOLNY3zMmbmsRGmLoh5TiV8yVSBI6DhU1q6MRNjz+03jVtAkHfx+e1wdleZAYiavEckhX H60ribI7IhzQwsopxdN+QyI6c1J6DGwXU2Vekq/5frH1Smm6qkQmot/1ZJpLK/aDhkxNJPr7yNN Hwn/9f9gDisaEw7kHJZBoa8IGetyPOCbgT3uXm+CP3iKp9yhGpqJ+/jc9Hrm+I695wiZkUijrWE 5X8T/JYqm22qMWCgYNeaiJ4c5mPxzVumWHSjp5aM89okeJOiv+JH0SJ3Sck8mami139aKgO6j7w = X-Received: by 2002:a17:903:1a26:b0:223:37ec:63d5 with SMTP id d9443c01a7336-22c319f683amr6756645ad.28.1744745573568; Tue, 15 Apr 2025 12:32:53 -0700 (PDT) Received: from stoup.. (71-212-47-143.tukw.qwest.net. [71.212.47.143]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22ac7ccbd5esm122062355ad.248.2025.04.15.12.32.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Apr 2025 12:32:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 116/163] tcg/optimize: With two const operands, prefer 0 in arg1 Date: Tue, 15 Apr 2025 12:24:27 -0700 Message-ID: <20250415192515.232910-117-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250415192515.232910-1-richard.henderson@linaro.org> References: <20250415192515.232910-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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 For most binary operands, two const operands fold. However, the add/sub carry opcodes have a third input. Prefer "reg, zero, const" since many risc hosts have a zero register that can fit a "reg, reg, const" insn format. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- tcg/optimize.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index 1b3d0b5b5d..442f5b75e6 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -725,12 +725,18 @@ static int do_constant_folding_cond(TCGType type, TCGArg x, #define NO_DEST temp_arg(NULL) +static int pref_commutative(TempOptInfo *ti) +{ + /* Slight preference for non-zero constants second. */ + return !ti_is_const(ti) ? 0 : ti_const_val(ti) ? 3 : 2; +} + static bool swap_commutative(TCGArg dest, TCGArg *p1, TCGArg *p2) { TCGArg a1 = *p1, a2 = *p2; int sum = 0; - sum += arg_is_const(a1); - sum -= arg_is_const(a2); + sum += pref_commutative(arg_info(a1)); + sum -= pref_commutative(arg_info(a2)); /* Prefer the constant in second argument, and then the form op a, a, b, which is better handled on non-RISC hosts. */ @@ -745,10 +751,10 @@ static bool swap_commutative(TCGArg dest, TCGArg *p1, TCGArg *p2) static bool swap_commutative2(TCGArg *p1, TCGArg *p2) { int sum = 0; - sum += arg_is_const(p1[0]); - sum += arg_is_const(p1[1]); - sum -= arg_is_const(p2[0]); - sum -= arg_is_const(p2[1]); + sum += pref_commutative(arg_info(p1[0])); + sum += pref_commutative(arg_info(p1[1])); + sum -= pref_commutative(arg_info(p2[0])); + sum -= pref_commutative(arg_info(p2[1])); if (sum > 0) { TCGArg t; t = p1[0], p1[0] = p2[0], p2[0] = t;