From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209240; cv=none; d=zohomail.com; s=zohoarc; b=nEo4vIfFMeUl9RQTkPV0c3/ie32T2ZFZpUHFXf2zNAS8ls/3Xgcvi3Vuw8tHwmW2sKt32LeQICG2jtC2jnftG0d/i8uI+f8Iu3RipCQeQc70sBQ6AvGJg2eGETjFEcqGAXpAK4uXojeK1WUcEfNYDOZcfybWaihFugt0qgE7Of8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209240; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=FvZdbm+xSEpImsGbYt1khkKr3OtBoLuofA6wcAuyBFBhS5vOYGu2DJmr68XAUCoegGKrO/fAOVym1sfae2WbHGoCFEAb6CE59czvAanFKMSf+q7nHN4Fb2G5QBeCG+uKNkDXdShh6VvLt+L0+6HXdO7ktUhSQJt6OG3GknGZqzY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209240954278.1380809391736; Sat, 12 Sep 2026 03:34:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1p-0005LB-3s; Sat, 12 Sep 2026 06:32:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1B-0004ln-Im for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:34 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L19-0007EF-UD for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:33 -0400 Received: by mail-pz2-x0f.google.com with SMTP id d2e1a72fcca58-85469e25187so515352b3a.2 for ; Sat, 12 Sep 2026 03:31:31 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209090; x=1789813890; 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:content-type; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=cCczvxebV30Idhc0yB1SWYTDdACWIY7R31lchxfSV5cxsjpZGAWzQlsjyQ06Cap2g/ kgKM4gHHNS6ADQu4SGSupS/W5Oc43+1ne76hGeyVLNgZ/GnQJwy4X8/unoX0+q8BfDV8 2rbo+2374d3Gk598R48QWB2qennI8UgCLPHIOZ3PqXaaBvbARfGPVsgQ4dqgyMlrhC1d FQmh6nEP6pMNW/KppdgLoG2pxNXksgbADDHPpwrQLHe48rGN8WduqB3aAgdVXY4syUNn JlN1nPsIxz0x4VxCE5lxr15hjNvfpfg7POkWHyDCPqejIST5iVtU7cwZz51Fx8HPWAvr IOCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209090; x=1789813890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=EP0PyCBVwLsBL7c5rEoXs5xPy3EB6KVRAsYwgVv8bax6NA/h+TysLENYas/2tctp/p 689hgVKLAOyPW9xa8yJrnevVt4s9pegBSkz3CBCG81sj6ZYBBv8BrS8dyvgR0RKmObml KU7qFjXdz3c38KOsJco7W0zh9KT6qnmRV8zEkjraDkZoPU9mHpniArwRQCttuw3rw8fj 5sRHltkefLpHeWc3twUKafow+EJpaZb9FPYsZBrQETCLHgGpoA+aapBbUUNlZ/Hia2kA uNoC85G/+mzC8O7Y32RsGE3ZQ6w23FdX5uQ5t9WiNPmO9uVCu7UsU7706ySBVzd51sZL 5gVA== X-Gm-Message-State: AFuF++m8KXObwG6Khzk9sSuaORsF2kc/SZ70xQwLooYRDKoT5Z0yFaWd C0MODysVqTTpx+nssKjRssdYH4Z21748BKw989pTNTYkAcYM1AO4JnASiSsFu0Ty6zSIG2lZKVh kdHLNsDo= X-Gm-Gg: AYBFou0llXjjuNADNYYaezBSAuXtMZp8Wcn3xJ67R5M7LuNWPZG4ms+mABffeVX4zvO MZmSg2r9XU3b+vvGBrOWKukYM1yOBHAZ9aXDDtmUO1J+HeBQ1Bm3GpGU4a94hwXqkBYb7hrh4tH gcRf7KBdBf2PM0hfgpfr9xHD0EFozdlxDcbSTHDgufy2LIuId6zZ8TdTs7WEnFwSH8J0qbX7yW5 RGRrJFz8cvOGH/aCez7oZXufsPE03W0rBFd/Cd1tn3oEtYOF+MKY3qRfO8H/2d0nBB5dED5kvAt JiLxupHNwGcqlynwkYgzAhUToZZ/y9n9ef0rv8/hmXpR3/sIREbUVFt0SLO81FA7WvuXKjiQpYU smk2zHCXiixLFKxcGBwua3CmvdC3cQMMgnqcOA0p6RhEF8vr3XQ3WPzxNY51NrMGinQX/9Nx1v8 2ZTzpVyBzm7MS+V5Tk6vWc6ZdONzh+KPtGwB1BuFVT3tcDraUWOeepbEHn36X0rxfMTyVnepeR0 ik0qNo= X-Received: by 2002:a05:6a20:be8f:b0:3d3:adbf:7782 with SMTP id adf61e73a8af0-3daed4a71damr18993990637.23.1789209090114; Sat, 12 Sep 2026 03:31:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 01/82] include/qemu: Define QEMU_ALIAS Date: Sat, 12 Sep 2026 00:30:05 -1000 Message-ID: <20260912103126.598030-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209242157158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/qemu/compiler.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 4c49f52eb07..614a0bfd295 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -222,6 +222,13 @@ # define QEMU_UNINITIALIZED #endif =20 +/* + * Alias the current function definition to another. + */ + +#define QEMU_ALIAS(N) \ + __attribute__((alias(stringify(glue(__USER_LABEL_PREFIX__, N))))) + /* * http://clang.llvm.org/docs/ThreadSafetyAnalysis.html * --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209130; cv=none; d=zohomail.com; s=zohoarc; b=mMDbqQ0j/305Zr+YUtMvwMjRNbOTwX2Eg6CoC8zdCmF7kuXzyK2Jz2+YmrQNiYguzH8BlNqNa019TdLQoP5g0hG6QRx5HgMHSsmmieFJ5pTd7QtPwQHcga/x/+i6oxf+Oru4FIj+bUTJrdlFloaB4nqPf9Ks8s7nh4wkkjjeyHI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209130; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=OQE9Nc8VhNjvRwje4rD/XJk/FL/Up/4moYJnJCJCp6qZkmns1pl5E41CRm1HJSWy4P8+p5RH97m8mIqREznwCRi/XEFFRPSaNanlvO86c+QhBcRdcCsfijESd1RUQ6EQO5Wv109jO1iWXkBBeKJgfWDIXo5ZkDsHJ/NimKxEKBw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920913079251.980869111278594; Sat, 12 Sep 2026 03:32:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1M-0004nq-9T; Sat, 12 Sep 2026 06:31:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1D-0004m7-6P for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:36 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1A-0007ET-Kh for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:34 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-3964e480f76so2422114a91.1 for ; Sat, 12 Sep 2026 03:31:32 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209091; x=1789813891; 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:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=kk0NldhlghhPZ3q9Q7T0aKXQyD+fw7pxRn28VaZvmihBGz8YBaRpUynaAEnBNgUUz/ s4kYgW+KlnvzFy/5ap3SSuNL0i3RceIMioe/Czwb4IPRkxIfg6eX8gblTDipMrsMTjBT jXx42zXtFpzJykM/7Uf2lzYhgZXoVNscvYPG6oTFykDOW/QRNxAa+/rTRRPxIHgCctg2 XXAqiExh+AaVEcTfyvH68P34lp8KY+S10Xs7lICr7wqREncfA81VD5ZIUc55glWV1DsZ jv2bSlrWO+4SilRV5B+o0ac9apDr7ghbDjObkZ/lsF6Qm4f4TvMwMdT5loFetDB+QGf4 QkOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209091; x=1789813891; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=oyVF+ZZ1/jfLu+QGz2kG0vk/tBRnTy/2yXnlr1vQmr8fC88HOpPkRK2gp0CIsK98li 13yIIAQU2NN9DGOPsfsepBKVoEmaBOT3/zMB1I3xKNvqaXRtI83V3uBrWkPjy8jc2ruG ixu3a4hYivYf83G0tBE0FGFjvnjn+JHCsel72viPzWHAoHXY/ktSloJUbLOBpNFmYfEA fjqJFvyCaiueERAt0xNBkgbf6JEeNCUrwNEjyxDe7U7CzyKJus8dOehwf8EhD4piVH1/ cHD27UoXwqXl87+OKxXPa96p9tjh3lYU4g66+GrztyftpxImcRjyPdCTi0FpoHcvJVvb Sfuw== X-Gm-Message-State: AFuF++leWHjilXL3noE0Uc8y0/QF6y/g0staIkWTHxpg0M8oS79NsQoX p2RX3xBuxBgXbXMzPlcMsg31KNbdnd1uSsoiEieVHQ4E3LfRl8iiEltr78CHM0gu2xWlRlHfpl8 d0RCaNls= X-Gm-Gg: AYBFou3n6ABuT8cHyH0z2ejOQ17h0tBkQuZkqDYHw2zSqmB43bhERZOK5vXHgK+Dbmh dxqHE7W8TmXc+6NC5uMQAfVG38H83A6iPZUlQOwjEGzlLz/rHZSazNFBSDPfkU8+iCH9xqzVeSo mH0LdPhV+ZQoZBpAnzq3Ja53t9ZFbGsXQ9QsfJ9aV5EDrregjrFreAgxW09LPIr5p0RhP61nL+l OJMjB9Ic0SVWA34rxav174LTgXV8Bhmz9o9X7wOb8mW63ti8Hp+z3moKoSpg+yL33Q+PVQfL+hW YMQeaLPIt4x3E0d5/5U3fi28tbNEB6W+gnkgIx43G3RlcLxk8HdZdRhIleE3YqJZJ6E1wlFxDFP RPEMrZTAGgUNnYBTQo8kw7dwx03jX6Hok8qvWg93fd2E36MWIE3HauDndWEuRaMahPaQ/DD60Gn RIyFCkRWyS3LpCcMoCLm5wCHgNVXVfNxWEBUivDpgtJ3hzEIHCEfnkZ+NRyOqFr0hLCfhSbI/7t 9pbl7k= X-Received: by 2002:a17:90a:da8f:b0:396:6344:3b63 with SMTP id 98e67ed59e1d1-39d9bbee490mr13703180a91.2.1789209091073; Sat, 12 Sep 2026 03:31:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 02/82] tcg: Use QEMU_ALIAS to define most tcg_gen_*_ptr Date: Sat, 12 Sep 2026 00:30:06 -1000 Message-ID: <20260912103126.598030-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209131518158500 Content-Type: text/plain; charset="utf-8" Now that we've dropped 32-bit host support, TCGv_ptr is always TCGv_i64. Do not drop the type difference, as that's still helpful conceptually, but define the functions as aliases, exactly sharing code. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 99 +++++-------------------------------- tcg/tcg-op.c | 18 +++++++ 2 files changed, 31 insertions(+), 86 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9b321f959c0..1e826b62574 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -497,95 +497,22 @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGAr= g offset, TCGType t); =20 /* Host pointer ops */ =20 -#if UINTPTR_MAX =3D=3D UINT32_MAX -# define PTR i32 -# define NAT TCGv_i32 -#else -# define PTR i64 -# define NAT TCGv_i64 -#endif - TCGv_ptr tcg_constant_ptr_int(intptr_t x); #define tcg_constant_ptr(X) tcg_constant_ptr_int((intptr_t)(X)) =20 -static inline void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) -{ - glue(tcg_gen_ld_,PTR)((NAT)r, a, o); -} +void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); +void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); =20 -static inline void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) -{ - glue(tcg_gen_st_, PTR)((NAT)r, a, o); -} - -static inline void tcg_gen_discard_ptr(TCGv_ptr a) -{ - glue(tcg_gen_discard_,PTR)((NAT)a); -} - -static inline void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b) -{ - glue(tcg_gen_add_,PTR)((NAT)r, (NAT)a, (NAT)b); -} - -static inline void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b) -{ - glue(tcg_gen_addi_,PTR)((NAT)r, (NAT)a, b); -} - -static inline void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s) -{ - glue(tcg_gen_mov_,PTR)((NAT)d, (NAT)s); -} - -static inline void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s) -{ - glue(tcg_gen_movi_,PTR)((NAT)d, s); -} - -static inline void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, - intptr_t b, TCGLabel *label) -{ - glue(tcg_gen_brcondi_,PTR)(cond, (NAT)a, b, label); -} - -static inline void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_mov_i32((NAT)r, a); -#else - tcg_gen_ext_i32_i64((NAT)r, a); -#endif -} - -static inline void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_extrl_i64_i32((NAT)r, a); -#else - tcg_gen_mov_i64((NAT)r, a); -#endif -} - -static inline void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_extu_i32_i64(r, (NAT)a); -#else - tcg_gen_mov_i64(r, (NAT)a); -#endif -} - -static inline void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_mov_i32(r, (NAT)a); -#else - tcg_gen_extrl_i64_i32(r, (NAT)a); -#endif -} - -#undef PTR -#undef NAT +void tcg_gen_discard_ptr(TCGv_ptr a); +void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b); +void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b); +void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s); +void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s); +void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, + intptr_t b, TCGLabel *label); +void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a); +void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a); +void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a); +void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a); =20 #endif /* TCG_TCG_OP_COMMON_H */ diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2c88f4f7ca9..b738863ea69 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2730,3 +2730,21 @@ void tcg_gen_lookup_and_goto_ptr(void) tcg_gen_op1i(INDEX_op_goto_ptr, TCG_TYPE_PTR, tcgv_ptr_arg(ptr)); tcg_temp_free_ptr(ptr); } + +/* + * We only support 64-bit hosts, so TCGv_ptr always resolves to TCGv_i64. + */ + +void tcg_gen_discard_ptr(TCGv_ptr a) QEMU_ALIAS(tcg_gen_discard_i64); +void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b) QEMU_ALIAS(tcg_ge= n_add_i64); +void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b) QEMU_ALIAS(tcg_g= en_addi_i64); +void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s) QEMU_ALIAS(tcg_gen_mov_i64); +void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s) QEMU_ALIAS(tcg_gen_movi_i64); +void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, intptr_t b, TCGLabel *l= abel) + QEMU_ALIAS(tcg_gen_brcondi_i64); +void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a) QEMU_ALIAS(tcg_gen_ext_i3= 2_i64); +void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a) QEMU_ALIAS(tcg_gen_mov_= i64); +void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a) QEMU_ALIAS(tcg_gen_mov_i= 64); +void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a) QEMU_ALIAS(tcg_gen_extr= l_i64_i32); +void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) QEMU_ALIAS(tcg_gen= _ld_i64); +void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) QEMU_ALIAS(tcg_gen= _st_i64); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209262; cv=none; d=zohomail.com; s=zohoarc; b=dMYD1YAOgPsh0Rh7Zu6HDcJCDIc4UB5MYCftxxHECSn2uOnAyw5411HyjTGWPbs7W8ySaGesy73FiUAZE6M/4xsnYMLBMVhop/1l35udmMbZHZkAJ0CDG2HruNdcCpc51bv7you3uN5hTaEtsg6bwitVJpAo+w2miuoIgDM/yyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209262; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=z7+YBIpmNPsrQ6OostqfxCiUFWEiZyjWzNQs+kE3sk0=; b=QpTIEMvHUYaX0WX+ZAQ76rCxdffoTheDftmEXzaFKCDZNUyYFcVoLgyzS90gX6jhSVVWODUWYSZLdvDSO1TemSueyZJdiV6ooAs0nyssHY6A9vyhVKZ4lTVjhc1dysgIHOY3HxPBpd6kPfdMqnAcP5YzoVnqWMkYAJoTRenNZ34= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209262376155.60275977409458; Sat, 12 Sep 2026 03:34:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1z-0005v9-3q; Sat, 12 Sep 2026 06:32:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1D-0004m8-C0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:36 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1B-0007Ed-Hm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:35 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-398e9698a70so1893005a91.0 for ; Sat, 12 Sep 2026 03:31:33 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209092; x=1789813892; 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:content-type; bh=z7+YBIpmNPsrQ6OostqfxCiUFWEiZyjWzNQs+kE3sk0=; b=jRX2Qj3kCESfNwQ7PL24hj307gQHdOJ5p1tVFk6Mte6Ruwrw3Ga4/V90aNLfYdkDAA P9dZHAdEPPP/wNRGzU2nn/uWGK5ugxV69BiL75PGFfKtCoTJz1NuqtjQyiuZIDS4lmQt feoeE0hhuNM50mbVWsHFg6sKeRDSPANSI+re1VY6eBTCWbU9XcOnoGtC01h+XCJ9Mfl1 ehVjcVj/6IktrPBjRWoYqNF4lorJe+Gr6meNoosfdcFZPk+o7z4+GLkvb+Zk6doG4uKA ijQ6kkQpfFa0A6DbSnZg74y22mxTmLNAcxvnBu2tVQpzUKBVKe+ZN09WQrZTekDvEK6r kVAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209092; x=1789813892; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=z7+YBIpmNPsrQ6OostqfxCiUFWEiZyjWzNQs+kE3sk0=; b=fNn7LV0Wa6SOz2eKXZShbg3vxLHgcwJVBWy2PSX7l+KpBAa8GWhGmlCIiQWkZcfnvA kR7WoJ8QXP8KwTSpZiYJCd70/gGtXZLjGPpsXK+KTFEzaij/bX7dBbULcwuprZYEKU7p gj9m+WGVKcwEKyWnOg9mWK48h1lLFdA/tXiNwrc5yqtJsXDRL8uyNEExT00qvuabjsgY 6kwC8UlOfwCanaDFWbNYpTw385/S5/V7v7znkVZ35PaboJfV9UXdKOatLYFjMUz2CPSS ypQlkobcjqdQgPjmHR+oqI1lBgq/xt1CuXvCtW0gC21VXTKHQXPCzFOzjACu4x3m2dJz hPGQ== X-Gm-Message-State: AFuF++kxguYOvAzKZ84FctpdqAz6CSuIXwJp8u0Iw2xp+hbvsOzfwAHq eDhdY5+SB5WXj1PlFu/HuOIj232H6eWwHrkjKfIXcw80g321JEagQKzCcL1g+pVljnrKyHm2mWT PH4IHuLc= X-Gm-Gg: AYBFou3VjnagBhQLoDnRTFUVgnkJpqBY7rVY2XBTd7SYcgjee/8w5NC9nH4blGVheAG Db+v27KoCAIP+H21qxEnA9c2fVdV///ykl7U5/1L0VQ7MFuKW0nVHYmiDNgV2rqk/9nz5HHUgso 3mLpjo4ba4b08sTLYBZXGsif1/ffMyZ46bISzUaTexdPejcyYvKngb1s8zrFc+UasTJtKizu6JT IXdtaSIm+MyfGq/4KN2uCOh9jMQvQhIs1gZdoAKbpOcQhhGFViD030ChE9nEz14wHV9gpSpPj0V 7D14Si64YYSUAypa6TWkRvLkeLm0200ztbRL2vEMSLV8HbHnEyEXeji9AF+V+PmO0pafV0oThlA YkBJ56XJqywsLIgHJWliKyK9ZoBNzkrvAE7ERuZrvgn5WVtEDmTV4iP0JdedEh1K9WLhC0gWJ1+ z/oRemOHjpqqOrRr3utiGHZ//2ClnR4E5r46Cx4cmB35BC1N695ZcEb8SMcZVd5lf6LzzniDLPW If81lg= X-Received: by 2002:a17:90b:1d0c:b0:398:d292:e6d5 with SMTP id 98e67ed59e1d1-39d9c35972cmr14746944a91.24.1789209091952; Sat, 12 Sep 2026 03:31:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 03/82] tcg: Generic expansion of tcg_gen_mov_* Date: Sat, 12 Sep 2026 00:30:07 -1000 Message-ID: <20260912103126.598030-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209264133158500 Content-Type: text/plain; charset="utf-8" Begin sharing code in the expansion of operations for various TCG types. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 13 +++++++-- include/tcg/tcg-op-def.h.inc | 29 ++++++++++++++++++ include/tcg/tcg-op-def2.h.inc | 3 ++ tcg/tcg-op.c | 55 ++++++++++++++++++++++++++--------- 4 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 include/tcg/tcg-op-def.h.inc create mode 100644 include/tcg/tcg-op-def2.h.inc diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1e826b62574..2f5276c8a2c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -88,6 +88,17 @@ void tcg_gen_lookup_and_goto_ptr(void); void tcg_gen_plugin_cb(unsigned from); void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo); =20 +/* + * Construct operations from templates. + */ + +#define DEF_RR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b); + +#include "tcg-op-def.h.inc" + +#undef DEF_RR + /* 32 bit ops */ =20 void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg); @@ -172,7 +183,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); =20 void tcg_gen_discard_i32(TCGv_i32 arg); -void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg); =20 void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); @@ -294,7 +304,6 @@ void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_= i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 void tcg_gen_discard_i64(TCGv_i64 arg); -void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc new file mode 100644 index 00000000000..a24fb3d7372 --- /dev/null +++ b/include/tcg/tcg-op-def.h.inc @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: MIT */ + +#define TEXT _i32 +#define TYPE TCG_TYPE_I32 +#define TCGV TCGv_i32 +#define TINT int32_t +#define TTMP tcgv_i32_temp + +#include "tcg-op-def2.h.inc" + +#undef TEXT +#undef TYPE +#undef TCGV +#undef TINT +#undef TTMP + +#define TEXT _i64 +#define TYPE TCG_TYPE_I64 +#define TCGV TCGv_i64 +#define TINT int64_t +#define TTMP tcgv_i64_temp + +#include "tcg-op-def2.h.inc" + +#undef TEXT +#undef TYPE +#undef TCGV +#undef TINT +#undef TTMP diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc new file mode 100644 index 00000000000..86777f54bad --- /dev/null +++ b/include/tcg/tcg-op-def2.h.inc @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: MIT */ + +DEF_RR(mov) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b738863ea69..eda87960380 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -104,6 +104,11 @@ TCGOp * NI tcg_gen_op6(TCGOpcode opc, TCGType type, TC= GArg a1, TCGArg a2, return op; } =20 +static void gen_op_tt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t= 1) +{ + tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -315,6 +320,42 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) tcg_gen_op2(INDEX_op_plugin_mem_cb, 0, tcgv_i64_arg(addr), meminfo); } =20 +/* + * Forward declarations of generic expansions. + */ + +#define DEF_RR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *); + +#include "tcg/tcg-op-def2.h.inc" + +#undef DEF_RR + +/* + * Generic expansions for templated operations. + * We have used compiler type checks to ensure all operands + * are of the proper type. + */ + +static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (src !=3D dst) { + gen_op_tt(INDEX_op_mov, type, dst, src); + } +} + +/* + * Templated operations. + */ + +#define DEF_RR(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b)); } + +#include "tcg/tcg-op-def.h.inc" + +#undef DEF_RR + /* 32 bit ops */ =20 void tcg_gen_discard_i32(TCGv_i32 arg) @@ -322,13 +363,6 @@ void tcg_gen_discard_i32(TCGv_i32 arg) tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); } =20 -void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (ret !=3D arg) { - tcg_gen_op2_i32(INDEX_op_mov, ret, arg); - } -} - void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) { tcg_gen_mov_i32(ret, tcg_constant_i32(arg)); @@ -1396,13 +1430,6 @@ void tcg_gen_discard_i64(TCGv_i64 arg) tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); } =20 -void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (ret !=3D arg) { - tcg_gen_op2_i64(INDEX_op_mov, ret, arg); - } -} - void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) { tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209163; cv=none; d=zohomail.com; s=zohoarc; b=l0Kwmv7qLfwejCOZGjuWXXLS9d7uExHUta2EOIgikLFmqXFTu30jJpg98nqkUueBvthPQ5mnGhtPmqAl4zjaeUbi4gWtvZ3SGH5SOoo2XejK/BuLO3mK0JCfWCaYoeYEe8oK0icE/HAGAsPpJcsxjv3/ct1FFWpn9rGw+CDTlxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209163; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5xwW0Lb28rG5ga8WDMmmpMcOZqn2Xho9+epymClznXU=; b=jj9njM00nbbU96pfXvD6ARSxwcYbWdY0zrKW0TstSabDQA9O1qnDfudgnyfA7vGlxcWWJfNQ1/y63qfVwsdt2N5akXSx+XGDFzIsYcAcWm0x7//5nwN2TXVlgcj0tk2n2lCfVyrWswIwsThcOQDn5QYNgPkhYAyigO+s75RUeCI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209163120644.8731005211896; Sat, 12 Sep 2026 03:32:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0004oA-Kq; Sat, 12 Sep 2026 06:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1E-0004mB-86 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:36 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1C-0007Ew-G0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:35 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d90ba1d807so9499445ad.3 for ; Sat, 12 Sep 2026 03:31:34 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209093; x=1789813893; 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:content-type; bh=5xwW0Lb28rG5ga8WDMmmpMcOZqn2Xho9+epymClznXU=; b=NoO+bIjxk2nl2S9q15aaJTC59+x2mlDeMKCoPMUodGADKw+eonrROZaa92ecif6E66 UhvlioARQrDRJImHUqqeiPUqmIM0YRMu+McTzqogZSertlh2Agz367wnmQinQAQw5RoP q0iJU+8fVjQpQYa2BP6P4hSqpmJlHvyzwywhi7CuvJ/7JWekNmPEj+abJDEgMB+bVrPn C+gax864dzZHS48wgUqiWWqcUYVht9lA9Abo7m2bqji1kQtohk4+cXCZdJbuBjmhagx9 kTPtegpmCiwd8SqcY6B0LRsvq/Nu21MtHxHBD8/TbpK4BTGVvIMbTjgLdN2PJkJCj14t IiCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209093; x=1789813893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5xwW0Lb28rG5ga8WDMmmpMcOZqn2Xho9+epymClznXU=; b=jwUePJlK0bJaXz9uKQZwfQ06sUErAJQUY6ZTLXDUWKCqsiypMOe7Ddwdnw14zQWIWy +l7QxxMzX6EmzmFI0lsELcj0xeg3cwe2veTnQt1DWmuzk18RBT/1in0GD7R7cuxA5Xnx mJu18dcJPVYK8sN8CVho9FaZCuZ0g4qw8uMJbJPBb3YmilqYP7Sm9I1hMCm7cbowREjA 4HyQ6Gn4rmkiuiV+NHLOexm771TYNJSnxBQUZVzAbsjUSGAenCasxDrG3ovlDs8u8QLk B6phpJsWaOPL2jk8DgALsuRIWnWJtMtQkRi3lmhG9xdhtdAng1BZFSHsbghrjpKl1vTI 6QJA== X-Gm-Message-State: AFuF++nvIu9LvXDp54vWbys3FZDtRl3ollIioG5+Oz6pcYVvS94h9Twh PRepnEJuc4GNUFaXQxo9WB41jn4JiTL3Wpb+YXagnz4aKHwgE60IAsKNs9rdU3fKLim7S5aD6Q1 B+ZDz X-Gm-Gg: AYBFou3XZw8+hD6j+SmjQqtuTf3m8wBzwfoO/3vH/c/2g3jvdsTGHzNPK1ckkIsXR/z nv88rntrfh+jrxW/ahtMS6U2MlHi0k+l/jh3WD+aNJ22f6AIsp1Vo82mJD8btnr6qgFQOpsA/U8 eae/6LTVX3HSlsqxGS/Z4fn8yvjIlI0dxUJD0Y6QB7p6FDnEE8PnK3brIcoeVGj8td+lPm7cpww dYEoFeAO3YBUx9A0IcSZokpfcXLgDAd4coan3v1RL2rrCnkPi15N5ZZEBpOZBxJvJ3CuA0xq+rq JkRLqBxYZxFMB7EQWtKSbxVEf4wgVZWEItyGjd2y7ryngTUIdl+bQkZsylA+5yKXn0Q7cLLaqB1 oX69+t54dxHYoUv9pgzzq9wzcM7WDN+IvqbA+rY+JC1Vc6excRRzcvArkfl1V4busC9/5H+A75E 9OiR4+2Bw5vJqZ8Xv092o74tlG33L3DiNy90wtTZRYTnzEt2XdbAr+nj9bRjFupLNrXDLslKtza 6VTA3A= X-Received: by 2002:a17:90b:3147:b0:398:ab03:95b2 with SMTP id 98e67ed59e1d1-39d9bee5d69mr14202802a91.10.1789209092860; Sat, 12 Sep 2026 03:31:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 04/82] tcg: Generic expansion of tcg_gen_movi_* Date: Sat, 12 Sep 2026 00:30:08 -1000 Message-ID: <20260912103126.598030-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209163720158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 24 ++++++++++++++---------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2f5276c8a2c..5fc8b43d083 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -95,13 +95,16 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b); =20 +#define DEF_RI(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b); + #include "tcg-op-def.h.inc" =20 #undef DEF_RR +#undef DEF_RI =20 /* 32 bit ops */ =20 -void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg); void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -208,7 +211,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg); void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 86777f54bad..0f8ee5f9976 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,3 +1,4 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF_RI(movi) DEF_RR(mov) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index eda87960380..8350110ebae 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -327,9 +327,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) #define DEF_RR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *); =20 +#define DEF_RI(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_RR +#undef DEF_RI =20 /* * Generic expansions for templated operations. @@ -344,6 +348,11 @@ static void gen_mov(TCGType type, TCGTemp *dst, TCGTem= p *src) } } =20 +static void gen_movi(TCGType type, TCGTemp *dst, int64_t src) +{ + gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); +} + /* * Templated operations. */ @@ -352,9 +361,14 @@ static void gen_mov(TCGType type, TCGTemp *dst, TCGTem= p *src) DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b)); } =20 +#define DEF_RI(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b) \ + { gen_##NAME(TYPE, TTMP(a), b); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_RR +#undef DEF_RI =20 /* 32 bit ops */ =20 @@ -363,11 +377,6 @@ void tcg_gen_discard_i32(TCGv_i32 arg) tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); } =20 -void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) -{ - tcg_gen_mov_i32(ret, tcg_constant_i32(arg)); -} - void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); @@ -1430,11 +1439,6 @@ void tcg_gen_discard_i64(TCGv_i64 arg) tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); } =20 -void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) -{ - tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); -} - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209161; cv=none; d=zohomail.com; s=zohoarc; b=eiha6MSbLJp7ffj2R22orJbIqDLc3gwmJ+mm1JH1wqFKK54DarOEe482RgXqACKjzwP1XnPZ+0VAJ0cN3DQiRnWjriGhpTK+BAYEBdoFhWvnUuF5DsQV8eD+VhlNhXTdc5bc5SCq1D0PohUwXMMd+XjuXeHnInHDpAj/YMhefCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209161; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=AaerkQwBwop4pHWbYWDAQ1y16TgWLuxxI5C3BWXAulU=; b=GRFQIWQ6OTyhFTY6Fl7NXHhKFi7XVxawINQE9kQldYvC2U+XS3z7Cyu0QaODvbZWWDn616YiePHud1sl0glayjdeAfew2k0MQZ9AwHJOrwjT2sD/xkaFeIX+ufWLvRJCOVEL7eNw5mqjeQCBBTwF03fxjf6nHM77/Z4K+KzYKIw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209161743395.78242239700046; Sat, 12 Sep 2026 03:32:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0004o9-JH; Sat, 12 Sep 2026 06:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1F-0004mX-4v for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:38 -0400 Received: from mail-oo1-xc32.google.com ([2607:f8b0:4864:20::c32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1D-0007F8-8b for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:36 -0400 Received: by mail-oo1-xc32.google.com with SMTP id 006d021491bc7-6b128dd0cb1so1212795eaf.3 for ; Sat, 12 Sep 2026 03:31:34 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209094; x=1789813894; 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:content-type; bh=AaerkQwBwop4pHWbYWDAQ1y16TgWLuxxI5C3BWXAulU=; b=Szws1ylF0ihFqCqKN3peh/KQP+wLOlU+BCjEU3s6AH5lDsIogQsa4vRStyOyD3lwaz H7VAZnoCU7RhnsbW2K5ffz+SlxuTEwc4SZQD8TXsmM7tZg9unOTsaLdvyvOaXNMXQsuE SwrG0TWfGZTrQiH/6/59DUqIs4GtcLQXSNkgE3gymvx3UzTeBtvdmDO08pBpCNeZIQK+ 5s5uz6BCui5CSM3AP6iSWbibfSjDGMhASme9q6y3gfBl2PmldDqIFXwgUSDpFaw8/egD TNv//0efOATiR/Xq9q+kndCjVEkuuulwoz9ZPZZUJeeI44QJdY+UsXDRiSArV4QtqWXZ S55w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209094; x=1789813894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=AaerkQwBwop4pHWbYWDAQ1y16TgWLuxxI5C3BWXAulU=; b=dl5pFlq8ciY6upcBm4ZNEUJ+Ez0ADCLpg+l1rX++B+YpB2BzRkzC/YL5B3pnjh7BZN fxQ1dC03rL+6UHshiyZzds3+NzOJrkqc1+inrCgNItcOn69Axvc5nq7/OOkYHwB/xqch eZWrozltQYsmweeklQGgpLhlZOzBMFv49khpXVbVpTwCcTzQKmEqYb4GJpNatJPmXdqg YV03JKeiUikkiDP0WMvDQm5qpLgtL5y1IA51cFqVtMgf1/g1P9TdHDvVCgQ/7V2WCXMk Yi/3oY7xeiz4da4aQA7StM4jxejhER1Xvw843KXrRcSTfOJl3y8tjlrDtMZZVETUrw0n b5Aw== X-Gm-Message-State: AFuF++nGbyGg5Gi95eoCXd/AxbVe7G/uoVhprytvbUKEPXbmbr1lyXcn WmQb03BiZLsjw0/B70dqa/H2UkLGUGTYaRSRjG/EUs7wCVnSuijeIjtpCIYjNLNR27Gu3ihQUI7 tBpHTqEs= X-Gm-Gg: AYBFou0GNmo8+khxwN8YtLLXzu0kaDVlQS9PobA8HIaUY2Nnlu/TiTkP6OA211bg0M3 +yQzRbRTTc5ECJeYmjciy39ThurzfDDTeUrjb4VBtkUyU/XpwK6PWDILWXhxAlgUoEajQCFvqGk ghRZd0VUSv30awfcA2vTi/4uUmpPb7Lu5nqnLEBpzyEwF1Hi1/yiD3NJf1AbX6F0WIEE69JI7rJ PRrGONhBBlI+N9lSURTcPN0/TiMchLaIhAqGGP/xX0CLpcj2PchwwOAWwN+AEwTKWV/A+6TODdB tZ+ocNXa37Mp5MHuMd4GTDOpXvQEU6xtljUY2HRbuZQh1VnlQB6t9fzvqB3/JW8cFT3vS2eoNlP ZfJ+/DnE1sjpu3KQDL6w2XmiexVBPuND1U23u0D4Bx9+F5RcIF09izFxjm4v43ZAbi01x7GWDPD /DrWbwEE0c3Dwx6RqIdBYkhAIyOZt4ZYcmSnZePfXWa2xZ0Wa/gX3Fv9qE53x+7IgY6m2bdgzVQ 4bv3EPp X-Received: by 2002:a05:6820:161f:b0:6be:731b:5544 with SMTP id 006d021491bc7-6c0bc1d6d86mr5683414eaf.37.1789209093705; Sat, 12 Sep 2026 03:31:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 05/82] tcg: Generic expansion of tcg_gen_discard_* Date: Sat, 12 Sep 2026 00:30:09 -1000 Message-ID: <20260912103126.598030-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c32; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc32.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209163717158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 7 ++++--- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 34 ++++++++++++++-------------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 5fc8b43d083..c0de3f9f45e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -92,6 +92,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); * Construct operations from templates. */ =20 +#define DEF_R(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a); + #define DEF_RR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b); =20 @@ -100,6 +103,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 #include "tcg-op-def.h.inc" =20 +#undef DEF_R #undef DEF_RR #undef DEF_RI =20 @@ -185,8 +189,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); /* Replicate a value of size @vece from @in to all the lanes in @out */ void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); =20 -void tcg_gen_discard_i32(TCGv_i32 arg); - void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset= ); @@ -305,7 +307,6 @@ void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 -void tcg_gen_discard_i64(TCGv_i64 arg); void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 0f8ee5f9976..7943746a44a 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF_R(discard) DEF_RI(movi) DEF_RR(mov) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8350110ebae..d796016ca26 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -119,16 +119,6 @@ static void gen_op_tt(TCGOpcode opc, TCGType type, TCG= Temp *t0, TCGTemp *t1) # define DNI #endif =20 -static void DNI tcg_gen_op1_i32(TCGOpcode opc, TCGType type, TCGv_i32 a1) -{ - tcg_gen_op1(opc, type, tcgv_i32_arg(a1)); -} - -static void DNI tcg_gen_op1_i64(TCGOpcode opc, TCGType type, TCGv_i64 a1) -{ - tcg_gen_op1(opc, type, tcgv_i64_arg(a1)); -} - static TCGOp * DNI tcg_gen_op1i(TCGOpcode opc, TCGType type, TCGArg a1) { return tcg_gen_op1(opc, type, a1); @@ -324,6 +314,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) * Forward declarations of generic expansions. */ =20 +#define DEF_R(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *); + #define DEF_RR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *); =20 @@ -332,6 +325,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 #include "tcg/tcg-op-def2.h.inc" =20 +#undef DEF_R #undef DEF_RR #undef DEF_RI =20 @@ -341,6 +335,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +static void gen_discard(TCGType type, TCGTemp *src) +{ + tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -357,6 +356,10 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) * Templated operations. */ =20 +#define DEF_R(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a) \ + { gen_##NAME(TYPE, TTMP(a)); } + #define DEF_RR(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b)); } @@ -367,16 +370,12 @@ static void gen_movi(TCGType type, TCGTemp *dst, int6= 4_t src) =20 #include "tcg/tcg-op-def.h.inc" =20 +#undef DEF_R #undef DEF_RR #undef DEF_RI =20 /* 32 bit ops */ =20 -void tcg_gen_discard_i32(TCGv_i32 arg) -{ - tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); -} - void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); @@ -1434,11 +1433,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tc= g_target_long offset) =20 /* 64-bit ops */ =20 -void tcg_gen_discard_i64(TCGv_i64 arg) -{ - tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); -} - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209150; cv=none; d=zohomail.com; s=zohoarc; b=UKPvNzv69cBt02m7WqHim0in+PoY5sYi/PJidiPnRFAG9dVGLOlDNhSpZfJkpLMpg9cdDHErR+XmNdtEFLqlWXK8KGL7Vt3zm94p1LSZkJNcYSGjiIEqvt4Prwq+DlUfGMcJRjwRKWEC+G6miy94MYg17kx941EpBO8Buk4lC9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209150; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=/TMoPKyOoUGXlwwqxsVGx7frxJ4ccWV4W0oh6em9FYY=; b=H3i6MGjkNYDltUFE0ckR0p8LJaWpgGHazDzRguae5xT0pDuzinYikY5Rp9v1tXRaOes5b/+HYYI95PKqUsgxfwg1Sh/RZHW5rOQsfbV3V39nKtm1ij9GVKNZF0wlASO9ocQ3AgC2nnqlCck8TG/ObpQjogaeUr+kW5MEgZDwYs0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209150769312.69647666891524; Sat, 12 Sep 2026 03:32:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0004vH-TO; Sat, 12 Sep 2026 06:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1F-0004mY-ND for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:38 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1D-0007FS-WF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:37 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b31b4281eso676875a91.2 for ; Sat, 12 Sep 2026 03:31:35 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209095; x=1789813895; 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:content-type; bh=/TMoPKyOoUGXlwwqxsVGx7frxJ4ccWV4W0oh6em9FYY=; b=eUG+TEdebyFp4uHGwmxjzD0hhFaLut3wTzBMjAy2pT0Y86Aemap6hgvrutnM2G0d20 7pgE7DkzGOGMwDsEnIZiQY/XgNc5+vzs96qZtWJfs0TZw+bozFPchkUIpIRt6m137Ehn mXWx0nXT9TfajiuA0NJAGgkD03jBE+qYUg4J302NECBmNtY45pW8dTwITKvJTYHzmWGW WET4NE4NZxOZhwtUSKoGp8/z2H2D1SkNxQr1cD4TyHKyAwAVyGOGKmmFM6zIcyWqjTDX XtCcUQCJZwTDCWfvGlXg93Yecu2oZBb7wiwGuPi+RiqJM1c2+1gIJfdCjC3vRKlgdOLQ HHWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209095; x=1789813895; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=/TMoPKyOoUGXlwwqxsVGx7frxJ4ccWV4W0oh6em9FYY=; b=budSV1BXlKREBfg/WNsgkJecNkZk156wtDWE9TPl9BXD2W3TyGPk/qKJpfB+mVomPv CpDwtAs0YY3MfEjeH3LU4aqk0mjqra24lKu0r9U9cjN4boUPCnioYZIu0R1VX8T42dUT a3wfxRexsFt6VAx5UozpvUbO7k/wxZb7pNHeG+cznE5dLWAqnZl1kI1U3mJNCi5tXrBb 8QkILKxlkTU5AMxq8MSgnbSbGCEKdHwcH4IHSbyclGKu0PQWqsFtU0DO/cSsHtpSt5pZ +yoqUun/G/zzCnafrrhQbLxcfc3+MVIR0/wyjkSbVmcH+vp0RTuYatXm66q2lZkvaj+z 6ojw== X-Gm-Message-State: AFuF++mCDQNCBNx7EVWVGVqq8BxMJGDb0Y2SMWiR0qRKC3LDtBvt/RHL iws4no/j7G25Lo6BD2XNzXcyVzXB7Jkq5a1uUDDy2u4kQvbM8k8LOhgSNe/HXCyXjtq6C8CAEd8 IC0m6 X-Gm-Gg: AYBFou11X8YZFYC56if46O8kyEegcyZsW1WgJ079/x7S1uUWurfsOyogyMpLSxTvKB8 36D6OCnWFjqL7WRG7Yym6BoZkBOL9+V2rIZlK/GLp+aeokmIsbLK7gxfEssERQzNte2JT1m6cze DpLUqAo/BrP0ejqetpDU1OP1JGFtHex9jlXCxXA5EZWr/unZV2yJulHFdXxCNzxqE/2w3ZQVNdW 9YJ3nuWqVrDr30r89ejVjeiGMnDF5NhMf++gvRDbZxD7U1wWzZe3+LaDIXZCWPWl1ixaKxaFW8A oXctTD08Ua+YEf6PPedvSBApv9TcpJ8VjS04w6adX6DhNmCdiyC3oRBp/A0moHsSEdtAdUUCUGB WujpBv04snEvOJbQGRbvHCDDrmD2tItt7JmvTrgYHWxkToZR/uty+kuzEOghdM22KKyTnlgKUdE JEhFHi7XAWBgjWHcTRhc1Cgh2fgPAYmooE3iyTnzXg5uwJclYzulU11QSuwzZ+txXDKuOzwT29y ajneTUbRTdYj3Et+Q== X-Received: by 2002:a17:90b:588d:b0:398:bacb:1137 with SMTP id 98e67ed59e1d1-39d9c3771a8mr14288759a91.19.1789209094678; Sat, 12 Sep 2026 03:31:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 06/82] tcg: Generic expansion of tcg_gen_add_* Date: Sat, 12 Sep 2026 00:30:10 -1000 Message-ID: <20260912103126.598030-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209151682158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++++++++++++---------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c0de3f9f45e..ab0c3f9554c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -98,6 +98,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); #define DEF_RR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b); =20 +#define DEF_RRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c); + #define DEF_RI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b); =20 @@ -105,6 +108,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 #undef DEF_R #undef DEF_RR +#undef DEF_RRR #undef DEF_RI =20 /* 32 bit ops */ @@ -199,7 +203,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -304,7 +307,6 @@ void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 -void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 7943746a44a..e36fd296a30 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -3,3 +3,4 @@ DEF_R(discard) DEF_RI(movi) DEF_RR(mov) +DEF_RRR(add) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d796016ca26..30c84d348c9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -109,6 +109,12 @@ static void gen_op_tt(TCGOpcode opc, TCGType type, TCG= Temp *t0, TCGTemp *t1) tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); } =20 +static TCGOp *gen_op_ttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2) +{ + return tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= ); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -320,6 +326,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_RR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *); =20 +#define DEF_RRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *); + #define DEF_RI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t); =20 @@ -327,6 +336,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 #undef DEF_R #undef DEF_RR +#undef DEF_RRR #undef DEF_RI =20 /* @@ -335,6 +345,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +static void gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_add, type, dst, src1, src2); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -364,6 +379,10 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b)); } =20 +#define DEF_RRR(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c)); } + #define DEF_RI(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b) \ { gen_##NAME(TYPE, TTMP(a), b); } @@ -372,15 +391,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int6= 4_t src) =20 #undef DEF_R #undef DEF_RR +#undef DEF_RRR #undef DEF_RI =20 /* 32 bit ops */ =20 -void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); -} - void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* some cases can be optimized here */ @@ -1488,11 +1503,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_add, ret, arg1, arg2); -} - void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209282; cv=none; d=zohomail.com; s=zohoarc; b=KUP7re4F2CCB1OK8LwmG6OumZdSTum2b0uPx9eGtk6S2j32D8i2+GF4pspcXaQCmwYqPNzoD4A4grXURrnkPb4FSdRLMbGQoUbuex1ZS56Z3sEXcs3EsxnjfFkRKSqqqNYnKYyF5r32+Pf28MScE7EPf1dglgroyMpFVl9IGDK4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209282; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=LOmq0qnyvOhF/zyPHnRHIe5uIW+lRCHfexmuikfSauk=; b=ItUdBTAyj1TbtMLKuNGnu5ybMR93FwsQYyO8iYUC1lc38U/S30XFgtzfvHnY3cxOVHMU3GYXqMcxF0NuQ9z5LyBGOOLKJP3uwmOenOFooPo0qKTu0SWXiYRe5RrMXY9Re59S2iuX1pmcKuXGfuS5p8NmtttqZcHxuINUaEhHBl8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209281855526.4714565978439; Sat, 12 Sep 2026 03:34:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1a-0004yb-D0; Sat, 12 Sep 2026 06:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1I-0004mx-8o for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:42 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1F-0007Fk-7n for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:38 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-cbe6295f05bso1788202a12.1 for ; Sat, 12 Sep 2026 03:31:36 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209096; x=1789813896; 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:content-type; bh=LOmq0qnyvOhF/zyPHnRHIe5uIW+lRCHfexmuikfSauk=; b=hKdnIStbvt8aLWBachLEQ/QfFGe+CJLUdPlavguMr3MeUHiz/kHCJ32VDqfAoq3VOJ irH+wxbN45iUE5lE+q3FZu6GVwWXeGHcbcI6eVr2VLOS+dE1fqjnq/niSPVuMzQiRp+D o2Zps1exUyxthdrG4wrR3RbkK2D9v3PQgWPvEzcOQPZzKvYqgP72LDnsAi2Prfgo9QBz xKICipuSpCm8cJSCx6sU10OtkBnmhkDgcb6RXKJrtUD2e/gTXGNNoWw6G9ChlAQl+IXW eroI9MTZjQzOw2rXTQpCgWaQfg947iGr5EhulvWFqxP8BwJgyLeXYDupSgtcu6LSaAif zWHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209096; x=1789813896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=LOmq0qnyvOhF/zyPHnRHIe5uIW+lRCHfexmuikfSauk=; b=j5J1Hbe7ATUGtfEdEZ6G3K2FqTenz+JZVEkGQ65zaOZCTvrYz3JeSIelKhA26RpmoN nKGRVvCU+/NfAJxl+2tAaMsU24QFyYqfjBQGS7pjz1bkV2sM8OXziT5LiDITYkTlOWbR wX5Xc/RzYOY7EzTHEMjEdFxs3QqwI/Xr2oVtZfYO6Kez3Ka6u3oEGET9aXhD9XH+92+6 DRlkB83XwKG5sf/J3yh+iAdJkvjMhFsS7EI1zsOzKIudrQeC8wAYc/2h4/AIgb2+RdgO GeMukkj3bmArkMjcrC+iPtevGEzp+QucneJH+6bqjT1eMuLULG+jNHosZkpILr1ZYZz5 WvMQ== X-Gm-Message-State: AFuF++mN4ylDaNOyVeusPcmO7IwUF5V+s4acTEQG0eqJPTakkmPd3QvS ZgcMhAq8Lb8mJucYEw0v7j7lx/eawYoNFSUIsGpIhYKoZ8XG5Hbx47e7ND5f4TIRYSH5Wd7yvJt XoeqeNgA= X-Gm-Gg: AYBFou0Ugun3FamieCpaERVraIalkTG3DwlZZeJPlkN2mxEjm2NpUOfZ24vdsCGVJg7 1c1At9Hx9NKb1fQr/Fex/PbbqVqTcqQVQIhJimw+kNNC73l6PJZ0BgU7MJ7O73koYYROMBrxxUh FjFxNJPnFZryKPRo9htqA59krFBJRSD5PlbsCVh2M91eWqBo8iMHta1orlYxRk6Y7K6Halcy6FY aMu1EPf7ewR9YPo7woOFOu+NXx2ZQbnASIX7o2WH2eS6/Bbd7zm0IWQ88aQWJTmtKzLTcxbmcLN MWIOXGNI+0zRxOVz7FZe3jv9ZtC04m6j9ZVbi2F6MAQCT7VtuADx/zWigbL4ogHtxsXGyJe7wmp mQ/OZvcAGCHAKSsMoesbH4mzFDuiocx1aZgS1L+KhRIVQFxGBdkOqQ9y5CQJ5AUJ7Rvced4kc5S +czrNVj8mMqh9Xw73Ynt7zx4PY9tM+iX8eGf2B+0YR2uMFR2tknr8jPheHBsm85/Gs6hEUC5mee DoQ8po= X-Received: by 2002:a17:90b:4c85:b0:38f:cfe2:fd3a with SMTP id 98e67ed59e1d1-39d77b1c383mr17731519a91.15.1789209095553; Sat, 12 Sep 2026 03:31:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 07/82] tcg: Generic expansion of tcg_gen_addi_* Date: Sat, 12 Sep 2026 00:30:11 -1000 Message-ID: <20260912103126.598030-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209284160158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 38 +++++++++++++++++------------------ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ab0c3f9554c..96d8ed8990a 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -104,16 +104,19 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #define DEF_RI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b); =20 +#define DEF_RRI(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TINT c); + #include "tcg-op-def.h.inc" =20 #undef DEF_R #undef DEF_RR #undef DEF_RRR #undef DEF_RI +#undef DEF_RRI =20 /* 32 bit ops */ =20 -void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -216,7 +219,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index e36fd296a30..642cc7cfa48 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -3,4 +3,5 @@ DEF_R(discard) DEF_RI(movi) DEF_RR(mov) +DEF_RRI(addi) DEF_RRR(add) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 30c84d348c9..b48dc62bdfc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -332,12 +332,16 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) #define DEF_RI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t); =20 +#define DEF_RRI(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, int64_t); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R #undef DEF_RR #undef DEF_RRR #undef DEF_RI +#undef DEF_RRI =20 /* * Generic expansions for templated operations. @@ -350,6 +354,15 @@ static void gen_add(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_add, type, dst, src1, src2); } =20 +static void gen_addi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (unlikely(src2 =3D=3D 0)) { + gen_mov(type, dst, src1); + } else { + gen_add(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -387,25 +400,20 @@ static void gen_movi(TCGType type, TCGTemp *dst, int6= 4_t src) DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b) \ { gen_##NAME(TYPE, TTMP(a), b); } =20 +#define DEF_RRI(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TINT c) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), c); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R #undef DEF_RR #undef DEF_RRR #undef DEF_RI +#undef DEF_RRI =20 /* 32 bit ops */ =20 -void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* some cases can be optimized here */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_add_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_sub, ret, arg1, arg2); @@ -1543,16 +1551,6 @@ void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); } =20 -void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* some cases can be optimized here */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_add_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) { if (arg1 =3D=3D 0) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209153; cv=none; d=zohomail.com; s=zohoarc; b=XLPwE1S5QxVpLFepf+2Jt3UJO+QCZuOZ7qzr1JEKfy2sbPWM4UDsmQJoFDQgeWBEeisWKhf8H7uUzEsTAfYrRWXsASe2oYgony+bS/XabuRCCoGpx+DuN3O9ScpkvIDg2knfqHaR9hxaS4Te3Fkbf8Ke2YglN1YYr+ha39LnHak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209153; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Th5XARjx24NT8l6Dcmis0Ja8OWXyBkVynXurLdxAmgo=; b=JwMYPnnL/k+zG/oeO2silurFtrHF2jgJtsQVrVL+QXhKPe6RFpjcwz6Y4Zz6oythdgB+5yxQ2AIUcKDmSTUPv0tMFAkFNMpQTZMPtNWRwDEopNDYdki6KMt2NvO/X40dtoFBdljkz/QCcONRCGynbk3WLTqTh5CPzKkDOHm1biI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209153415596.6523614320233; Sat, 12 Sep 2026 03:32:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1b-000508-BO; Sat, 12 Sep 2026 06:31:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1I-0004my-91 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:42 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1G-0007G1-5D for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:39 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-38ea87caafeso1804123a91.3 for ; Sat, 12 Sep 2026 03:31:37 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209097; x=1789813897; 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:content-type; bh=Th5XARjx24NT8l6Dcmis0Ja8OWXyBkVynXurLdxAmgo=; b=eWRjz/hpGMzcShpOvOT+8JEX7DITmCOdLNjq63JSdQ0DACUTLpG2kJYXqClpKvvBlw Yqpv7jzXtgfkDO+oZpq0+h602K3RBAlRYCkuN76YA8JXd5TCewttS+Wqb+kHd13z7w2o /E1wN2gjuAQQnNDFUqTFl5AU1D3pa4OzEJ1XWHjmtuNsWUe5gqPk5BA5DwtBW3G3oQM1 bjt9LZbl2sbjIhsmp6aRbat33BrUgDykXALBYywLnctiqb8ELuYhsadfFweatPslSxeO egooo9SPU9JOW/c2NvQCD3E8Nhy5nR4LgQ2pE7VY77+GS95p71UI4zw2WsdibZKbUgmi 5fNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209097; x=1789813897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Th5XARjx24NT8l6Dcmis0Ja8OWXyBkVynXurLdxAmgo=; b=qV7WHGF+hHuQVnn898TCvCWrMeCxqkQCUgRHKuBBwAL6HwaQZgqVnxhuyrtZP571MF wAREWbOy385cT3cC61qjUGCoawvZ4kCGtwYSVcdmHs1Un93UpenvrFct8UTRLlRvbKes kZPNoI3XaIcgsiSmUN5fE5A12qtf1xIzFPn/+5wFVU/curtuQXik32gN3bX8c0YTizU0 aPntUmswvbtowWt5v0FCd0nkloU7OOXRQiK/cMioLAzcMQE83hbvFUeaYj5fHdHR4+w2 HV+fGRXdU70/7hRrapWvDzWQjANiEdrufWdbT89MCuHqp2B4qgOkSl8ssqhQKAqIIEST Bj0Q== X-Gm-Message-State: AFuF++k3LDSdttS+Ef6b2lnGyqMwvoGk4vu6Eu4lsr+kIaP9nk3ox2VQ EXE9EAuNfzvJ+OBYruaq9wu/yl9Ipwr+TXT4sg5zBG15de3f5ZopQGRLjpWKi4H47mvx9Esq93Q LN/RO X-Gm-Gg: AYBFou3cOxXgfPXn1wW+0lmqhanQas424N6nJw1Z0aqPLdJfd/qH0eY8RwUdyOksZL9 xkSF2d70sOTcr2ScrFS6jTsnO6p7iAQ7I27nWfOCSsqFRZ3HsfGiy/tqV6CH/3FaUOMHoDpbX1c 4IuHGCOfqhZvi434ouZxJQLqw3sMN1kWiS2FT9DvPU8cZRXjnNcVp8ykmamA5Mg34t55reAHNh2 /6NCgHLxDT1+s2J1y/dMMAhquFrokyhy6uSn1MlXB7Y9I8syfar4nCyhnHsbMVnYhhIINd93OJE QUdLzEwmP26QOc6QgtntliaCuZ/eBXPlTDv5uyyrWE/6fcNLitSpe8Ihq9+lFYN01QhykhLSdA+ S3mNSUzta7nzsLmxBMXPq/2zxkTkF7BtXiQT9oC+p1eBobsUj73kxeuPuUgf2p2XJGsMVrVCIsV 6h7TLcVhMj/FKOSBDfEfXcuvAUq16bVEeQRiST8WqNBt84eoSTvRXjx7iG8HwBT4U7M7wM/qdM+ 4oJY44= X-Received: by 2002:a17:90b:4a8b:b0:38f:240d:b857 with SMTP id 98e67ed59e1d1-39d9bbc81cfmr13286381a91.2.1789209096557; Sat, 12 Sep 2026 03:31:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 08/82] tcg: Generic expansion of tcg_gen_sub_* Date: Sat, 12 Sep 2026 00:30:12 -1000 Message-ID: <20260912103126.598030-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209155547158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 96d8ed8990a..497a9e2c3c6 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -206,7 +206,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -309,8 +308,6 @@ void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 -void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 642cc7cfa48..5770bfcccb8 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -5,3 +5,4 @@ DEF_RI(movi) DEF_RR(mov) DEF_RRI(addi) DEF_RRR(add) +DEF_RRR(sub) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b48dc62bdfc..dfa97036780 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -380,6 +380,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); +} + /* * Templated operations. */ @@ -414,11 +419,6 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) =20 /* 32 bit ops */ =20 -void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_sub, ret, arg1, arg2); -} - void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) { if (arg1 =3D=3D 0) { @@ -1511,11 +1511,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); -} - void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209244; cv=none; d=zohomail.com; s=zohoarc; b=XrU1a7xbl9ai2NV3qjbqA/jD3dy0wswYbUukDFn7d1iGhT2kYMrZ3hL9vcLAoUuKfnRUhSQL6EACSOLXBjxM7qx6RZTqHXtOtPMg6G1bv03hFSIAT1Wv3T0PMxbrNyB08r7etzS3ENfzTAKvUCEMQzTBrL9dH+Q2FJLowEyPa74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209244; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bFnQG3GrVobV8mM4B0HhYTSgdDJqvmG6Q7KBTqXiyLs=; b=ZcupcHX6LfCU1Ts+9sWhbS32D/DypMgBKoQaEaJB+IuO+gM6PrWc6lG1qYQ5tvbxce1Y62047zfkSpR7ZQuWS1/itS4/YLIzrZu/GAvs9n52eCVSy1iH4Ed0gREDbku9DLA+5ihjMtatYHNgyzhpZ1MqhT2CuQoyJyOoPNTadYY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209244891967.9181403295331; Sat, 12 Sep 2026 03:34:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1z-0005uw-3W; Sat, 12 Sep 2026 06:32:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1K-0004n4-2g for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:42 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1I-0007GH-1W for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:41 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccb65437so249142a91.3 for ; Sat, 12 Sep 2026 03:31:38 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209097; x=1789813897; 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:content-type; bh=bFnQG3GrVobV8mM4B0HhYTSgdDJqvmG6Q7KBTqXiyLs=; b=MYorhicRYMVm4aqfRNMtHjDNO6yoM/N5DgdvY5Hc7EE1PJ1L8Cham6ZwsDsS4MnPM/ ADWdPhn+L1hnu60O+WyPUU59Qad6YOlkLtmU6PzAg+LKUHFuJ/9K7/Px94lyWZdAx/rJ 2ws0als3NrJmdO1N+ZYk61gbjMWyFG95YyuKdqeZxRnK2PqAJ1LkAGbB2YMEd9KbkUxc 3J37LCOBPfYo11xWBJs33SmA1L0jok8szwsXiqt44I/tQrtQdlzu48vjQznLtF1kbWNV ZXeHCsgdKx2AIrcziz4DQWdyj9pooiYct2WtTuSG3XGc+GRrWt3ymLQutMhLz4Eqz6Kv 2A6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209097; x=1789813897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=bFnQG3GrVobV8mM4B0HhYTSgdDJqvmG6Q7KBTqXiyLs=; b=rhcQLKdFaDHO6PLXRarUatbcPALpA4cV95P9W/Co+YRa4VGiyUtpLpSUREtWJo0Owc AcQsdnodSkdfHYCFEJiim8fKvKQ4hW4mUNudBbLPKwOi1oNx6WiKFZgo7U8WVU0XZVlh AJH67dc3M2hgaIC/SVYj85x0YU78smyrwF6BiBiufXYHC1ngQ/xirjJRCIElQOzAsHjo urS4EQc0Z4Yu8kJciLy2B/ksjtqaOm9EfoUBsycRNa4ZWJAI0Xz0WY3FDXMfz/DE6t5q UAwPfXdtL08ohCkd4ZQ5mw79vFUD4w9MLjgkiaIpbUC2UY2Ma/x7cFSQowglQGqqhvzP fuhA== X-Gm-Message-State: AFuF++lkkD2KD2KK55VbvO4sRsrzAUZawp87V9gPUDm0hsCiE+wiXV8D TgQRxvSO2tOfWTw1vCKFzHXYgY4rfaYfk014Mcb+Iw+IcEqCtChk3jyhctVpnwKcgGMZZq5EjgZ HvZrE X-Gm-Gg: AYBFou3h5uLxZokJ6sIUW6E4VePnyRnBhvGAP0ivxdddhzoCjph2nwNlHd3zrOpBnav kx79Kv9sIsNWZlBbmVXICHjfpgrH8qOXnnu7Ei3OxCyIpudPdxbYrXdLZRDz/LkML/qeIG6474A 8lqz0zeyl8WJ5+woS4O8d7545JPU847Gt/sEPdLIiw5WJ/s1465bwfePXHVOSkrupvF1CTn9LE6 KufBFQL7eXmLG2KOkhoEBkvO91ppuqv2KypeLf+Q3L0Wa+q7Dl27Q1cvEhnl170Hn8hIB4ol9vC kQjq72B8qyCUdwMkJehiEUva8Z0obAy5BRnxg/KFZ2e+Ms5GSDlal9tuRLWF4drD2skIOnXPw7u zo8NvTMa8Uel+q6cavdGb0R282u508dB2q7hdhjMDeKo+idXQVMKRr4SV/tFmQKUvZ7QAztKD/i C1g2J1iWzIjhOuMXkJWtq5R8Uxm5TDT6HfIbSrrIrnjE4Vi9JI8M1BtUYKXOoRi+hF6yFyjZFe2 vIGBMc= X-Received: by 2002:a17:90b:53cf:b0:380:540:d499 with SMTP id 98e67ed59e1d1-39dbbeb3c67mr3930253a91.6.1789209097496; Sat, 12 Sep 2026 03:31:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 09/82] tcg: Generic expansion of tcg_gen_subi_* Date: Sat, 12 Sep 2026 00:30:13 -1000 Message-ID: <20260912103126.598030-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209247934158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 497a9e2c3c6..145197b6fc0 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -118,7 +118,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); -void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -219,7 +218,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); /* 64 bit ops */ =20 void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); -void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 5770bfcccb8..71c81429cd9 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -4,5 +4,6 @@ DEF_R(discard) DEF_RI(movi) DEF_RR(mov) DEF_RRI(addi) +DEF_RRI(subi) DEF_RRR(add) DEF_RRR(sub) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index dfa97036780..78e711fffa1 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -385,6 +385,11 @@ static void gen_sub(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); } =20 +static void gen_subi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_addi(type, dst, src1, -src2); +} + /* * Templated operations. */ @@ -428,11 +433,6 @@ void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCG= v_i32 arg2) } } =20 -void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_addi_i32(ret, arg1, -arg2); -} - void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_op2_i32(INDEX_op_neg, ret, arg); @@ -1555,11 +1555,6 @@ void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, T= CGv_i64 arg2) } } =20 -void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_addi_i64(ret, arg1, -arg2); -} - void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_op2_i64(INDEX_op_neg, ret, arg); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209282; cv=none; d=zohomail.com; s=zohoarc; b=QoCu9P02syQHuG5D18maorL55woWFbbix3ydhJ/p0pD2JNurAj03fLCgWv53g2XwyYqYX1vTYxBqjEVlxzjJ5svjfQU5vPRHq+7ZS6ze7L86Mir0pS3De6cMy/uuLO5hX030dsT0jU5STz48eWR3otIUEXslfXsrvmrfQqD3r94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209282; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=LxP1sbGbG+sAIcCq6AyG06BmNH17TYdRQxrrNQ1oGFY=; b=ODUyJbaXjB0FQ3fwUYx35p3JWmy+JrqTi6aOhgXFWul94PO9ef4ha5r9hQXuDqzn0UqZJth8blCF70802XLEoshLie0Cx/+l+Y7b/GiEC4i0GVTM5WEeXd9AiJ0MMkQfXXG7dPmRZzoWil5jk2f65fwxEjPlBuLbqDCEnvcFaHc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209282589824.4954351456342; Sat, 12 Sep 2026 03:34:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1f-0005Ai-PZ; Sat, 12 Sep 2026 06:32:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1K-0004n3-23 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:42 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1I-0007GQ-1e for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:41 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea48edcso283042a12.2 for ; Sat, 12 Sep 2026 03:31:39 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209098; x=1789813898; 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:content-type; bh=LxP1sbGbG+sAIcCq6AyG06BmNH17TYdRQxrrNQ1oGFY=; b=m8bgIHkMk2vYz+6Q0FgMpxDw9G3UVGpTwXPyPqpn1M9aNAhShgVXcmnNvkrRdqics2 +E9QLk+TAdoNt0GzbSlC9NKLe1KCeuWgI67CtxfO/9geWU4/7b/M8LBlYh/t78BBQ12N WifQPnVeIYHONEWBa9oYo9JAkHSHiUUaOtzwL5rX9LNOMd+ub40++u8kzLUg0pDdr+CS s/YRma/EKd3G+K7shLHNydPqa8b89EbKRbkP8OoazgdUJsFnN8t3fYpS9JwI0DaerMAE 1cV83Sfu4LuJSjc2l7md8DFXBmqk/DrCMImD93vPclLG+VQLySC6rv3yIi6amv/sqCA2 BRmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209098; x=1789813898; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=LxP1sbGbG+sAIcCq6AyG06BmNH17TYdRQxrrNQ1oGFY=; b=pWdDBPbFFRgqVrGtfu0GgM/gBwptl414m9Xu+yl0hMc5KsHC1HdgyZHoGRgstHSAJc KKVCYBU8DY/V8srk1LH17sQWeJt+YUvZxZdzTNWX+degbyYJpB2D82CKsNJBDE2C6EoR ocO9aNcduEM7gkL08/ivhLD7ktbHkyjx2SdPlfA2D3WrfFGNN+h3cTnGFkR53Yj6YNKU p9a2OI8OlGs7EgxSMiYOnpsI84RZ7VP6bvJvfk9bzo6aFbGyks97GtZ5tFwqnE/tHTn3 eNpQKaIDU+b6AQ7b2rWThW8HtESvOMVGguyGlMZMkVJUb/LjaLdE1wmqSNXPVSAmybFN 2ffQ== X-Gm-Message-State: AFuF++n15y2pMW6xB0xlPAGVkFZjJ2qFXimHoTfcxGqCoghAtBtRbPOj dSO8o/wjawzrY7QJ0YaqEey5d6SwkqUXfP1sSnLIvMRC0vGmw6Cd34WEgPh/BrH9UpsDKbFWdoJ J0FOPU7g= X-Gm-Gg: AYBFou2YQlWkzMO2oL0DQ/hJEpK4Bume0qhC1v0ZnpLSOR8qLWYbyzVuNFC8csJWli/ UKAxwVulZSPBuIMwU2YnusEw66DqRO0Rkx13zsYaPZhHuNDRzbU3hYZLd7UuPl49DR4cA4e+Z0B Q5RFYyWLmquzjpjCOtF95XDnBkfHJ3ksQBhu8KHIEYRW0Q0GPOD3MqIXKyW9SOgLu/gzqLy7DWR Ik06criYeUgKRgwSNtVym2axcXJn/XlgHYBU9VXt/xPHgnWurtXD5T/SFb99zkLavwT8fS9u+eU 1hAn3oxqmSwY9FRUy1tRSPOYzoDdh0ehlYJkffC6Epww6Q/0MDmS7WC1m8WOaIR03AriL+EMvr/ Zm1IOwbsHa/FKDh1Hmz0Y3xiW6v1PoQzCQB1Tb9OxmeF7B5O5dd7zOAzBd1BbaO1l0yG0mi4dQQ iRBs1zfrexVtY7y1dT5Yl/Xxleu5PSAbysNOnCg3ibImo9O5wjuT3+Wr2VA3dYdpKhxKDNypbfu dHr5O6J X-Received: by 2002:a05:6a20:918b:b0:3d0:6c90:5a33 with SMTP id adf61e73a8af0-3db0e0a9eafmr4023271637.4.1789209098404; Sat, 12 Sep 2026 03:31:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 10/82] tcg: Generic expansion of tcg_gen_neg_* Date: Sat, 12 Sep 2026 00:30:14 -1000 Message-ID: <20260912103126.598030-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209284071158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 145197b6fc0..e6607f48592 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -212,7 +212,6 @@ void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ @@ -321,8 +320,6 @@ void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_= i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg); - =20 /* Size changing operations. */ =20 diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 71c81429cd9..52b0ebd7ecd 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -3,6 +3,7 @@ DEF_R(discard) DEF_RI(movi) DEF_RR(mov) +DEF_RR(neg) DEF_RRI(addi) DEF_RRI(subi) DEF_RRR(add) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 78e711fffa1..354fbe07fa7 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -380,6 +380,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_neg, type, dst, src); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -433,11 +438,6 @@ void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCG= v_i32 arg2) } } =20 -void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_op2_i32(INDEX_op_neg, ret, arg); -} - void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); @@ -1555,11 +1555,6 @@ void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, T= CGv_i64 arg2) } } =20 -void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_op2_i64(INDEX_op_neg, ret, arg); -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209300; cv=none; d=zohomail.com; s=zohoarc; b=jOMB79iHgnHy4caJCtzmlrldvhDfkdO5tay5gv5+Pa1wxLYbmkiERusnF9Z63Wy7CqPfbUtIvMrAsAQmA+n5aD4aV056h4ISuAm/ok3JMkW7Aq/mGJ83l8VPlUwXlXEfrHwW/9ozIyQtBN7evlbx619s5WOZB6CFNDNClQ1vvvc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209300; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=/SFZuTeAPrA6auR79QdWvqOdZrR/3pSEhp41MoYX9B0=; b=HLI+VmLUH5Zlm2Ss52LY3RSpmOt622bYv31WAmK1KcVYUt3/ZKFwG8txqT09RjQsNdFTNlN2kvlpnGbIBJuwL7AMEPxVAeJchLr+su6tyVQSuFb29BKrxEQD+Hjzu9B50c05eVsJtOl/tDIchH3bls6EaScJ6n0CsykjU1VRuLU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920930059237.02008960639421; Sat, 12 Sep 2026 03:35:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1m-0005IY-Pz; Sat, 12 Sep 2026 06:32:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1L-0004nT-1z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:43 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1I-0007Ga-IG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:42 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39dbdfaef3cso390320a91.1 for ; Sat, 12 Sep 2026 03:31:40 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209099; x=1789813899; 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:content-type; bh=/SFZuTeAPrA6auR79QdWvqOdZrR/3pSEhp41MoYX9B0=; b=EYL0OmhLeXB0ZcPscFYimH/y2x0b2fGObs7Vjr5Kw7AILWQXC7ngOO1dbAU81RThW5 ZmwHpw2yOHEw/IFmU0sIHpor/Cmrbkw6VJzZophFT9JGiGiWOXw+SkEXuyKzVZy5yfOX DIuq8LOZRr7Vn8154H7QnH/e9vNICg9V7pA9hdJHuVwCbTgCM7zqsqUdueToNyf91i4n hw+ppJQNnEglx0SOIJqPbpE6sQU27rj+moNw0EHfa2HMr/RPxLA0SoXw7sC7RDEX8MQJ pEema4FuelFTDMkhfnQXmUeza3peHraFhR6wdQizSj4rOQCgsr+ap0sH7jRV21pkIGNS dVNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209099; x=1789813899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=/SFZuTeAPrA6auR79QdWvqOdZrR/3pSEhp41MoYX9B0=; b=etWdo6rh4s2g4W4566iSigWnp79LvxkNfS1qtqx81mztkn78eqkCvoxFcrU8a0xItB WcyI32taru2ZZzU+EWosPCKcvARIJW7l5SPkCkpIBXd5lgzek1hGwu/uu3BEtUt5ChnK iJWuxqgZaCLE3mO3jGRgWg6JixXceedOoB/Ko+0tmSZMpYSaa7YOW332k379XWdjWTmF hPOcNvn1BX2SX8CrLtg+xzz/GIuHHUVVSnmZpPIbgvRKSb+gx6ZpRrDTqLVnKu5Aftvg 1auDeLBYvxSZUgBAQbN8BrZgBJsDUrQgM7lKG6PlIr9PBkOyTkgjOh41XIwm6yNbheSb AT1A== X-Gm-Message-State: AFuF++lGcHMF5HlzXPRLwZZkYnrBliQItawWwYmm6Vpq3+piXakJc83I O3Ph9Z0b3C68utllQFj1IOr8fMZtnzD0YmI5ZqGcew8VfLQhJTw//sPlMfn4+RfnPrsojO4yQei GHh4W X-Gm-Gg: AYBFou1nGmx5TJsPw4wumKBh2qRiH5QoWiRnNNDdzAF5P3nj3IObIMke1e+c79mW9ic IjfQiz8mn2JIUcaI617Fa64H7WDijt4TI4V8lbsRUWv4RvL7znSd0lnDUM8nuAwNEsEHWPrA05m nMDkAU9yxLw+F5aObCIaCZyOBkQVP/Q/eneA6gG6bZxcHVogoDI2Nkb11JYz72VqjqnJPQPHZpA 2mG3laZhPn/P1/+gbTJAWTNlABL5IjpDgvJ8Tcyf17Hdu9A3NWxAoopeDA5gru2McZ8AB31qULQ k4sLr2ncWoCfXkpVUOTdjvnUEr22JE+CHVtIOymDQubP+R0hsmQdUPNUgKQL7SJyDMZFN1SNK5r zhQKtyHC03siIeAbSEtjcp7cyaKZjrzhXuwdSicbJENIC3EqFLM35heYYJ5E8tXpgdBUIPRHhRp 8jR8yOYWKtgfhf8ZByoaF2z7pa+4dP+CdgaePjQiZTwTw0gsF5K9ME0x5cmkK5YNwKeaeorYXh7 MWEFCgZaeqYMZvMBQ== X-Received: by 2002:a17:90b:560e:b0:398:a2ed:7b5c with SMTP id 98e67ed59e1d1-39d9c3a1fc2mr15158432a91.24.1789209099223; Sat, 12 Sep 2026 03:31:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 11/82] tcg: Generic expansion of tcg_gen_subfi_* Date: Sat, 12 Sep 2026 00:30:15 -1000 Message-ID: <20260912103126.598030-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209302154158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 36 +++++++++++++++++------------------ 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e6607f48592..35288a19a79 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -107,6 +107,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RRI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TINT c); =20 +#define DEF_RIR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b, TCGV c); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -114,10 +117,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #undef DEF_RRR #undef DEF_RI #undef DEF_RRI +#undef DEF_RIR =20 /* 32 bit ops */ =20 -void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -216,7 +219,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 52b0ebd7ecd..a739c198a56 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -2,6 +2,7 @@ =20 DEF_R(discard) DEF_RI(movi) +DEF_RIR(subfi) DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 354fbe07fa7..5e971d8bf54 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -335,6 +335,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_RRI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, int64_t); =20 +#define DEF_RIR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t, TCGTemp *); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -342,6 +345,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_RRR #undef DEF_RI #undef DEF_RRI +#undef DEF_RIR =20 /* * Generic expansions for templated operations. @@ -395,6 +399,15 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) gen_addi(type, dst, src1, -src2); } =20 +static void gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *s= rc2) +{ + if (src1 =3D=3D 0) { + gen_neg(type, dst, src2); + } else { + gen_sub(type, dst, tcg_constant_internal(type, src1), src2); + } +} + /* * Templated operations. */ @@ -419,6 +432,10 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TINT c) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b), c); } =20 +#define DEF_RIR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b, TCGV c) \ + { gen_##NAME(TYPE, TTMP(a), b, TTMP(c)); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -426,18 +443,10 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_RRR #undef DEF_RI #undef DEF_RRI +#undef DEF_RIR =20 /* 32 bit ops */ =20 -void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) -{ - if (arg1 =3D=3D 0) { - tcg_gen_neg_i32(ret, arg2); - } else { - tcg_gen_sub_i32(ret, tcg_constant_i32(arg1), arg2); - } -} - void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); @@ -1546,15 +1555,6 @@ void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); } =20 -void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) -{ - if (arg1 =3D=3D 0) { - tcg_gen_neg_i64(ret, arg2); - } else { - tcg_gen_sub_i64(ret, tcg_constant_i64(arg1), arg2); - } -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209285; cv=none; d=zohomail.com; s=zohoarc; b=m8g+pyeBZHndJxR8WOKi1BbpKeA2CZPEBLC5d1odKB6L8K3YKa5HRSeJ887D/yvcop8HVuhHA/O/bMPOuETvI/eflAd1Seft8mLmBzD68SxxlXJsEKmfCUiS6AV3g4lNfJgNtyLowPi+UiUs4+XPj08f+A7CHlWRITqYjyP2E9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209285; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Miy706JDg0TNIqtiwZjFaqbPKM0e5bWad0RRf1CV95U=; b=Eif7V3q6QQ3UlvHWABv0vddaVZpYaSUS9X7ly++TSt2ePIRFxsh2nBvH6/DTpwo7gAzN+ycIBte93ewBXQFPFua3l+EusAVgCpSZF0/okoSSvRRCcwfLe0xUQ694mCw+oFXo0vQ0VXBGFE7XInocQEb4lvt0RkpisHxJ2OsefDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209285327929.1550439997367; Sat, 12 Sep 2026 03:34:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1m-0005Hm-6b; Sat, 12 Sep 2026 06:32:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1L-0004nU-Bz for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:43 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1J-0007Gx-KD for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:43 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb65437so249159a91.3 for ; Sat, 12 Sep 2026 03:31:41 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209100; x=1789813900; 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:content-type; bh=Miy706JDg0TNIqtiwZjFaqbPKM0e5bWad0RRf1CV95U=; b=Pqg78AqU8Dte9cR5AAmC7BlZlX5Gpv5E9BvU+TlmLIfLNybCcraC3d1NVowqVmS0s3 sWbKtJwfmIDqSqoeKHqddyGIeCo0DZCCCHEb9gT8lyN0F9Bq14RW92GnePSvAQcjnWzb CyuOtXjDW6jv8EefuZqjTi3/IRK1xUyIVbD2iGNIRZYOGKOPnjQzVi2M81UK20rmcILF 3zsw9WmYCETa/W5y56Wl0JwBqn2UfYz+c+grOOd8gVxFuQT5fwTP6I3S5V8+vSIRZFh8 Y1ZMn3ccLG+7kePi22Z7YG+jJ4kRJWIwX7r/wS9df3tNpeKi1S7+q7CndBc/UoaMhua1 Psew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209100; x=1789813900; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Miy706JDg0TNIqtiwZjFaqbPKM0e5bWad0RRf1CV95U=; b=aIsj8ayCRtRXdPeX5OzQO83BI32SFCFPANKbrEP1002kvN9hAwDIzvKC++nD8ORu2T FR92RqCrHo+fmBhYSLnIcDr0dvRIBCFwKK1Vh/U7PoguF7+JhX5xlfXMLWh7GSWnnxeZ uEIh+aPnq+kOrcnzVg+06wEflEy4/bWpGBo1//zyF1Sm1Kw3sgJcFK163akZtHQIAToI 2wJCZL9qxVndYJ1Hzr7xIsdauJvfbyMk1Q0KTAvx0fOT6c5lIankdFXWGYfkZyw3TzuT 92dQPX9oSjzCGjpFTMRGehk2mZ7vgOWQBRiKNT30JEWETIPzv9FD1Wv92nc6my4ExtrY PeRA== X-Gm-Message-State: AFuF++nKHQ7EZ/xnCg/aK0kVWVS7CM6EBUKQekgtfkrAHlqEWuNYLMyr BRUGC2ARF6UE2or4xWLokjookiTCYl2k1y6R5cZanLT7syoQJzaRw7vVH5lrXVV58PKcrdLlcvD 5gCDPIoQ= X-Gm-Gg: AYBFou2h+yek6R1QVUb3RFDjHukRmrorlG8KdrPmCrQQ270fILnoAo93db/yicjgAzi bJzHi3BQNP4/3M0w9JAcJID0VPmzNZZv0GeIMbVVoCipAZHLV2PDys4USXrxDhSsk4mdQpip4ZD LdfeIqxxTlR7IYV7wPQhIKE1rdUvSoriSrNKxB8Vg2LrDDBKf5ml0YClzFFFynBTzAH2IoSP/zO hqhtKPCEFstN/AU/3eBf9zHofIAldg90IaMHasU3h0vB4EdSdi3/mfJesL6+4WO3oXqbDBTtjyT HTeKjAEnPBg+WsWvoZ2e9Z6/bgo8Sj2kpp/kV+euHNJrCVdZp7jnlHAUXi0fYkMuaG9iSvw4GsJ Z0RqE1EXsY6Ot6qKKYfSLjWgc9T913xz3+JTfiVgdx3+MJjCZmNVeoVY8iSduDn1F5Hz8/uSSIc WgdXXzhJIZJjU1R5jElh/xIMySuqrqdAUnrl+OWrDY0mJ3sUD1NKxUqKyHEvt/1l0ACvoE+N8LV INguE8= X-Received: by 2002:a17:90b:58e4:b0:398:9c0c:7c71 with SMTP id 98e67ed59e1d1-39dbc70b960mr4345107a91.24.1789209100148; Sat, 12 Sep 2026 03:31:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 12/82] tcg: Generic expansion of tcg_gen_and_* Date: Sat, 12 Sep 2026 00:30:16 -1000 Message-ID: <20260912103126.598030-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209286086158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 35288a19a79..c957cc95b1e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -315,7 +314,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index a739c198a56..ce21bf5b965 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -8,4 +8,5 @@ DEF_RR(neg) DEF_RRI(addi) DEF_RRI(subi) DEF_RRR(add) +DEF_RRR(and) DEF_RRR(sub) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5e971d8bf54..5d0ffe4d70d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -367,6 +367,11 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_and, type, dst, src1, src2); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -447,11 +452,6 @@ static void gen_subfi(TCGType type, TCGTemp *dst, int6= 4_t src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); -} - void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); -} - void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209198; cv=none; d=zohomail.com; s=zohoarc; b=mv+Y5aM/ee25eoLUmY3rSHwoRozGTHSC7GIUWw9AfEKuhmnN8bHj8o4FXBzhvSmWphArfgqYr+jd5vmzN4u5lbi7iNaYN7z2BteiQBT2UdRFNzx4WRUxD1aGJNRQA6bywmA7YNtWugc3IjU0Sy2AgmIa4NUtcgpwctqNu8foLUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209198; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FEuaQSDdbqE/uYjVAh6LP8f0r8b/FZVYcE/+IlgaBM8=; b=l+/ua6AgYvMNOuj1MilP5yuH8RUPqhdX7MUACSY5Qv6OMN5FlmBKA+/GeMuGqZfe0pHKD30ddADx/08Vx/3AwsjtzEEyKw6BfbaSKLWrc252conXTTmvk5DLzywwYDjbfPYvMroqs4jC5zlzWxI0dZM8aunZy6peJ4vVdNk3S0I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17892091985091003.970973449994; Sat, 12 Sep 2026 03:33:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1b-000515-Lh; Sat, 12 Sep 2026 06:31:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1M-0004nu-HP for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:44 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1K-0007HC-My for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:44 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-38e42560ebcso1804600a91.1 for ; Sat, 12 Sep 2026 03:31:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209101; x=1789813901; 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:content-type; bh=FEuaQSDdbqE/uYjVAh6LP8f0r8b/FZVYcE/+IlgaBM8=; b=SVrCt3dPoSulYAs2kUoAsqivfdm2QXZKN9Nv9cpgiXf6zTQyDBM97naoJgmdM2JedA SPU9tz+Cn477wtObSJj1MJKnsy98/ujRP6GnLbbOwh90NJh7c/R+e7DLmUiRQeFNTGCH fFRMySywvbupcwjjXO8bKxrEbozy55pZ6rpLrz2TBZlTsHAjoYIroOXDxM7mNkjSqlwv dCg06aXzj++laCRsFRnQ0EsDC5uSb9T0lkn8rtIHB13BblxYtC1oDo03XHycZkJbmJRS vU0gQdocI6uVDYvTHH+MVjShCBOWrbQRHlU8WJ26zAcQkcKv14IH6cJ0h95Q0w4u5Bsd nmmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209101; x=1789813901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FEuaQSDdbqE/uYjVAh6LP8f0r8b/FZVYcE/+IlgaBM8=; b=Kvy5KwvFnYV8GI5VQnzgQmBM3t4MYgvdqy6PsVOBaPxYhDfEpDL+l3WxWswX1Dyt9o 8Uslv9tFcmnrKryN7aB24IORnh6aQT699H8SwgRynGeX43QwYbjs2zuECvy8/RYJmQFV LfF9qUXK5ULJvVfaTiyT6BPvbOXKdjJnXEDHvLREZJV7nkWFlmr9W4wEhhnY90sf2lmV ZEOz3GFc8sIcSuy1VyOdy1QknYpBGzO/H2yxhk+cnLqa6SNAdMUPvLLfmwr4120v+odL XGo7jg91ehRLvju4fmR5OXxLFnEQhaJtzUwPMA2163qFsMQRqF/rCU1/8kWS4P5+Pxyn uGLQ== X-Gm-Message-State: AFuF++lGcgTwJG3PbzbYsqhf7fEDa0167x+1sK4vfs5U78ly64+lh+lt upXSDCLc4n2YWXj9ajfB9HCP45+6BHm8KKx2u8awZVkccvlRQFslGLfkcJaFeuZLxVcTviAme0L GUjdvxEo= X-Gm-Gg: AYBFou2p64XEs20ZUbOEGz5wrK5OdEXzqIpRJleo+2fpzuAnA++yOT1+Tsb7phR/jss w0DPfT9OuWJAt9zzvBMDXU/EEWfk38rQ5i5Pa4OboUugbiiaAXNU07hRFyAuZSXHxmWvqu89WXX kDzRFyfaMzDeg2ZVaJhiBIjZxg1nGOnLQnbT36KDtmSjwPFIKTH5K2XmSFau8ELLNGvjopv2EMr 3uNx4FHZTyQH9AenoDayJzI78h7DXOpN7fBTiZqnA+B69lR1Zj3PNiVfaMA8I5mCnGjQjvnQGGB ALDlRRd9zefI0VKhLnMMUslUDvENF38wxCuXBu32mOm1uo8VkFBJW8eWtGZpKJWifk8ml50lWlR jHBOStJ80v0ZLqHL/dxeQ12sXlyMLQSUTXiO3tQ1O1U615/219FJluRTagdZfqHeUdBrOH/Ho7l iZEf4uhLx3kLsvGmLGVLx9gxkwqXiAETHSSLV8RTTQ1v5DerzuSGqQvRoAwldfLuVd31u9ESoI+ 6JziTc= X-Received: by 2002:a17:90b:2689:b0:398:9bd1:3211 with SMTP id 98e67ed59e1d1-39d9c21eb06mr13477991a91.18.1789209101216; Sat, 12 Sep 2026 03:31:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 13/82] tcg: Generic expansion of tcg_gen_or_* Date: Sat, 12 Sep 2026 00:30:17 -1000 Message-ID: <20260912103126.598030-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209199773158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c957cc95b1e..9d309fed4ed 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -314,7 +313,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index ce21bf5b965..e42f57a7a8f 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -9,4 +9,5 @@ DEF_RRI(addi) DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) +DEF_RRR(or) DEF_RRR(sub) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5d0ffe4d70d..6e00dda3ad0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -394,6 +394,11 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) +{ + gen_op_ttt(INDEX_op_or, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -482,11 +487,6 @@ void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) tcg_gen_and_i32(ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_or, ret, arg1, arg2); -} - void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); -} - void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209242; cv=none; d=zohomail.com; s=zohoarc; b=SqdFyhNCN1EKMB+L7yiMz8vFwE/QlUh5JaRUqNGqAuRZYFSRYXMqCFqvk133NllNc5O8wc18KAug2EkzxPVYKErWNEsi7zwogbcZjLOLNgfZmv5JElluOR5Zs9mznLykPt+d1SO+cx1QRWhiwaAt3GS0y8SC8hr2fn1rSoE8lkU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209242; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=a5bBXZdHg8V8eGTTmdhn5oLUwYALwfHCCdaSOV7FuAs=; b=bywbulKKhTON7BTKbCcRxLr6I2NWSo0HgAjcY6D85O2/hLHQ18DuMFDly2t7vQXXhTzElFf+CuDMHBm1meQlF6wCAd/P/Eo2808FLl/SOaoIRvo/ImDew0LyOsGuWsS6ImmXhFKpy7g/guk35SxvidneynJL2ErDblPR4xPctMA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209242790134.72470318443106; Sat, 12 Sep 2026 03:34:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1n-0005JD-7G; Sat, 12 Sep 2026 06:32:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1N-0004nv-K9 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:46 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1L-0007HZ-Jm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:45 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b350c6920so300450a91.1 for ; Sat, 12 Sep 2026 03:31:43 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209102; x=1789813902; 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:content-type; bh=a5bBXZdHg8V8eGTTmdhn5oLUwYALwfHCCdaSOV7FuAs=; b=apDtAvyULl0vZtfUjLP+g2at7K8DZ9+AHXDgMdhtf95D9NdVAtPLldmg2C4K++rsXA 1l1fvz9TWCUQSUkulDdiCs8GIcEgH6kKci8v4xUu+DWcMbK63hDIXUKmOgcrAzn1gjfZ 7XANFy0gr9AG4GMULt0hVlyUTCrv+Hcrvmx1yxrs1bHzfyXrYvKeN6qD1eRfzQ02kwhC eHbqJbqoPrnmVxo3DwoCyHFiqhPVwEcfzha9E506xnYLyLldktdHCpiw7UWtAZYz1Ev6 fSuNbXOr08VqAwWemD+3ZHijUWQoFBhDQhmR5ESHmVQ6OwuoHLCSRgLhT1oY60ffFy6q a3NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209102; x=1789813902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=a5bBXZdHg8V8eGTTmdhn5oLUwYALwfHCCdaSOV7FuAs=; b=UcOX+EIKjSlScVnqBbwam9LufEFcw5D8En0PeiCtSKs43FPN9aQ4WHY4WcFNseblAN 6TlKfuvid5pWqnhPhkpDpZm7WlLMvXQwWxzqUHct/dQuHp3rztpQIoYoaNG5QONZfyDp nnT+4ObK1URjjt+qZAmJO0D/TRfQkEdiOjrvCEwOMUMzvXDHYfCRUvzuLUZtUj7OLQdJ kq2xg6DHwQWE5Vz5Eegkt4Y1vlOZB7Xev2rgTvk7UYZUzaMnGb/31NS1dAh68Ojoz3wh JrRlTy0USRvaURxsjZxHdZlw588LEyNT0Tln8+PkP4ENSwSagsLwBHc0s8Cdr0GeFxDh I/9Q== X-Gm-Message-State: AFuF++lDBiSnECVBwM7x7ZrCrRHYQqBQ2iyhYsYpo2s+cYl9qHr5D/nj qu+EolWh9DfDpfZGxXGH6tvAWyLgJiUS5p19QVT5t6BV+7dKTINYKEh4rVmkudPlaWaFSnxcrAj dDzwyBqY= X-Gm-Gg: AYBFou2V3g/xVSi8U2QTEEAexxBH12eGCk1JdR7n+/qoI5RlP8ddNgN0GXMOd8GYPu0 bh1vBrsFbbC0yWwkuKokCUe0t5HEWMkgGbEFzxF8KVL2n6/YQLu8UAqslNVxzmZUi6QQ80EcZId pOxJxoDH519y4CUx45hcG1dOtfKOQdLisCPqeUPwaV96BhW7j9hHmhCmOkfRE+qb+gYV3QDg15E 10SYZz9rUbyDiM80XbTS0zbIvWsvM+sv9DtFgtLZQMo8ZMWQ0QLiXZA9yGZv4edX7zHWLeLB/76 2YxYqRMtkWbcXZcydH+DOIpTVNUUlUW/JJDtPSwkNCkROipoB39EgxelXtw76EzSRd/EGKhSf7W Mm1qNhM0vFsOUq/ELOtj+2vpntbOeRdC2IaamK8Lfk+HIduGbCR/GnF2e6Mx0WUyupbZB+UMBcS EATAuzp9WCdPyuS2Kzl0h59Qnavv9JOwdah0jVG3ecvsH3urmxBXMWtyxLJsN/sQjaCO1+bPskA iuxHAA= X-Received: by 2002:a17:90b:2c86:b0:396:4dfb:5890 with SMTP id 98e67ed59e1d1-39dbbe84fb6mr4298824a91.2.1789209102105; Sat, 12 Sep 2026 03:31:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 14/82] tcg: Generic expansion of tcg_gen_xor_* Date: Sat, 12 Sep 2026 00:30:18 -1000 Message-ID: <20260912103126.598030-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209243926158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9d309fed4ed..04fc920acf0 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -313,7 +312,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index e42f57a7a8f..35301c12fef 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -11,3 +11,4 @@ DEF_RRR(add) DEF_RRR(and) DEF_RRR(or) DEF_RRR(sub) +DEF_RRR(xor) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6e00dda3ad0..6949a02736e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -418,6 +418,11 @@ static void gen_subfi(TCGType type, TCGTemp *dst, int6= 4_t src1, TCGTemp *src2) } } =20 +static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); +} + /* * Templated operations. */ @@ -499,11 +504,6 @@ void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int3= 2_t arg2) } } =20 -void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_xor, ret, arg1, arg2); -} - void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); -} - void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209215; cv=none; d=zohomail.com; s=zohoarc; b=U9S+WA2yAuwraqQXejith+COv57zjDZpJ5DaL66HyArg7A0+WVt/A/btRKg7/FL8xM7IIBk1otEtDp88MG0XDe6FFVHKiB2gQTKjKkMV3Uc8sct410SiL4Fc0C1R9Wo6jqwtPMUc5d0OmxiHA/PaQN9UMUOlmJM+geuLs0WzIM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209215; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=btMajdXeq2Pm3455LMStRrxLDtjil4Dtt64blTZw/bs=; b=FWj5IuaL+hAVIcrLl19KsGzt7ndyWyoTCHo3g03oMcmmuoQe/TVZzTHg6j/6ygWZOK0Bn4ZUdkJKt63VZVGkXCkVYiq5ZCoFM0jpYBoj6r7Po+wDCi1uLJZLm7eZa4Xx4u6GfDlM6pQHjVDh6BzdIWcQQqsQJ+MzvnRfo1W/GGA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209215809469.8438200194222; Sat, 12 Sep 2026 03:33:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1k-0005ER-3D; Sat, 12 Sep 2026 06:32:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1P-0004oD-7y for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:51 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1N-0007I7-Fn for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:46 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccc02279so578117a91.1 for ; Sat, 12 Sep 2026 03:31:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209103; x=1789813903; 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:content-type; bh=btMajdXeq2Pm3455LMStRrxLDtjil4Dtt64blTZw/bs=; b=MsIU1MDGPAe2poh9Wji7t6M9xnBJ6RBv4HXSnxm85HnOdfGTOgCsmrj67M3nAdWT71 3Rx1MYbG0DMuMlbDJBn9gY+hB4htSOVn1FU8h8X/rJgsSAPhCj/3Hf7tlwwbphxvpUZX c1sDsjgZZhyEH6vSMG5LBXkaRjeNXIz+KqXCtN+9PKLGyGZGl5QWH1gQ47nX5Xb4YnUH cGfEfV6gcRcbMEmtfPIJVgJM65rrhLiywyFVOrEFjQdYY7r1EHmGkx2vMyKWqZkvFnci LXYhw3dZs0eowNxre0uAWfypV3bQ4MoRbuyktCjlJgx5rK0tPiLOWiakOc4dPr6SOe2V r/Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209103; x=1789813903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=btMajdXeq2Pm3455LMStRrxLDtjil4Dtt64blTZw/bs=; b=fd9+Jv/U0fpNYieUpu+ySbq9pJF6tINJx8E3/GS14bb/d4Z4pazYFVQhCx8qdBf4fZ nBP8WW2KM7Uw0zet0RpV5QRJhFW8xpXoJ/25sxzsFWrQF/bBXtFBbysK6DzWvZ7CjpNC zpCg5mtBFuNXO97pv65ap+MlCFIrgNJnKKwTfgo4k08DMtb2Zm3C9UFJkFd/eSlfPP21 dNwI+c1m+HqFo2khd/MsKGO9eVCRZaPD4JBOl3BpEkMIjYsg1xjo0nuEe+uwS69xSLb8 v7dgUkeO1VTiH5gVxzLioaQFWJIgptf3XM08skAUoGPIsFferDxw9xoL7GW+LZmINeLO pdSw== X-Gm-Message-State: AFuF++nvBaHOavjunRKKzAnjBMG0IDcvT0T0dcQiYI28WPaf2ZEQimTu nKoJndoSuz4pGnNGwCYQ106vWniVx1XRKsBez6cABi+o7XOZX9VtXG+GlsXjKEKmnqqVztRRYgy hcVnvYUQ= X-Gm-Gg: AYBFou1no01yUaGYgQufu29PPzDWQ407bXVxZdKNzBsoErMTqLC0fenCSS56hiTQ7y/ WYqn8PeT+m0a2XkF7PxU1k2I1fnjQM0XgGeaqYNevXINNye7BohwBoOXIQrR9J8HAnz9wZAuSro mHITbWXtDTSGI0FZvAT9KRQld2LDVjkvjZ569c15CKV53I6LpLsn9ECXsDLFrvb7TUuLAVBpX/e DvvfjcbcZ3vBddeO6xTDrjdGcbNvPDDq5H7DciLpUxmHk4EK1x7AOJ2ImJ/75bdG/Rl3WcFaNOs 4l6xSbT9jqsO4wxBmU9x+3iqMF5SY7vBR6ZVL1tvPsnsuSianKVbhez2lnyHIIANFWuGWdO09HC OarMDt6B/mbej96dn8u9eRw/xB2eCp0buiZb7jHi0/JkF+/cS3FzDdfFTvr+LEp8GeWRtKrAw3y WGQEuxFTrzkpysdX6gJexbcnDOg0wN3ezNNRC+ECzgljtXBgugmEivR/6WtKEDKp4vP74ciJtZ2 iJ0YtM= X-Received: by 2002:a17:90b:574b:b0:39d:985b:4274 with SMTP id 98e67ed59e1d1-39d9bc66ac4mr13615532a91.5.1789209103017; Sat, 12 Sep 2026 03:31:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 15/82] tcg: Generic expansion of tcg_gen_shl_* Date: Sat, 12 Sep 2026 00:30:19 -1000 Message-ID: <20260912103126.598030-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209217856158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 04fc920acf0..76c0519f26a 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -312,7 +311,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 35301c12fef..f2c37dbdbe8 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -10,5 +10,6 @@ DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) DEF_RRR(or) +DEF_RRR(shl) DEF_RRR(sub) DEF_RRR(xor) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6949a02736e..406bccd6066 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -399,6 +399,11 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -527,11 +532,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_shl, ret, arg1, arg2); -} - void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); -} - void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209220; cv=none; d=zohomail.com; s=zohoarc; b=fNiOnwSbNimy3JIy3yHfeduKQuQoVVKhHsLFxVNKOzi8WGJfzCvN23mELOJj0L36FtYdHsJOXP1JbIo3dkwT5zj75xNfahlBrqspHZ3h/WFXI+bvRgiUBdjUz/23l0Ewt+al+7RjKFhpQQPWrvzpDi3gw1ONSVFamATx3VqCLu0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209220; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ktgOR3sto0pBJUBW1S0kol+3qf82aEqXt9eCMW4wkSI=; b=hGQ0vUVwyvnlEghd8w9IledULCauwCAQApUKqt5D4HU1zMfyUysnBqX73jRzKGUf5csyuXK0l+232OpJAonzOUT00Bo/QCRig9Lyqw4neYeCaO9lQtzUgk8kBcmhEM0KD9XKTRj2M4Op6ziPntmx9dZ0nmsxDsOSSFPUavvsdLc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209220751897.1555388767043; Sat, 12 Sep 2026 03:33:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1i-0005Cs-WA; Sat, 12 Sep 2026 06:32:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1O-0004oB-Us for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:51 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1N-0007I0-9u for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:46 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-3964e480f76so2422251a91.1 for ; Sat, 12 Sep 2026 03:31:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209104; x=1789813904; 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:content-type; bh=ktgOR3sto0pBJUBW1S0kol+3qf82aEqXt9eCMW4wkSI=; b=nUUS5x3Hb0eJYynyfibkZgkoE/7x5tmW2Yn2wcpGjaSMhauY7j45Iyc6fxwnf9quHG qsDuMCVMCSfoFAyAqEhvwXnK4ERNO/pNz9mhLhS/gwyo6vmkQZHyQesBgsbHQqqSUtoO tK63g3SkEy3KJRsxIRMc4/NHll7uSSAlJSI3j1NAqr9pyGbcY/RZ2qALYTGX7YsSz9CJ 14iFFDpHtx+UQtgd+D4X0UKwvjhv/kSKT4qsmc9AO28uHScjacxCJ7UtWUss2FHz0Z9e uHCPjRDyeNYIsse19xJ3drT5uOiylEBqD1Si+5YHV1XG7v8O+A0JqXYcGcZX/E+eckfP sqfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209104; x=1789813904; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ktgOR3sto0pBJUBW1S0kol+3qf82aEqXt9eCMW4wkSI=; b=A6kiHDWIJNxyTXWQEG/PAv2C0uYzgnrfstoBP/e7gKeJIrehtcG2kO7E0+ADL6/uuC HVxKO8fy0zcda8cmMtBw1N0r+mNLoRQIzKsExD1gD5xEy4TZfuAnXVFTkWrrujc7Zex7 ONVryXTqSS1ED1fGaPCRrG7SF4hMBtIiIx+7FqOJE6PFDSXjUHkymJbKA8LZaNfrcGAf ibW3QmfRLuxOVLWUAp1dIVyNGaahqkIK4bLtKvVt4+Zcdu7rV7b7Mvto1QqFRrqV5u49 iIMX4GiMmoL5AYhvD/g/GC43wY4nCh94Kuvl7boSDuDV/ui8a6kJd6Z5zScBTLTrvfHm 3+2g== X-Gm-Message-State: AFuF++nvJjIfIRkLuWzW+NqPKybYUquouIy/kuyk/c7zlq1RjeCDXmdx LrdH4+s+H7PqM7nLt7lCVIfCF69cwqQ3M5moCAWYYHnAhElKBHd9qy2KH9AY/Ni9SH8k4yjGnAY LqDdHH8E= X-Gm-Gg: AYBFou32+/sLRJ2gcb5XwS91eTtAUcbOFwLAWXp1DCq1xDes1DVCqB0BOO9cjMZwiEZ Wi3e6WgrNNMDBpUsIr8P5lKUj2z1LL/VJKHZyWpoeN4uJzgJYT3fMBXOhnoDaUsK6ulOTICy45R IE4Vpygo7pvsqbcjak1XKWdkn6h83PqrbCHolGDqgvwRO6rHQqpGeivG7aYGZjGi5ep0zFWIKD3 G3cLX/uQGj87R2PQv8cpxsDARwPzGu7C+gni5/Qqeji0gYylA8Jwif2eixAREjkyJJHhltQRNJx ylImslzvq/NT2b2umO+Eo/au8Zg7g1KQFDT1HhniN51FPw6e5LwEEUyAIYtDBTo481/gcJMQYOW viVBT9257U8vIadhJG1jiwjt3drgFa93wAnL25ZOCQWBskume/yvnomuhFLJo76f4xybHOgNxxb 9ebIzw2y0x88zVsI88baGUj7XX7uwL8FuK3O1EAwIkzWv/aj+Xbrw17OhGQPXLs+MpJB+8Xuds+ uu39os= X-Received: by 2002:a17:90b:4990:b0:396:4cbf:45a2 with SMTP id 98e67ed59e1d1-39d9c0acc23mr14358070a91.14.1789209103922; Sat, 12 Sep 2026 03:31:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 16/82] tcg: Generic expansion of tcg_gen_shr_* Date: Sat, 12 Sep 2026 00:30:20 -1000 Message-ID: <20260912103126.598030-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209221842158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 76c0519f26a..1e2d30b7125 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -311,7 +310,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index f2c37dbdbe8..0c40df31fe4 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -11,5 +11,6 @@ DEF_RRR(add) DEF_RRR(and) DEF_RRR(or) DEF_RRR(shl) +DEF_RRR(shr) DEF_RRR(sub) DEF_RRR(xor) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 406bccd6066..7feec9c0cc5 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -404,6 +404,11 @@ static void gen_shl(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +static void gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -542,11 +547,6 @@ void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) } } =20 -void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_shr, ret, arg1, arg2); -} - void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); -} - void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209137; cv=none; d=zohomail.com; s=zohoarc; b=fn6O7Zl+qmpEGefv+e45so5hg9V4OCwfzJigvR5ylbYiPs5QoDRUQlzhuERhs7mAMPSp+Rrf0h1NpooK5tAakuUhaBRn4CraDQFjzHCS4LuhzZm/kf0r0DC8WazGWObVaUikFNRA4s1mqi2rcRfNvLv470cot4QL+z68Z1UyRGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209137; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=WIuplCcu6Be2RGY/HzxUOBYkWqAVNB/7xHweuIxL+PI=; b=G/pPBpdY194Fpoj0eh1hHmOyUO5PbQWiASRH8kj6MmdWDp/5eotxuEE+4tu3dD9jTyS1eJ2+xUEqeaSORppCh5jmSn2wBcxnkZe5b6HYtoGDu3FaTSOzunCswy6W5+rs6hm9uI/JhLzEVrC7a5jd0e2MumgDQmmjaJ3GaXr55Nw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209137084740.8121369468662; Sat, 12 Sep 2026 03:32:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1h-0005BP-6r; Sat, 12 Sep 2026 06:32:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1Q-0004oF-7p for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:51 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1O-0007IL-Au for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:48 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-38ec1402b05so1792600a91.2 for ; Sat, 12 Sep 2026 03:31:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209105; x=1789813905; 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:content-type; bh=WIuplCcu6Be2RGY/HzxUOBYkWqAVNB/7xHweuIxL+PI=; b=cfg1ULiGyjha/oDDRjtg3DQUZhbJfpRKVCNJjNyU5sMX1kl9DerO+izUmZR2p2eCj3 qM8/7fKXQWDJU40x2LY8yTncKTZw9merdJTOqQZ5DOMbJeG3auWEorAvIqo8VAfHegEk aS7Gc4N3sz8dOk3b28kD3ZMMdfJE00R33m+nBALLEg0dWyv+OLwmyMnJKyACvTU0V2PU 3dUuCnPDYnoPg9rx5ec1PitLDwl4lypUlvBWC9oHY/QOC/5iaDqira9t6H7qqlpuIQMo Iv+FAz//sR/1NM3ibMGWyvZwt8PF5RzSuxcp8TBhC4EgnXarLn3j3/6oFNxhM92707Ok ifRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209105; x=1789813905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=WIuplCcu6Be2RGY/HzxUOBYkWqAVNB/7xHweuIxL+PI=; b=QRwU6u4QDLtqfK2VOIzjiTNO+cK/pEYQ0rk2LTXcfvdq2gzBYVJTwzjorLySDmLXuT nyKZ7fexVOuwgtWvKyxRRTNM1WWA4rEFU/eRj90PQVTo7kGcDTKp+HxouC1RwXUYQs/P NnhWzSNaJXW3zRyHGKtDOd3UU+wuDaa9IUjuNoIqGgsrYacINJSflilCOtvGw2XSp5Bz rnk5K4jp17P6ZO37JFCXbLlajZURmj9FFjrep2rZiF+f8Q5aTBeiLnRa8CztJENyS5vw E54HukMEj6lT5WgUMu2ikV4vNqgCNlBycaDfeoq1tbm0kHfDg1XJT6YD7tXvki6iOscI CJ9A== X-Gm-Message-State: AFuF++nmVUjO1YpfCXl+1WWJ/x/P5yNvtSfhdgB7Qd097Y7LyPKsFDqM QjuZdMGjOOTpi1+/rJc4jmWaZqAQSALbpT5UdBU/Jxs8vYi1T0XaQPxqFw6/2f7onvhKOBJ4qcP hKX53G7Q= X-Gm-Gg: AYBFou1v1eE0cRG/MJ2mvN52ytqcJc2wk2XbYEzNVCJQpUopo+pMTn6BcsV8djMf2fi vVL2LcVuc/0i1lqvBNNhzIN3mBTPisrk7O/mkK1eTZtWdn3yWZrxxTgvHj4XbpH7pSt0o97y8ZY ORULe8lkcXJLbTgJxPaVQILZ6NhbJWt2eqg/bzLx78hcYaGmZizjZ1/nhFrei2bs8zA4sAnJVhB f9df3JMuPS4aL9lsMN6dh+TcMz0Q8xPWHjIIdzUcyizR6DDfDVVD95ibrw1bvH4Gz96jwhiVpTp 9tOwNQj67eHSX5LlSZ624/Bo1ed9s5G1+Kx5//LBwDkmix8rXwnqGV2tGBdBiAmxr/Uxd29RY0n prqf8huy4tvaTi9s31gc5RPr4N3Z12D89H/0ENHlWUKWwKg9xozdGA/k5ahthRgP6Xe6xWrzvkn XSxZO04o9GkQzBKzI99O4guy2wtYoLWhlGUAlvipfW0urS1isgEfW+4dNeAqUgf2DN6ZPX81jKv eEheIw= X-Received: by 2002:a17:90b:278c:b0:398:e6b6:acc2 with SMTP id 98e67ed59e1d1-39d9c1b4d9amr14326427a91.12.1789209104852; Sat, 12 Sep 2026 03:31:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 17/82] tcg: Generic expansion of tcg_gen_sar_* Date: Sat, 12 Sep 2026 00:30:21 -1000 Message-ID: <20260912103126.598030-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209137613158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1e2d30b7125..79ef28c0196 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -310,7 +309,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 /* Size changing operations. */ diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 0c40df31fe4..356c2fd3147 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -10,6 +10,7 @@ DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) DEF_RRR(or) +DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) DEF_RRR(sub) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7feec9c0cc5..7e3672e4b9f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -399,6 +399,11 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -557,11 +562,6 @@ void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) } } =20 -void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_sar, ret, arg1, arg2); -} - void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); -} - void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209303; cv=none; d=zohomail.com; s=zohoarc; b=nGqKoB3aQlReJ0TqgrBi06CNFcfy8Ak/WkxMIMIC/wL6yvSbGbwOQ6HhgGmfPeVrpGFtJ3laRauUwyXlQFKNgRXp6jLfRAaYGJ50gbDowbZCBWQCe+GVdtw4JOsEtowyxtZe2ijJpiYnJN/wUbuavMXZvPylk8sRCOz3KwIW/I8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209303; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=xFzRZlbE6PthqtHpKnFiRaIoLUKZKGxLEv12G8A5wpA=; b=ijXGYkwg6mSJCq+PqQwU6k7qSMX6BP1GT/Ajn7Kwi7c+uotfwyjqgq8QbWaUkxYYSaipxlwsloSLOzC9cuhSekma3l+S0PR2Gqfe+bXAHuPDDwkQm1wYcJcI3JxocX43xZmalzynVp7rOulMiqw9/JfUuCGtZh624w3Qjyk7YZg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209303313711.3263221938364; Sat, 12 Sep 2026 03:35:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L20-0005zf-7w; Sat, 12 Sep 2026 06:32:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1R-0004oM-6h for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1P-0007IZ-8f for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:48 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4bdf8abaaso797016a12.2 for ; Sat, 12 Sep 2026 03:31:46 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209106; x=1789813906; 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:content-type; bh=xFzRZlbE6PthqtHpKnFiRaIoLUKZKGxLEv12G8A5wpA=; b=RAKZOhkng9ufDqbmDLnfdE3pTodeuHvQBaKulWv7fGjuyH/xUmZSb9SMWjgccSap81 9glZ5zgy7IXIGzbXCY5dUEtmL+PYXi5NdrW1ova4IRmTjvKKp/0nGC33alPJfqN6h2Yf k0Q0GJI8tvbC8qoCEeW8jMVLgjIunyK1zicOIeMMpOs5my2eUlJQRCWG5vDMZ9x610AB W2JX7iQCGXPebvOOQ1Yc1ngxQERDmlIzw6/rR9VTCpvjd2ojyTUGwK4GNhTEqQKVTrDV cdm5RxF4kZCE1Bw5O8RNunlErnoBF64JasgXoICpsm7GQ+PRBdZb6huOkIAsi1SkBlrB DCQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209106; x=1789813906; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=xFzRZlbE6PthqtHpKnFiRaIoLUKZKGxLEv12G8A5wpA=; b=W3AiJO9MpbOuo+9bZbhrgHQex4pL5LcglWtNR9y2lrFf8v+yWxoyeb8tzMHtz66EZ6 S4Y5G6pVCCKAPcHjJ/Z2GV/UhlULhHkYkXECcxY2+9UFcunrhRp+q5wq8niyJ1sjVDIe zuQNtWX5xo4xGLHu7NXP7NobXkbp5Z3j5Yp+LFlKg6rZ5uwReldy/BeqVY7qcc+KHsTr 5LqVWrANOI+SdhYVZkBB/oucW7E7fHAab+i7Vk1FCAk+8BItVS9IXtnYcaR7FSG3cv4M M4c2jSmmT3a0P+lGuddW+K7cKfCJvQI1Sx1TcsgSmbGZzJLdDRzv6Fh5huxYrInINLth WRvw== X-Gm-Message-State: AFuF++mr9CEhfIMg+E100mKN9o5EH4NHUpHOWb+B7MWZ4gvjS3a3crH/ x4qTn5Hd/+dPHFILaWSWydZydqrIn50bai3zPRiOLGWStYcbAQwRc1CAIX/Nem7oTzHOKNaGUGq N4k/y+X8= X-Gm-Gg: AYBFou1gd+jrrUKdaBuMLHgFe2QR3786cfELk82K8Z41J2x8SQwEVui79TEG+5CGl6R KdxJjT1gMnUAFpbBQ7l4scc0Sj4Kth+ceh2eTO6SDXD8vKIv+acQ53GyIZP6AIFkDiq/y84pTGu cPZeHBR8InQUo8iBTEvWX4/hyVsSks91LjX0mDmW45hDfUfbKR9kCYmSMRv/H77n7m6FAeyUq1i fSwGUS02Ap5mUcSLhONcpY1uvhemG09hrbARp0Y8HiyMQSaVNCngJZiRF2frlO2UfTWKW1AzYRe XPDceyPEVUo6x15++Knl0HlPQRsN1qGtHBj5MB8I2YrxctH2lfA3+5aVTWEjLmSs9RA9ca1p09q 9GZVaY8cyreaJHPyduO832kPRWv0E+Gw98E+T8qAI5WKNgUX4xOvc7fNVshSWy6mFIvD9DUUe4x LN5fteI/A+6j5RmfU8TwNSI6z9vHUQiYo1a+7wZxsbWpSOHwNxVOQ80u8CFtR94Cx0wBBtFcypW PfQwbY= X-Received: by 2002:a05:6a20:cf85:b0:3d3:aec2:4dce with SMTP id adf61e73a8af0-3daed3ff609mr15211986637.26.1789209105784; Sat, 12 Sep 2026 03:31:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 18/82] tcg: Generic expansion of tcg_gen_mul_* Date: Sat, 12 Sep 2026 00:30:22 -1000 Message-ID: <20260912103126.598030-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209304259158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 79ef28c0196..af15e4a9dea 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -208,7 +208,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ @@ -309,7 +308,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 /* Size changing operations. */ =20 diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 356c2fd3147..67aee68c1a4 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -9,6 +9,7 @@ DEF_RRI(addi) DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) +DEF_RRR(mul) DEF_RRR(or) DEF_RRR(sar) DEF_RRR(shl) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7e3672e4b9f..ff06a80dc02 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -389,6 +389,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -628,11 +633,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_mul, ret, arg1, arg2); -} - void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 0) { @@ -1520,11 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209298; cv=none; d=zohomail.com; s=zohoarc; b=Ds2fA4xmzUs1QaNtnW9Z+OP+X8b1QKOSz8gyU9VN6dhRRXPDZYjvFTQlymZPmAJ5o6CBe+oogJdRe3cAQnmfhQNqV/1PC3UG40yXrJ2cPJ0SWV9+8laU7OMi/eO9ttz70jHk9jSRS2befytKOk+Vz30G4MkUDEfNCcLEscYkB2Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209298; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=HCfglA/tPJhB1o/CRCIIhHWWkrHTyJ7PJZcyUVdFWy4=; b=iSXHXXniOCEwOPsjoT9CSSHQ1s/uGhZC2XNon3dBR11Qz3yoTpbkD5vDUm9LD9Kf49McMg2kv4StleQNbo/HktI/b11Oy3Ngr/V2rqTN78t86n0oe8LRyQ8DAKRmj+jXrP5J72rsXN0gxbKXrNRiqIFGEDMEJog/1KQfYX44XHU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209298795332.50046136647836; Sat, 12 Sep 2026 03:34:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1l-0005Fz-QU; Sat, 12 Sep 2026 06:32:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1S-0004pX-Kx for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1Q-0007It-PG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:50 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-39647aa9d52so1891127a91.0 for ; Sat, 12 Sep 2026 03:31:47 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209107; x=1789813907; 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:content-type; bh=HCfglA/tPJhB1o/CRCIIhHWWkrHTyJ7PJZcyUVdFWy4=; b=NRnGe65peyGM+lGkK+iBeMy6bPaKfmf6tIVqq5FeR3mc16ft+2yGIxCwR7euvC0nrs 6Mquj2lPZ85qY6JbWu6n4OnIzELUT1Kpe3qq22JKVTVPUwq39rY2hrL2mma8wAJZowjh Io0SvP2y7lvFdyiR0FXa5NiFZLVwhwYapmsPq30YnrBg2HPpB9Vvd7LfKST/MKzstWGo wdG84UNyS9NawdnOZ5CwkvoXLH3KclME+vtHoK7aQo2fgMdZJeAhJf/ZOsCoL6x6M8tW bc10vMsr7wmIUxYvXpnq4WmQrZH/FVhrHwuubcMLPcfS+ltYPJAZ1bC3nuJtbumZr/bB ua/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209107; x=1789813907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=HCfglA/tPJhB1o/CRCIIhHWWkrHTyJ7PJZcyUVdFWy4=; b=TC3F7IlE8298PypE8Yv4L9c+ayecib8V8zkMGeCZ2b8gdSVAp1Pn+RFI7+rQECWYrl W/uGMITwoL2sO1Rc5qaH1zv3j3UrONRaV4o4rieOUP89Cpw7c10fRoaxSGsy0BUNfL7L GxwsmFRyTo3P4fNGECpbcSZ8YJ6DEPzdegDD9p1CtyS69THzpi2c3q4mvftLCnH3KvJc 7+N/G1iWsa7xBjICtxqwcdXDaWRLCj4h43iXMy8gG2TkcixJTORn1xWBSerEgU4rTev3 BKtwAMAhcchWEtn1lJicurx4Wb88ZfB+GLNyfeqPCKkRssF2dDPjNYKi7+BxwFJUD1uk Qsew== X-Gm-Message-State: AFuF++m/gKpLnFmntvy26REZPb24DI0hFoAhlwruxFsZ9pCxvbIltHqS FsHpLoU3wET/LybQ359zC/7u1ddE/0Ncal5frPSH/SmFsG1k0hw4Tq+GrM/5mn0itSDMYkCz+b2 GAZ/Gnj8= X-Gm-Gg: AYBFou1jKNXZZc3I+IjiG5906f9lim3cmAUK2pmcNJClE8KSrSuapoGpQU3ulV3HMJb 81cwsbxCgSixVulA0FruBb1wgz28cHO5lYCuNFfYsRl+9aeaiL/8PKwbfYFYJTtE28BLx55qpHE McRMyTWP8w7LN2gGcurCYTuHy45uee0f7C54fYEgWvlH60b8k41gP/kcgW9RwZdsIFbH/OAvPys VbtJJQBScMfBGcdHQ2Y9Y2+36OfHB3ap4AICRxd+hVw8I3YqIXoDKMcnSkFGaJ9WaQMuNtdTpna 1ifO914U4DhveFXhDRPJby8UDcfR2d01/ZgwZC9CxIwGI2+4CX7bxEX4wVmyukeRGN2B2mgTHv9 xUCriRJX/DUdeuJAL5MkaEQpQMXdnDd8Y2YcH+mo1ITqKFkd3RYSnqHlM6+zI9oCNJmzsB6S0KP LfUJkCIvVDpfowom0eq5FktWOmgdKLNZh+pO1MPeFACQjHKVT6pwRIw6ULnvaw60YdfjACnqELW 0o0Mo4= X-Received: by 2002:a17:90a:d40b:b0:398:cb8f:c308 with SMTP id 98e67ed59e1d1-39d773ade15mr18234670a91.0.1789209106667; Sat, 12 Sep 2026 03:31:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 19/82] tcg: Generic expansion of tcg_gen_shli_* Date: Sat, 12 Sep 2026 00:30:23 -1000 Message-ID: <20260912103126.598030-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209300244158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index af15e4a9dea..fd272b4305c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -124,7 +124,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -215,7 +214,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 67aee68c1a4..b0ba4bafc36 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -6,6 +6,7 @@ DEF_RIR(subfi) DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) +DEF_RRI(shli) DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ff06a80dc02..c12d0f29a72 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -414,6 +414,16 @@ static void gen_shl(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +static void gen_shli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_shl(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); @@ -547,16 +557,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_shl_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1576,16 +1576,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_shl_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209141; cv=none; d=zohomail.com; s=zohoarc; b=gOgyb5POMRxSntx6ixAWnwjmrn8OglBwWK1SRVsbO8OqvFMlpI6o7JxNCyC0Vr7r6VUtmna2EebjZK48tK0N/Scc4YwqiTbKvBB9YT99K9xkov5Yo6w/dzKbRGWyFkUfiHvgcU5pLJ+VyOkxwh7rMH1pxo869rgwdK/s9UL3Kuo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209141; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=XQ9QNOp6Lq6mUbKDLngPmRtWfpWQNaQ/xgFMeCdFyIk=; b=ROzp2zdNGGFv5QWgNtud4RDFRtmT2HsbkUzG4q+zzQcTsFp82fXxHXKbfkbSwL1wJuT03pOmZzcvpXMRiDOWlkaIliVF0u1gu5e1jxePUKccBSITqXbbt4zoxJkrIQ8ifg6xy1TJehtDcK9zAnfx91lHFWAlKNKjb2iQQu30luA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209141641257.5230691203658; Sat, 12 Sep 2026 03:32:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1s-0005a4-Fb; Sat, 12 Sep 2026 06:32:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1S-0004pJ-HP for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1R-0007J3-0X for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:50 -0400 Received: by mail-pz2-x0f.google.com with SMTP id d2e1a72fcca58-85469b2e1d5so807499b3a.1 for ; Sat, 12 Sep 2026 03:31:48 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209107; x=1789813907; 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:content-type; bh=XQ9QNOp6Lq6mUbKDLngPmRtWfpWQNaQ/xgFMeCdFyIk=; b=I1vgZrJEtOBpCt2soLvRekCgsJpc7voY2ZHP9sv5pSXWQe6QXKH1OEYG8nW1GljCOt XWpcrDBTkD6jW9uqvawZIYnUFB+pGhjyHoh9wpRokmYkpicAZv7RnxhYDHLNvdpFYmv2 V8UIzc0fJJ0M9OJZ75QjngE5CdItzr/HXh4uZ7jmRuu9Wn8cXBn2vemTfkPhwWqUYef3 7xhFwQJUV9ODkKSY0Ozlq630os1iZ6Xh+5Izzn3CJ5I6EKbGyBetDC2LUgyzpGVnmMt3 sGJ5L4UN+svSoknm0Cf7FjStRim+FmOrRvU+xDhOlfaU914kMuWVB0E/jI+1ELPHiH9e pbCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209107; x=1789813907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=XQ9QNOp6Lq6mUbKDLngPmRtWfpWQNaQ/xgFMeCdFyIk=; b=JWLN6m9Swxr+NiaQhiz6Ds8IHMewB4zmmAdq58voJrIL4ljwCNWtfkC66jBqcVpi5H D6HdgR72oAoXJqLgq3lh+piga9rd519t/ltz7h5rxqg7GSB3gWU5YKn83oDhC1FXO6Yh WcntKaaS3K7cdcPFiAyyq3h5qeNQlWCUgJ8fqeobSk9f966J85USdqpVnfq0S+79UWX2 ScsCkiIToATBX+vySdIq5L1N4cm29jUjbVFSzV5aTGRzW4Hxgs4n/9qCE630xVDtjdar 8Ynn0/AnGr1fPTFoyX7pLvi5X1W1GzCeVX+w4voCAgpHdnMq66CC9iT1rn8Rp7suV+cA W33g== X-Gm-Message-State: AFuF++kAxgVXl+PWmQW5cag2IUTJ+qK4Ts8BPx2HMSHm3cq6/iMLjkSU vQySPgSzAdOLFR/Uay4POZSPM+HVGZ70ivd6ojeK20GCkXVuI1om2ksfxMZtQ3q0pbQZmKWCTGD tyFJjs2Y= X-Gm-Gg: AYBFou34vgEF1+ktxo1o0kSQMmm9wEWwfcB6A8Ba8B/SaD63ZoIM/pcEIyUEOSZksm2 OvHqXmycnuWB0evWy4ZVfbi2xDU3wc3BcdnGvXZPzxXx87M+lIftT6ckiD/zCiuX8CpNm9cAqen DCwKO1DNmkEkc82CPJcUygema5r8tQob+o2GAH7BKACtD8aLQkobCKy6oWS6usHighwXX0kkspe aR9twa/CJ6YBQTgJ/Rlg2fIY+woSv9US4CEzZFixF5kI6dqYpZJUyN7IpjIcojJJkXjSHaVVcsn nie1abgvK8tj3jQlG0OAVZ1zcY0FqOiA+TU3T+j5gi4lfRPjFRERZ6PzIUPDX4owiFSnH5mHqLV V1ml/71lFr2o2GaK4fKvOqn79uttAyCGIhOX7+a4LcHp14XxtywlIQkuZAwXsrnk9qcT80tBNlp anMFSn5KNPE3VGCCeN7lWeIhzky8HeRV9Polso7YqGgl+Lt0wpP8sOEJKmTkoGuNH9YAUDeZazU aa+/bk= X-Received: by 2002:a05:6a20:72a4:b0:3da:34a7:6444 with SMTP id adf61e73a8af0-3daed3d94abmr14073375637.26.1789209107518; Sat, 12 Sep 2026 03:31:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 20/82] tcg: Generic expansion of tcg_gen_shri_* Date: Sat, 12 Sep 2026 00:30:24 -1000 Message-ID: <20260912103126.598030-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209143577158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index fd272b4305c..a09d734e254 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -124,7 +124,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -214,7 +213,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index b0ba4bafc36..0b3f9c0067d 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -7,6 +7,7 @@ DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) DEF_RRI(shli) +DEF_RRI(shri) DEF_RRI(subi) DEF_RRR(add) DEF_RRR(and) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c12d0f29a72..011817d9f50 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -429,6 +429,16 @@ static void gen_shr(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); } =20 +static void gen_shri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_shr(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -557,16 +567,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_shr_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1576,16 +1576,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_shr_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209175; cv=none; d=zohomail.com; s=zohoarc; b=i7CDvg1ny34x73hTe9ZQLcsqXPw6bE/4D223/6CSrS4KS81hTSTd/RDiziRqv/nOO/wRykhwlZSfDxMSgSlaznEUlbRZhwoX1zGAAKlkmh9InmSWfHbD7PI2uODGjYsH/X9B2voVCVAGxcT++KKaPMHmD/0IOjNfnB75BJtz/bk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209175; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SjZUO+5l3j/Se+oM71q7vJIu3PpFXRzVmyfd65WJaEA=; b=RVKw+YIRITBquwhRE6H2/n8ZwiovTfW0ryPSX5Mx4FdohEHakpsQBK0J3Ire1sA2nMsKtSqtfMTrS1HH/REvTQv6MUsprSedS3/fhPsclYbXOKHM6Mgbaf9FEbkqbrYmbR7UR88WqwC4zfvdoHxqc316Tp3xkspta15Sp3e32m0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209175197246.34420819349486; Sat, 12 Sep 2026 03:32:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1k-0005Ea-7i; Sat, 12 Sep 2026 06:32:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1U-0004q1-2R for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1S-0007JH-0Q for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:51 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d8fe517774so9430125ad.0 for ; Sat, 12 Sep 2026 03:31:49 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209109; x=1789813909; 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:content-type; bh=SjZUO+5l3j/Se+oM71q7vJIu3PpFXRzVmyfd65WJaEA=; b=H9rMnTvwSDjll0yqq6ZW0coc5azHPE9PPtmBFB/yu+XyfPSiZeqU0UsYmWPgmY8GXG ta0ovQXf9A6O6dvBNB5dfgUoI6OccMxkMwg/17mVFUyqLuNc+JUCiFD3/pzmi90GKxMa gkWY463jvdAKWu1VETGJISxoTor51oK4/JB/DY8B8lJT/Skz1LLYLs4nSud3VXzEM1if oVEQzI4WMAt1spjn/2nEVrPbX4bxKpFW8cjow+AypYDynf9C6HFqH+VSj8KWzq5UQ38O mmQTtyAknB+qvLuEbn1Kx0P7WKiGSHB0qsZNDhZIdk/xDdd2ZYsUxvjDJfLHBd56jSMu fC8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209109; x=1789813909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=SjZUO+5l3j/Se+oM71q7vJIu3PpFXRzVmyfd65WJaEA=; b=NzvcL0vB/tialWXg385gBH5hf3ymadQsvHlYt3lzl8dxEsiQJUbRX65xrGXz2fvYBM 6DQZ1iztShAOAVqiNaoy7LkCoAXmQ+xz6FzNuaeRSXSECu5T0Ck7aDOMSR2wmMjUFvAJ TW6a3ZR4BkLIm0nzQuX7B3DjBCKI7RXZa9vROPIXu44pcbZmgmQ/zEP/8KM80EyImnLk TG1qxwcklU69Z0cqqitk3zco1yooC4r59nOdWe7FpUB4iBoHzAkGD6h6otpGBBFYQawX 9lRYkFTtWYsmQP9nEqpGWSZ9N97p/ApaRzrD31iIymEODm8QxHQyNNvDsfFGQfK6w8MX D2Ow== X-Gm-Message-State: AFuF++nws6i0sLr29YfJ/h44OQi3FsCu+UKxiz+YCdr3iH2xPOHchhmH SdD2vUe0bhUymwCr6Csq4tat76FAfjMIcoYXztglqfH4c2QRXRSGhb4Ual7RHWfRJz0oNG52Tlq 6IaXKQg4= X-Gm-Gg: AYBFou24aepUL00on6OnOPXgGcC6AF41TmWofAARsmuJm64DgeZC5LGAJN4B9XcV0FX 2pdVIHXqBqKVsDi1SYmNCzRL5o2FtCFlPJpsWX/GUQdt7hU1EP9oN4GbWLtu/mAsm8AT1Vuo7Vh gdpH2v2oQOxthS3BtC3d7COxxmB+4BB7Qi+7ACSy3+HImy5F2haRWDjqPCNBYKlulVD8tQNp0bJ UcvFzK01iQufCNDdp0xFXqs3kN9Z1VQjMNBtqiTwhOf3Fu15/TK9kI9pcTMMpCaW3zbO2haCacJ C++ft9ZUJ7+b7ChxFhDsFmfT9FiND26NORYRK2zWsdGG1gCAGLgPlL743Oo6nmPoxp11upeTHyx 1kxV3Ss8bqQawp72V7vgRvd9N0bXeHFQi7z5Z5zAF4Ges/zsGN/u2/YKqIIwZEC2BXFbv4DJxFx UoGp+C1893QirL5XbwPfalfnIOU+iCCaACAYZreJTP/T8pPGkVekwODS/FEqPUzt3tPwemh46Y3 H02M3g= X-Received: by 2002:a17:90b:1f8e:b0:398:b88c:2b7b with SMTP id 98e67ed59e1d1-39d9bd9917cmr16050374a91.8.1789209108553; Sat, 12 Sep 2026 03:31:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 21/82] tcg: Generic expansion of tcg_gen_sari_* Date: Sat, 12 Sep 2026 00:30:25 -1000 Message-ID: <20260912103126.598030-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209175604158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index a09d734e254..ebc0f1714f3 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -124,7 +124,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -213,7 +212,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 0b3f9c0067d..0a17ebf5030 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -6,6 +6,7 @@ DEF_RIR(subfi) DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) +DEF_RRI(sari) DEF_RRI(shli) DEF_RRI(shri) DEF_RRI(subi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 011817d9f50..5936ac43afe 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -409,6 +409,16 @@ static void gen_sar(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); } =20 +static void gen_sari(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_sar(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -567,16 +577,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_sar_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1576,16 +1576,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_sar_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209288; cv=none; d=zohomail.com; s=zohoarc; b=GVc01CMGqPZHw2CVPOwqsIpLSaTc4nZsWYmuYuJdVFvewG8IdVH9KiTfBmzzbOcbwz/oCN9LF8cyOyuA1JMhfH3XEJjNyViRPdc4lfrrgx8j4ZALag+RNnVdlGQT5TsBy3ehluPSVwtXgnkxSc26wNQSrv3HxFNoN1kFpNu7GV4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209288; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=gOejFpznoDwQMPvboJzR2oYG0+hbpPdBs8bLYbMA+FU=; b=kziZcjJ+0/T6P1j8zYEvsAN9BeN5VuPRg3Id62adlSSe4g7GYFdY/lu2313kF20+M/OX4JmfOmkO0ckJPFHz50Llys79wGlxB5VCYOjxPJHaNz6mYKRYZV7BtW/GX1ybAvjb+FpddwgSE4XuEOwLsHTBCLaBxIkqEXah/B+yO/U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209288384419.1538772593749; Sat, 12 Sep 2026 03:34:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L21-00063C-DV; Sat, 12 Sep 2026 06:32:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1U-0004ru-Px for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1S-0007JQ-V9 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:52 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2dd4b3c752fso7572715ad.3 for ; Sat, 12 Sep 2026 03:31:50 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209109; x=1789813909; 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:content-type; bh=gOejFpznoDwQMPvboJzR2oYG0+hbpPdBs8bLYbMA+FU=; b=YuKh3O+baLg0Fh/+nVn2tDsoxRos1NZhAlt676rjnxEVpVyoGzwBdyyHi+xbAA65xS 0oOf1XAWi9VVURh5/1gZe4HcCFBLgdcWQCoP4deLAWl9H9yjY7wNcaxYwdYsCElV/NAn oBSW9Rvn74w8NdQ6eIHFEu95So45V97HzrfTC24vuTQLoehw+URVvIimuu5FXQK9BNKd 7Ju/9UnswfFUSlDYgBu9j0oil0iRj0JIiobkpIDuSxNAuGAWwJ3GhWzPfwnrIsQiIFQE /gpt2YLJd5yE5qwwWCVb/XtT4NmM5X/9hiAPxTkxIa4PmKaVvHkYIxM7MfUlANL/qvGG 9fog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209109; x=1789813909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=gOejFpznoDwQMPvboJzR2oYG0+hbpPdBs8bLYbMA+FU=; b=GUQabIzhxGKNGe+NasAfGfpLO9ZxLn3s7zjb/hjvUO26Y3qop0aDxjLvPjnwLUk4Mc 2F2PeLJWhB6E0WI/F4CM23TmARmsUZ85Ajzq2BqmMU9QO3Mp3opDCCrkKB9VnBC85lno RIOXgv5apVWDg8F752/9JwnciskW1aHqM/EjRKnrX+XYQmWHMIdeq9Fc+b7ixiVEo6Jk ztsc2/wN9dRisjYN8uHMat/l1kVnYYK/gTW3WQ7VSJyHEZ5DrwUldcLRiLEFTMYn6Yvf SPWv4L35u1QDc/V8bJbxHCXScG6l/+WD6cI2T34jojNzB3XqHFrhp2RSrtHIJOcO19NJ pRIA== X-Gm-Message-State: AFuF++mfltNhpKksq+4b+J4MwjVTmgLRuhGKwOkL9vgQYDUrih5q5euw 204BpQr4B6ohSTHeYXNGkl6oRaB/vcViahT8IqWgNS9aTJL2wy/YdpM6SHh184V7HTRgV/VhUal Ny2kxEW4= X-Gm-Gg: AYBFou1z7XN9IeDhIWUswOW2Efg3/AkPRTBLpXZFYWar/98UUTgbuFVCds3bHh7THNP 3WdhQSfCq4GkyVgthBSDc8qljkMgRTKBZw+0KrDa5SpJz0bNfo1oiAbmSjK3QE9N9T9K4rgjZjB cNhBn7/Vk8Ej2qfLUwm4aS7SeKErbTbz74jjLMMyCv87f0tmozppRS16Qu7rWu5L24USYUnHqY/ 0sDo8HnFm/Cmw29EpzwJLAJy1n0ynj9HzcHMhRc1lLdZNLHyjazTFIMf92Jy4jjjp+rS83LhYZu P/9TFXqRn7UwXahHmy3YiPQOAFvoNkIZUVoLbMX4USXpKPAOXGGmnWu7sorAkOXCd19ZyqfAYXl GCw0eAS796cva0QAvZl8zaa8J8k+tpvJdpGfRJ89b2A2Xf+rUr86pLR7+xWWHYoZvW5prcs4/+L S29QiJm8vNDWzm9bj0htu2rzOotfnvnHtlA28A73BcFgrxCWmcTMuutS+gFwF5sVnTxkKvLUrM0 WupB64= X-Received: by 2002:a17:90b:4b0e:b0:398:9be5:b41d with SMTP id 98e67ed59e1d1-39d9c368348mr13707520a91.24.1789209109471; Sat, 12 Sep 2026 03:31:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 22/82] tcg: Generic expansion of tcg_gen_andi_* Date: Sat, 12 Sep 2026 00:30:26 -1000 Message-ID: <20260912103126.598030-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209290184158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 90 ++++++++++++----------------------- 3 files changed, 31 insertions(+), 62 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ebc0f1714f3..3335e127083 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -209,7 +208,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 0a17ebf5030..898b77b00c2 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -6,6 +6,7 @@ DEF_RIR(subfi) DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) +DEF_RRI(andi) DEF_RRI(sari) DEF_RRI(shli) DEF_RRI(shri) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5936ac43afe..c3e897d479e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -115,6 +115,12 @@ static TCGOp *gen_op_ttt(TCGOpcode opc, TCGType type, return tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= ); } =20 +static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGArg a2, TCGArg a3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -372,6 +378,30 @@ static void gen_and(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_and, type, dst, src1, src2); } =20 +static void gen_andi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_movi(type, dst, 0); + } else if (src2 =3D=3D -1) { + gen_mov(type, dst, src1); + } else { + /* + * Canonicalize on extract, if valid. This aids x86 with its + * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode + * which does not require matching operands. Other backends can + * trivially expand the extract to AND during code generation. + */ + if (is_power_of_2(src2 + 1)) { + unsigned len =3D cto64(src2); + if (TCG_TARGET_extract_valid(type, 0, len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src1, 0, len); + return; + } + } + gen_and(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -512,36 +542,6 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* Some cases can be optimized here. */ - switch (arg2) { - case 0: - tcg_gen_movi_i32(ret, 0); - return; - case -1: - tcg_gen_mov_i32(ret, arg1); - return; - default: - /* - * Canonicalize on extract, if valid. This aids x86 with its - * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode - * which does not require matching operands. Other backends can - * trivially expand the extract to AND during code generation. - */ - if (!(arg2 & (arg2 + 1))) { - unsigned len =3D ctz32(~arg2); - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, 0, len)) { - tcg_gen_extract_i32(ret, arg1, 0, len); - return; - } - } - break; - } - - tcg_gen_and_i32(ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1520,36 +1520,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - switch (arg2) { - case 0: - tcg_gen_movi_i64(ret, 0); - return; - case -1: - tcg_gen_mov_i64(ret, arg1); - return; - default: - /* - * Canonicalize on extract, if valid. This aids x86 with its - * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode - * which does not require matching operands. Other backends can - * trivially expand the extract to AND during code generation. - */ - if (!(arg2 & (arg2 + 1))) { - unsigned len =3D ctz64(~arg2); - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, len)) { - tcg_gen_extract_i64(ret, arg1, 0, len); - return; - } - } - break; - } - - tcg_gen_and_i64(ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209294; cv=none; d=zohomail.com; s=zohoarc; b=jsJWUsO7lbKnQo9I/cp+ujVjxvI174Ww3Ss7x6pLNeXT6ZQHcODCb8lFiFZss+HrKoHzVKAqv3X8nPgfXYM0tg+3Cgl2A4iiBON+zGcaORzEXHQNU9gzO7JjbmkIKreSlfmEQN3vB90XgRakt6O4/ESCfS1g1QMS0bcPKBD0pBQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209294; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bvT6V6fnAo3fTetyu1MZeI7Kqa60nquZJYS8444U2s0=; b=GtXtXVBTv5bF+Nt7e0n4XvrAdK9TtAPq7AGKfL5BDhG94Cf/kwkrosxPlDnBX047lPUNXrMNpiXW/PoR9Suer2fFMXxCWF/Kym/UMRibHXNtctTwu+d/W18hiZNvqC56vg1ePlIbR1G81nluynpFcxhadpPYqwNzwrvg5J22jhs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17892092943761011.0952733034317; Sat, 12 Sep 2026 03:34:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L21-00063V-Jd; Sat, 12 Sep 2026 06:32:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1W-0004tk-MX for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1T-0007Jh-Rf for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:53 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b9184fa80so573451a91.2 for ; Sat, 12 Sep 2026 03:31:51 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209110; x=1789813910; 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:content-type; bh=bvT6V6fnAo3fTetyu1MZeI7Kqa60nquZJYS8444U2s0=; b=BE12snFF2ndWg7ndjM+Dtjf1unKiNzVJrfku4PYf39CBKCfRgfazh3+qmnVOsNoT9M YYUGGCEha7hVoI0vWmJ1IfRMdlLqXBwEOjCh9he3dwxG997rR7UmfmowRRHRjOeeUezC gtdV0poB/aGBYhHAU/ve+uhlLanOf29by0EpwVunImMst4KxHDbvjHRgqrnvOKvn98fc 1h4TRtthy/YujuN/SNEMsB7enIKeQcunyNVmAZPwnMJo+5vb4IW8q/3K9c5wmUQIsrlL w7xn+3wIcBXq3X91u0OqAwuLYIt8cNvWbqeHqh36Eq3sEplnsRbyQWA76xjE10oz0YpH rYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209110; x=1789813910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=bvT6V6fnAo3fTetyu1MZeI7Kqa60nquZJYS8444U2s0=; b=OrPu/QTA0P8X0bqUFT5SoPls634GP0fSmAvDr57+BCbS0/IbUo5ngEn08HRb1lGj0A 5QKHQrBIZFxZXmrNdABka+UqljCneG4QlAA3GSwx4VOopL6+33o7Te44MCDcStKEh8SO BLumiNNGYcSnU3GbhbJynvZ4qGErVeHi93NDHUneGmqYfCYhNtM+4kWVTe8Hz8Aq0knb mzPGqkMSYRft67VNhU7D9KDLRBFL0vi73zZUXjVZbBVWyZG4MvQiQI8JadU/l3iHP3sT SRrMLcFgMNDql3cYQaIYoxkIU0MogVlxjU/H+7VJevxG0qtYqJnB3tHd11XeMFCaWcpR Jkmg== X-Gm-Message-State: AFuF++nyarsM1gGM1hCwAEgP9uqdFbDJKU5vrn+WwXZgStmXxHUeutj/ XJaL/MVoBVcQFPhEY8LXO1OLigP5EtRSN0oQKMNLOsAN2f1FWoJw+Ve9PenZo83KOGLKt685rgY GqBCR X-Gm-Gg: AYBFou0bSwy5NUGBTPeBuTjFZwRd/zpt2eSIzoyD3JQNggroJZcOTi7Z/vAO0zXK8fe JRBLwsMK89sX5oneqFH3u3c5Af4zaQm92FZ6+gO7auaLxepVqnPwV4x9AmGqrxjLUql9p/PqNP1 DHRdRq3MQl6dEPa8z1sEm162Aj249AU2d/8t2vra9+EbCJOOqT5jeDEGogs3yowkDLv4AnoEYCp Q4Yex3D73GiXRe4br5+nwvAFt8GNUdQktCsZhb9CIEj6PNHL8yqGxsog6TNSh7v5uYZFiz4uKjY u6mEKyq+iGx35ghBBDzFiM+BNSFtboupUFSjg1NgQ13avioAFotFOQSPXWg+0xYIBspqJsIE7Rv DAf63iNgm+T9R7Xy3axYHKJIXhRqDFri2jC0gVBvXQLDBdAB25Y3SjpmoTgLyIYJHyJX1kTxiVL PmYnZ9XrGhh0gFzkxWhIngMZVxbWLcvKDgwgf/r3JA6sLlYksnZkY5aucdX0qjKGHaBja5bTGFK Hwhf3zK6TeNRo+brw== X-Received: by 2002:a17:90b:390f:b0:38e:bbf1:de3f with SMTP id 98e67ed59e1d1-39d9c0b7047mr13943650a91.12.1789209110329; Sat, 12 Sep 2026 03:31:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 23/82] tcg: Generic expansion of tcg_gen_ori_* Date: Sat, 12 Sep 2026 00:30:27 -1000 Message-ID: <20260912103126.598030-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209296107158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 35 +++++++++++------------------------ 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 3335e127083..b47d33d723f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -208,7 +207,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 898b77b00c2..07e1a9bedd9 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -7,6 +7,7 @@ DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) DEF_RRI(andi) +DEF_RRI(ori) DEF_RRI(sari) DEF_RRI(shli) DEF_RRI(shri) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c3e897d479e..ce358bbff26 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -434,6 +434,17 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_ori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src= 2) +{ + if (src2 =3D=3D -1) { + gen_movi(type, dst, -1); + } else if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_or(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -542,18 +553,6 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D -1) { - tcg_gen_movi_i32(ret, -1); - } else if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_or_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1520,18 +1519,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D -1) { - tcg_gen_movi_i64(ret, -1); - } else if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_or_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209173; cv=none; d=zohomail.com; s=zohoarc; b=no8phYNz+sumx7SnTik7UyLK/9xNXzS1R9UuDUQfxBRaLgr8xL8NNviEIr+vYqIvvPFXwTcjwchct7vrOG9zehTf//5iyeHSMIj6kIdgDUEFbRNrOZtk7kLGYjvApQltf/gjDsknulZTuwH7SDUs0MvjOSQvUiHgg5HpTzKP4TU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209173; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=lS5nTKUVb9TWb8AYruRlZVgS2OOFSe5Gc4qEMqAS+7w=; b=DDZi35Y8Kvwk24FHoc9/Jh4BJlPjkA3Lk1GxbfZBcnqqln36FYRV1dEJWE5INvVi4Jb4QOgRUsS/rZQ/BRAyNEbozaenUv0Lr7aHjAOAIGwRElxPn6D74mM3x3PFTPFWThLBy6OJnu5+co+gd4dKJsKnXbikDlARee6rGRQ0B4c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17892091730153.258914873627532; Sat, 12 Sep 2026 03:32:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1k-0005EJ-1Y; Sat, 12 Sep 2026 06:32:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1W-0004to-N2 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1U-0007Js-KL for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:54 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so660055a91.0 for ; Sat, 12 Sep 2026 03:31:52 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209111; x=1789813911; 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:content-type; bh=lS5nTKUVb9TWb8AYruRlZVgS2OOFSe5Gc4qEMqAS+7w=; b=I940TqAZsfSs5cvcscABoxgBRZ9vkWYFTaqqHbR8zKgWz6YXxhaqTeRhAz17dxrbva g8eh7yqSqrD/FE0W57CSGog6GP4Ozt837F6Os0O53yf7F23w15w3QwFfXHDBRxba1rQl gsMu9GDg9IKvDhcO9P2rmJKgn5eb8nVvfIQzwISIrqzHpAM5tbbr4PGG4kHBEJk6SVSw ZQRXWqswtI7EbTe8Y45UnYfAwhD7djw63AL8LsdoLlx8hHFAYuAOp2hzSjAuA0IC4XYW EKHml950MuVVY/rIyUGGLGr+6bT6qJUiMWJJBiVHSzFGwfWhMZ/Z9S+VErAklhSqRdVH knEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209111; x=1789813911; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=lS5nTKUVb9TWb8AYruRlZVgS2OOFSe5Gc4qEMqAS+7w=; b=ME5Tf2GEJB+ovDdj3Ygykv0w019l64tEHzz+exwcS+g/RKWvXuxrWqtV3SiUWAQ4m4 tl0WpJ/j9caPv1kEW/YIrhU8nmdJ82rhAzOdNIG7JJwOt+COfddJFj9Vt6jgvl9HNvz+ 1XNiECJVlyZuNHG/z/Xy2iPz7IsomW8lr8L4M+MeDJ7AR/RFRgGnVPE819v2PcpcI0+s zMsod+klK0u/t1s3C1Q026MbHXWx9j0ouHMQuMCOOTU7r6k/pQ4OqzX92t4whNmeQuku gT7wE8vAgj1wReFhNpbEIPgpjkeJPj2YY2KgglY8OJ0FzHKOecH69rt4e/4YQSHZTnmQ B++g== X-Gm-Message-State: AFuF++kS3vwz0/8nrFuNxH/8+q5Mx/6l/+sKv18Fo7uAbtYhMNWA+dLn arbxMGqGpSDWiRLXjU3k20T2lzSWfoLeH0/Tz0uWHjJZUwz+OZojK4o0s4AfI9MaRcGp8i8B1/h sfKFtRGs= X-Gm-Gg: AYBFou0DLN5M2kUSYaCsxCmIMqd4mjabUZOFS3GfM700j9OYtTM4UbYKUFVpvyna+bN eNMbNd7YM7LbRavGpHEOXkGKDjr2kQ2Lt8WXiKI7i/0ywhWyHj6rzQPxcvfJTfJe2d7zbrgD2yj fNeQZUNDAwi9wRjMSve6ZnGpHpf8QWzxWGp8cn4KOLuLyg6Pl32cPOs3p7/kO8zKZD3q3st8j9c 92NyXf20XnhyLCFWCRf0nXKMFGfM49U91EliXwSK8iCpEssShceXXSn6BM9gUy044no1aM98W02 4MGGSdtDyjsUWFLE4JD8kTQFqSaYBsaX5XN2DfrF9Ffx6hvVHyDXOavijPej6Y9WngVAXGPzEXZ DA0BhHbYYE2I9ufIEFXGAE3bNURB+gWYihQ5KCv78LPj9PJS0tsDrMzTeiu1muVy7Ml0OFnh6up WRxznW6KqXzTcOP3cew7SQjS34WIk0Fmsr9Ei/FIy3aUXoEKE/34JgRmaQpYrpIQsiLxsaD5z+M 0747OM= X-Received: by 2002:a17:90b:5111:b0:39a:e002:f192 with SMTP id 98e67ed59e1d1-39d9c3f0dbamr14334308a91.22.1789209111240; Sat, 12 Sep 2026 03:31:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 24/82] tcg: Generic expansion of tcg_gen_xori_* Date: Sat, 12 Sep 2026 00:30:28 -1000 Message-ID: <20260912103126.598030-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209173625158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 40 +++++++++++------------------------ 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b47d33d723f..742af3665db 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -207,7 +206,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 07e1a9bedd9..250ab78ec0e 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -12,6 +12,7 @@ DEF_RRI(sari) DEF_RRI(shli) DEF_RRI(shri) DEF_RRI(subi) +DEF_RRI(xori) DEF_RRR(add) DEF_RRR(and) DEF_RRR(mul) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ce358bbff26..442c8e25927 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -514,6 +514,18 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); } =20 +static void gen_xori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (src2 =3D=3D -1 && tcg_op_supported(INDEX_op_not, type, 0)) { + /* Do not recurse with gen_not. */ + gen_op_tt(INDEX_op_not, type, dst, src1); + } else { + gen_xor(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + /* * Templated operations. */ @@ -553,20 +565,6 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (arg2 =3D=3D -1 && - tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { - /* Don't recurse with tcg_gen_not_i32. */ - tcg_gen_op2_i32(INDEX_op_not, ret, arg1); - } else { - tcg_gen_xor_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) { if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { @@ -1519,20 +1517,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (arg2 =3D=3D -1 && - tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { - /* Don't recurse with tcg_gen_not_i64. */ - tcg_gen_op2_i64(INDEX_op_not, ret, arg1); - } else { - tcg_gen_xor_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209339; cv=none; d=zohomail.com; s=zohoarc; b=UAb0X4cThIcPaTysrooqX8IJIGyhH18uJ0dXH6C63g8KNKPRLVOwMMYGlySCx25gDpuIqy5qg9pLNY5iJrZkvqsRBs+dooixP0cBYlHYcXcsY3ih+/mRrkdyjJIb6Dn6RbLdkR3phG3fl4VDFwGzAPXYfjiT5u9TlvAqUwuxn2I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209339; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PPvQr56N1JMqqNpI1tCgp19YiE6kvdfhS7ytUiOw4Cw=; b=FUqsEMN5+DBp1zRSTD/R/e8oLJj8OySZZtwidpaXWkZv0SrIPcP7TyLdAxscfzYYXlOIEwK5YQ7PP+UPrAGghXj1rOzoISxXVEk+BhhYcLn8E49HqhZtE1s8OsMLk6aFTqK83sz9zLnUuZDydEpJXjQQ/LsgJBYQ1m0OLu5lQ3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209339730582.3981350416124; Sat, 12 Sep 2026 03:35:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1j-0005DN-3i; Sat, 12 Sep 2026 06:32:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1Y-0004uD-2d for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1V-0007KE-Kv for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:55 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b350c69b4so347551a91.2 for ; Sat, 12 Sep 2026 03:31:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209112; x=1789813912; 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:content-type; bh=PPvQr56N1JMqqNpI1tCgp19YiE6kvdfhS7ytUiOw4Cw=; b=MXPIAxS5HY7aUZmiKETSIzXMSZSk7/GxJB217uOxfcCPzX+tRQYOmMRZDZVWsIeljm VQDxSF8H73dVHNfntzYCGvsFdtWo6OxQIsUx9vPZyQfP9nG0U2nfjhbuIIa2wH2Zh75f Xvbl5diM/T4NC9sXY4+uQvdNJ8uD34zWZKoM+1TgXL3VlaZ3JgSQK5wmgqR68hhPQ/xr eecHo7s8mZTk6Pxfs9dvQ+/dg0/PvXi21SS3ErDzwJ9x7NT+oc5IW0Uiw03qHS9Yl62F IxebCtxbnNhw9rO1f0QD8clLjl/pt3Jl8E0tAE8j05isfG7UNnhKCa+3GLNgwxyUbR34 v9KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209112; x=1789813912; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PPvQr56N1JMqqNpI1tCgp19YiE6kvdfhS7ytUiOw4Cw=; b=kaEV1XXVeDjxvNJf+tNTg2cEfR6vwZhfahcKb/Q0rC30QB7zc1JoXQdrCi3mYeNEQR rErGoqqewu1ywuFLidKlZGMBhgFi3D5LJWGpGxUqF311p89irOhMFjaCY3skpPhsxrZw Ds579xKbNhNY65UnnYWkYK1VTtCEbIK18uNfXNGCI3OPX27wwWQtwofby4DXmIoL3nsB 5Cj8PdB/QS1PEsTXkYySpmxzuAxLT+Vfpv+yT/xLA8fGN7q7EycdFkeMo/H71SI0UmFa NQvI1GhADJVi4l+atH+FFQBKKHcuCMdHTixScMH6ywWAx0NsI6/5TwjSCSZM2hktlbEO sz2Q== X-Gm-Message-State: AFuF++lNhCKqaZOMixmmPMDCVDlAX7C3AhVOP5Kgt0gK0mgB8OKl3axZ k2pg8BaZYQkt9I6FP6ROlcU6ZVsd/3wRFiEW1Rx3vDfnZTsCEL6PR5alS+VTqnUeSde8rwZa/vT 0bRJfJQ8= X-Gm-Gg: AYBFou1SDxGEJXZ/0xxEsgVoGiP8ilI2LnrKM9YSB5yE5x3xZ0a7G8Gp+pk01EpiXBp uet5C0DWOHgOh+KV0FfAwYSU4/wa8uORbKfpDtm+uaRjLyHdkx6XoUToWxxuFjQlXzBnK7puWIJ u62JgRoMQ7bHqDTZzVepIF8d4V4/RtRV+/mbPfrNcJ2IEv9EV5Q2yEfVzd4u20pSwZH1Xmw2Roc 68t4vgK129PmCRYx3iaCKSikqP0B+fVlM8VKpvvSN9uKKA49Du3CB0dzDq3HaPiBICYRm8G9oUx I+NBeubNP445Vn40OzUSWWvJWMCUnRvaOjQ/d0WUhK3XN8dVc/wAVyUSIJxrZ7k4zjSYAXA9mGk s5c+SqHbfuJS4jxP8k1pACQzxOdNL8FasS+cyWUyGOOfAjZdRpVHyXgiglrBeFu3jRGMSjyddXk Lmf7Rc4rcKH7zA1ZYuybgmA+G9StF7oe6KNIBsXLzmQpw/t0WOwx5rjaZpL+dUxVVWKNC7FHYbL qAVTf8= X-Received: by 2002:a17:90b:3b4f:b0:37f:c22a:c188 with SMTP id 98e67ed59e1d1-39dbbea461fmr4007014a91.4.1789209112131; Sat, 12 Sep 2026 03:31:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 25/82] tcg: Generic expansion of tcg_gen_muli_* Date: Sat, 12 Sep 2026 00:30:29 -1000 Message-ID: <20260912103126.598030-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209340291158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 33 +++++++++++---------------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 742af3665db..4cba6cc7448 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -206,7 +205,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 250ab78ec0e..247db4b15f7 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -7,6 +7,7 @@ DEF_RR(mov) DEF_RR(neg) DEF_RRI(addi) DEF_RRI(andi) +DEF_RRI(muli) DEF_RRI(ori) DEF_RRI(sari) DEF_RRI(shli) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 442c8e25927..3811b6721a2 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -424,6 +424,17 @@ static void gen_mul(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); } =20 +static void gen_muli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_movi(type, dst, 0); + } else if (is_power_of_2(src2)) { + gen_shli(type, dst, src1, ctz64(src2)); + } else { + gen_mul(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -630,17 +641,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - if (arg2 =3D=3D 0) { - tcg_gen_movi_i32(ret, 0); - } else if (is_power_of_2(arg2)) { - tcg_gen_shli_i32(ret, arg1, ctz32(arg2)); - } else { - tcg_gen_mul_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { @@ -1569,17 +1569,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - if (arg2 =3D=3D 0) { - tcg_gen_movi_i64(ret, 0); - } else if (is_power_of_2(arg2)) { - tcg_gen_shli_i64(ret, arg1, ctz64(arg2)); - } else { - tcg_gen_mul_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209261; cv=none; d=zohomail.com; s=zohoarc; b=DncIzlEcSEsGg9pfjuHiwS9qbbi3//uo74ImaEa4ZXhA01IQMRL6/sz4Juh//EsogG5r7v5CXv2u0Iv3MZObbIc8ltpGYzSqbanX0Of/prnUjn9ysT24U9CWMhodB4QQ05fBCnv6+he3+35rfDVLAOUMCPnBkuyYTFusc3KKBWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209261; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=fyxk1q64cJSDBV0Wp761OrEHC9nf26N8EGJTV5SbsQs=; b=bz+k46K7OAiD8rsToDX6SySN3e+2H7dLveUGX6jnko5d4Rzxe2jsBjRBlY70ICWaOC5mV7GbAoIg2IZq61ocuUuTSqwbZXPFGu54dUPAl3Rp5O0PgryQQa1rhkRAQ4uxWq43TihVNvN3jX1JweER+eRL2hVfepz/EZKgUw/L4XE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920926188174.00524268832567; Sat, 12 Sep 2026 03:34:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1x-0005rB-KP; Sat, 12 Sep 2026 06:32:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0004uG-Ix for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1W-0007KT-Pq for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2db710396ffso24952255ad.1 for ; Sat, 12 Sep 2026 03:31:54 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209113; x=1789813913; 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:content-type; bh=fyxk1q64cJSDBV0Wp761OrEHC9nf26N8EGJTV5SbsQs=; b=i3wlBY6HIHVfVh7s7yrc3yPdmmO0htrCkRN+/dU/HSgTd/KCMrmSiIgGI8iu+g8Kna UAeHepAXtP2iE8+ucj2YUlAq+iAj3by9nJu+HcvgkRa5nvHTyy1DIPe+95sDyliXSpJ4 28dr8nSqskF8wtE+w8oogRtkiCXNRJMBq/rfAHoYzi1g05OkNDOLUACP5V7mqzuIpzAD 8nfBSWZMTf2K/89uU2bM3ofkTvqGPCbImcH3WhzYWAEB8SPieuXo629W35HxsY17ZS5c Kik+o8pYGUFbFKnVgtgoimF3C10Q9EU6hbiISSrM8UCM+y9DERb3RikbKhJSdO0LG7UK Bs1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209113; x=1789813913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=fyxk1q64cJSDBV0Wp761OrEHC9nf26N8EGJTV5SbsQs=; b=JIYdCSqddUNx7MzkzIINmYMM6Lqm3bxiKwbU0v/+3ytH7hchpVbAxP5CIi92ri1lsh 987oDRdW7g3B1tuM9Bd2Yjujf0hsJptRGa8U4ZPdv+0MxJromUZSY6CxwOUe+tjYm1Fm v5VgeBsZ9MgmhmTNn+R1sI6Y+JMMnKOShyWKWIAsU945CLesuqGgB4brxrF2W1dWNowx RWPzzRSYLTgx9BuwZiaDlT+vEIp1Ax6QAxs2fPjPQxo4TBAzlm2mANglW1v4Un190SV6 MblxANnUz4c53nIDoDtKcfQQpkPg77fqTxob4uy637WCxr6ddSEFkx/Nn7BhOn1LEqk/ VASg== X-Gm-Message-State: AFuF++n0eT/rBiR8DYVCfqE2g5O2FukYvoGZtjuJjqO8slM1HEDYrS+R 69gVlazFBBjar0N+n2LxiqqllFI7UPYPe8eaZ3mzWLoIN1TWzYWEVSFP4Xcf2C24uO68XRs+elq aOzOX X-Gm-Gg: AYBFou1tKTYp38oIYJHQOPylI8XhGCHefyPOIZiPk2l/ZdUvdOBoF1gCw+xE/7uCPfX qYkq9N8OK2GyoOx+o3KewcR6hZtgrpJwSawMoZq7Ivrx9pPb3umsycnPuaceJOcaxovI5mbged1 MvRwzFrDS4QqXsDvgaxv6ZXON/BdgyFmgbtmixdAScuZF9QYo0sMtY25KUirofI9ysYZn/vuKwN J2QI3cnDcnr0uvFJA+SRfsyGCeJIXEcucuhx7cpmq3EGWmPOwamX8eAt7xL70YQmNmCryMWfY6O pGW1diZAHBXE7BLx3xkHX24PO0J8Io2tt8Bz3NjDYMJAZ9M/EtN10MtNDsfProENEnUMNtpLgCX ScENhSCeRpCh1Mvk+jzQCNVt2HtfYtPHVrrs43KGWw2/p0wlMLqQsQrMC3xYIUhAQVIsEzPKojb PACXxdbwddtxIByqzrGF+3i11juBAuwRSw3WjbgY/x2cs7/naHgQrI3eoS9N1iCImsu5yrhIc6O Obk9/lUbAp2qizcUw== X-Received: by 2002:a17:90a:d445:b0:398:c6e1:dceb with SMTP id 98e67ed59e1d1-39d77962e7emr16053540a91.9.1789209113116; Sat, 12 Sep 2026 03:31:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 26/82] tcg: Generic expansion of tcg_gen_not_* Date: Sat, 12 Sep 2026 00:30:30 -1000 Message-ID: <20260912103126.598030-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209264076158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 28 ++++++++++------------------ 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4cba6cc7448..4476f9dbfb3 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -201,8 +201,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); - /* 64 bit ops */ =20 void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); @@ -256,7 +254,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 247db4b15f7..e3935b850cb 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -5,6 +5,7 @@ DEF_RI(movi) DEF_RIR(subfi) DEF_RR(mov) DEF_RR(neg) +DEF_RR(not) DEF_RRI(addi) DEF_RRI(andi) DEF_RRI(muli) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3811b6721a2..bf48db8b684 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -440,6 +440,16 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_not, type, 0)) { + gen_op_tt(INDEX_op_not, type, dst, src); + } else { + /* Do not recurse with gen_xori. */ + gen_xor(type, dst, src, tcg_constant_internal(type, -1)); + } +} + static void gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) { gen_op_ttt(INDEX_op_or, type, dst, src1, src2); @@ -576,15 +586,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_not, ret, arg); - } else { - tcg_gen_xori_i32(ret, arg, -1); - } -} - void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1836,15 +1837,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_not, ret, arg); - } else { - tcg_gen_xori_i64(ret, arg, -1); - } -} - void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209283; cv=none; d=zohomail.com; s=zohoarc; b=fd8mHvZYdyTMHKx4BgYDcqP6IQPiqWjUXePUPX+vspmngj6WzvvGLSZL9hpZhkQQkqvn8eAy+8QiLINnK5koC5Yvw0OtPk2swE4tFiFwXPxi/88fJ1VBlXGPaqHcZZUCQCuGpRO2jKoulJdcX9nZ6hHSenP/fy4EmFIYjHzo99Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209283; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=d/utpiSLJ4thZkKdY8TN0iwwCU19SmKE33ir59n4nlk=; b=AmJqyvRc/5s9BPPYanus9VUnFy7ViUdqbrQfy/yVdBlOyMCQ56xCnI8MT34b7/OvrqWAJ9PHv/9cVvGzCTgPFugFoYiRsZj4XAoKuFNh1/syd0BvbpHas1hOtkP0cM0wFBvzWpXhajZcB+WLWrfciAk7CUFmvc0Ju8FdypzVtCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209283706351.18449984775725; Sat, 12 Sep 2026 03:34:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1l-0005Fx-JK; Sat, 12 Sep 2026 06:32:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0004uH-LH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1X-0007Kn-RV for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:57 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-cc4aa18f9afso1340725a12.3 for ; Sat, 12 Sep 2026 03:31:55 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209114; x=1789813914; 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:content-type; bh=d/utpiSLJ4thZkKdY8TN0iwwCU19SmKE33ir59n4nlk=; b=ahuEQwtL3YelMN9zqHme7SiiUbUtqUYcYcoK/Kgm04pfoRCvAUcg9eGqXj5umg0qJ6 zipfBvMklfb3wjof7BtWqF2M30wV56c/qjH1zy4d/4URUkWhHWUoXEh4eWWUz2XDImhR u7efZgXrtmo4ff8Bx4X4Y0HsSuq8stVjw7hrizKSKEiTSYc9Zu0u6APmjoKmc1sbkBxV DTwB1pOZuHLToUpEbSm3NhUOhSzBjTkRh/OkoygVj19DysLW9Xw9kWWT705i6Jiphg6z P1+q16zLQ1u6LNB+qOzzx48cBjufXTL4kk0goLWtofADUoI85QUWXnoiO3nXvPgKSXsu ea8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209114; x=1789813914; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=d/utpiSLJ4thZkKdY8TN0iwwCU19SmKE33ir59n4nlk=; b=f6BUGscicu99Rldnig26A7nHc/ojWFcULbL7T8zqarIGluOJIgWBV3L4aEs8fcrwcv 940NOudjDIGiBoMroGHFlK3kPiTfW8wniY7ATYLOcKGRzr8yfPQqGiN7TD4HRnSg0FqD 7ZU4GrwE+qMWt33TEGFP8SsIu+vJgPbYRao2gr8QTDY4zA/HkdGCkM+2NbWnRCmzC4Jq IgybbzMKc5yK4+GKafpXqsvUGlBiAb6yvKdZV0HiieeSnXQLNXMdJMPuyK5/IxDZUHJu g99AD2LZ7qW36QVrYtls8+AvSecgF1xUdCXwHICJ+CiAeasyU9WpC91/kaNo8nC3D/li Aw9A== X-Gm-Message-State: AFuF++k0lFvuX8AHwc8HIeiECAsExBpy9YWhcwMvJgPhb+fSTlPKb0iX 4ZnkdeblFzsk8cWPKaIfOuHG4rEu07pJ2kOh1/NOshPlhVz0+8wOnAQjxBCV/Qhx8aoQcj45VGM D5JbJjzU= X-Gm-Gg: AYBFou3fZJaSUqB9d63qSs8GYdCzgMMpGauHnTTG+qGNHZAoZFSEB9dWJnJIoHHxfH0 /EagUGt+jiLKCa8ueGjyy1AxG5Vq+48qbPBFdMz9o8Ynwz0Uvn7B17p9GEVeT0LvFqeIlZGmB3O XBq0WjjLt0ze1ysT7axGl1dBxwWbe/pzDt5vLzcTnywvG+wQO+e8atqWHYDGglrRF9dfZmT8aVW ydVRf2EnIDo0AoGqGOCfCOepQt/XJkGAfHBKVPy31M6Fkp3pDcT16JvM3KIYUH68y+xwUS/9Y3q ii5F2uNaaEi6Qv9t/oAcwtXKD6zRI2LFzERIdhU1hMZb6r61LBpn2hXe2phtqrrnrM+3txRsHZ5 K4BiVoxJzUK18JjTJwZv/byOJrytSXnimtg53qYkeiOdxTaDuhAxCuloRb/X3s1Bd3rHq0ihjOC ZYxnGVza7w2qnSYpZRijvD+2urE3YOhe0ZQ1hlHBJQuQc8CZbsxNrbFFZw5Zg12o3KSCN0U9URp PEYJRzZ X-Received: by 2002:a17:90b:2b50:b0:380:21b7:e727 with SMTP id 98e67ed59e1d1-39d9c1c199dmr14594181a91.14.1789209114120; Sat, 12 Sep 2026 03:31:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 27/82] tcg: Drop division helpers Date: Sat, 12 Sep 2026 00:30:31 -1000 Message-ID: <20260912103126.598030-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209284080158500 Content-Type: text/plain; charset="utf-8" All current tcg hosts support division, so the helpers are no longer used. Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 10 ---------- accel/tcg/tcg-runtime.c | 44 ----------------------------------------- tcg/tcg-op.c | 16 +++++++-------- 3 files changed, 8 insertions(+), 62 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 0b832176b33..003c963bc7d 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -1,13 +1,3 @@ -DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) - -DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) =20 diff --git a/accel/tcg/tcg-runtime.c b/accel/tcg/tcg-runtime.c index 7c0aab98a80..77c4024148f 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -32,50 +32,6 @@ #include "exec/helper-info.c.inc" #undef HELPER_H =20 -/* 32-bit helpers */ - -int32_t HELPER(div_i32)(int32_t arg1, int32_t arg2) -{ - return arg1 / arg2; -} - -int32_t HELPER(rem_i32)(int32_t arg1, int32_t arg2) -{ - return arg1 % arg2; -} - -uint32_t HELPER(divu_i32)(uint32_t arg1, uint32_t arg2) -{ - return arg1 / arg2; -} - -uint32_t HELPER(remu_i32)(uint32_t arg1, uint32_t arg2) -{ - return arg1 % arg2; -} - -/* 64-bit helpers */ - -int64_t HELPER(div_i64)(int64_t arg1, int64_t arg2) -{ - return arg1 / arg2; -} - -int64_t HELPER(rem_i64)(int64_t arg1, int64_t arg2) -{ - return arg1 % arg2; -} - -uint64_t HELPER(divu_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 / arg2; -} - -uint64_t HELPER(remu_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 % arg2; -} - uint64_t HELPER(muluh_i64)(uint64_t arg1, uint64_t arg2) { uint64_t l, h; diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index bf48db8b684..26e1d441661 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -652,7 +652,7 @@ void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_gen_op5_i32(INDEX_op_divs2, ret, t0, arg1, t0, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_div_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -672,7 +672,7 @@ void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_gen_op5_i32(INDEX_op_divs2, t0, ret, arg1, t0, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_rem_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -686,7 +686,7 @@ void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv= _i32 arg2) tcg_gen_op5_i32(INDEX_op_divu2, ret, t0, arg1, zero, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_divu_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -706,7 +706,7 @@ void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv= _i32 arg2) tcg_gen_op5_i32(INDEX_op_divu2, t0, ret, arg1, zero, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_remu_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1580,7 +1580,7 @@ void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_gen_op5_i64(INDEX_op_divs2, ret, t0, arg1, t0, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_div_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1600,7 +1600,7 @@ void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_gen_op5_i64(INDEX_op_divs2, t0, ret, arg1, t0, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_rem_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1614,7 +1614,7 @@ void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op5_i64(INDEX_op_divu2, ret, t0, arg1, zero, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_divu_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1634,7 +1634,7 @@ void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op5_i64(INDEX_op_divu2, t0, ret, arg1, zero, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_remu_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209248; cv=none; d=zohomail.com; s=zohoarc; b=lQfNPcYJCVfjKuSPbB2xRkrExWJVmi7jKDtyePOs2VlhtWW3RQW6R3M/LQoXSjG0/ouhkC5x6YW2EiTyRJ41rCgeA5wBMX+EXIyPuCMxQqF0O7+h7u90jGRJteRzO6nB3DmA2y/BUyq2i2lt45R/UtW1ZIA4QAi1/uZ4E56+F+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209248; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=N1UsKhc5H6HlCzOHCIISblviteinmdzflT8zjCFrbSA=; b=FtEYLMhtfL1GmeNPGJwpUduHmt+gGmfEk+fnu/VYI0GeJmaZ7jSDnRkCwvSIwcCuLt0WLrjJyLSPZTj2oRAjSRLoxfzs1CS1j7HD0aeiP+RXSxDRH2UjTrsZx6bRhNJHhtaG2VUhABOieAS/7czYm0B9OB5jgAAhl5TpUe5pUiQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209248878416.79075158401974; Sat, 12 Sep 2026 03:34:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1p-0005On-Lb; Sat, 12 Sep 2026 06:32:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1a-0004z0-EC for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:58 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1Y-0007L0-GG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:58 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so261436a12.3 for ; Sat, 12 Sep 2026 03:31:56 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209115; x=1789813915; 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:content-type; bh=N1UsKhc5H6HlCzOHCIISblviteinmdzflT8zjCFrbSA=; b=kkgswHHuwysQlq3WJlb7H1BnKC6mQqJriWHpSIHfNz4IM6okkAowUuv73aTfbYtbht otmiYcmMnR1mX8Q91qdNWP//u0dVk0aoD+0I4ZpZUrvT4dRTOJs/VMRl/nOPna8U0k5F qri9g3hNp2hKPKN7qI5lfBj8N7MN6FdtlEZ29/FNc2fGjNfmPETHuKh62+n6eRkDcwIX 7DAmA9vpkXI03+rzoAi8fhkldtjzkdLNW/w0gz8wV7RcmcYvBRedbSMx5GOtY1hmqaG4 oXOAo1KQgK/nuwpBQr87lok+Vp6Saj7x8KWn7uJ7foctNm70AuDJ2c8vziovtuJ6rvk5 DQWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209115; x=1789813915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=N1UsKhc5H6HlCzOHCIISblviteinmdzflT8zjCFrbSA=; b=ZFgptefn9JIHee+46RFxkaCu1oauB4/k+pS4wYSp6a9Mc9iyjspDjPTUE19bqenj22 hk0RuzXasXTlgTGem4606AyKMc0tDj2YtnHbgIFfO5XNzoXBHHO6KPdxRWiUYgG3GZSf WXZw7V1BYwEqwIzByKImvNZq7tVNuO2EDeV56tzFZN4TeMijkjlC+NY6f26hTEj6FHrP XMSXnVUOW/BvF0ROLwgdBXSAtRQpFr+jyLCsZoXTcXsg3QH4P4SfDrfhrmfxz8K9NGP7 VjFh/wlVd0PgzW3dP2cpGZvfq/1Aw1wjS4oun5cG6d/PRO7Xz2WDpXpl5MLIUK4gDdYJ Vmtw== X-Gm-Message-State: AFuF++lA35dQp75NUcJdywQHK5tQByCyqUFKRLQkojLfhvh8YTCIqPjP F66RLnNiFtkzUoscMwdSKHo9fXf4tmUTDxTEgOTlpFth44gFUDHPRCf71cyBITpV5BfHugIYitb BDcd2V3E= X-Gm-Gg: AYBFou1m9Wdd6aPUmY7yuvl/FEWNMfxj3R6GJ6s/fmoP34xPpku7o8rZgJcDDUKNCHK DcLygL+UsOiKsJm8LB+HI/Uw4tPqJAvnSUVk9MHp+oGINaYfpa5GS4qotCU8CXr1QoYOjKJotd2 RUEVs7WiXYE/sau9KSN2+GfsS+PDf1cdFzz17UNiiBEqDKCGFWUyZ8AKC3a5DcTTySPzwAy53RP lgWOJ0VxWVdlLZ+98W6ECH0FrcTGq0QvnUthcIcfgxwiuxzu48cjYvs2LMh20SBjzblIZUI4WMJ DOHvKeDF0kwm5E1pxNN6yqLQ+sFmj5uEerxiSDf2w0kTgkyKbnLelvm+1SqvmzyM16pHPsIeeAi i9WwX2QeQpcEHmQnuOBcnzDEHndd6h4I+7FcTDwQmA77+FNttrXfjQ69/QzONcv8CALkYppAimT tAacJ9upU6OmlR4W422A29RPGXcqYqGTylejNt+R2gPwgQQZkY7SF9yL2TxLPH3hg7L8rqh41JF UHv4N0= X-Received: by 2002:a05:6a20:12c7:b0:3c3:7a0a:18a6 with SMTP id adf61e73a8af0-3db0e408702mr3963967637.18.1789209114993; Sat, 12 Sep 2026 03:31:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 28/82] tcg: Generic expansion of tcg_gen_div_* Date: Sat, 12 Sep 2026 00:30:32 -1000 Message-ID: <20260912103126.598030-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209249939158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 52 ++++++++++++++++------------------- 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4476f9dbfb3..c5f1edd6218 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -203,7 +202,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index e3935b850cb..9ee7db8b60e 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -17,6 +17,7 @@ DEF_RRI(subi) DEF_RRI(xori) DEF_RRR(add) DEF_RRR(and) +DEF_RRR(div) DEF_RRR(mul) DEF_RRR(or) DEF_RRR(sar) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 26e1d441661..84f06b8593b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -121,6 +121,14 @@ static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4) +{ + return tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4)); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -407,6 +415,22 @@ static void gen_discard(TCGType type, TCGTemp *src) tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); } =20 +static void gen_div(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + gen_op_ttt(INDEX_op_divs, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, tmp, src1, width - 1); + gen_op_ttttt(INDEX_op_divs2, type, dst, tmp, src1, tmp, src2); + tcg_temp_free_internal(tmp); + } else { + g_assert_not_reached(); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -642,20 +666,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_divs, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t0, arg1, 31); - tcg_gen_op5_i32(INDEX_op_divs2, ret, t0, arg1, t0, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I32, 0)) { @@ -1570,20 +1580,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_divs, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t0, arg1, 63); - tcg_gen_op5_i64(INDEX_op_divs2, ret, t0, arg1, t0, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209345; cv=none; d=zohomail.com; s=zohoarc; b=YAN+Jw0CgmN/WeHGpgVBpjERL9zacBFSvG2dZmicTFp2Dz4h7L17Da6QbMJtNZwjhxJasfBCR4Qr7yyGgEFdc81DsqMp5aPdDXromS8gb7Vo+MWpIpW4PoJFUQV9TVD4kfD1hRN3sFmgJVuQ4Y1efB6sEp2tYD7VINQksmd9Hq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209345; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=IItVcsGUmaxAvVFY8b+tl0xaRl7TZLN6+n2PHwWIEUc=; b=Go7AqBkjEwgcGFcu7MoTSLlpnTLu9cGBDQVyUZzyFIkt7+c9aMk/kMQso9gv/nBvsaBGqOwh35rKzMoiw5M3nkeUm9xV9xsAqqDBvzbg3NkWV5Vom+nEpykjah4N/LsbozeJfiy9Z2+aahYxLPq3kl3JKkNLsE2XwCgAIkZJcEI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920934549652.26581636047342; Sat, 12 Sep 2026 03:35:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1o-0005K0-18; Sat, 12 Sep 2026 06:32:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1b-00051S-MG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:59 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1Z-0007LF-PK for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:31:59 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2d91ded8174so16461255ad.1 for ; Sat, 12 Sep 2026 03:31:57 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209116; x=1789813916; 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:content-type; bh=IItVcsGUmaxAvVFY8b+tl0xaRl7TZLN6+n2PHwWIEUc=; b=IQJOf7sjEuWpzAuP9zYgREfBvucKR+W1tnMxBab6bCWXoTJ6sG5ancAQQhygrYmeu6 NnIfEvU3Ftyxys7emlGZrXRCFXkx0dKOXA4P79VfTMXAw9vzft9UXXjzM+taol3U0jjy OUf3+ScWz+C0d4/0O0MC8quEPQLmIx+NUwESe5Mk6TGv0xa0NML8VbPDq9PsIV7NP1Lm MY1e2c0YweffeEgG6PDJ3wci9i0Oq9mYH51OciWweu0NqFGBEfwg4OBiWoEiQEkz4gSU lzHa7l/TWWKot9oU5NYTmGAx1eJ/k+xKZ3YeuviCMSZe4MQ282T2YdHTy+fz4SqInnml afnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209116; x=1789813916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=IItVcsGUmaxAvVFY8b+tl0xaRl7TZLN6+n2PHwWIEUc=; b=JgOowRJFydqyymFW6HC/RhiUQ/M3dJbrs641fU+ezMHLLQCrkk+jMrCX2BiilRYQwR GwXfJPa+oPTFKmjC53N4j/g99WLtzOvnCdVT/gi3ENoI1tJTdHW2hnMy+ACqLbixvrz9 PO6Xv1RJL2dhBs07YRJXwa0MbCPk8oABVD2sCjx2Bcq1O3ZMq5p2vSSS4P6kC0tKQgfY CwkH5zkjL9pgdA4g/cVpn2FysPHz2Hw9yrBaOBHTr5A6t1nfnOoJ+3DvwyTZOrDZZiQc sHyiMuKFDe5obBssdpO7tFvVYPHWCSL2EHm/RQC7qoovFH/5KTPzlVN6A9Ni08vVnzm7 C5wQ== X-Gm-Message-State: AFuF++kZNsW9BnsPH2kVBRzEV1xk3bwy4UraBvS9yMZpNBDyFT2eDaAt auoqJc4BPR7sEvZFvaG5fq+XRlr4e+nFtOTWC6dkOKWh1eDLrVgyLOwzIMKGAU0w26RUNmnrv9W Twhwjn2Q= X-Gm-Gg: AYBFou24nHfktVF0GKP7SKx4ji8FJ09O6fPdjVyDh/H1xzkyJR+2pIrAjq+d+ShdGHg ZbX5/loRw/LoAyyy50L7YrWp/Im3DBDKz+iGWdqkbTF0jZKa2QKUobVnogdAKuWFqheRIn0veJJ fgeLwI8/lM3OvOkWM0xTkj5ZjKwmWjzN8twEZ6lP+ymcotSvIebraIghjYdsdNjQADjcwYBwHlS oRayesJV3m43kNzRjLmEqiYXuiZGvXi3ToKz3EvGQjFUbYIqTYUDUq0+hCJ0eksXMn9VdMz/N4m PPUYDQ1ywA0v4FJVXfdaj0ozHVbArfAKrjeRzoDNnfoH26twCZLmtkC+bFQMKaPtOl59QGLo6IC lcSCTvqu1QqPkbag4Gbh1r2lrCFeeLUSwb4sCiqMq7ec2Q8vNGLFngKauqeYkGLkDoPo0zROPPG amV3WzrehsDESyfhboZo7O9vHDFh4FkQt6f+hGXPpQ6nToNiilrAe6flynSNQUWKxiNL8LyWz0g x2M53Q= X-Received: by 2002:a17:90b:4d0c:b0:395:5f43:4ec4 with SMTP id 98e67ed59e1d1-39d9b97d29emr13365187a91.0.1789209116147; Sat, 12 Sep 2026 03:31:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 29/82] tcg: Generic expansion of tcg_gen_rem_* Date: Sat, 12 Sep 2026 00:30:33 -1000 Message-ID: <20260912103126.598030-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209346326158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 62 +++++++++++++---------------------- 3 files changed, 23 insertions(+), 42 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c5f1edd6218..20ccdbd0c95 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -202,7 +201,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 9ee7db8b60e..56d7d2c6bfc 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -20,6 +20,7 @@ DEF_RRR(and) DEF_RRR(div) DEF_RRR(mul) DEF_RRR(or) +DEF_RRR(rem) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 84f06b8593b..bdbd9244864 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -490,6 +490,28 @@ static void gen_ori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +static void gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_rems, type, 0)) { + gen_op_ttt(INDEX_op_rems, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + gen_op_ttt(INDEX_op_divs, type, tmp, src1, src2); + gen_mul(type, tmp, tmp, src2); + gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + int width =3D tcg_type_size(type) * 8; + gen_sari(type, tmp, src1, width - 1); + gen_op_ttttt(INDEX_op_divs2, type, tmp, dst, src1, tmp, src2); + } else { + g_assert_not_reached(); + } + tcg_temp_free_internal(tmp); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -666,26 +688,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rems, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_divs, t0, arg1, arg2); - tcg_gen_mul_i32(t0, t0, arg2); - tcg_gen_sub_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t0, arg1, 31); - tcg_gen_op5_i32(INDEX_op_divs2, t0, ret, arg1, t0, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { @@ -1580,26 +1582,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rems, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_divs, t0, arg1, arg2); - tcg_gen_mul_i64(t0, t0, arg2); - tcg_gen_sub_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t0, arg1, 63); - tcg_gen_op5_i64(INDEX_op_divs2, t0, ret, arg1, t0, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209275; cv=none; d=zohomail.com; s=zohoarc; b=Y21qczW3sQh8XlLi8xq2gM/tErgOz4tJdEDw29vf9TYWZogE9sxEHrMkMaA/gQEXS+EptKXkyOKUl5iCe5zhgC8aT6PUX5oQ+ahdfMpHfhQ/Gu9gdeL1D29wIYWVdir02TPRpgwj6PlcARJWlHaxcfObdxPmoKXLEyItn4ZzqBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209275; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZWFsGOxwzuMXFS+YuvDrYxeDPljPi6znK+D3k/YdNZk=; b=Ra+K67KnRVh8Z6tsCROOo7cMOMkamb6cCkoCeDOtOdfBnBJ6qJamxTvh353oKM92Gl6GmWUuT7DmSPlyKup2CDYuAEUBFU8F9iZ0JuV3/jyYs9e+dc5zw43TwKOnYBvlo+ro57C1Aw4Ut3PUDBSW5SLohSEdDfi+U1SPPd3CuUI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209275117716.696371370779; Sat, 12 Sep 2026 03:34:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1x-0005rA-Kc; Sat, 12 Sep 2026 06:32:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1c-00055L-Qs for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:00 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1a-0007Lo-PM for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:00 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-398a5aad413so1820740a91.3 for ; Sat, 12 Sep 2026 03:31:58 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209117; x=1789813917; 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:content-type; bh=ZWFsGOxwzuMXFS+YuvDrYxeDPljPi6znK+D3k/YdNZk=; b=AXrABCVhBXNRui2OUVPinIrAaYcbu6oLBkWIAYR8tzRA0N8Bbk5x2y52deHTK35cmR XSVX4YRy8tIkMkmO538FI9xM8UO7gdEJkNtscJqvB6kRSPrWNYheT+kAgOqmmGnKdDh7 rHyAVkf5D5zsG9Fgd0QD/AMkRcrL8glaum4hclPkTEpNACBaAeaEW3VH7i7y3O2QdQM/ u8BkWmZXwjLIddjyoDL2JjMh1N7wAFJQI+xBnbLNuicELtTpSLlyCYY7KC3MLkX6m81G HM8MJRARRADjAY+ryRnxmctw0b2jjTvi8fo+o/F0lONl2AlfT/TePmhdMLiCR58TgRyk KLrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209117; x=1789813917; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ZWFsGOxwzuMXFS+YuvDrYxeDPljPi6znK+D3k/YdNZk=; b=HGI3Dc1nlOGNiGA0tgnvguqJ2FdMoPPTRPtA1GGsfKUWeZxEvNmUhD+eYkA28UMmjW /20YRam5aWaA2nshjG4xl7ZEex3jPWp5iW9IeqsQf2x1qrhj828AzuYVp6/frFdeVX5W veRto2MCT+jbNvn+Jbf1weefSa9VBy+v+6gZk8AJ0GPdK7AVgbNUG+YA9hQeMCbOINIe 1vOBWsbX/w55wFi+Wni3qLit2tUcsjvHGu2r+eLkU432o3XEmlHv6pG1v7gCTUmjwnTp miCwtcXucNMEirtP0XgxCTZSPo+wE14ZJabBP1hUVzpvzZhD95O7xcR8dGmdcfz/D7/J hI+A== X-Gm-Message-State: AFuF++kO/ulUWMtwaaN+9ICE25J8Z857snMbYF3SSMy6W4cYyEl25Sb4 E0Ik9SG6IYNqmtpR8DsT99VoarZONKNPQNczmjfV9FtO1i/qREMt2k5Wz1TXPkq9VRLXp44T4M6 2Tzpy/Uw= X-Gm-Gg: AYBFou0ARabhT4LWb17v1T82JZvzsjJGQHPCS5L+tdnry4X50xuMs9BcbKij0jG9btD 0ZhiYwGMsJTLMnj4MgTmv4CyFBzlVcBC5g0FjjwSYvZdgGOK6zWq3fdS7lCqUHcEqDrryClfKB1 OU1tsPuHJliyjmD80b1KKLzEFQBs5J6WGJ9CNyFYEt35RZue4aCwW7p1uVuhRyR0oZf87P5u61r 9MgzkKkVyMKo0Gtkr+2zeJfI6vpLwZShi2xyXtA1xV+cOKkW1bbkMi8QV+PiwBrYd7GBTLR531k VuEFZLpFfCxCPB5rWF5RTHLi5J+2GbLNiKcMIAJqzylQQiIozKP5eAUKu+0EXPLKJ92gma5SFdO NgqSDXOYTfVmCg6+mz7n4fxpGWTmrGidX1u1vyosJLkgUvUQt4rVSxQh/O1rAjJO6FLjUJmtjHN ml663G1N/j+Of31rpCghaIsmkXCimt8YZacdHLwwFGuErQF49w+7HJERKaiIWHCiqJ5EtT43bsC 80V44Y= X-Received: by 2002:a17:90b:53d0:b0:398:9bd1:3216 with SMTP id 98e67ed59e1d1-39d9c3597b5mr12549048a91.23.1789209117172; Sat, 12 Sep 2026 03:31:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 30/82] tcg: Generic expansion of tcg_gen_divu_* Date: Sat, 12 Sep 2026 00:30:34 -1000 Message-ID: <20260912103126.598030-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209276198158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 43 ++++++++++++----------------------- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 20ccdbd0c95..cd9d6f17003 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -201,7 +200,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 56d7d2c6bfc..d7fca267eea 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -18,6 +18,7 @@ DEF_RRI(xori) DEF_RRR(add) DEF_RRR(and) DEF_RRR(div) +DEF_RRR(divu) DEF_RRR(mul) DEF_RRR(or) DEF_RRR(rem) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index bdbd9244864..a01056fe3a7 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -431,6 +431,21 @@ static void gen_div(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_divu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + gen_op_ttt(INDEX_op_divu, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *zero =3D tcg_constant_internal(type, 0); + + gen_op_ttttt(INDEX_op_divu2, type, dst, tmp, src1, zero, src2); + tcg_temp_free_internal(tmp); + } else { + g_assert_not_reached(); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -688,20 +703,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_divu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5_i32(INDEX_op_divu2, ret, t0, arg1, zero, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I32, 0)) { @@ -1582,20 +1583,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_divu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5_i64(INDEX_op_divu2, ret, t0, arg1, zero, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209346; cv=none; d=zohomail.com; s=zohoarc; b=eDvzVqQOSeAMBRFx6KW+UVaFQXOGjElnMaVx5AsnDIZO44uTjB6OfXpKy2HRrpb/XkQE1n5/cnKRwUzVd+X9SmaAE4KnBqJAqE9AHYnAlvpy4EzEAUPkhgLtRv6rwYZYw0QsYDoq8povEOpjhVJ1KZWFQnpgjouihfaysMl+008= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209346; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ygf2Zl0g6BnbyO67LPnE21FKGV2zc/L2pXRnAcrgPwg=; b=Lxfa1M9327BP8Mob9TOvAo4RtyE39Z86CfIRUtOE+EQfJkeiTMFgciv51AYp/cOT7OxhdXnqzw7/vpwtKKv/vAa0aGudNZL/Bnr7u48S1XwKP/q9SeXKUDIqUMh6fMUrxtFkwtNnD7KyM4miWsKdqYHr6kkFfWVTy7uEsNAvv7c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920934595546.04871063062569; Sat, 12 Sep 2026 03:35:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1o-0005L5-QX; Sat, 12 Sep 2026 06:32:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1d-00057Q-Dc for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:02 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1b-0007M0-FH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:01 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so261468a12.3 for ; Sat, 12 Sep 2026 03:31:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209118; x=1789813918; 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:content-type; bh=ygf2Zl0g6BnbyO67LPnE21FKGV2zc/L2pXRnAcrgPwg=; b=R/wX0BdZHOguKqVkrmylqywqAFeVj0h6og8YrLZ4lF+kiwGroSFS7jsCmdAUN/qFxh ZLD8E7YM1rDVJgKxzAkmOnfaDgIVcg/rYW9lF/Aeh8XDCSV0AHAYazqIbF15ytZ5BlZ2 iDlZvZi593wnggLiqc15bNPckYxZzDuDHzJGtQ6x08VlWLoB4gWCM/8BEFogfC5dvUhV BcEXwodPs+vRvvYmhTPdCYVb2Is9THWpBFXbzZNM4fC0OEjTd3JBUaUHSGbW3pU2R67w jerSjD5+QyXc2Ydh+OWFWWBj0zk8KroOmmelbpJyLqi1p2Eoc9wO2ilhKRsabRkQ0R6p q1JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209118; x=1789813918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ygf2Zl0g6BnbyO67LPnE21FKGV2zc/L2pXRnAcrgPwg=; b=OYmAAkgcEUFrawQ+GKjZUOQQEZMY/aVEc4sCjX1myRWUnt+jqwQh61L74bFGQNv5Bl zxdDrdB0iLOn9G4FgE+IRC2p6dG0btZo464yz/FF9u+4sLd94+WO4EIFk/UZen6swu1e xDnHKCr9EjnoQUvJrFG2dHla/3sTmsV8VhQtM2EGkqOx0zH3xuCNDs5OJUKFwYbB/xFZ LoqVuc/74/oSsySGUPN1l5TOmSe8C94ZpeiTR8gytS9ujws5L205s3P5wK4yuYRAHTnz V2EoATkeyxn/dNpT2igWDOtizXSOb5K6drO0jklgpIlwUsxcWWRu3n68hsRGxRjYMNV9 35fQ== X-Gm-Message-State: AFuF++ks9FG3mVy5zjEwG0/q4m3P0oRrd3HVB6XIqqrHZwwXByLlbzkb VWw5viMPeVMTXNajcyvLy7aGt8Ksu7g+3xTrssf1SyBFy+49vn+mxTog84M7llwk2DNCkAb/EzN rbfqbmnE= X-Gm-Gg: AYBFou1cuJslP6irYU52C39yRG4KdfU3IZ5JXAqAUYGsmoIdVrTJZsHEBKtdaT3Tj4c /joeEPtBu3NQmvMGT38gNQINrSbJDEXzS/1kBJHp9me8CE1d0bA5Pn/SAXAk5fhVkVIVDrWOBLJ 8etGbXNVuS4IvE6hyk5yWums0qQDhkGDDKmGFbHpT0yEy0VwShmc4i5EsanMweYoHOgZiB9kxz7 C31lyWJby4xGvfCg3fD1iwKuBMZcx0NKXpVLzwo2grgjDzzf7o+XEiK4+MXYnEiumF3xnlzTQtb iv3nuDqBEyKTt9iZBbXoV7szHXyuwyS6VS7BL2CUiEaD/i5HFygeIJf1HaStDN4joeNvyyzpQkY vbtnttH+31UDwZy9tGaFDgQXqwqyXVDC44CQo8m3bRbAG9ZdUKp7jIXiVM9mYBy0n9aaWGYB1Jm Rt4K3rgl3HTQBUg0ZRDk/bfs5h7D+Cyyb8ZKgHph4d06LdG6ILPPw3JvTMUF6fylpE3nN1kpxN8 fQL6SI= X-Received: by 2002:a05:6300:6684:b0:3bf:9b3d:61bb with SMTP id adf61e73a8af0-3db0e1f7d7bmr4160977637.16.1789209118069; Sat, 12 Sep 2026 03:31:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 31/82] tcg: Generic expansion of tcg_gen_remu_* Date: Sat, 12 Sep 2026 00:30:35 -1000 Message-ID: <20260912103126.598030-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209348314158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 75 ++++++++++------------------------- 3 files changed, 22 insertions(+), 56 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index cd9d6f17003..15c24010828 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -200,7 +199,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index d7fca267eea..b92fdc8126a 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -22,6 +22,7 @@ DEF_RRR(divu) DEF_RRR(mul) DEF_RRR(or) DEF_RRR(rem) +DEF_RRR(remu) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a01056fe3a7..4253e3eaaec 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -236,20 +236,6 @@ static TCGOp * DNI tcg_gen_op4ii_i64(TCGOpcode opc, TC= Gv_i64 a1, TCGv_i64 a2, tcgv_i64_arg(a1), tcgv_i64_arg(a2), a3, a4); } =20 -static void DNI tcg_gen_op5_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4, TCGv_i32 a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4), tcgv_i32_arg(a5)); -} - -static void DNI tcg_gen_op5_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4, TCGv_i64 a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4), tcgv_i64_arg(a5)); -} - static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, TCGv_i32 a3, TCGArg a4, TCGArg a5) { @@ -527,6 +513,27 @@ static void gen_rem(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_remu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_remu, type, 0)) { + gen_op_ttt(INDEX_op_remu, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + gen_op_ttt(INDEX_op_divu, type, tmp, src1, src2); + gen_mul(type, tmp, tmp, src2); + gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_op_ttttt(INDEX_op_divu2, type, tmp, dst, src1, zero, src2); + } else { + g_assert_not_reached(); + } + tcg_temp_free_internal(tmp); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -703,26 +710,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_remu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_divu, t0, arg1, arg2); - tcg_gen_mul_i32(t0, t0, arg2); - tcg_gen_sub_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5_i32(INDEX_op_divu2, t0, ret, arg1, zero, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I32, 0)) { @@ -1583,26 +1570,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_remu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_divu, t0, arg1, arg2); - tcg_gen_mul_i64(t0, t0, arg2); - tcg_gen_sub_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5_i64(INDEX_op_divu2, t0, ret, arg1, zero, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209329; cv=none; d=zohomail.com; s=zohoarc; b=ilLJciBqmvzbZW/2frxaHKz8gnpqZfdNmbqD7dlwFHik7fQvxsrSiKUhfg21Ymyt0GWrJl/KUOE0vKGfJcaw6LvPvb9IiwcdSJ9UJhdWJC7NpGILsCtoefHq9OhLDme4j7bghxH0Z1O/d0MO0n7Jm3ROiXweab2avINqx0kIQmY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209329; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Vy7AEaSvyUUu58wBVkFr8aNHn0nDowvZVe9u1r65rTw=; b=Drd1442QLff9I6BIJZZqh0VaxddKIhjP103Wx1p18z0EBmaJzv9HOv0mzUHum7qtFVubOlZ/4xeldtMkCRJchDj7DjqCPd3T0dVLHBcTDsGNNLpbeQ/k8HzsMp7yEyhD/ZU5lxyAmrN29yOxR9T5G+Ith4et9vkt50+yPPGybSc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209329396583.4201635842156; Sat, 12 Sep 2026 03:35:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L20-0005zz-Ah; Sat, 12 Sep 2026 06:32:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1e-00057Y-C6 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:02 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1c-0007MB-J9 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:02 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so457868a91.0 for ; Sat, 12 Sep 2026 03:32:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209119; x=1789813919; 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:content-type; bh=Vy7AEaSvyUUu58wBVkFr8aNHn0nDowvZVe9u1r65rTw=; b=qZ9Hj4EoV0+GJTTiMTH//SjCTz+sZs2MK4ReIRxqwMF43SKQaQy+lipKFL6ubUKae9 ydveftGMri0QkVQPtKNULPPCyaLd+Hk0iSDSOLLzol7CmDBh9KKodj6M55n6lBrfCxWq lZyKY8c1LaenJvNEmfAWVOGqLFwZFn1G/MAmIJEFuIZlfrH2gI5MniJvGFVTXU66uPu4 cv8TOpfKLMGSH5hjqvFmX+b/oNxZvKpx5TEoMZKoMzPUtoQSJRjuUSnZ3ouv7HhTQs+9 sps7bRv1oAotH+aSMb9qh+W+TvL+qPC0nLNnq+pD0o9My/bydkv1A1ieyaFkYP3UrwNu oijg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209119; x=1789813919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Vy7AEaSvyUUu58wBVkFr8aNHn0nDowvZVe9u1r65rTw=; b=OyW63MTzOdEincfDcQSblzrp3pk54LcJoIx9+mf7voHYE+0kQ1RTiE4+bFeFgogaDh oRSbFy3QV12ZaVVEfFKgOGKjN+kAg6t/Kzv6TIaoYX5fgoJtqfdyJdZwO+SggcFrZdLh 7nKd4TQDaA9j4qhRByDCwI3NLZK25XKc8qeWFnG4ZmZIYUzpmF9lTPEoe/vZ9553evMG PrV4jvhlD5yPXHhM4Bkq/cOF/MhAiRWfFMvGOd+lmzalC0w+ea1LNh+7QIGvc9P7HZR8 q8cl1fQIxrrxBoG9NF47Quj7WtS8NIgO4RgZlo9rQuUpJ4dsFOqOS8RdXYYOQihgQxSo ZuSg== X-Gm-Message-State: AFuF++mSgKrzBcNx8GIChzEzGWJS78tnY0NunDfPrron+O087A+ff2tN /sn9GdoO2NUTfEU0TtJDbeHsgCjuUt6Fd9R4fflcdGaatPKlH8J+PCQU4KrynivJfuDCFjSifEC f7zvZ X-Gm-Gg: AYBFou37kuWeXhYrBbZWzpaz0YHtQU8/8irlHQ9LLq4NhdDtoFRawJH80KqPkrZB/wZ hdEiHy/hNMYj4rNQ8x+f7kt+W9IaWneylLFHQ38a4efuUIM4RtVrh1ZjdOtdsPyzJa+rZp9aBpH Ylb/Khb47SiqvD5LDSH9YYsL49Fsb7YCMNGa3Ql3pWX4NjfEZrlrwGRTGNZllbvQKy1D62H1SMl GX7oAQ6642Dl/qPxZT3E11EFXmSeNDAfO+gkbkB1UHAWL8Tdlfl1WroWRwTDdKezy7eDyhMVXv3 wF7T+15d0w2KsOqOCsI7CUZTf+J+Tydv1aFQo45XUgroCU+pW0tmCOUX898DtOtuof38rlGboZn GCMItJ6a5UVMqhNcEJv9QiivJOm6HR3Jk73c8F5/1DzXfgf73M0bSyj1HRrGCQ9959Z3ydAHO/q YEObE2rD7h0GVAKWvHLJMiNGkx0zso6VK/ecDRop/nxjDt+Oq92ZRaQT9TD0i+4/XVaiJudfjo7 Ka+ysI= X-Received: by 2002:a17:90b:380d:b0:398:d93a:b343 with SMTP id 98e67ed59e1d1-39d9bbf866emr12029903a91.3.1789209118992; Sat, 12 Sep 2026 03:31:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 32/82] tcg: Generic expansion of tcg_gen_andc_* Date: Sat, 12 Sep 2026 00:30:36 -1000 Message-ID: <20260912103126.598030-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209330300158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 37 ++++++++++++----------------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 15c24010828..b458b1a0b64 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -199,7 +198,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index b92fdc8126a..54c3c51ed29 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -17,6 +17,7 @@ DEF_RRI(subi) DEF_RRI(xori) DEF_RRR(add) DEF_RRR(and) +DEF_RRR(andc) DEF_RRR(div) DEF_RRR(divu) DEF_RRR(mul) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 4253e3eaaec..ca383e44b59 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -396,6 +396,19 @@ static void gen_andi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_andc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_andc, type, 0)) { + gen_op_ttt(INDEX_op_andc, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_not(type, tmp, src2); + gen_and(type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -710,18 +723,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_andc, ret, arg1, arg2); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_not_i32(t0, arg2); - tcg_gen_and_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } -} - void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I32, 0)) { @@ -1769,18 +1770,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_andc, ret, arg1, arg2); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_not_i64(t0, arg2); - tcg_gen_and_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209291; cv=none; d=zohomail.com; s=zohoarc; b=WbzsWGvjNh26uZD7DPBSwbv3JJC5ZlviCbbja2numQ5ue/yN+nT1Hn0BOkgE49y+awEkz93cDOIfsoF/a3QpZJbe31iaz9YcopZwDLBqR60jv5kbRI4Sa2ThR0CFqaldGjFNJCQsQwKrgl6SVwVr2MK3Y0kpYj9UxMa5/BFp+20= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209291; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NFhXHnkOKC+EBaMRAoUunViUGtpLxryiahZICyY0VSU=; b=Z/cpVbwnB6ZDa+iRwufp/dSlBTII3//gu+vywdsKl7+QMxIYYKt5fdyWqifvVy6j3eoH1f64xBjBGotRu+rWm0dT/Garrct5gytSP1aOWutRhRSV7Laik3zLhv1OSJnzyX5JGdH0Ufk7AhY83nQ5yY2C7aWulkZa2fTuzp+gILg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209291128627.5304833813688; Sat, 12 Sep 2026 03:34:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1p-0005LM-9I; Sat, 12 Sep 2026 06:32:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1f-0005B0-Re for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:04 -0400 Received: from mail-pz2-x29.google.com ([2607:f8b0:4864:3b::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1d-0007MO-AH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:03 -0400 Received: by mail-pz2-x29.google.com with SMTP id 41be03b00d2f7-cc4bdf8acd6so536410a12.1 for ; Sat, 12 Sep 2026 03:32:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.31.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209120; x=1789813920; 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:content-type; bh=NFhXHnkOKC+EBaMRAoUunViUGtpLxryiahZICyY0VSU=; b=CbH2J1BvjWzsuFmnEy/TvTvCCW0y9Xo40eg1xKISVBfK+ToJ+gU5PuUFUMi700lVbu r7aXKECWTbCR2zIK2T/4/T1XpBZBQMg62r/4wbqxfQ1l2PqRM1a5KiP3cZNIu4dIkKiA RXr2PWZ0Gx2iwUbI4ZxlLaJvISHM5jvytvmx83Su0EC2f0c068EoInxvJthZML7d6fjF iawDLKdhHpKr6Fu2XKDAj59ECuCnooUCt/rLtAKygExIPqiDJuQV1pHiiXqXmskL/CfJ rsPQkoocZhmmoU2mzRCTjR6gfRwWOy4AE3WKYbHE3Nyobt1xfmHcwMGgtx5gnjm50xpO eHYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209120; x=1789813920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=NFhXHnkOKC+EBaMRAoUunViUGtpLxryiahZICyY0VSU=; b=TVBDaARnIVNWVGdrzfZte54tMGzFQczpngcl0o4tUj9jueAvTuSt9qZOzLpxewI7EK K5cabuZWjkAmfN2K+L+T6LoHkxxFTus5L4ZEm7WVThJEx9lw2IRth+X53YJJgsF4h68+ mgXAzIasG+KTO271ZKKzywQliEbJkIU4iAOLkilhahBdF5W5PcrUGwyhpDw8AUMoL6sw gmcBQbMzgRm6fI2grXSoxXPXyJ3ce4eMXgQ+VSxWWdJMkwfwDp0Z3nJ3Z+5+36q1J/24 6eQpZiYYMxFIB9aMzllMXp++WKmfolsEk1leK4l+WYoTtb7cBQZJUT6OjjZtHV9xRtnp wISg== X-Gm-Message-State: AFuF++n0gvPqLoUNZ0wgxEvh0cBZnl7iXaaqgDjU2XRFcbEH5nSPJoqj hnPtT7+f7EZjhFsx2MAwbLYVkArX/NlF5zbI0L1F62SMGbwDdvfE/wLDhpO9iaPTEx1MoFrSsyj bmxC0LXQ= X-Gm-Gg: AYBFou0uA9v41pNay28Pmkke6q6aMCM7smwqwWli7LiTlrcR3JL/MLQoD1TP5JBabJD 1Yz53/SsMutl/qwHV0blzCj13+ldX9k0ALzGpuk0HQtx5JVuC9T3WNP3FipsFqT2hDhw4dIq44Q XN1Ax6hux5j/w0QhI/X+YTBDGVCeFTdVu2fbrN2Q5BYJUmo6dls49Ro4dBt0zoaGAFe5ANvkwHJ rwrSmOWIPHxHYF0l0yhuRWKwR1NHtyxUZWqKNhxw4QjqF3TxW3z7TjYjolanK0alyuB1pvJ5tcG QTb5YApxqEySPcW5hzji/Uj9XmeqdkrWRLIRFlngEBPl8toNRYaiWi3p4jKJvZUfjklT3Xqfp1W 8mhLSmhR32/p3zW/TJaPIE9jq6MYCzCiCsDIKQYKCCEjg5W7uI12BQil2DCWNX8ruXC8SsRM/TZ 8A5KsnOT8GcHlj6EtoUGHxstkayoNqDl0C2uY7FdIg9VU2T9tQu1mlIu6p0Aaji3CuMmmYpmoLv UVVEKMeErqZH3PMRQ== X-Received: by 2002:a17:90a:1596:b0:39d:9c5a:6cb2 with SMTP id 98e67ed59e1d1-39d9c5a8246mr9304388a91.15.1789209119815; Sat, 12 Sep 2026 03:31:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 33/82] tcg: Generic expansion of tcg_gen_eqv_* Date: Sat, 12 Sep 2026 00:30:37 -1000 Message-ID: <20260912103126.598030-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::29; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x29.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209292255158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b458b1a0b64..7d225eed9b4 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -198,7 +197,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 54c3c51ed29..3b2807c48d9 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -20,6 +20,7 @@ DEF_RRR(and) DEF_RRR(andc) DEF_RRR(div) DEF_RRR(divu) +DEF_RRR(eqv) DEF_RRR(mul) DEF_RRR(or) DEF_RRR(rem) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ca383e44b59..9811b26a84e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -445,6 +445,16 @@ static void gen_divu(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_eqv, type, 0)) { + gen_op_ttt(INDEX_op_eqv, type, dst, src1, src2); + } else { + gen_xor(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -723,16 +733,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_eqv, ret, arg1, arg2); - } else { - tcg_gen_xor_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I32, 0)) { @@ -1770,16 +1770,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_eqv, ret, arg1, arg2); - } else { - tcg_gen_xor_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209240; cv=none; d=zohomail.com; s=zohoarc; b=lKwr6NivUoXXRy2soxYm7Rjk/5EpU6iMSOm/RBqOpWSeEhIX4hGsGjRKLY3erJ7wZ+5VlUrXyFJZVYfMCJLtEXsqkFI87bBO7UzeQY0BExe/3alAFrdtAXMs0iIm1DLYQZM/KAhvlusPCOvQQmUVRSR99K2HWthFgO6gTaGLU6Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209240; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=oZO0SOhP97A15mzeKwBR14Aw17yXX2X2KlpwBu8IcIs=; b=fmN3e8BE0CmUUTKh75ox+03pzMn24gUlKftV1SOeBtIhV+pQfH0GVeCQztg33f8BxS/CT7skDFZy+efPak0Rp711wmQy9f9VkKiviOq/qU57wO+BOeiCpdjb9fg7MT4lssoXGtwFjgPcNiBHUeQ1fWTDgEGJKC1kUumd3/hajMQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209240148421.26387983944153; Sat, 12 Sep 2026 03:34:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1o-0005Kx-L6; Sat, 12 Sep 2026 06:32:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1g-0005BJ-3R for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:04 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1e-0007Mi-4l for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:03 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50db3so186197a12.1 for ; Sat, 12 Sep 2026 03:32:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209121; x=1789813921; 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:content-type; bh=oZO0SOhP97A15mzeKwBR14Aw17yXX2X2KlpwBu8IcIs=; b=Ws0QFO9gGSmAAhtjJm5GJFjDheBxCPCPLESTNyuTL6xPv5q8VHrE85Nnpoe2AJGmRH VK5zTQndl5VAZPmckn86tBQnM0emzjhI0rG81bXbCmSitMjQQmYvFb99ep9zDq9+pKVA yDf2EpGxJxdjYSgSMo61YERupBaAlhPCQPUoBV070Dg72FQste4Os+C979r3KSMvnTtQ 7Rh7I/jm7Fyvz5I+SanhwMn81v4AJYRAnsL1nSCmb2s01V+o+b98/oT/fDe7fsEW1rj/ Zx0TC1TzJwSYDcQIyj62w4fWHi7h0f8wF1jEOAcsK8sGiqZMqbEuedWmeZ10WfbiowGc XHqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209121; x=1789813921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=oZO0SOhP97A15mzeKwBR14Aw17yXX2X2KlpwBu8IcIs=; b=ZPef430boRCgp05EUHJzRVMhJGZ90wJeGqctXChJypC4Y0vkMTeYVaxvGuPoBpY8wj eZj07TZk/8CwouCa/qnt/JYNPw9sUzTQKt94iL009JQNadSBVWCChGzudDMXLWYO9Q5a mWnAaGnvVLD85AoEzjFjQyfOUnYsNzmP8fZVetp7G1FpfWlO1vpalhP04j4Q3Y+/Yqw7 CuwsbNs6u4b8gV+Vu7w3qi+ZSbmboRhLMRJ5Lkj2G87rYu1AfhAvC43FRjPullUa3tHa 5z3fZie8EoNWBWU8e/oEDfRn9ahgJhD1BEA/zwBE7EfgQ37IvbU1DmFvBrz7wDRscIXQ 5QKQ== X-Gm-Message-State: AFuF++mQzfK0dOwVmLHQ/P/P810U+DA2Nf1oGEInKbjK9zdttpmnssey 7wlejkjhCFfMMOiwkESvsgQHQWE41uAUTizE+WqkmwcVfQYUbxIHzQBH8aaBxxOMcdLAfCqoudp MizvK46A= X-Gm-Gg: AYBFou0bRkNZ+xw/OjzK63Y8tUgLwWSPt+H2gZ+pBl+WeL38VkZwGVZUKTdatgpKrDu ZwTqhuWxg6AWXGY46MmqO7IKgSVjFKiScvQC05bQW4E49veRH0Lbh9lTWp2xJ14ZrYO73aZXFAb 9JpsEi3Jo9462Fzf6jpTpTplod1loRZwous/1jN2cpuIAN4OT7+bzU3yoVasUN36gR2jOquwkDR Lmxu9Sb5+zZe1R0JBIP+gll+xgWC46wm2tXOjRcK7CFtBC9dPNSPJSgGcxZdicJbIApigzS7lXw L/kKUWEgRoY3aYJXSJ4KlbYXqZ6+1KJFgJtfvg8hmdwRAxew9f6duSnfSsJIlQCNwWLaEqmSmnp 98bVPJ5M6tN4wL00JeYaR5FIyx5AJNxkMG069ZrizzqhlgSWpECMRzYgTInhDQlTnjiYfxJ9GiN kxisFbQYXVeZ8KdLe9lDNWoC8SXUjKNaXpaG6+NDOocmeYdcKPGAUWil0XIvhhdBK/4CCQt3Dnd Rs0Pr+lUknGb6BIng== X-Received: by 2002:a05:6a20:a11e:b0:3bf:a543:e7f5 with SMTP id adf61e73a8af0-3db0e0b887bmr4082780637.3.1789209120734; Sat, 12 Sep 2026 03:32:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 34/82] tcg: Generic expansion of tcg_gen_nand_* Date: Sat, 12 Sep 2026 00:30:38 -1000 Message-ID: <20260912103126.598030-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209242164158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7d225eed9b4..6ee12cc2dbe 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -197,7 +196,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 3b2807c48d9..276c0059ec2 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -22,6 +22,7 @@ DEF_RRR(div) DEF_RRR(divu) DEF_RRR(eqv) DEF_RRR(mul) +DEF_RRR(nand) DEF_RRR(or) DEF_RRR(rem) DEF_RRR(remu) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 9811b26a84e..1caedda8931 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -483,6 +483,16 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_nand, type, 0)) { + gen_op_ttt(INDEX_op_nand, type, dst, src1, src2); + } else { + gen_and(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -733,16 +743,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_nand, ret, arg1, arg2); - } else { - tcg_gen_and_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I32, 0)) { @@ -1770,16 +1770,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_nand, ret, arg1, arg2); - } else { - tcg_gen_and_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209181; cv=none; d=zohomail.com; s=zohoarc; b=YFkog7PVJyzjdWjUFAj3OJ3vOmnw9WyImZlA01QzOqZ4QRgrASoiorgoT5jZTooToJA7TAoNV7pu0xnO2PD00ZHkYZHi3Q9asI67Pdr8UmacdqR2jUHa2JbnNwHGikKDJ0AS3HqE35QZoR+pDJ4kCpGMtMb4xmMRzMVUptVaPK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209181; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=XvhBIsCLclU/WC54qjgy5DYlefKGKKxdhmhhdbdetfE=; b=nWjTbk5/nmP99qURHJoVnAqnHBDZIhYCtx3rwaFNmgv9AMWpLhNYovbGVWJ0Cj3jDo7e92MWH4zOrWeMyJfDUjEw/cCsTRQAF3SQFpho3ZWevOjt5usb/96mmTpjVlKaG6IQfqbaUCoDcSMk+av2uvyZqDP3gFJl+9UZnAdTa/0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209181275188.3195520067385; Sat, 12 Sep 2026 03:33:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L23-000698-ED; Sat, 12 Sep 2026 06:32:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1g-0005BU-Tm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:05 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1e-0007Mv-VB for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:04 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d90ba1d807so9502335ad.3 for ; Sat, 12 Sep 2026 03:32:02 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209122; x=1789813922; 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:content-type; bh=XvhBIsCLclU/WC54qjgy5DYlefKGKKxdhmhhdbdetfE=; b=pQAm2sF7hGR2uXFo2Zq8Bajj1c55xkDw2DoLMdXVVIByUmNLHUYe2O+xmw/x8smqAB OBLXyWK5CfhmoJBKjYQsaTcBNYuvRC4JXevm5I583RfVcSZMpTO5OARM7K4HFTIXesnX aNiywWOSy3i7mioYTjzhQ+Bu9oeFKOD+OSGwEikkR8F1IkTYa4f8aEZgBXehmFXCwzuC BrakAQWvSItpwlZsabdg4OB+R4Bt+yemkMMSTQtKZUKibZ/NYC8lbj6oi/vgt+nhwK/M 8oPE8g8J4MUSkgpB2AcMPZxR20j7GEiNLtUYdQOCviTDLlJ7nGS8UxHX91W393P4O400 Ld7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209122; x=1789813922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=XvhBIsCLclU/WC54qjgy5DYlefKGKKxdhmhhdbdetfE=; b=dJ2V2BbjSNzXLwA6e9qVnn+2fqvQN45raQBolef4kCDYjhn4ZCfL/Qh0qt5RSi6yLZ bHoV6VavB0laikoU2jC0rWVMDj5WLk5W8h4U4PFiZeOf5zjBUQ3p2nmR8fHlwzcipgdY NqoPjQqJ+Vm3MAFcU7kE/sX5KN3478/BGxo686HwSBHNA7h75PWIhGHlHUjFRAWXcnzm GhkS33SS1GyiSgqfH0QqzRDadAB2fei1O/jcLIhNMPsC0Cz23eIpdDmGs1rUvJszN/hX tdEFYGz94ePNT+An05yoN+m1+oRzRt/pOkTTfOAQpvmjg6tUJzldXPCyuEVyH6Lxw8ku tR4w== X-Gm-Message-State: AFuF++lejvuKGVqog4NRFzJiJe7gh0DLoQGEQ6nh96z6ZqCQI/9DU8S1 cqgZBPGOoVleSB2Sv/PCxKAXTpkyll6YTuiyRWt0RMBB4La9WQMIV/xVFzUllIxtmfvArptAyKy bUK3Um5M= X-Gm-Gg: AYBFou0a9UVyXfQ6hkmQ5jIEWbSnQm3SCrwE/k2lwCz2SWtbM8m6sZX2lM9l02vTtbl pRFx3cJ2DhRD/zHWVbRSjBTSgi6rrTwabKycyRpuI0Uu/VfD6p1HXzDQKRmO/DkhYINJj00DB46 LTeJdG59WaH+k4aFu9ow7ibHMQFFBAGlTY0raAADGADGmmBlh8Y/a7+oPvJEJwAeeo1kI6IYmhS PoUbwsdXUY/murLjBZ4YF+sTBaqL766tHKvh+2qcVKfq+EaHbjAT5dTnhq9SuFGPmbG4ZWqZGhd pB+sD4FFMJznKeQYOVdC0CC85Sh+ibXs4T/yHCfWD/VcQoSEJHQnWRj/yK0N8lL/YHLorwsNCIh WcHMD7FkP07n6MJzVuHkBMuTsRQmXHJoYNQyZS+MQClGXNytlzFtqxbwWXzCfEfYBaDXcVpBv9K mJDsLBGNqp+ZlzdvYQsZFSw3gjHEMJKDst1YOEhJV8whNBG3weMVv8HxAjN6J83T5r9ySVSYX3Y dUZrVID4Qxt9+cmjQ== X-Received: by 2002:a17:90b:588d:b0:398:bacb:1137 with SMTP id 98e67ed59e1d1-39d9c3771a8mr14290906a91.19.1789209121579; Sat, 12 Sep 2026 03:32:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 35/82] tcg: Generic expansion of tcg_gen_nor_* Date: Sat, 12 Sep 2026 00:30:39 -1000 Message-ID: <20260912103126.598030-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209181628158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 6ee12cc2dbe..b48e85f0b9c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -196,7 +195,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 276c0059ec2..055e98672d6 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -23,6 +23,7 @@ DEF_RRR(divu) DEF_RRR(eqv) DEF_RRR(mul) DEF_RRR(nand) +DEF_RRR(nor) DEF_RRR(or) DEF_RRR(rem) DEF_RRR(remu) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1caedda8931..87fb5fb5f51 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -508,6 +508,16 @@ static void gen_not(TCGType type, TCGTemp *dst, TCGTem= p *src) } } =20 +static void gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_nor, type, 0)) { + gen_op_ttt(INDEX_op_nor, type, dst, src1, src2); + } else { + gen_or(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) { gen_op_ttt(INDEX_op_or, type, dst, src1, src2); @@ -743,16 +753,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_nor, ret, arg1, arg2); - } else { - tcg_gen_or_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I32, 0)) { @@ -1770,16 +1770,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_nor, ret, arg1, arg2); - } else { - tcg_gen_or_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209198; cv=none; d=zohomail.com; s=zohoarc; b=VOTNaRK04nHhXtMPl5efJIXKr3AbHUn8OLrR4PoMQZIjiKF/bEY2M7qVr37bRZ1cWbJ4t3wJr6fPpxW5r2uzjROxhkUI6/04FIcFEgLlarX1dj2YBkhxY0f2UOM+oNhwZXWCOAdnrBGrY+TNGuu1x3tPMmr1pq4+ieGIYzTRtiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209198; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Y5XccNSRdreC+3wxRKkSOjiOGbDaHajtidU+Ahton3w=; b=QLTGK5pn3bstOjWHEUae6sO/y7rF8Vsgup9aW/P6ik0jTv2hhw82pdcu3tuEuoXTeP7nvzKP817maVf5pyjtRMy+HLy0ZZI47PkZsDptKyBBycbrR/3R/MFKM+PDunYnFxuowt8hHevpbAMyci3k4dUANeQhz8NVdVUQXeEMzIU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209198684306.47090264529606; Sat, 12 Sep 2026 03:33:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1q-0005PI-0H; Sat, 12 Sep 2026 06:32:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1i-0005CR-30 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:06 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1g-0007NH-9s for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:05 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-86908cbc011so2663788b3a.1 for ; Sat, 12 Sep 2026 03:32:03 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209122; x=1789813922; 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:content-type; bh=Y5XccNSRdreC+3wxRKkSOjiOGbDaHajtidU+Ahton3w=; b=fQTtTywVSJ3M0uHMNRJ+qlLtsdomi14zZm9eZh6e580AcFUqG3maIFOHqRfKOUMHSl hIA813vkBQujSeQSuMDYms+mXQhblUEyreBoXMC+tFgk1UE6sCO6X89TkHDeaMdDsbHt gj0gjlIzpO6cxJCxFW482prS9Xo+3oVlvSORue0PWMlhWwtcuv04n7+C6nwC/TrXupHU FByBJwFF+fENrkqZg9rdEjF/R9uzpOUyqHbqbk/aBJrJRhxHxj8Ne38zOZ1dyY479yO+ elkb0DtilJP38v3j23OlvdNGIX8kg2ETdM8VLNob1tiur1PAzHMmCQVHZV/Sfo9lIuJT 3xkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209122; x=1789813922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Y5XccNSRdreC+3wxRKkSOjiOGbDaHajtidU+Ahton3w=; b=S7zC4YKQwyuQLxPCOOsZXujloqVA5j6y0yxmc8Y9eeQUElvydbiSrS+a27EzDRDKto 5EdpOrxntqW0qsrWPyH0Qze4uQVPeeUb3OT9soF7nfJSPes0SDqa/YgNdFof3IWQ4/3k 5Mi7wLdP1UQxxGUiIQIpT1qM086QTFu0v1DZS0O1/EX7Qe0OX+6hyfjVG9a82UR3R9r5 KhFHX0x2OV7SidAoNn4VwS7DvOikT4cTTF+OkBlSNd4R3TMauBDtOOHakzOB8hXkIzph kaTTvg3mAWrQANoUQygTKV6lgo0y9kPGebVR87M2brdsPsSY1vozEBaeQ9cwXWd6NwDD 8v/A== X-Gm-Message-State: AFuF++kKlR7CG1xRa020C7iNUWXuHEVmwQ1RdRemPrDC4JBTfxp3Hg43 eOFBT2YueARMEVntwZdCwHk9FGv7e7pl+MknoN7CtBefxiIu6l4GR7z8zyStx0yzla285jG/1ol 2MOQorwE= X-Gm-Gg: AYBFou0Zf28pVX00xW2qQY8l/vD1gv4Mmzrr/JraXIhr26s+NwFpQo+BGPfDhs5/J7E /gSkM7Q44oWMYpDo9T8wY8UL1pArpmWFAprd4pH7sUBZ15MIxnpD+stJ18yySszxRmNIvj2UYid 9Zal2tvVpsMmDrA2yIzG0dPF9HyiHtAuQaupIsOJ2Ni/jejkZHaClIu2sUjxn/rUuNZOm9fcqF0 7b5nkmXvAwRmuVZZWhh0nQiv0tIcPMGCJn17jK3A519HUdr/uixEGMbb1D2oLNq4LPgR6jw53XH KzOyFQ1bmZYw38ZFQXz/DlpU0wjr/rqx8y1GWU2mxEX/OgX7/tlhpljpcr/YZZdgGBoO06qAanT PUn0tth1iYNie+2XM38vFzBnKlLGWpBY/nPp2C2uEM0bbRMsjSmKqZMFtHm6aAXOyNmK41etV4G IFu/jzGN7Y6hOcIfSWSimiuz2ecdqWn37WyfLZcKNZ1F2kGWZDI0oeZ5zNmnx6ojOOTbSKQfAuC Dqr70s= X-Received: by 2002:a05:6a20:1590:b0:3d3:ae50:97cb with SMTP id adf61e73a8af0-3daed84ecc8mr16403967637.24.1789209122523; Sat, 12 Sep 2026 03:32:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 36/82] tcg: Generic expansion of tcg_gen_orc_* Date: Sat, 12 Sep 2026 00:30:40 -1000 Message-ID: <20260912103126.598030-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209199771158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 37 ++++++++++++----------------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b48e85f0b9c..831502dd994 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -121,7 +121,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); @@ -195,7 +194,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 055e98672d6..bad7f4753c1 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -25,6 +25,7 @@ DEF_RRR(mul) DEF_RRR(nand) DEF_RRR(nor) DEF_RRR(or) +DEF_RRR(orc) DEF_RRR(rem) DEF_RRR(remu) DEF_RRR(sar) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 87fb5fb5f51..233ecdc5b98 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -534,6 +534,19 @@ static void gen_ori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +static void gen_orc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_orc, type, 0)) { + gen_op_ttt(INDEX_op_orc, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_not(type, tmp, src2); + gen_or(type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } +} + static void gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_rems, type, 0)) { @@ -753,18 +766,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_orc, ret, arg1, arg2); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_not_i32(t0, arg2); - tcg_gen_or_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } -} - void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { @@ -1770,18 +1771,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_orc, ret, arg1, arg2); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_not_i64(t0, arg2); - tcg_gen_or_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209333; cv=none; d=zohomail.com; s=zohoarc; b=Z4S+GovcL0a9JlhLvPCzDHMDUQNkgKN+VrCTkot8rwf0fqGhlISgoUsm5AxIeocwfgEnsTeb+lZ2xy3yQikJncRn4q9EZ4k2lEb34RX9NZopgN13XkcHHlbUtrIO1rj8otYhyvBto4wjevBOes5djC1ww7yhD/nsuDg+E0qSatU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209333; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Tu5sPnG+Ehsw3C9RXP2r50fQdoX3B5fQd0sDhNvUkLQ=; b=HUt5jFNJkxMR9M9bRzNhrFrxmP6qTADoyJ0XnNBM4U/U04e6kmPrQvzfSbx4Z4EaRqdCEecL9F0KagZOGRn5EQb9GQ1Mye0/grZhP7UFVHYmsHy++5rbCWyL5ze03opwBCdQOl50xVP1OMqN7ZLwIfgZrvxjfXdjzHTy53+Xb8s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920933363442.6592919350245; Sat, 12 Sep 2026 03:35:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L1o-0005KJ-7h; Sat, 12 Sep 2026 06:32:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1j-0005DT-24 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:07 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1h-0007Nd-30 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:06 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-398a5aad413so1820774a91.3 for ; Sat, 12 Sep 2026 03:32:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209124; x=1789813924; 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:content-type; bh=Tu5sPnG+Ehsw3C9RXP2r50fQdoX3B5fQd0sDhNvUkLQ=; b=hU6/e+ZszM92ox9PGXF+Rmkhc1p9CfCCYoneOtyBAIgQmZjN64+P5Wav4OPJKOwx3A D7CR460BpyfB3imDAgUD+J8hp07l9VqkYxzI/71ZTDhTiuZ861L90YO99r9VHGDS5rPx aKSYHHRQTxmk/pI+dF/Nvr3r8/fkVIhlJjY8wG3ZuYMRoqJN/Y1zB0/eUWWTea+e3rsk C4b/ZejWh9iX9xPI6HoSJtwGZX5Sa2r+ZN4KvNxb0qosnxF0xN9FsyvJsbpA07TkospR DqJFfnIIl3pr502mrHm/CVfE4AOarPGO0rWfBAJXT+pDbPn+KdXEaoIQISIsbx0St2LS c1dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209124; x=1789813924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Tu5sPnG+Ehsw3C9RXP2r50fQdoX3B5fQd0sDhNvUkLQ=; b=YS8KPDyzMtq2EJ5+XJb7JJ+tVSYYeWQZKNdhIBD9jrWWQJTJ1jZlEdVOe5j0KCHoqM ViQ0hk0M8rFGtbkjWiLjm+fm1bTvUGzxV9ovoOP0wtrg27ISoMp4jLI2a8Z7z2rWgNvE kd35ojybd0u2Xoc/xK/rYcfxLMv9bs4tVoS8HWHzjuzPZQkEIpX5iik2+8vYrws1GMjY vNDaTc7ab8vMsn8gwe3hqSAoLzCqe73wL2k77S9R/2FJJ29katwjbIlPRYVaFTFV4CvP NpvP3eeSfz47WMX9AT0fuksTDy59O9kqhHclqkqCmTtEqAILPf5Y8l+2oPDp7tP0NR2N G1cg== X-Gm-Message-State: AFuF++k8GOhtP2kSuyuf9jDOxR6zu5kQKy2Fnlliaz6inQDnUuqjjdUl YffHUDRwNahICsggrkF5o9gNTb+3Zk5TU9gSd43ulCdCnQDKZL9qT6SsQZAQmDppZxNWx0dl7L1 zutcy X-Gm-Gg: AYBFou1ZH/fE3MRiw4lRiikNALqukYEOGH9IhHWFULD3hEpC2rFJFay9GPIomG7PznL ybvvqYMdlAzcQDTt89ja+bXmlUQVdEnpBf/HIUk2pRXH5C8k8vuMUcvlzSkaoqUknZJ8yF9Ed4d 6EZV4SXDpjLU7FuGC1QLtJroTet6bm84QRO8vzCZYkPEcq5I+7UJXdMxxH/Ea3lGEIqPJTVTlLn +eKIaocYlOK7GTj7a69KQtqC9c+tGuKhGr1sSwtIVYV2giEmhgfMJJCoHTAsrps+nWqtBDKh2Tm p8UnQg5XMXuWx1CBXqvf8bvqJ4oPZqaMTlwdomaMINPLQgoERBxqbyHDrGb7c1Fn9dxfGPH36tS fg4k2BOmiKW4I6Vy4oeVuyjT4Bpmmh7OUWHX5LyrnWqpvRk1wJ92CaXy6NstyOvOmHuqWJ1cKOl KOUtrTaupE+yLe/IDiHOXyRD6p+sX10MegF6pc+jWdZ1fkCADpOb8C7B8ruq8vCRIvfaBlbhPVF idoyeA= X-Received: by 2002:a17:90b:3812:b0:398:990e:1587 with SMTP id 98e67ed59e1d1-39d9beb8e80mr13530761a91.9.1789209123506; Sat, 12 Sep 2026 03:32:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 37/82] tcg: Generic expansion of tcg_gen_brcond_* Date: Sat, 12 Sep 2026 00:30:41 -1000 Message-ID: <20260912103126.598030-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209334325158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 +++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 44 +++++++++++++++++------------------ 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 831502dd994..e243ed93b55 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -110,6 +110,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RIR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b, TCGV c); =20 +#define DEF_CRRL(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGLabe= l *d); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -118,6 +121,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_RI #undef DEF_RRI #undef DEF_RIR +#undef DEF_CRRL =20 /* 32 bit ops */ =20 @@ -141,7 +145,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *); void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *); void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -214,7 +217,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *); void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *); void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index bad7f4753c1..7721c708e9c 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF_CRRL(brcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 233ecdc5b98..c2ae691622f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -338,6 +338,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_RIR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t, TCGTemp *); =20 +#define DEF_CRRL(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, TC= GLabel *); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -346,6 +349,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_RI #undef DEF_RRI #undef DEF_RIR +#undef DEF_CRRL =20 /* * Generic expansions for templated operations. @@ -409,6 +413,18 @@ static void gen_andc(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_brcond(TCGType type, TCGCond cond, TCGTemp *src1, + TCGTemp *src2, TCGLabel *l) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + tcg_gen_br(l); + } else if (cond !=3D TCG_COND_NEVER) { + TCGOp *op =3D gen_op_ttii(INDEX_op_brcond, type, + src1, src2, cond, label_arg(l)); + add_as_label_use(l, op); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -699,6 +715,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b, TCGV c) \ { gen_##NAME(TYPE, TTMP(a), b, TTMP(c)); } =20 +#define DEF_CRRL(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, \ + TCGV c, TCGLabel *d) \ + { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), d); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -707,20 +728,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_RI #undef DEF_RRI #undef DEF_RIR +#undef DEF_CRRL =20 /* 32 bit ops */ =20 -void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op =3D tcg_gen_op4ii_i32(INDEX_op_brcond, - arg1, arg2, cond, label_arg(l)); - add_as_label_use(l, op); - } -} - void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1520,17 +1531,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op =3D tcg_gen_op4ii_i64(INDEX_op_brcond, arg1, arg2, cond, - label_arg(l)); - add_as_label_use(l, op); - } -} - void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *l) { tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209155; cv=none; d=zohomail.com; s=zohoarc; b=aNTaA5emAX6/aTFN11gMYbrXmR8Mpjamp2eXLuTZylpFqC+FWwazXyimUk+cLjeCGPSqA1YX92WN+FhRmcJOiXdQeuvp4Ltd3wAw+AHXYkqrVS3py5OqCELHWAFiENpUafzWGtQO+KYIgMUMkLyBN3/KSwYDyOM8z8Y6p9Le3vA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209155; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=8IVsMDMM4CZXhMZJGkEVCkXEp5Yu4XfaShmImiuH300=; b=lqNX2mS7EH/0HrUKQxZMsZDqPO2PV5yQ40lxsSIIeP7jwPcDF8IbHbtI17MT8gaeNisV4CNkfu1dVjbWE6GP63t7irB0WqosodvoH5qlDWdo550EEZw60uhKTWX7ihdHr38LUguPvXlfVGy/U9Kqar9ZsKrAkLU+H/jIgAD1CSI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209155317628.2900188328595; Sat, 12 Sep 2026 03:32:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L23-000697-DM; Sat, 12 Sep 2026 06:32:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1j-0005EQ-VL for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:07 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1i-0007Ns-0b for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:07 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-cc149372c14so1261298a12.1 for ; Sat, 12 Sep 2026 03:32:05 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209124; x=1789813924; 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:content-type; bh=8IVsMDMM4CZXhMZJGkEVCkXEp5Yu4XfaShmImiuH300=; b=PaZjHbYf6BZYY6lUEVT8ZhEOTaVsNYmgt3KBBGoGNSErbiEH0zNm2eK05VHJrIAsDH Jdvi1KpRRqIeez3vhhmoG3/81cNESZbOgtcKZWzBgsCdIOgvDbfIxGsCu+lb0lNK47M2 tFLyeGwLZc8IGJnzNH+H9bWHBAhffKJ25Tts2/u+l8inQDMqRTGVgekPrH5dvuZZqSh/ 5p2xqDka2wt10C8HJO/Y5gvDzravk169WhtKqRYE0v2ry6Hwf1WHagZkeLSw1go+rJNR j5XtJ1scvRdWHoDaQNiDPWH0yFXkrPk71fDubyx0JZKgzGPli+GgwUxhkN+7kzXHd/eR UlHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209124; x=1789813924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=8IVsMDMM4CZXhMZJGkEVCkXEp5Yu4XfaShmImiuH300=; b=XLtx8W1+YuYEu6tiIs4AIJltWfqX09gVrpSv5WzF5Ku63gqEWoiXYonRjvMN+bA3zX MZ6xR61z6VuxoG/G+UmyNStCN6p/bth8JXu0Id+gnYqn95Pl/qvKjG4QHnMOowxghark 0vbIIk9qzeK2Pajblb5sfdSRhTt60NdbaHV4yvMqQ/M3/bUDWKBCXVC1ZV4m1REN312t 2nXbj+3nPb+V691A8UFcteC2fNg54e7YmQbI1DBw5Y4YQ8skRe4AKkq8uYZVEbXcEG2U jLQ6PxHFad8XGpqXM3djNRx49zd7SbKVoZfKtu6MKBhrluLrMJpnoIk0DOeMvxgmdIn1 8//g== X-Gm-Message-State: AFuF++majmlnA2kErEVxTH8WTPsW/K1zV10t0MYDbSrrWA2QT+P+Cf5y ZBvUHmIIePu8D0Ob4SbWr6Yr/rBA9vpd81npDdfcJnjVvDTLO7A2F12Y9GS8sX+xfo/EJQgRgj8 xZGUSfp0= X-Gm-Gg: AYBFou273gEOAWtTy7HTvhwif7MB0QhczPiWK0yR24ifY1ivHFMktJ0EPN4JtnGtmDX fJvuTMGesCjqSplRASzYroO9yC06VUCmDImXXLE0sMCJOrB9kOzJCXxmcWbGZSZgZixV+qEgnQw 23IqjsjvOeFBkg74CLXitNcixknARE5E/TEmlX05P3p/eTioc3g89Y2R1odlOShItRlDWD/WHp5 UdA+QHOclUXGndwjTGoMFbQ5Oq2e8jqp3dC1ZtuQ0KNgMysfNvFYqTgtuzd26xbJRqL3y9dyh6z 04S2JYtBdLsymW92GxdEqeSrHT1JG14EoD1FKmuCbyp6GcpMHHNL+YDrPSKY7H5jBwKGnv8nTGY 7CaIHWcftCnn3RXlDOeZ/I/FgoN0iPS+ygv3V2lmbFGxedWu2LQdjh6lYS4CS4Md5Fev+RCCUxW I7Ez+ZAMtSiFx5dFicAvx/WXHazcN78Xem8wv3ThNFhefQLed9qVv3n0HflZxT4Oqm7p2lETtsM TQkz8U= X-Received: by 2002:a17:90b:1d0c:b0:398:d292:e6d5 with SMTP id 98e67ed59e1d1-39d9c35972cmr14750546a91.24.1789209124446; Sat, 12 Sep 2026 03:32:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 38/82] tcg: Generic expansion of tcg_gen_brcondi_* Date: Sat, 12 Sep 2026 00:30:42 -1000 Message-ID: <20260912103126.598030-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209155583158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++++++++-------------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e243ed93b55..b859af38355 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -113,6 +113,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_CRRL(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGLabe= l *d); =20 +#define DEF_CRIL(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TINT c, TCGLabe= l *d); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -122,6 +125,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_RRI #undef DEF_RIR #undef DEF_CRRL +#undef DEF_CRIL =20 /* 32 bit ops */ =20 @@ -145,7 +149,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *); void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, @@ -217,7 +220,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *); void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 7721c708e9c..da15a647e2e 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF_CRIL(brcondi) DEF_CRRL(brcond) DEF_R(discard) DEF_RI(movi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c2ae691622f..e1974aac41c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -341,6 +341,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_CRRL(NAME) \ static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, TC= GLabel *); =20 +#define DEF_CRIL(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, int64_t, TCGL= abel *); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -350,6 +353,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_RRI #undef DEF_RIR #undef DEF_CRRL +#undef DEF_CRIL =20 /* * Generic expansions for templated operations. @@ -425,6 +429,12 @@ static void gen_brcond(TCGType type, TCGCond cond, TCG= Temp *src1, } } =20 +static void gen_brcondi(TCGType type, TCGCond cond, TCGTemp *src1, + int64_t src2, TCGLabel *l) +{ + gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -720,6 +730,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) TCGV c, TCGLabel *d) \ { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), d); } =20 +#define DEF_CRIL(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, \ + TINT c, TCGLabel *d) \ + { gen_##NAME(TYPE, a, TTMP(b), c, d); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -729,18 +744,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_RRI #undef DEF_RIR #undef DEF_CRRL +#undef DEF_CRIL =20 /* 32 bit ops */ =20 -void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - tcg_gen_brcond_i32(cond, arg1, tcg_constant_i32(arg2), l); - } -} - void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { @@ -1531,11 +1538,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *l) -{ - tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); -} - void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209319; cv=none; d=zohomail.com; s=zohoarc; b=DeQsNUSDkRjQflvqmBxwc7hxKD3EKgqzfV5wGEYfYo7h4MrOmmSsNgSd7k8qLOInXgQLIQmXlMXYnxJgRFfRup50sDXNl1nOnA6QMLvnI//A73C6fDCtETA8iOiXuySc9xA7xnIDacfwTNCzykLUul6ZraDc3VGaSq6uF5jNMVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209319; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6NvcOui5YvS2MjJSiNzyvCLGdhE2S5tfKkY/psJIW2g=; b=DHEJiSC7sr9uhmL1NBYTTYIA+4rCG1pD8Xf/8cO41AWWDbyHHfShYXrdgZ66SQtTY8AhAUURoL8w+BLsKJoQeuNnJUTO/Zlc2nJmS/57goI8O+6QGhPhpS7Q1cPdBk8mJNn9yc2X5iyXtgpGgX1EJB4ms8YmDlzsNMmKfWqvO08= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209319022432.06108729589675; Sat, 12 Sep 2026 03:35:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L20-0005zo-95; Sat, 12 Sep 2026 06:32:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L1k-0005FA-OE for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:08 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L1i-0007OC-SI for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:32:08 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccdaea76so191946a91.0 for ; Sat, 12 Sep 2026 03:32:06 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm12628226c88.10.2026.09.12.03.32.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:32:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209125; x=1789813925; 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:content-type; bh=6NvcOui5YvS2MjJSiNzyvCLGdhE2S5tfKkY/psJIW2g=; b=wFWKAjC3YbsaIKlDzneHBYEgwE5vbvpPk4tjRpMHwHXRSR0yjHUAdrjG70n3W2ERIN da9sGPZJ0I1YcpVerkvwJ3mLuTkYUKqCtACRN8V8sgg7vYkYjdwYoHcGNWlG4sQENLPp qJdrl++uiyE9ZYKQJHfPC9W6fx83DbSj5n0XvVASpqXnW/RFw6M1TU6/eTMNMQF8lHRl gxTrEBvngxHqmSPBbL5LgSwZSTw4vpbE5NX5cGQTfO7WnogvxSl250kkpPUHtGEz7LJf LyXnHMwEmDS3gma16/dZYJ2hMXJG7Fwj8tNEVlHw3CTIZCZjzT+OJXg65Ub63ulUZogg qCNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209125; x=1789813925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=6NvcOui5YvS2MjJSiNzyvCLGdhE2S5tfKkY/psJIW2g=; b=TtO3TdSF0JKMxKr2wwc/Swe9r7d/B+TBss2ynPo47iO2yjvHeLNeoN23ui2h9ajBvD wK6njclcc2DcybStuGiQLa0dtEFnRCep8GUAzCevH2LhBIs6OKlIhvW9FGXKSErVNvbw vJzc0zPgiwDPXyB7Vlvabu3uwrLxnYUB8lDbuSXa/in56QJSJ314tFYtipX5OKHrKoO+ yCdTmELtXKk0NyWyLt9P24dNZSaSHg2UyH1zhdduEgFACPnSE1soqsYAHFTG3oJ43aq2 tEqNKD8mgNxr18IHjUqqmYMe6T9KUF41CUxIMcCh2C6QgSp46eM80wmwRfTLKM4/1eKD gR7w== X-Gm-Message-State: AFuF++nwtI2ZZWhvG7m8OwkVuO/eHVZxPMVpGDTPSXurAtHBzPAunXrp ZcVR0KJC4Eime0QFaNSWeJTBvYf6Rh7O3oeb98mMuw/nAlg6v1GdGrYTrZmMNukO6JSdBuA57nC GdtQdTzk= X-Gm-Gg: AYBFou3OGwfPC4n2Qo3Rz7vFVkFiMtLpRkdmc+Ez2w/BX0ziKJXDgwjEg5TWer41Mid 4eZUBguZXshh9gU0Pw595ogenjHxX+UpfEYt0+6QVOJepfzXlCUS32p1b+SH+7YaAai+VFZdN1c 9ByVCi0FXk2CtG5Yz0eWXJ6tIr558I6BPY0BpwRbDlre5R63Mcv7AsHmEgT+RHr75+4vgsnm7Kf w1u7YLeY2LELEci3uECBjtQIF0r4S80rhs6E4ZBqUdA0F2c5IiTuwPeKaYUca+hunTEACtGSi97 eZk5wBPwJ3RsxukQvG70DSGdVezuoEWw4+DlKlcyAcHDl+CHuakNv7+Cp6Jj2CZRrd1czvS2wa5 8blpv+Xh3Mw9ulZJj3wGXCTJppHVosBXXsBvkm3v6m30NyDwF1atWtl3OQCnFj4qkynGDalZZgn LIXtoC4lHWpaWyzaZqNLBJY/QeVXyYtKgzujez6dfhEXRrVeBJWkaDHiG0vhSu94kwWig1GNWIE A7xSGY= X-Received: by 2002:a17:90b:3cc5:b0:38e:c232:9d2c with SMTP id 98e67ed59e1d1-39d97ea3396mr7682241a91.2.1789209125354; Sat, 12 Sep 2026 03:32:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 39/82] tcg: Generic expansion of tcg_gen_setcond_* Date: Sat, 12 Sep 2026 00:30:43 -1000 Message-ID: <20260912103126.598030-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209320216158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 +++--- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 51 ++++++++++++++++++----------------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b859af38355..9b01acb3128 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -116,6 +116,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_CRIL(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TINT c, TCGLabe= l *d); =20 +#define DEF_CRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGV d); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -126,6 +129,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_RIR #undef DEF_CRRL #undef DEF_CRIL +#undef DEF_CRRR =20 /* 32 bit ops */ =20 @@ -149,8 +153,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, @@ -220,8 +222,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index da15a647e2e..560e7f0394e 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -2,6 +2,7 @@ =20 DEF_CRIL(brcondi) DEF_CRRL(brcond) +DEF_CRRR(setcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index e1974aac41c..ee6099461f3 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -121,6 +121,12 @@ static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static TCGOp *gen_op_ttti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGArg a3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= , a3); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -344,6 +350,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_CRIL(NAME) \ static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, int64_t, TCGL= abel *); =20 +#define DEF_CRRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, TC= GTemp *); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -354,6 +363,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_RIR #undef DEF_CRRL #undef DEF_CRIL +#undef DEF_CRRR =20 /* * Generic expansions for templated operations. @@ -631,6 +641,18 @@ static void gen_sari(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_setcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_movi(type, dst, 1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_movi(type, dst, 0); + } else { + gen_op_ttti(INDEX_op_setcond, type, dst, src1, src2, cond); + } +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -735,6 +757,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) TINT c, TCGLabel *d) \ { gen_##NAME(TYPE, a, TTMP(b), c, d); } =20 +#define DEF_CRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGV d)= \ + { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), TTMP(d)); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -745,21 +771,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_RIR #undef DEF_CRRL #undef DEF_CRIL +#undef DEF_CRRR =20 /* 32 bit ops */ =20 -void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i32(ret, 1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i32(ret, 0); - } else { - tcg_gen_op4i_i32(INDEX_op_setcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { @@ -1538,18 +1553,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i64(ret, 1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i64(ret, 0); - } else { - tcg_gen_op4i_i64(INDEX_op_setcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209337; cv=none; d=zohomail.com; s=zohoarc; b=K6aP0oRc/qugD5UFAErVJiB2hvCsC4itG7QM/BPiOIzkteNS0XIorBlG/jsqowLwcrMXHtvOyEq1cWlwH6x0I1x9gC65ce3yViRMKRlPEAleYY0nbQT7VdEZT+RWj8EuCKAIIqWPEDKFoNkQfj0RoY4cZFG/Uqb+/ySM0EmlORM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209337; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=yEDXHLI6f7eFpTuZkz4cFWCdqzPKB1hE2bwtp+6nsgE=; b=TKnkHath2YVukSWhf6k3/a0EoHcYhZBC1WU7T4fHSPdJiJRptnSWpXsJ63PDDYeB0JAH1dWT86jfqlZUWOT6bJFy6Ngu4AdbszxtYyyCxizv/28XJ/L400OqgmXHnvxpW4g5mwaQJ7OJp/0XIrUkUp30wnJjvm6m+au5/2miK7I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209337603778.2104272490006; Sat, 12 Sep 2026 03:35:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L4l-0007lm-H0; Sat, 12 Sep 2026 06:35:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4h-0007bY-Kn for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:11 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4f-00086b-4A for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:11 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4c08393b0so288928a12.0 for ; Sat, 12 Sep 2026 03:35:08 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209308; x=1789814108; 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:content-type; bh=yEDXHLI6f7eFpTuZkz4cFWCdqzPKB1hE2bwtp+6nsgE=; b=EF2iYCCk4E4jGLOfswVtGC1i9GJdkKWAimgjL2lbJxVYm8CEJIuUGz2aYCj8mz6bJa WZ6ydi0yoV+Geix6xrAWdiQI09chHsNd7AViee90RyWNzU2XJ+8xx0ZA5i0tqyGS6tlv w+OOf++a2k12uzEoJXdmenClpaHJE+cM/5mew4d3rH2pTogOmOOnRVLacFjk3Bb3BH7z OlzNnabgF19yio2ims6BVh1yOPacRnvXNAQRo5o+qDfBSzWO/EVe+IWk6T3eATkD7waz wHTKSMgkOvsH+xjolgM6r8yNeS/X0BMyss3378q21aQHwH2PUp5PL9qKY9T4XNnq1WUs hUzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209308; x=1789814108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=yEDXHLI6f7eFpTuZkz4cFWCdqzPKB1hE2bwtp+6nsgE=; b=ONlI0pD7ey36rrzuy7Hsm9wdDkhsZRGN+aeBCBGsZxylifzS04GYQ9wgTmyZ+9IaUZ Sxii8mZ/Lz0BVpG7z+UU90WBc5k6YA8xVeKcPP19i1GqIUE3Gnykh6EHs1ur/Dso5bJL kZgl7GmhGjgAFlzLK8Fr4Q+IhuBkO8nJQRQCwbGqK3DmnxpUZk28xpIwj2I7XRiT7Pal Oy8eQVbDg+098W56GNoSO8Hvaw0F2rupx/9GVW7pl1rj19MJACIAVxyVrQu5V3prfl2b e4cgapm9O3a5RVzzPqYMg75NGi2EUxfxi/GydbGrx6Jr5XJBGi45WrN+6bnrsLyheHM1 RAkw== X-Gm-Message-State: AFuF++nu6WYykvRZDYVQqT3k1wjzzYBVVovoTMle+QjhawBN5xoZQani vWeBIgSHI6/idufKqDxLh+0cTGwfRGwnGFodqqSpHYOQiSpcLYDZUprz8sN4cuqaoI4pZdLJrz4 Qk+4yeaU= X-Gm-Gg: AYBFou2TaUoGAAFdFN1sNpVgWilD1P/a9HJ7e7luwln2zvhGpb5amto335y0ak6J2Av 2lvn8R4jLMWkLiXS7zmwkF6wFtsxOWmpfognh1SIcl+ytvR6NzFPn78l3PmsenHDlcwq39zmSSW d7tHH0OoSFmW+g7xX8YIaRO8nBcgepr5y1xO0BD33FPubt/OJ2T12VA/Wm/bPRyhtIAIBwEUqjB ggVly4k8/uTFMLrg25BJSHT8TtxA5Bo1xukN3vkP57CGYw0K0ECNajdbLKIRN8gIpU80/io0XGd vykCi0RDh+Fn31DrVgwttscNcgNdbylQNWxwddum753w9Q2T77ItGbPHeM6b/U2BA2Jfzwd0X58 i7BmSEslhfPiYFbITuSS7+db+QyXYE4sMiSlFkzwvVU7BCKxpVfbRLJ38SeJTR0u9GIZXpXjJEM w68w6xazGIdazvLXPCXPSi0bWp5EC7LAziGlC23De2tSt4P0ukHpN54aO8miV2l9njkH9U41gI4 SJHBzc= X-Received: by 2002:a05:6a21:468a:b0:3d3:ae40:51df with SMTP id adf61e73a8af0-3db0e482b85mr4488466637.19.1789209307552; Sat, 12 Sep 2026 03:35:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 40/82] tcg: Generic expansion of tcg_gen_setcondi_* Date: Sat, 12 Sep 2026 00:30:44 -1000 Message-ID: <20260912103126.598030-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209338308158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 ++++---- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++++++++------------ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9b01acb3128..02272bc7e20 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -119,6 +119,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_CRRR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGV d); =20 +#define DEF_CRRI(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TINT d); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -130,6 +133,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_CRRL #undef DEF_CRIL #undef DEF_CRRR +#undef DEF_CRRI =20 /* 32 bit ops */ =20 @@ -153,8 +157,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2); void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, @@ -222,8 +224,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2); void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 560e7f0394e..030c59bcd47 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: MIT */ =20 DEF_CRIL(brcondi) +DEF_CRRI(setcondi) DEF_CRRL(brcond) DEF_CRRR(setcond) DEF_R(discard) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ee6099461f3..1b4cb935bb9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -353,6 +353,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define DEF_CRRR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, TC= GTemp *); =20 +#define DEF_CRRI(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, in= t64_t); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -364,6 +367,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRL #undef DEF_CRIL #undef DEF_CRRR +#undef DEF_CRRI =20 /* * Generic expansions for templated operations. @@ -653,6 +657,12 @@ static void gen_setcond(TCGType type, TCGCond cond, TC= GTemp *dst, } } =20 +static void gen_setcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -761,6 +771,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TCGV d)= \ { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), TTMP(d)); } =20 +#define DEF_CRRI(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TINT d)= \ + { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), d); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -772,15 +786,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_CRRL #undef DEF_CRIL #undef DEF_CRRR +#undef DEF_CRRI =20 /* 32 bit ops */ =20 -void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_setcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { @@ -1553,12 +1562,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_setcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209372; cv=none; d=zohomail.com; s=zohoarc; b=jOH0wGSTbi7ppqURaojiFjjTeEYFi6pmCVXjGpxjMbXD/L5CyIjONI1Z+jBLTiynmj4FXK0xdZHeVOa21LqdFSjvThnSSxBVS4mDSXNokFtYnOwrYTiyqZ3JgI9vefA/8L5kyUVmAHuk5iqB+EiowkvKuY2dsJX4nMvOEk/bpn8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209372; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=pDmdp1Vy1jjY2F/bZkRp08PH7q+ZwhXns/0KRVef1tc=; b=UomTlG+4MkjOQL3ACgWYcROE2HYLCvGi4WkBJyLuFJf1BWNMdia9gbF7KXI7qZrd4M2gVRhvZ1qFTbVkZbwH51KpYDbhnfJmmHOzKX0uSIqAXd6+V2PB4cgGTdWkJL92quwxajo+GW1qQZ/6f21HxwJuu1HGlF0VYC8VYa785FA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209372653975.4052621546706; Sat, 12 Sep 2026 03:36:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L4t-0008CW-Bd; Sat, 12 Sep 2026 06:35:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4l-0007mp-KL for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:15 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4g-00086v-CZ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:12 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4c08393dfso294011a12.3 for ; Sat, 12 Sep 2026 03:35:09 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209309; x=1789814109; 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:content-type; bh=pDmdp1Vy1jjY2F/bZkRp08PH7q+ZwhXns/0KRVef1tc=; b=uxbbrbGe9gFfupfKdfBD9Lv6PMc8RZ9QSvlxu9lIk25TQOeDL3eXRjsrR9beF1zee+ Z/dcmMLGqfj7tmdlj6sPkBcLDoBvd051NI86QQVrZO2WG8WWDQgVjYb4ToWOU1Nvb+CN 8ADZ+41wSvpCj5EntRBbGAomwjxEumswMlbQ8dgAYqw5Xw02r4vZUgYwb8Tr9VUrVgf3 550IOBbVmpfBPBQNvBuJE786vzVyVN/J6IDK5674CV0nqxNADRDmGVOYczq653jfpaq4 NNFSOQCf14A3UbRsGvunVmoflvrR8RH6PW93vXLqcdepCLpAI6tCfPfszFTU2u6v6IGl kDSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209309; x=1789814109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=pDmdp1Vy1jjY2F/bZkRp08PH7q+ZwhXns/0KRVef1tc=; b=KNsm6Kl+496dpd5XcDWsXkSoS8dYIlkkGLbnyksd023/w19wmTXEFxLomOwIWpvLza UhZCdUawvVs1gE950HO1j3Lx0miyq3GI4URAwTHNY+3mftAZ4R1DIoB4II2VIQ2L8zch STTT7+JZCGp07kGHKHvXi3oQaItLxavFHzx4aWA8R6y4JSm2pzXrXamI63h8q7PcHcHj zAGVF8lJA+c78hcp/Ap0NGSsRtV+1Ne0pIOUUuWnTzsbPA0/AYcK1XreTuPgmDaoPQVb tn+tX5jRg8d6V1pr5X7xy+A2J2Ou9KbfLKT7pXZ/QT4Ot1SSHrleqS+Yx0amPkUIMPWE 1YRw== X-Gm-Message-State: AFuF++n7pPL2e3luXx2EWCnFSbbv5tfZU7O90aAcZRVllfme0g7LD4pw POZvSKIYFiTEHCjDAWYG7XN9fZzbVl2s9qCaREGqpsoT24TUDIuUf+ezp52XbHJ8fKP78aOunoO v9Ja4RVQ= X-Gm-Gg: AYBFou2vVpYMtQ8l9X/96+ElPxB1w8n5FXGQ0Zu6kmJRDQMsh6aZrXJLq/sR9YPay9O QZNQhlJ/Ie+BX5eqGkhAT3ZKSiZ9R9vWVZTUl9NtB6+EQ1ua62XMj3CttSBZeyUJS9gtOeJgvLK GvAYMihmytjQoT15gy0VMYTbOMGPdN56ivLqm/ehRuoN7woNFy9gaiwTvtL8dx3+4eskmu1jgYl diGFgST5Vk1f71j8rRKX8PK0ootDjWOKq2YjSBTEhJFsgBGFZByJVdC7hjiWAz7qXfQ5/qOb2MR HiZWa3BsUQepMKImtqftHIZwM7RVdOVCPK97B51nxG9zg+W3GDrgG4jqVmHm24oNoMbgyncVQ8z jXuREHrXSnOhcP8of/WdPcvVzoWlgDbgyKZiIjjLVfQ8QiBZHkAEA2Hnb41zCnWaKQSdh8Y6dHt y3l5LHA5Fnkopa72K1xugogFzYpxx0uWRIGhfYl0+SuLYCBFTnWPe9OLDcWPXKhhZeawf6mfR57 ZtFqaw= X-Received: by 2002:a17:90b:4b44:b0:396:65dd:4093 with SMTP id 98e67ed59e1d1-39dbc6a5083mr3657090a91.14.1789209308764; Sat, 12 Sep 2026 03:35:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 41/82] tcg: Generic expansion of tcg_gen_negsetcond_* Date: Sat, 12 Sep 2026 00:30:45 -1000 Message-ID: <20260912103126.598030-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209374543158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 36 ++++++++++++----------------------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 02272bc7e20..59f0f9ee0de 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -157,8 +157,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, @@ -224,8 +222,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 030c59bcd47..5343b99f622 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -3,6 +3,7 @@ DEF_CRIL(brcondi) DEF_CRRI(setcondi) DEF_CRRL(brcond) +DEF_CRRR(negsetcond) DEF_CRRR(setcond) DEF_R(discard) DEF_RI(movi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1b4cb935bb9..a04a55c186a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -538,6 +538,18 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_negsetcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_movi(type, dst, -1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_movi(type, dst, 0); + } else { + gen_op_ttti(INDEX_op_negsetcond, type, dst, src1, src2, cond); + } +} + static void gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_not, type, 0)) { @@ -790,18 +802,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i32(ret, -1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i32(ret, 0); - } else { - tcg_gen_op4i_i32(INDEX_op_negsetcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { @@ -1568,18 +1568,6 @@ void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 = ret, tcg_gen_negsetcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); } =20 -void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i64(ret, -1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i64(ret, 0); - } else { - tcg_gen_op4i_i64(INDEX_op_negsetcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209349; cv=none; d=zohomail.com; s=zohoarc; b=m4IIQnAmItjbeodO/K2EG0PX+f6kLM5aPQ1FuQ654pUIuSz0d1v8b6KQ5EDPMiZUwxHm/wBJ3q5/WzjUuX4/J5XlVfzGLCBW+td2PK9923th8E1AA5w6dPjn2s3XYntV0AZnMnYrKkQeyn0y4+GYhppHd7G1HyztbFJ6ZU6FgYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209349; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=zq4EkIXFT7NjETo0Y5t2WPpBzYTIsKrkWkFQvtBy1a8=; b=O6JI8Obdp/qc6uDQCo/wjw3+Vu6t4o/KX6M3jApNCo/YO7B1LgXSIcOiVT5Z6sEdbq3UVQVgJb4sDcsW02NTv1Ou44QGSFBr1RIrA4x0E8M9d3nqojUFlAa6qaaH+SouEK5Li/sEP05Mt+KQr48lVRxGyzTomIJNVmI7NY3lh20= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209349619368.5316211665487; Sat, 12 Sep 2026 03:35:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L4o-0007vH-Mt; Sat, 12 Sep 2026 06:35:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4l-0007mq-KJ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:15 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4h-00087G-Ck for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:13 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso799369a12.0 for ; Sat, 12 Sep 2026 03:35:10 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209310; x=1789814110; 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:content-type; bh=zq4EkIXFT7NjETo0Y5t2WPpBzYTIsKrkWkFQvtBy1a8=; b=prttyeeklV+UFHAfMaX8u8V04O6acDBYUEV+0K9JDt7y/3rylUeAU91AggHUSUy5sA x4zR5i/ites5oAW7RjkVlmi02EdVBr6ed7enb34yF0ybGuAsD42/lxtAc7WOwWlX5qJq uuFbJVWUPaMpNPCewc0SuOR7VVts/dHrwL6G0DnpeVpdiEYbznmwMC8fc6EvVrYBm0Ir XhCZ14c+hicn8hCfIVI9FWSpnTLi9l8asVAszjD5oha108wwtJib+/3cVrkx1RzMnxfz DZNfYJB9A4o5kBeiakhOPVmfDpJW6QABJfZNKsM/nAP/NejwqvyrNgYz0hX09Hy62Yy+ 1UuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209310; x=1789814110; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zq4EkIXFT7NjETo0Y5t2WPpBzYTIsKrkWkFQvtBy1a8=; b=rbZ/EwVtFdqE614zJA2RKIQtq+Qr4KEsO3PPRd1L6EKJtANAJX/38uDNZGiUsc7T7i +Qcc0PSpZCkryMviKZ2P0muCJL2j0bsvjlfDSshgRQ3dziFNvOU1PfJsUCzB7bfk+3L7 tUPy7y1QC/rI9QXAmCd9vcAIdVVWNiU1XFGt7teFFXnB6uIV3iwOZ0ATxpCC55tBpmia i60SmC34GBdEIPdw8P5UHepy0K+oqfkz2P7MEt9wehKA3l9UAnPNnHug4lYMFvcWm7LQ P1NGE2uXanMggrEzFHQgvMbusqktYorCorTNk2yyhsPS/Ufu4tjxytY71ArrxP5kY7Ii ECkw== X-Gm-Message-State: AFuF++lKnS/Y60RcTCOQ0TnDjBFBcqbdZOiXfNKMsSrifse1d+4PSw5J EC+brhXsaNNqf6J9KowSq3yX4dU3ZX80T9y2CMd/OIpPYNbttpj8FUvc+3MYiczS6XJ1yJWIvYP AJqTvirY= X-Gm-Gg: AYBFou0GA4nSXezLtkWsE5/P5QSEge0SDsTx7ggsFD7UrMiMvb53nm5jVfe7XXJ/ecj CIIIsH1v8WnN7A41Q1H8iH3KSQq0c8a4KHMEsKMA9W/AtoCgS6fR0nCaYgId/PrrkBt4LXaLTKb uQLGycs3iw8ApQyukVlDBizl5LrWgVf3iTAcTRPhdC7XZl5CR6ji5nJrn9JedMR51TIJccd6PWo 9n0nJcFiV1V9o+Cmg0vGVU5gEgUsJLK4TtjjamGJYuKjrDkPOXIY0gk0IjFv1dkUtFXtqfY1dSe TqTW0eABMcx7sC5u0r86AwRL+o/BA7RR8AIbnKmt7o4ln4eNYuMxmfwuSFpqDx+RWUIU/+YJ1Kj XtJk51dxIrQxVpPIBVjgcTCTc/aIj6QtYJ/fVE/nUQRlrPhmnlJD0POcHDhbvZIKRPIBCHS7zEl MO1dfJZYM0RyV/F8NXf03TiQXRAw7v9MJvdhEkBAgW16xyJGElm7qfYkrN+L/FfDMpw53iYjYj4 5GF9OSdqBVWhf6j/n0= X-Received: by 2002:a05:6a20:258e:b0:3cc:2552:ddd7 with SMTP id adf61e73a8af0-3daed0fffb2mr16685430637.5.1789209309732; Sat, 12 Sep 2026 03:35:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 42/82] tcg: Generic expansion of tcg_gen_negsetcondi_* Date: Sat, 12 Sep 2026 00:30:46 -1000 Message-ID: <20260912103126.598030-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209350347158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 18 ++++++------------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 59f0f9ee0de..4223229c78b 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -157,8 +157,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2); void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -222,8 +220,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2); void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 5343b99f622..bc27e1b2af6 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: MIT */ =20 DEF_CRIL(brcondi) +DEF_CRRI(negsetcondi) DEF_CRRI(setcondi) DEF_CRRL(brcond) DEF_CRRR(negsetcond) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a04a55c186a..14139fa5784 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -550,6 +550,12 @@ static void gen_negsetcond(TCGType type, TCGCond cond,= TCGTemp *dst, } } =20 +static void gen_negsetcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + gen_negsetcond(type, cond, dst, src1, tcg_constant_internal(type, src2= )); +} + static void gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_not, type, 0)) { @@ -802,12 +808,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { @@ -1562,12 +1562,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_negsetcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209351; cv=none; d=zohomail.com; s=zohoarc; b=Cj43uU8IyM0K+T/IZehQ8qngERR2fWp6fes2wXoxtUZIQcjWZFhwJiaomcmldBKwNp/frp1IssUn13XBHdEx19VNFlkKUtlX3LXUZz4xg6Q8UURk19sRqIDis+SPOKS07uuhmx42vxX35wZTOk8YoV6HTR6ygUUhsBLufAA8B4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209351; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ssxBxFFyxI004t8G7Dvnez7uUFPErstqKq+QmQwdfYA=; b=h2qZax9lpzShDke1PHijBWxSQ8lKmO484wfrRHt3mWeohRRXMUjesiPSpeMwCHFcJ1lW4IvLqkqDw1hWB4LGMXvnW/mGTLf6ogZVcEXOlhjpZjxQG9pO4Qm9souf498DCOxPVH2nOHz93QL4X0kxf46h04gZEW9W6HUnf0+x7Pc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209351435938.2806138997267; Sat, 12 Sep 2026 03:35:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008TY-3l; Sat, 12 Sep 2026 06:35:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4p-00083X-EJ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:19 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4k-00087f-4F for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:17 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8558c0b26a8so1320121b3a.3 for ; Sat, 12 Sep 2026 03:35:12 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209311; x=1789814111; 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:content-type; bh=ssxBxFFyxI004t8G7Dvnez7uUFPErstqKq+QmQwdfYA=; b=oDiBP9OQxZxPdMpkycwwAEaKoCR7nsGfikHljK3TNPhJHmR0BC5g8dGTgz0FYgOZPI VEL2e5lxbVDTmU1WXNQ/yBQ6khbzu7FTUBgUcaZNYU7SRMcBARRL4P4VSeeRbhZ6At2m ry/62WVAiYrkm962cxYS390mbkds33CWWenJzqk0UDZ9uTOrfH0EhOsfgUugT66mguzz WuLWUrU4VOm15EE0Cpg79V5VhnkjhUWwwX+lLs3QUtsxQQ14w2redfBlpdpHWlNQC5Vq +2JLdErFo3654Z5fH/3tKrbzOSTlm0fBiPpAdyikd0C+THyhnOyTMNUdJXn8qNbXY1Sg aM9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209311; x=1789814111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ssxBxFFyxI004t8G7Dvnez7uUFPErstqKq+QmQwdfYA=; b=GlA51nxPD6z9LgZfwpaaZ7DnKWaspMmLhitLI8gEmn90wvA//ishIv4IdGAeaChGH4 VgLMigypzxTP11sSWyR26AnPwR8BjFlTDI3a9KvWWAKKgdn8qHaKhmUuqQia9sT7OOA5 T6GttBWlEcihgz8VvPpEopPfXmAVsUqYC8T7wh7Ug3M5KwjflCPcrUBo1kgJJ98MJnVn NwyGKInwCDflPmTlVosucjftHg2KTA+EZRNmaODxffTG3SjCXPVVYl5zUWB5ifhqn/73 nn6GRrb7q1S8EK4rnPuflxhWH5ceEpLGOwRtZ2cF8Na0RY4NOD/xdlzMnkreaDO4+4aj 77Sw== X-Gm-Message-State: AFuF++nJQ9Hh1dG8aKFha1vDE8VrBatwxoTJOeTa35eO8maXjyjkPaX7 HjbFFDeKdhdDMbGmaASPgE83EBgRzTbfiOkQj72ZL9u2SUxynP27gpwW/mvIOD9L+yNSbXZKIi4 UmP8hu7M= X-Gm-Gg: AYBFou1/iqeMLgmJP6ji47Bkb6BT8+8WTB0K08ZXsRi2ugc81gXviCueeRl84JM+gL5 xy3TIfsmBwWBADCvj/unIEQIyk9Z3rE1a2CfKEv3Y6aIIoz82tervjcqkkT162+QrdcTFqTmEIq kJRDrwDvZklry+A8o/3kSIFQ4fH1LybIzIMnVkSf8wkXMkNGucR96uyA/lSUbvuApGIwuEQ8oYY GjOefWKASYA6tmtU2tBdSUx8jyUi7JIgriZF4RaoEsuHvUiCKmw/8XkYBP3iDV/2FM7gh0TukKD 4bPF84OKkr9QajouiL3HJR9tKO0vM+0cvIGv/E2ayHy/uuviPSmRJDV1bBav8ibGWJpiFmc3mRt L8rkJzTYCpgg4YFxenWh3Xy562QZk6NWr2WRu8vEnItYT7hw0CQe+oZbyrpxLSZ0BL7QLVu/PGP jDcVwYZVtSdExHued1nS7WGTXXxwAJp9iiRR/ATF8yOt/C33MFc8jCm1qJPEFTT+Xub0gNMqURi sT+Y1I= X-Received: by 2002:a05:6a21:113:b0:3da:7140:da35 with SMTP id adf61e73a8af0-3daed331022mr14859165637.15.1789209310710; Sat, 12 Sep 2026 03:35:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 43/82] tcg: Generic expansion of tcg_gen_movcond_* Date: Sat, 12 Sep 2026 00:30:47 -1000 Message-ID: <20260912103126.598030-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209352444158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 9 +++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 71 +++++++++++++++-------------------- 3 files changed, 37 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4223229c78b..04fe772c1e0 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -122,6 +122,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info); #define DEF_CRRI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TINT d); =20 +#define DEF_CRRRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, \ + TCGV d, TCGV e, TCGV f); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -134,6 +138,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_CRIL #undef DEF_CRRR #undef DEF_CRRI +#undef DEF_CRRRRR =20 /* 32 bit ops */ =20 @@ -157,8 +162,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, - TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -220,8 +223,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, - TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index bc27e1b2af6..cbaaba72ffa 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -6,6 +6,7 @@ DEF_CRRI(setcondi) DEF_CRRL(brcond) DEF_CRRR(negsetcond) DEF_CRRR(setcond) +DEF_CRRRRR(movcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 14139fa5784..6145a171665 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -135,6 +135,14 @@ static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, temp_arg(t3), temp_arg(t4)); } =20 +static TCGOp *gen_op_ttttti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4, TCGArg a5) +{ + return tcg_gen_op6(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4), a5); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -256,22 +264,6 @@ static void DNI tcg_gen_op5ii_i64(TCGOpcode opc, TCGv_= i64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4, a5); } =20 -static void DNI tcg_gen_op6i_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4, - TCGv_i32 a5, TCGArg a6) -{ - tcg_gen_op6(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4), tcgv_i32_arg(a5), a6); -} - -static void DNI tcg_gen_op6i_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4, - TCGv_i64 a5, TCGArg a6) -{ - tcg_gen_op6(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4), tcgv_i64_arg(a5), a6); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -356,6 +348,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) #define DEF_CRRI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, in= t64_t); =20 +#define DEF_CRRRRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, \ + TCGTemp *, TCGTemp *, TCGTemp *); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -368,6 +364,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRIL #undef DEF_CRRR #undef DEF_CRRI +#undef DEF_CRRRRR =20 /* * Generic expansions for templated operations. @@ -507,6 +504,18 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_movcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *c1, TCGTemp *c2, TCGTemp *v1, TCGTemp *v2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_mov(type, dst, v1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_mov(type, dst, v2); + } else { + gen_op_ttttti(INDEX_op_movcond, type, dst, c1, c2, v1, v2, cond); + } +} + static void gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); @@ -793,6 +802,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, TINT d)= \ { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), d); } =20 +#define DEF_CRRRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, \ + TCGV d, TCGV e, TCGV f) \ + { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), TTMP(d), TTMP(e), TTMP(f)); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -805,6 +819,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) #undef DEF_CRIL #undef DEF_CRRR #undef DEF_CRRI +#undef DEF_CRRRRR =20 /* 32 bit ops */ =20 @@ -1117,18 +1132,6 @@ void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al,= TCGv_i32 ah, } } =20 -void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, - TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_mov_i32(ret, v1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_mov_i32(ret, v2); - } else { - tcg_gen_op6i_i32(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); - } -} - void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -2042,18 +2045,6 @@ void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al,= TCGv_i64 ah, } } =20 -void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, - TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_mov_i64(ret, v1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_mov_i64(ret, v2); - } else { - tcg_gen_op6i_i64(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); - } -} - void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209419; cv=none; d=zohomail.com; s=zohoarc; b=cQSFwk82rSph+2vHc+GnecWGDlLQclkr+N6YYjJ9maR8t6F5tHT2GVBWFXvcXPNIqnzGhNXLlrufgZ8ktCVNyP/X+mmIrVtU0dz8lc/zdj/pByFNS4ajX2Cvl4qtonUTiW5V5cPkr+rg5CCta4BUMyGlq1ITQQulwkewOSYP03g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209419; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5OH+ftdL6EWEe+MJJ1Z9BwINTcNGJFazqZu6cvfVV74=; b=NlnJ6Q6bmp7isAH9snv+nPjoYxMj3fGWi1bXjEzdnSE8IUcxfA/h8RHXiBWZ5SmiJvPodJzezRcLaeEuQwEgVb/X+PvGMUZWzPon9XCh2B2qc+l59A1Eb5QQcHr9K4XsnTDmo/mwLFjg2k+zCoNVI/RQndJHXv9p03tTL1Cq8sc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209419756278.1149960430581; Sat, 12 Sep 2026 03:36:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5M-0002Xg-7u; Sat, 12 Sep 2026 06:35:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4v-0008OH-TL for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:26 -0400 Received: from mail-pz2-x16.google.com ([2607:f8b0:4864:3b::16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4p-00087z-7O for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:23 -0400 Received: by mail-pz2-x16.google.com with SMTP id 41be03b00d2f7-cc4bdf8abaaso798335a12.2 for ; Sat, 12 Sep 2026 03:35:12 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209312; x=1789814112; 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:content-type; bh=5OH+ftdL6EWEe+MJJ1Z9BwINTcNGJFazqZu6cvfVV74=; b=m9y3Qvuyg0d18gWMUp+s/609l9Ba4QySEIVkL/z556Z7XpVLxFC6QosToCesf1lRrd lsN6hFfoici1ei9FbIv2DwFT/RcxaQNzWUdxxO++GFowpHMhA1c7mdJSd6zu1IN6sWyI dWEGnwML6Wpjq+T6VYwMDFTMwB4zokSxwmXIt5y8L7ZsvBD03xpIff8MiNFxgZL8RYxT zZkN6aGo5fk0Q27cYuf79juUXGns33mAAWS91HvLcxQKtrODqyfQLKz0/aQZuLTk/ihM VSaQg7V0mojcro213WVjvcA7Dkc2vdyvF9CJBMneNQWAj2agmGw66cYOn2yqY2Dvq8pE ZfOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209312; x=1789814112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5OH+ftdL6EWEe+MJJ1Z9BwINTcNGJFazqZu6cvfVV74=; b=Q2Ao/1QaF5Bnw52+BB14EFe31cp05Han0Q+lJPheW7m9puNkj/0ERA+/K6r2VhiTC2 quwoJvvnI+Cd4ri6khs2VtvD3FfyV42VM4LI6H4uadVsr+D1zixvHYTaHIhlq+JS7fh8 YhaR4KXxULVVKxCLRBMrZPWVyGg9nqJ8B1qLcND0tC8YTKOrSL6PieLOdQGuXQoPJWyC tLzePgcHxVuj6PM2Xkmb0IeB36VmBO8qol5u6MB3jqe2Tq9WdqKk+bCTZyRSaeDYw4x7 s4mMcPddolMdw4wWwLQKMRY1h6Np++v5URPCWtPtfMUjSFeySvJcV4pYVkaH1lvtmkQc FdzQ== X-Gm-Message-State: AFuF++kE243HffKuY2Qkn8syNKJPB//+fce9vcqrLrvxNH5u4uubmyLc /c+h6LqHu6b7GdtqWdB8PC3UkWyLnm5qVlU4pB7p9b2caPfbovMlL3QyGM6OgzxHuAVsdEEGrmV fzbj8q7o= X-Gm-Gg: AYBFou3hL6tx+a62vMutmmiZGyKF+BfNoNh/qmbyAtetQ3x8OVwPBRuR7WQDUIYKliq O5vwIz8IsM+k/JoWzxUN7F9q3xdpR1csdISXEW6O+CWAe+X1E6TGFAi16PdSK1AIJMWXEhjJ2uH eGRathf4P0pnCCemA9uKGuj75j7/T634TR/6PfZpIXdH+qH2aABUi/wfsFvQZFQFD1s1PAdlNva t8JQKbeTJ62X5j74bCR4UCY0cpKdP/RaejM13bXa5/mVnnTtAFYdYDf5ptJ0NSptlceDv0Fm6gl wsOGGkWzBKxAeCgi6y90ePyYIy0swcjZ014/jTwAIjiAd9a9WnR6Puw5iQtVQPN7tBKbanffrhR Rm+NHZL2BPz0T0lIHJTUjMPvZvHkQejrH7W266vbFD28+GNFkFm8R+4y5+9lOiz2JajJGU2gw/M K0b/N2SIt8jKJK8Ymv5Ttxeimh/mYexnroG9guqL6Zf91MwOj9bBwhLF5IW61mhjhfJTXDV88Ro nvWfz2i X-Received: by 2002:a05:6a20:cf85:b0:3d3:aec2:4dce with SMTP id adf61e73a8af0-3daed3ff609mr15230933637.26.1789209311645; Sat, 12 Sep 2026 03:35:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 44/82] tcg: Split out gen_extrl_i64_i32 Date: Sat, 12 Sep 2026 00:30:48 -1000 Message-ID: <20260912103126.598030-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::16; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x16.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209420681158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6145a171665..f3b1ee1fe43 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -366,6 +366,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRI #undef DEF_CRRRRR =20 +static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); + /* * Generic expansions for templated operations. * We have used compiler type checks to ensure all operands @@ -492,6 +494,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -2293,8 +2300,7 @@ void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - tcg_gen_op2(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); + gen_extrl_i64_i32(tcgv_i32_temp(ret), tcgv_i64_temp(arg)); } =20 void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209381; cv=none; d=zohomail.com; s=zohoarc; b=IoRMeSm7p1v2g1zFV+RJqM8iIdMumei+epaI7hzO2Q1dG4vU96NYuVV6vX5kYZYCPZzkJO4SWfPKRBC0AZErNoYjNNeQ4p3Cj3fMV03qFgWEzNUCk7aSBGjCABpmCYcsBv8q88CmDhmaypY1P0Jz4boXqBAteb87lZiNOPt7ID8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209381; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=UPcFkvlxbeQe+K4g1tyvukG0hCxa+O0lWx2C20PLRUs=; b=AhP7syucCJdtD84comdZJ3/TwcBBa3+hCjGuPW2gj2wy/fENkFCyDJdTuPdFeSCX21WZxBWxi+l80bInp0na9m/7A1XYGuZGFeA2R9MhhkwLsPMIfwqvFYFgLGmBoXMrCCSl1iA08RrSA7WYH5NhZpxUqk1Iww1VabDYa+4dS6k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209381496690.8134396026956; Sat, 12 Sep 2026 03:36:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L51-0000IQ-MP; Sat, 12 Sep 2026 06:35:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4r-0008AT-Aw for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:21 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4n-00088H-8P for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:20 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2db22383fe8so4218935ad.2 for ; Sat, 12 Sep 2026 03:35:13 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209313; x=1789814113; 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:content-type; bh=UPcFkvlxbeQe+K4g1tyvukG0hCxa+O0lWx2C20PLRUs=; b=iSt0d8towmh4oRzBaexn+dWEzNrR/1edS8HdyszmiGxz/powS2q6YwhZVI43ftYpAF cFGs4FWrOyTRS0OM48VB1pBlhopI6Vi/38YX6gthP1ZUHtab+9FxyMGKlF5YbW/sPMdw UL+H0JSlzVpbdMPGKFG8SqP7zpDn3Zf0nyFb849ABIZR/+4PGxAMCKPq6r0ADsbfuoPM FiZhI6023BNw9sXGzH+jMEeZ0HVzdbfy0odiNcBA+3mbvwgv3I9wgHm1jkJwg3yH8Bkp G1DTelXMIxu5HuqyEz2avyCFLTW9m3pU4u04xkCVm+eZWFRaS7xNR5ItDo2bmAX+cnjM edtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209313; x=1789814113; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=UPcFkvlxbeQe+K4g1tyvukG0hCxa+O0lWx2C20PLRUs=; b=XgNd4jtvDhYG9WfQGrXbyZu01yV/ppEuLFkOCJaZg5fYqGv/6FYFgRJV2x7gedv9/e Chm52Yf5ryI7Xs6/JWiwOvyS4ZuoEQWlrC3UVWR/rtvcuXJ8eaNB27ZKtU32HTgZZjz0 LfellvhsOM/mqQPgYDIbREi+6clqlym9SVMTV12we1S5O7UU1FH3j0xNSATjQx3JTJEd I/N8lsN4cK40+0KrsIZJdbyZoFkBJAc7DU0fk6ABjCYHfa/sadNbcpLbD43llcXn16GT +C0Omt9pUkqVA4NnL4vqw+dK0JTThqPYNyN53Di0BxDfgJ2EqyEUV5gmC2fAGIGvfvmq 2UTg== X-Gm-Message-State: AFuF++kjUvu4MHfXDoJrnavMxdIe/e4yN9xQjdcmRuv6Oe38dMDh+zcn lJF5h+rNbBUb1HT8KgPvkAS31DsG/6DAMvaIw9hhZWqNZRWj5cD2YRBvXiL1cZPEZRwPEFXEZdC rNwgnAS0= X-Gm-Gg: AYBFou2qvtZUE1ZActe4DqNP5MO3sxJbPOVXcsuR/Pa3P+iQ7Eehua1aCgsKzdohL8p mf3eGiekSoT7YfOV2enKMk+It0oue7zJ+1VfP+WiBolbZQ5pPcbgmmbqJgIsvLsAp0FkdYMF/3G MACDJO+G45CZmYTNYdckmej4Nkd4cRVP4y1YTgMbR7JQn/8iA5nJapVQa6P0jf7Kz3erQxYGkl9 cvOKKLzbBOtQgWBI+SAih0sqF/usHjJJvCrjh2fB+3Hq46pICl9ym4rWLVPe2o6VdoHa7kAFzRC nuAa7HoW1lBx6em70z14JGuCQ4G3dAxQUg6sDFhgUvWjU4tPKkv42+DQPAoT0oOazS7a81Mheml AMwCcknsAHszqOCcn1fehGstB1M73o0HOschLaBKF09zXF21QHGwznM2b6Yzx4Mpb2dYgYsVqc7 F+6FP4+ZMFb8b49owUHAX8up9uXJMd4WeJmev7B5+Aa6JfHJdVwk1WccwaOWyeXGDpIlqYEUqR7 tmUdc8= X-Received: by 2002:a17:903:1a67:b0:2d8:d4d3:da4d with SMTP id d9443c01a7336-2dd2a35dd20mr135742705ad.17.1789209312547; Sat, 12 Sep 2026 03:35:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 45/82] tcg: Split out gen_extu_i32_i64 Date: Sat, 12 Sep 2026 00:30:49 -1000 Message-ID: <20260912103126.598030-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209382456158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index f3b1ee1fe43..d1eb006b2e6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -367,6 +367,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRRRR =20 static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); +static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 /* * Generic expansions for templated operations. @@ -499,6 +500,11 @@ static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *s= rc) gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); } =20 +static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -2311,8 +2317,7 @@ void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) =20 void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - tcg_gen_op2(INDEX_op_extu_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); + gen_extu_i32_i64(tcgv_i64_temp(ret), tcgv_i32_temp(arg)); } =20 void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209335; cv=none; d=zohomail.com; s=zohoarc; b=JAMl5GfbzOsR/Qyk1loGheh2v3kAF8Db9yiue0gGL80Z8zFrP203IK43M8VOGaLoSnkoynRFPdAUQ9nkfrwPiJwDAe859OV6skcp540AtgMbNcKr0uRV+6LYfbJ/6uUafGFGpVPs6IkkHSNWW9wzZoqEBQWCPAbqmsEN2FAm0EM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209335; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6FgJVuIldxZYyhLJnAqKitemkV7wXJkVHFz+nElQZ9s=; b=fS5CWAGBvekbY4RyQo++B8Iqemp9JrtvZHucYK5OwqT4WLFT/SnDz41IXlfhk+nahRiZ1fgVZO3sLu2YbX5xD0528q20TGhbgnGZGr7orEEf8TGnTwXiU5Wuk3hlnVXkTtP5iMiwoduU1hHYMTD/SSBeuGTZzpuOka3ZSSfCP8Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209335787718.6536220327514; Sat, 12 Sep 2026 03:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L4w-0008MN-S2; Sat, 12 Sep 2026 06:35:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4r-0008AJ-AW for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:21 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4l-0008EC-CD for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:20 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d91ede8035so4586815ad.3 for ; Sat, 12 Sep 2026 03:35:14 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209313; x=1789814113; 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:content-type; bh=6FgJVuIldxZYyhLJnAqKitemkV7wXJkVHFz+nElQZ9s=; b=UkkoGGIvpQ/RnmIu5twdneJVusmMh2OkUFTdBXvNY+5SXDa+1ExaLIED6Y/oxM8AXv s21owxLHPRoAy4J8KsQFhCgvqmOehrNGLCvgZCbqPXH6Y2QN6KuIS2SmAl1ieFmIkqTp Lsux8wol38S5z0F7+/xIpWeQtdXOML6Qfva/H5ug+jD/6mbE824k8gMmk9n/okj9aQXV BVL+DVWreMNceG3Qfw/hFXGxD6fXEwNrleI7RB2r+vKSPOpTk4eDXf/GAiOyWm+sBbgD FDLpk7ENmw8urZuYVYljp6qMS3V43gvcpXADLBNgTALT73TAWUOP+z5ed2K7RJ7OAH1u a+FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209313; x=1789814113; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=6FgJVuIldxZYyhLJnAqKitemkV7wXJkVHFz+nElQZ9s=; b=bbKvPfR6vp12yqOPd+6BPYcqcAyFYnkPNH6GHRGrUp8A1tArYv+qYumN4iaHOlKla9 fA15y2x0iDEQ93/6+iUBK9czW3IThryddqsbpEsNofHANhwtlo8FK3+OCIWa8hJ25i1Z 3zQcYbtT9oRpSBymnax2Kj7veprgBfQCqyRDNhiIVdXEvaGRGNDJvJtJk3BKBeWM9nHP BpWOVCmoLe2vi+xXQKEQrXQDxoiWZtAyhnzZoJsTTLHSHDttKdyNeDPjdtGSYEQBLtgl eQpPD7AfCGR1Wxus1wyQt2g68KfzaMboqsac4DEawOHJ446A6Oiqu5VoywOXil21eAz4 P2lQ== X-Gm-Message-State: AFuF++lwMH6TC2tfPiZzf0tQsSOYEwMKyw1T3hYFKbawDcMSzvQGiUoc SgGSzsp3bGnZiGuoc9BZXrTacE4i2PtGGVqkI78rMaC3CO9iiLa3mtoukZhtl9E9pgAUQsXfnRf cgm9CAyM= X-Gm-Gg: AYBFou3Z2D031xVIROC82Jey8/jXRUcbewdPGI6/61VokoNBcdx66IQM/DmHjv0M+z/ evC2OW0g7ot84Ye4/2A8OcJt3eMg26V3cCZr24QcAV9JsFh9Xd1RjnCrEFOinqER9U8fmZwQ+iz LrRFi9Mhy3FO6gDzDApdRKW6bJw2vTcIaTN7qULHa7Z49YOsIsVAZvcoh+Vz0+zJwHnEImfEqjv 1FGZIpjwfRUqexxkECKLYpsDK4W6lqpip+xX4FyNScZQ3sDW0fZSOhjVeQHc7d68di5WPsZhNGM EtnnUeuMj+lH0Qd+TgGhQkortYTraeldtgQ4awPv752CWNmnE6lAyWb/MA7y2Ok+D2U/HRoGcSZ MJYnAEmbpKqPkYZeNjCIrA3gHDEdKHIjk5mnYcDn0Pq8rbeyXRuUd5xgYrRuMzZjvQqktpuWujg oxsF2obzbepxeKpBRKu5vnDFjJMC/8IhX3Ww8A+BNh+4/nsEFfhiNN7fKj5pbQYj4TvHiackoNK HG1xG4= X-Received: by 2002:a17:902:f601:b0:2d9:54:fc69 with SMTP id d9443c01a7336-2dd4bc57033mr37628445ad.7.1789209313465; Sat, 12 Sep 2026 03:35:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 46/82] tcg: Split out gen_extrh_i64_i32 Date: Sat, 12 Sep 2026 00:30:50 -1000 Message-ID: <20260912103126.598030-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209336258158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d1eb006b2e6..ba4011ff241 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -366,6 +366,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRI #undef DEF_CRRRRR =20 +static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 @@ -495,6 +496,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); +} + static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); @@ -2311,8 +2317,7 @@ void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) =20 void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - tcg_gen_op2(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); + gen_extrh_i64_i32(tcgv_i32_temp(ret), tcgv_i64_temp(arg)); } =20 void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209369; cv=none; d=zohomail.com; s=zohoarc; b=jO98XrH73NbPFM3bZssC7vfDGumO7kvjmBdTsL4Y2gZ3AU2hFZG6A1ED607BcVC2jvY9ugdUtlUdAsRmrFLfgG19eSS4ICpt8rZ/12CVQlm86h4MCes/yCQJAv5q2tVsglqF4ivLvap9h+EZjJGql11F3Z7412lcS69kT9OxMw8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209369; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=oCSEwbLRI1uOj4SIVBRn9ZDZn6bIlv90sHc4BIamDgk=; b=li21qtabl0h0MjjGKaajhu9arxoPj2+xN8CPnylni5dhqyjqSAo35/kFlPE7CxOp3WeFt/Lpo5trG5uojvKHj90C/tCREjwMjECwJu6cYEIeJy9rEj7GnyOVni4mFJiZyiJ4bzqVcnQVg6RzCyQEbs5Pff/BpI79xQrJ18GYY6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209369609617.4695699171696; Sat, 12 Sep 2026 03:36:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L51-0000IZ-R6; Sat, 12 Sep 2026 06:35:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4t-0008F8-Cs for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:23 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4p-0008JZ-4e for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:21 -0400 Received: by mail-pz2-x0f.google.com with SMTP id d2e1a72fcca58-86868f7707dso142143b3a.2 for ; Sat, 12 Sep 2026 03:35:15 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209314; x=1789814114; 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:content-type; bh=oCSEwbLRI1uOj4SIVBRn9ZDZn6bIlv90sHc4BIamDgk=; b=glJMchEXagD+O+Ioqyvh0z6TuR/4xYZFyDptZgtau0C+EAVxnIqRz5IqIux1j6IX+k sNS+PRYZTowu8BXGngR8j01MoCAMQjJG8S15kqkqbRVB1GdqiloaiT+yMLIr6boQznj6 UAKkQczibBsrRg/sZsUKJ8uNmdJEsqpTfOi3mK9aw1uoWINgfFqtZf8mCToHshNOaq/+ 54WLP5V0G7j7+VTbVagz+EFEUNvXBp6vq+56fbz4Pnr+o7CeI68GOy+uyRh+OXKToBIf GBrNo9W8YNyR5PJlbDKc7wV6HU+XShZu/7V99oLE3k/G7uGgfpWuzk7XjjHonY8iWl1r lJTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209314; x=1789814114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=oCSEwbLRI1uOj4SIVBRn9ZDZn6bIlv90sHc4BIamDgk=; b=mdYh0GvGE0VVKWLMNcGshoGbYTQBBlbzp/bHsV2t7nrc2K5EDo0yHqjVH1o40tpo+8 +3Py1GUeGqSHlBlGgLmwYcYdrOF3fDTXHz+Bn4OArjAPv5hf+ZVH36llsnqzJ+iUAnfG zwkpUAQMMLj1iI4JHy0vnnObklIF0fvudO425P1kXicUtRSgxp6DHwGJyxP8cKwif3l6 zJLTrt3vK84tPzZCWZyB1fU1RYUoch5Zjdtf/ca0TqeqFECRD/XZ/V6L8kGEaMI8UxXU cp3Qg4q2N+X1lBHYQEN5+ZwIl8Lf1+MI37uUh6+vtni2uFURxpdNqbWOf79S+YpoG2rK LOzg== X-Gm-Message-State: AFuF++mSeF8Fz2rCbLd/kOZJxM5biw3Kl9gf2OXoE0puKPHr98dPiPwG JzLyX5msWt938nVNn+kUXuK4zJCL9JxcZpXyNlIMgeiFCE5p7crHqbmvS0lstjL822cdF4Ep/oH q8RH5cA8= X-Gm-Gg: AYBFou3knpd+TYOXBmS6/U1pO5F1i1ekl0TtPfls8snRQnnM1C6SHlJOZaoyct73ZKy VmdzLTIVAADwsDxx95Qh9+ZEN3hjMfu/HTAucSo1D8AjMpjwmEy/JVZVn93QbIT0003nhKlj9+r VdMdWB40M+sr58HFIUvZ8W9yYHeOuonyKczGXz+8n+1QGQPSi2yAA0jE6PWWiXjvwmHhznaHrp+ RsFMmDWGtKQ+bPfeI7hbIUNpIgKS3QqwNpL/zlSzccmzl9MK4L6flV2Y3lW0LhH8xC8YD6FfwXA mS7aeVFaZDvGS3Gq5QvXhMuVVjnr12plHvRHbrzbh8j9WVhyka36eVhYz7sl3qQXmGOJqU9eQhz RbqzXgHbx1gKZmwlOWmIkeij26CgMfRuOCcwServryUMDZstojvWGPdbq4bxzTn6+Bun4TPYcGD CpfJ2vW7RwzaXmsUbXBzxYTy1PpcoAmFABWBUzFoTBkHARWGJf33aGMgZdRuZEM8znNRDivoM0I NC9x2I= X-Received: by 2002:a05:6a20:1eaf:b0:3da:7154:2ebf with SMTP id adf61e73a8af0-3db0e1146c8mr4050217637.9.1789209314404; Sat, 12 Sep 2026 03:35:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 47/82] tcg: Split out gen_ext_i32_i64 Date: Sat, 12 Sep 2026 00:30:51 -1000 Message-ID: <20260912103126.598030-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209370395158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ba4011ff241..14bec6053db 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -368,6 +368,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); +static void gen_ext_i32_i64(TCGTemp *dst, TCGTemp *src); static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 /* @@ -506,6 +507,11 @@ static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *s= rc) gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); } =20 +static void gen_ext_i32_i64(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_ext_i32_i64, TCG_TYPE_I64, dst, src); +} + static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src); @@ -2327,8 +2333,7 @@ void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) =20 void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - tcg_gen_op2(INDEX_op_ext_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); + gen_ext_i32_i64(tcgv_i64_temp(ret), tcgv_i32_temp(arg)); } =20 void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209361; cv=none; d=zohomail.com; s=zohoarc; b=l614fjtFmQuOD+daEUGm+791UUj6OmsRqe/clgu10MgtjLr9WVCEqXlX8smgmAqkyPDt5wLlXZ/vqxRXp9jt2jhmCEriJMe1tw2cnUICfQSpydAkYUNXQOq1gnbWsj6mnhBhCd4JI3wXcSKahnL/OYNpPwZa7rpomSk3YgUOkY8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209361; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0KddhULANJ4WqNTJtfE7QeDxVaaRiDfRvEfe9LeQwBY=; b=NDi5CuI2P6yTud1961knVQEy3vIw/7n0CX0jr/7xGKsCd3r/anY3J6etxJTpSJxJt9D8a6t1rCzaUNVPfrQHTIVvDZ4NTccWAohArmy8Xyjt0MD6g2IpQYhmIkaQdpezJt9pU3TR/d5T0z5p05hSmujb8an4IpfnyuzdCFGXt2E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209361735734.6553430589728; Sat, 12 Sep 2026 03:36:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L53-0000Rp-VV; Sat, 12 Sep 2026 06:35:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4v-0008OG-So for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:26 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4p-0008Jz-6q for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:23 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d747f0135fso3532375ad.0 for ; Sat, 12 Sep 2026 03:35:16 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209315; x=1789814115; 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:content-type; bh=0KddhULANJ4WqNTJtfE7QeDxVaaRiDfRvEfe9LeQwBY=; b=VmlPRcXCT6dTlJdkBJKd/C+LtsBfogOpUvGrX9+8bXgp6KqujWH5LbFTZPoE/+Kbg2 Lep1KWr8iUXuS/UaL2NCQ13pKkgK3UoByqroJlcQwpQN5bOBhB3FbPWQzydfV+d1VsO3 c4/+X+rNn8kwt0AQfnTWktPSEWzKCyxqbjZvKWb8EEJOwdv9oN5NTX9z5fIrDxh7pJxF UOWY0y5sICPmXeEntvyv4+MG2DqJ8FF0TokaXqY8DQkzlDhkCPA7xY3fHLLBGuBud0CV A3ODeTm9aueG4hQn1W1CCm7CSjXwZYL5eYNk/RCr/bu5VyqlUHL2ytVVV+C5BFtvUYwG x9ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209315; x=1789814115; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=0KddhULANJ4WqNTJtfE7QeDxVaaRiDfRvEfe9LeQwBY=; b=KnAtszaVfakLbyhX4Z76l3mKKnyN6F5w0DsDvumw+j1lDSqf39wgwsdkKgQwojwZ0h pkOaY39ZypytheSvXJ1T+YiCrmVjtVDyVUokiZS5fM3PHLPwb3mkAUYV90K2kVc5lP9f SZG5JV5//URTv5csdX3AQc111h+Z3cXC16AYna+SpSmOXk0PLoSlyw7fkAxzy/Lc1Nbw Q/0rmOl23QtOQR84JpdmS0U/8ccHa+CrQLZ0Dq+ZKG2uWYaqNnBscbQhWf0tv63Bf0d2 MKIb+Ec/edSnKOLb1QEw8bZjE5uX3CwpSJDoU2Y8dFhC6pLvx5mKfY5AV1uf2mRhalxy 9iew== X-Gm-Message-State: AFuF++muOneLy7t9jblCL1bw/GDvJ6T/5we0dTwdOMH8zgbPTYNXtGRL i20XwC9NaeacCobqyTCrE6JUcTNviI/LkPWOyOKmghhZKrzruB8CVWADhjbf0wjm81TeF6XBSqu SX1IRauQ= X-Gm-Gg: AYBFou0taEohx2KfjzsACFUPL5MaX914hcFlI8wgzmOKFOQVgNNqnCNvgZqrrdgMOf5 fsvfvmamuONuq5my7DboLG/Nzqx2+PBmf2bSCp5tlL4VMaVIbLFYeREkNUdCbqC2mlvE/DWsQ9i TqEl6TnREGHLk8MGUaaQIVXs/Q3qck0UCpmurgw17bArm6MiHS7J6A5anaQRizEF5Y3YYODDc4H oE21aZezpxkb7NjTHnQPBbTtC1UiU/6kpuufi6gMe75hlcg+9SmhF6xCJ7wvETx3LKdBs6IaXFx uaUQIXVs+UglXaY8VMglhMZ7/upiYJqXG+pSZGLMitZ8yuyR9osYvdDTUWXVPRbiRt6yzFbszPO eMOYbo3n9tK2aA5cACi1GMzZZtyHuqmwjggeofp2H2LMVC0KsvPBgbccMQ7p5T69b3EmqZs1uDA ywfB8Yi6+BJTPqdy+PDo9/hirVg2lbawyACawE4vtR4GqSmmvyFzhLZjcQCPrTSqyH6RaQvyWe5 g2HuXo= X-Received: by 2002:a17:903:19e8:b0:2d9:599e:df95 with SMTP id d9443c01a7336-2dd4bc27c98mr37119605ad.3.1789209315326; Sat, 12 Sep 2026 03:35:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 48/82] tcg: Generic expansion of tcg_gen_clz_* Date: Sat, 12 Sep 2026 00:30:52 -1000 Message-ID: <20260912103126.598030-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209362470158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 54 ++++++++++++++++------------------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 04fe772c1e0..62b8a579691 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); @@ -203,7 +202,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index cbaaba72ffa..8538f7350aa 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -25,6 +25,7 @@ DEF_RRI(xori) DEF_RRR(add) DEF_RRR(and) DEF_RRR(andc) +DEF_RRR(clz) DEF_RRR(div) DEF_RRR(divu) DEF_RRR(eqv) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 14bec6053db..217dc3409b8 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -451,6 +451,31 @@ static void gen_brcondi(TCGType type, TCGCond cond, TC= GTemp *src1, gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +static void gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_clz, type, 0)) { + gen_op_ttt(INDEX_op_clz, type, dst, src1, src2); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_clz_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_extu_i32_i64(t1, src1); + gen_extu_i32_i64(t2, src2); + gen_addi(TCG_TYPE_I64, t2, t2, 32); + gen_op_ttt(INDEX_op_clz, TCG_TYPE_I64, t1, t1, t2); + gen_extrl_i64_i32(dst, t1); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + gen_subi(TCG_TYPE_I32, dst, dst, 32); + } else { + gen_helper_clz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -848,26 +873,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_clz, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t1, arg1); - tcg_gen_extu_i32_i64(t2, arg2); - tcg_gen_addi_i64(t2, t2, 32); - tcg_gen_clz_i64(t1, t1, t2); - tcg_gen_extrl_i64_i32(ret, t1); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - tcg_gen_subi_i32(ret, ret, 32); - } else { - gen_helper_clz_i32(ret, arg1, arg2); - } -} - void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) { tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); @@ -1789,15 +1794,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_clz, ret, arg1, arg2); - } else { - gen_helper_clz_i64(ret, arg1, arg2); - } -} - void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) { tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209460039998.2413922679322; Sat, 12 Sep 2026 03:37:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L58-0000uw-EM; Sat, 12 Sep 2026 06:35:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4t-0008F9-Cs for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:23 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4p-0008KL-5f for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:22 -0400 Received: by mail-pz2-x10.google.com with SMTP id d2e1a72fcca58-85469e25400so531584b3a.0 for ; Sat, 12 Sep 2026 03:35:17 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209317; x=1789814117; 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:content-type; bh=UbgM0h6t04svFpwEFwCrC8F5A20yvLD6K7H04+4hfg0=; b=J5ycFYLAbVK9FB7Wh8a7IvGSOwmuMK+EBQhRefKJ+zZkInDgUOAqGKu6l0q6udXvp3 lLRlwpSXET3UGDrjUgZktfqBFJ6NJV2SXFgTLQGfOX9p8+QNRhcO+C4hC5ii8Ou0+tCX vwfukxmD370nyZfiKExMDro7IzwIvJ0K12H1vxutI0YgcgWfA50iRxp2EN5CfR8m7I7g sLC9dRsvqZcNDs4GighBZLj8PSk0CyxNM2mGKuIGgkC6UUvSxSwejEvK3C0CbUxG5mRk EEut2U30DMxHzy1NFUfwQuC+wolKKw8wkPgwlphP/4/olxmYFVlKRavOC2ZZTJDjkf8M MFRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209317; x=1789814117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=UbgM0h6t04svFpwEFwCrC8F5A20yvLD6K7H04+4hfg0=; b=I6xv13w+vkXX8VFMsoU3+VEhZu9jXftUUcM80iGb0ywLiMrkbt7mRxZE3+3EQQbGr1 Up1i0GiVqEc1+uScWhpN4ja1I++wnnAiQtMO1ozyBHyHEjwfMM7fWPF2tPMp7wZyGUq/ EsDMxzjDPtgkE5c0NoJQcChucrVoOgR6iSd92oyQFH/sCttAgbDneUxnbzFb4qZ2VeH1 pHsvTTlwh8bpYA0W76ojxkyLUZbeIPiF1u1Yiab8eaqzcWK8BhZ82J2BoXF+N9zIfCpk ASQE4XN7LRy1CxML8twVM5NUvDtWx9qmvVy8A4KuQXcX2k3pGvjt8rQRt8kA0ot93tvZ sHow== X-Gm-Message-State: AFuF++m3wooHVrI/SuG8XvRqqOyXepRahlknK+BgdRqhX8eCU3QSbOK7 eXUBAGQpgDkjm5F8Cx4gfvo/U4LrYZnsw1vulYLkl857tHwbFHPj181s+wnuYRxi9+u5sW1jZ73 /q6Zx4LU= X-Gm-Gg: AYBFou2L7jZNy92o1N8AdhFwif02JJW/IClrYs+8IdgniPlI1bI6ie7OhRz1wEib1xf 3KG1VPAcbrASFONUcWt2BH3wdQJH+NnWgYCB4GK9TLDHz16KmbHZHD4CnXWCS7xqXykmoWTR54Q IMk483/sGAoWw0nOISi3XVMuJj809HfDkBBLY/wV+oN7XsZg6bOg5fdeEU8PlaEXQSh5GPEEWtO yy3HRNzzw3azQvsh1Iqr7SSeUzS74G0013UE2GFCufuBADbq6zUm73px/noLYmWabqlobKoz1gy 2M2uSfqYRtm6ddjjjflbLf0dxCWlBnq6gyAvpM7DDRaDqIuoCcPiUJBNMR+Wx0A1fg9SkdjxGDe cM7ypB2qv7blwJBZep/N5DkV9lK40aRx6JIU4PuD8uaAjIDWEKTiQpkBaWvnlAmuf85JiMR7qUL 5jgg+S8TwGaeqivEW5Gc5sv76hVgk+vOmSNC6YFI1m9Nh63y5XhPVRc/ln4CtHOttNZG3OHCUZp WOjF/0= X-Received: by 2002:a05:6a21:113:b0:3c3:875d:7053 with SMTP id adf61e73a8af0-3daed2bd99dmr17268057637.8.1789209316865; Sat, 12 Sep 2026 03:35:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 49/82] tcg: Use signed integer for tcg_gen_{clz, ctz}i_{i32, i64} Date: Sat, 12 Sep 2026 00:30:53 -1000 Message-ID: <20260912103126.598030-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1789209460734158500 Content-Type: text/plain; charset="utf-8" We use signed integers for all other functions, and the sign of the second source is not meaningful here. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 ++++---- tcg/tcg-op.c | 8 ++++---- target/ppc/translate/fixedpoint-impl.c.inc | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 62b8a579691..1a58971d211 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,8 +143,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); +void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); +void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -203,8 +203,8 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); +void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); +void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 217dc3409b8..beaa9024369 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -873,7 +873,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) +void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); } @@ -918,7 +918,7 @@ void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_temp_free_i32(t); } =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) +void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 32 && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0) @@ -1794,7 +1794,7 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) +void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); } @@ -1828,7 +1828,7 @@ void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_temp_free_i64(t); } =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) +void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { if (arg2 =3D=3D 64 && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/transl= ate/fixedpoint-impl.c.inc index c3d8bbf2670..4e521e44bb5 100644 --- a/target/ppc/translate/fixedpoint-impl.c.inc +++ b/target/ppc/translate/fixedpoint-impl.c.inc @@ -1551,7 +1551,7 @@ static bool trans_CMPB(DisasContext *ctx, arg_CMPB *a) } =20 static bool do_cntzw(DisasContext *ctx, arg_X_sa_rc *a, - void (*helper)(TCGv_i32, TCGv_i32, uint32_t)) + void (*helper)(TCGv_i32, TCGv_i32, int32_t)) { TCGv_i32 t =3D tcg_temp_new_i32(); =20 @@ -1567,7 +1567,7 @@ static bool do_cntzw(DisasContext *ctx, arg_X_sa_rc *= a, =20 #if defined(TARGET_PPC64) static bool do_cntzd(DisasContext *ctx, arg_X_sa_rc *a, - void (*helper)(TCGv_i64, TCGv_i64, uint64_t)) + void (*helper)(TCGv_i64, TCGv_i64, int64_t)) { helper(cpu_gpr[a->ra], cpu_gpr[a->rs], 64); if (unlikely(a->rc)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209379; cv=none; d=zohomail.com; s=zohoarc; b=EX6VQfhMN7BSc3DJviNgayXIOmCsY8D99DqLWFFjRjkeAHJN6JKABmXpttSuXqBXsAt4dVowxqH5iKLlVuIUsheeZyba6j1cmFUg03u14lnl5UDeuDY2m6JDRn7Mh+SSVcBzS5QbVIrHOhVbE39CowYkz5VISAxwEyatkouLloI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209379; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Kw7QVvGf0qytBZY5yO/jheIKQcZigTRvvdCo5Ik5gTc=; b=eRdMp4oeG/nHPEWJkGKJcxPgIZy8mka9ufP6GDU1R3Hns/LQNvTNLz5GLtwHlTY8E3XSkLcXRnFRyr05RuETRQr9+478eL8rjTDYwfgep/THTFzMI44fgYAD51qVcK/nJPmsy5O1F3eOygWzhKvTgPp5seYh5VTtxTyvCbfp8Lo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209379724814.98927914658; Sat, 12 Sep 2026 03:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L58-0000vd-GY; Sat, 12 Sep 2026 06:35:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008U7-0F for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4r-0008KP-1i for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:24 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2db3305f94fso25829235ad.0 for ; Sat, 12 Sep 2026 03:35:18 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209318; x=1789814118; 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:content-type; bh=Kw7QVvGf0qytBZY5yO/jheIKQcZigTRvvdCo5Ik5gTc=; b=wGhnEnTjsWVSKoGT4/sfNLfG5dlcpZKTVhBe+WkhWmTbPKmc13FakUv4RlvjCyp41A iAOnjqhNt+CbTgoP45uKN7xBSslbnK4ufX3HtsK/t2M4XmLfMKHUNBUm+z8kPJMpzt0O wj4C7kry3qfD6/zTQ8Iw2wgR/ewiBZJTf3IgBZOBccYvhj+DAn6xiUS26GuN5svdZE5p Y+4J9BbT3JsDIjCIyUeT9U6KhExrO/O12Gozon+FQ3UKnv77HTXvTHNu5X+o8LtgXoim EriugKdu8cY5vuFD0Rza6i+asCFHf0PPs1iGjCrs/EIS+GA7hu8AXy7MbRzZSUEKyjLz ARew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209318; x=1789814118; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Kw7QVvGf0qytBZY5yO/jheIKQcZigTRvvdCo5Ik5gTc=; b=TQ+96rCgUT1wBh1kqgEpHRVYOcrbaTMfDXY7NZBATttwYb0nNQMl9pJEfPVdAAUVt7 72fPptyNee2uMGoBKvdWGISyrWa8SaOzxfVuICbmF9PnPeUEyeGGGKb9miYD5ohzmce+ sW2aF5lOlK22+/H57T0wJ9MK3Hg+0AOsAoXmCbZPwy4ZLhhcv9z6VYkozFrgUNL4IXiZ EwlBNfAz3gZ65J1nHdCj6lEKZBVrhFF56n36ffqJYRJQcGTPiHOHHJU75RUOhSnD30pb 1U/4SLWh5fXEHuxOJnFYR3SfAO3haCWYhRNBwH5WErFZFkMWKQQYWe5Isx+UEkGIuKRW aEQQ== X-Gm-Message-State: AFuF++kQqv5YG2iugz8GCn6vNNCEGExr5w70U5J1GJHkWKlH2h35zY/i GuqPtoymRwL2FXmjLPYN1G8ZaFSOgk8mLg6Z4cU9tg0JZJSNflWr4gkDfFH4WC31EyDv/jkcjpo ENPnzyzY= X-Gm-Gg: AYBFou0sdTxHOsaZbvep+Az+sUCGjwO07NJbXijvX7LGTfOWIRQhfolzQid4D01Aoij itRKDnyM+Qp6IdfkLemRcitB3XUBHkKlp4MTkHplOkGKs2ddOLKZJGSRmpivbM8OaUqV0O/mrNl TimOUFnhhr7Z394HgJmxgw6XLBVEmoc8WhB5shR/JAYpcUYdRcI+vFhDD9IF14glDW1ABJ28uRM qtxzBpjDEnP/IO1pBt1zq7YORcXxVGsmTna8irtWvvUxTPl0dJzCJM9LKh4/+Vlx2FQK2MMbSas CEvqQIHDHgYd0CG7e/qsODp+CjvF+PDgpjnTwHaz/5PQQDbYKF3rDPUyzCksCHWC6R7xEpILqsx ylZrK/G6nvM2g62ghgO1MAXQn+t+XSqEjlkkh5sREZ+NZnB/J2cd4jYSzXQNzsWJpMS+MLBNTd+ E8eqh4BY2AJ3p/f2j8RhM6mrICmraUTK5tXaz+jgOLOz2ZM8oLBASc5Zr4vp9uC0JpsjgXbJW5A D5NJVQ= X-Received: by 2002:a17:903:b87:b0:2dd:278c:5eb with SMTP id d9443c01a7336-2dd2a336a18mr129376965ad.14.1789209317842; Sat, 12 Sep 2026 03:35:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 50/82] tcg: Generic expansion of tcg_gen_clzi_* Date: Sat, 12 Sep 2026 00:30:54 -1000 Message-ID: <20260912103126.598030-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209380441158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1a58971d211..86922380019 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); @@ -203,7 +202,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 8538f7350aa..30288a01327 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -15,6 +15,7 @@ DEF_RR(neg) DEF_RR(not) DEF_RRI(addi) DEF_RRI(andi) +DEF_RRI(clzi) DEF_RRI(muli) DEF_RRI(ori) DEF_RRI(sari) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index beaa9024369..fd8f93f4bde 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -476,6 +476,11 @@ static void gen_clz(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_clzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -873,11 +878,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { TCGv_i32 z, t; @@ -1794,11 +1794,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { TCGv_i64 z, t; --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209476; cv=none; d=zohomail.com; s=zohoarc; b=GeKnALOy+DV46hkpibhVAdmmgrDoj3qbJgQYTLRi60O23BhDtqgSAgm5Zet4AUcp4SL8zqPbFVcJv3ekuSxYrRxCQGJOR4sMImanQJSrIiy+QJJpy4tk/AhAMQ8zCrzOoIZhDr3ImMqzB95l3M+BfDxls/P7CHXIz46Jga2puXQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209476; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TzZ16HfG+4DjQO6xaS1UPutZGVlxRQbMg1ThbMxXJ5I=; b=BHDTquMJEySdvkAwjCeKMjfuzFVRnbQvVY6dy2oxZvqCQ9Zr+YlSe6Uqp0mKUV0Lv6zK432aqWM5PB2nhWblT8QIvslUjOCWrKxjdhoI3pHf8wTBLgdecwbbNkYaZKjp7kIaXeEVrOzTKtdYp/rk7YduC4EjYR43FZZw98Y0Lng= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209476451513.0906965546504; Sat, 12 Sep 2026 03:37:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5V-0002rp-29; Sat, 12 Sep 2026 06:36:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008TX-07 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4r-0008Kz-2N for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:24 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-cc149372c14so1261843a12.1 for ; Sat, 12 Sep 2026 03:35:19 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209319; x=1789814119; 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:content-type; bh=TzZ16HfG+4DjQO6xaS1UPutZGVlxRQbMg1ThbMxXJ5I=; b=jLaRbIT1UPT37wMwyaTIjgRyOT8n42mDAzBfky6aub4x06HCb0MiDwytwjjAoRxZfy QjSBZK2C0ZmN2EmFMNDirMVvYknv8+Xa8Lp9qlxVxQUWM3GJa2UyquGJTbcQaRh3rRwd tvRx/WkrakVUlmlhT97pM8WT0L7HZ5IYOFj7NdaPN2FHlXfZodEvQ2elOUNPbUCx1gfq nsnzqBqgDQqg00UcO/XBBRyKl/QJ9EjWaxcjbyIop66OszzoagB5TkXye7OHOwNobBDM +z+BYWwuok6xMsDmlyWc57GR9ik1BHxZUgQKNTx/xUa2Ie5gsZsRauWoWQtYnvIlhUAS fAxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209319; x=1789814119; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=TzZ16HfG+4DjQO6xaS1UPutZGVlxRQbMg1ThbMxXJ5I=; b=QziGs+fM53ajjo9dAN9INEY2ttdU5heyzg/sKrcUr6yHSdUz1+tPNvmRRBQl4XHyOr Qi+RBkLjm7kUW9xcXs92i8SDufEZ5/7dbxWukG3M5Q6ojcpTpvs/ZWKEGyiVwvQkgPVA 080jaTdFvHE+/WFh/OnWObJRkcabRo8dA/QIH4LMlp2DIzRRdwuF+i3Bfzb0k2BMOl1s Ri/L5nxVyQ6RhWn2XfX5DzJjdZ/B3FaYTcfS+oK90eSQ883qLl1tfzAeVpCOLzrbxvcN IbBwF+cOZYc+v32Wq/hcJt3Aht+rj+c0QbzGVLhz6UKJIO/UayPLhq624yyypnI5NaQu rhOg== X-Gm-Message-State: AFuF++nhorTDtPl9plAL8dT38F1FtpMeeStSMxhDKleedbdLPaPx9hD5 czaHUEytkHxTvQPPgq5Ue07m8VXHmzCjsgrLhxFuWnpCgeeVI2JA4yqxzZ+4v1Pyha412W8JN/h W1J4bqao= X-Gm-Gg: AYBFou2peuqDG9VmusSDzHaAHJpcLqYBVjJ5rQuNXtitJsq0l/gu+oVg05tTUg5eaZy wfku5FQoRqDUHFSvWL36E5kxGOud7IDcLsTDzRFujmGJPKhDk7NVau0xv5QSd7pXcCXMzTvZclo ose+NXWKa70TPJaUmweifwhg8UoxCOL7sYkbAtjA5K4JHtSmfJ6W74sqb87xwdnqA1VhUQbqN7h NHarS+ucnpwSydJiSCtsGKdkQcbMyAcyIjpUL8TDA/jKv3mG6uspcMLb0ls0Dcp/5+C0qwJt+Uv ud6pzY4h8JS3uQ60PsJ22MEvW7ti7Wt4mO3R3MDntCl+TrZukj2LPRz+AsD0ZcUn7ODOuzP4rlG ml9gwNOjo4KPtPFoV/bdO7jMJcG39hnYGPkl8NMFBl18xaqf24GW8V5iOFfGFX4C4Sy3P0RRv8w TRc9grmLitVBpw0jOQ4qKLC+udU08mlEplTFrMueSQ5uM/6eetSp6vteaMgbU4uIpj+cw/xSWZo eq1HfI= X-Received: by 2002:a17:90b:1d0c:b0:398:d292:e6d5 with SMTP id 98e67ed59e1d1-39d9c35972cmr14770930a91.24.1789209318668; Sat, 12 Sep 2026 03:35:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 51/82] tcg: Generic expansion of tcg_gen_ctpop_* Date: Sat, 12 Sep 2026 00:30:55 -1000 Message-ID: <20260912103126.598030-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209476818158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 42 +++++++++++++++-------------------- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 86922380019..802d7c8352a 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -145,7 +145,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -204,7 +203,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 30288a01327..4497f2b6927 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -10,6 +10,7 @@ DEF_CRRRRR(movcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) +DEF_RR(ctpop) DEF_RR(mov) DEF_RR(neg) DEF_RR(not) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index fd8f93f4bde..2be51a5762a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -481,6 +481,24 @@ static void gen_clzi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_ctpop(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_ctpop, type, 0)) { + gen_op_tt(INDEX_op_ctpop, type, dst, src); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_ctpop_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src)); + } else if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_extu_i32_i64(tmp, src); + gen_op_tt(INDEX_op_ctpop, TCG_TYPE_I64, tmp, src); + gen_extrl_i64_i32(dst, tmp); + tcg_temp_free_internal(tmp); + } else { + gen_helper_ctpop_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -948,21 +966,6 @@ void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_ctpop_i32(TCGv_i32 ret, TCGv_i32 arg1) -{ - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_ctpop, ret, arg1); - } else if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t, arg1); - tcg_gen_ctpop_i64(t, t); - tcg_gen_extrl_i64_i32(ret, t); - tcg_temp_free_i64(t); - } else { - gen_helper_ctpop_i32(ret, arg1); - } -} - void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { @@ -1853,15 +1856,6 @@ void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctpop_i64(TCGv_i64 ret, TCGv_i64 arg1) -{ - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_ctpop, ret, arg1); - } else { - gen_helper_ctpop_i64(ret, arg1); - } -} - void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209453; cv=none; d=zohomail.com; s=zohoarc; b=k6aNm6h5IBu3TVwPqxOgAlqcv+CE1omgahwTOSBD6uOG6Ud9RjJyerh19CqrBXpiRtbAu6jOg0odSHE0ZyyR38iOcRq97DBrVQvQHFw7P77FcnIzto9zafj/KBnmLc8fZmvKf4TAUBOJvwVS8f59y2UGglBCB6bLfLrsuhMKknE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209453; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=slUyzfPdrsEA3V/t4oNAiOrzqviJB4jkK8/iIslDjbc=; b=Cc7Ltd+smKQ0VoCN1SN2nHTA/HbyIchGeBtTuZnExEOJ5nflUU15jJx6vwLdFKrqUM5FQDe/Z8jNzSLn1YBU7aCmBRm1n7fOWnRfI2SADksfXzysXqMvuq4jtsjOkqbr6sh1VlgWBjeRLsKuM7XHlVIPNR7Q7QBSHhOgUqIH/ls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209453717941.8408438451053; Sat, 12 Sep 2026 03:37:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5J-0002Ev-ME; Sat, 12 Sep 2026 06:35:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008Tc-07 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4r-0008LR-3h for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:24 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-cc4902427c1so1483145a12.1 for ; Sat, 12 Sep 2026 03:35:20 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209320; x=1789814120; 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:content-type; bh=slUyzfPdrsEA3V/t4oNAiOrzqviJB4jkK8/iIslDjbc=; b=Db6Bi2zM1KwNbFnGufalMOmdLbYrD1V6iRaUvMIhDvbits9lUMuizRlbYWL+zLfUhq xmHdOjhHyjHQGBOpvCsEStvvdwzcvjGHZj7LNYNalVXilbXTu3V3BRsIgAO/G74QxAse 8AY3XD9hwoGRmmMT0S0vnxcpTJdLwHMUil+cJW/dqtjqaDFaBunJ9swaRu466ZPhvbdo 5BBu0jvbR3QucZfgM2c7td6796UUidG9/vQ2/A02pnY2A8ASVVfrkTsWH8Affq1dwPpJ 1zCnNq3+OEWXsAJcxIwPwxThTnxsJWKoDPEi1ad4ykgWFa28Vi4N1IPdiWJWyT2s+cn6 FvwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209320; x=1789814120; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=slUyzfPdrsEA3V/t4oNAiOrzqviJB4jkK8/iIslDjbc=; b=gcMRLWAYdYWuN58NNPyW2PQQJZ/YjRGL3lt1o2EDisA4L79ztbE1wzneXqjSLz0nAE Pp+xZtXPQNsfsHyIVmwiYfUTKKyYyMFvFDyLlPILEk7GUwnVhCNg33FBUn+8Nr0kgLD0 I7sjJKujcLgk6Fn+1Z+iiGT7xt+E9ds7rm4NVYEVGGnMvhZsCP8Tj9YIlWhuVe/mIusv QKMLmCIzoFfs/lbmxSauPWBr7jhYUMTPdwhZO3GyMlpXDriS/DXwvvCLYt+ObOU13SVS +q349uDujc8Uqn9HZG/tpHEznhNPMYsnQDlYmuIunl0vUPWvs0ir3w/kXMtMK9GuqTD6 CVzQ== X-Gm-Message-State: AFuF++nLz0R2aKlat5vptDzdmhj4AWeISjsn6a7Zf7fkBicZvzj0NSZ3 ogT4i6b8v0cpLAoHS+a/czvTSmc9uxjTYx2VgnCJ1ouQ9o1sl3Qe+xxA1nvHPT1MuCx7OBfMBoQ 2V3u0pA0= X-Gm-Gg: AYBFou2r68csuwOrOsPIjb4WE35zBGhBuLF59DuRZAWWSmAhH8cWK1hq+yMNpKtV463 4dQOYHit+7U7/DpzAzezvxKoTqcp1clzyqG6VrHUj/kC97sNZkfFgZ+nL+jsXSmBLdr/6FPSyYn iQ/ZuykyBmdT/ONrKs7Jr5K0iur5bHVW1I44RshAMPovJLBAQCfkW9mtK4MOr0MdMV/9ldSiYln 0oZOclqKU7e7Llyh+WQ/3yZVZZrdzZGeS8p5VhiRgyKqLZY+sCGjsGzwraS0abZwAYuHuNG3nbp u4WMjgQ49LqY9ys3J6A8RDtD87ZH5uBAHuuIR4aRsJM5Hni4FucQS224BATt11XgNnD7aSmSVK3 IbKIecNP+PcaPbr8qPo1Uz2eql7skjISRsJcZYLHmA1ig+WmFUEEwx5h7Ibfvx75SubeWNrJAGI N9vcKUGF5vuzkLzafvMT2gGd4N59iV+fSlo6PrZeAMleiQXz2vaxQYpFjAvFawBIhK6KFvIp+C3 QuItya2hoo+kLYpog== X-Received: by 2002:a05:6a21:4d92:b0:3db:887:7868 with SMTP id adf61e73a8af0-3db08878495mr3736576637.15.1789209319516; Sat, 12 Sep 2026 03:35:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 52/82] tcg: Generic expansion of tcg_gen_ctz_* Date: Sat, 12 Sep 2026 00:30:56 -1000 Message-ID: <20260912103126.598030-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209454703158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 117 ++++++++++++++-------------------- 3 files changed, 49 insertions(+), 71 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 802d7c8352a..2a860d7a6c2 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -200,7 +199,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 4497f2b6927..d0b1141dc10 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -28,6 +28,7 @@ DEF_RRR(add) DEF_RRR(and) DEF_RRR(andc) DEF_RRR(clz) +DEF_RRR(ctz) DEF_RRR(div) DEF_RRR(divu) DEF_RRR(eqv) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2be51a5762a..a33def70cad 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -499,6 +499,54 @@ static void gen_ctpop(TCGType type, TCGTemp *dst, TCGT= emp *src) } } =20 +static void gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + TCGTemp *t1, *t2; + + if (tcg_op_supported(INDEX_op_ctz, type, 0)) { + gen_op_ttt(INDEX_op_ctz, type, dst, src1, src2); + return; + } + if (tcg_op_supported(INDEX_op_ctpop, type, 0)) { + t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_addi(type, t1, src1, -1); + gen_andc(type, t1, t1, src1); + gen_ctpop(type, t1, t1); + } else if (tcg_op_supported(INDEX_op_clz, type, 0)) { + int width =3D tcg_type_size(type) * 8; + + t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, t1, src1); + gen_and(type, t1, t1, src1); + gen_clzi(type, t1, t1, width); + gen_xori(type, t1, t1, width - 1); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_ctz_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + return; + } else if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { + t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + gen_extu_i32_i64(t1, src1); + gen_extu_i32_i64(t2, src2); + gen_ctz(TCG_TYPE_I64, t1, t1, t2); + gen_extrl_i64_i32(dst, t1); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + return; + } else { + gen_helper_ctz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + return; + } + + t2 =3D tcg_constant_internal(type, 0); + gen_movcond(type, TCG_COND_EQ, dst, src1, t2, src2, t1); + tcg_temp_free_internal(t1); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -896,46 +944,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - TCGv_i32 z, t; - - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_ctz, ret, arg1, arg2); - return; - } - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0)) { - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t1, arg1); - tcg_gen_extu_i32_i64(t2, arg2); - tcg_gen_ctz_i64(t1, t1, t2); - tcg_gen_extrl_i64_i32(ret, t1); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - return; - } - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_REG, 0)) { - t =3D tcg_temp_ebb_new_i32(); - tcg_gen_subi_i32(t, arg1, 1); - tcg_gen_andc_i32(t, t, arg1); - tcg_gen_ctpop_i32(t, t); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { - t =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t, arg1); - tcg_gen_and_i32(t, t, arg1); - tcg_gen_clzi_i32(t, t, 32); - tcg_gen_xori_i32(t, t, 31); - } else { - gen_helper_ctz_i32(ret, arg1, arg2); - return; - } - - z =3D tcg_constant_i32(0); - tcg_gen_movcond_i32(TCG_COND_EQ, ret, arg1, z, arg2, t); - tcg_temp_free_i32(t); -} - void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 32 @@ -1797,35 +1805,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - TCGv_i64 z, t; - - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_ctz, ret, arg1, arg2); - return; - } - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - t =3D tcg_temp_ebb_new_i64(); - tcg_gen_subi_i64(t, arg1, 1); - tcg_gen_andc_i64(t, t, arg1); - tcg_gen_ctpop_i64(t, t); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - t =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t, arg1); - tcg_gen_and_i64(t, t, arg1); - tcg_gen_clzi_i64(t, t, 64); - tcg_gen_xori_i64(t, t, 63); - } else { - gen_helper_ctz_i64(ret, arg1, arg2); - return; - } - - z =3D tcg_constant_i64(0); - tcg_gen_movcond_i64(TCG_COND_EQ, ret, arg1, z, arg2, t); - tcg_temp_free_i64(t); -} - void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { if (arg2 =3D=3D 64 --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209357; cv=none; d=zohomail.com; s=zohoarc; b=RP6T4mDdkX3j5Sj13MmDBUnBLaNWf0quDN6Xhlqb8o6pMAOJcDKzER+Qrhcr6rs2kkdPxYCmRl6sGTlqOFxhaxAm3I5gJViHd9Ecn4Hvb4jFdSJ+dAs9oKytbwjVmcFHhMdPzEKMsCEGVtYdP6P+VwPBwKCUDEstj/18JTpqApc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209357; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=35iG8eXomRV+hwa6hQxNxo6DUanLvlq2FcMxOZf02mY=; b=KjPmtId1oPXLKyDfkK7YGX1exh2aUlyzqWLW4gkLPcSFmXpMe//xdm/Dnqj1HUFx7tzi3p1Qfp/gL2M229B3aHJxS16lP3ItPU++J6M9QQlaQUWgSromOt7KkpWdZI99ZWGkSIu0A2xcWi2LxgwxMtXa1JDhH8aRzVcXFAJlgjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209357821763.5788121772449; Sat, 12 Sep 2026 03:35:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5B-00014e-7g; Sat, 12 Sep 2026 06:35:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008Tv-0H for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4s-0008Lh-UH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:25 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d747f01363so2900035ad.2 for ; Sat, 12 Sep 2026 03:35:21 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209320; x=1789814120; 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:content-type; bh=35iG8eXomRV+hwa6hQxNxo6DUanLvlq2FcMxOZf02mY=; b=ZXr3w11NsKgSqonpIum6l2hR21dDHWVXQIq9qHqozNbV+A/Res5OOh7sQjCWHvCUOw IzJKgaiEnSpn1vYkwBTBbeGwGwHDExs6HZ/mPs6NHTt2jABJZCG23KUbP+uuyLB8qpCt QTYhHEqN/rD03MrjvJGsmf2S89JCRWEYGgcUrvEylXP061rLBNnG1fvyl9gT69lGOdHD g2lfXO2w/2StzE7c1SIneKOdkmibeAcJD3A949DWvO01ML8rMWEXMlb3yfMyO7oNzm8M 4i/dUOjU65zN3r53TQeq9TcQ3hc5nOWoCSh1FuyODvsV41h9FdDDnenaYRVlWe+wTMQs g1dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209320; x=1789814120; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=35iG8eXomRV+hwa6hQxNxo6DUanLvlq2FcMxOZf02mY=; b=Np9lai1p6gt7IrV27VV3Tq515AaGW8wmKdmK/D0F8/3Yc+Rbb/nfwb1RM03rFRY+fP bmHAz7naLrjirlE3LswYQy+EghD7v+nlsP3YvWDa2S1/Q37nNrItnbn+5VWUO2ej6jd7 /OsbMOKJupPdmLV+3LApuSgkrSFJt6ElHXnF2ZNo3zrR6OBJQC+r8CpfWLj0AQB+x+4y Nfm7MeA6uPT3sFBni56CbAfSGKJwrOLR/57DQRDhOJShMxX8/Keznu5mtxbsxmfWC47m xnXX7NiEsCjmo5yka33cjxnisFszQHscGdGhEmz1+HasGQrFD25bCGuMbbqB7CTvcUsE hRsA== X-Gm-Message-State: AFuF++lu1dhlgMFeoU3pVDta/Lnzbl0QyqpirKmd0cXn6lMywv4opBlx lRg/zDjjnVUwALr84QCeTC4rgjMnUSI6piByuyzQiJKnlqzdb0cA1QT4ELqYcAad0I1y/66mhk5 BNENGqGQ= X-Gm-Gg: AYBFou2pTAIT+hZ5gJRQnZzxmBhZ0gKPCD7QC1OO9/rUre/lI1fU2T74Bcr4wmOr4iE cTBbddFFENkXHyjehtpIyUtydjl8Ab9JDrdnd7p1IWnWj+12EfT4XqEhH5U60ufyC8k8JIuqKKr Ai2f5XNSpfgAGNRiYvgqUMJGpEhz64P05VfQGeSQdyNP7LxgjBqGtHUeNein31sQAn0SFHufJ9y 5kjtJXNfTiKn62kPik49NKPGOj8SyNwWNsnMbG/Kfg7BAj3HsnlW7xjR9VCOsl5qMAPkBvuu/mG ObAOFP+SZPYlYlIb84itzEsAxMi46RpVEHHGNoJFn8EtJfkw220vKNcLiN4VAGEtUl9v271j1bU Furnoj4yTP/LcxleRk+lAykiXoeko+Sh9vRlXvZTJx5b/NXXEGh+Q3UlzpXJsNXb502j09fhDxM h5CNcorNsqT23UwOsW3rAn7Wysn2+3LqVqYDvT7Hqc7pWQ5gdhhCjoTUXKy4zeOPG0jJb6HGlNT 9qXfYl3UgmBDMSSJA== X-Received: by 2002:a17:90b:4c0d:b0:38e:b400:a860 with SMTP id 98e67ed59e1d1-39dbc6a3e56mr4259188a91.13.1789209320456; Sat, 12 Sep 2026 03:35:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 53/82] tcg: Generic expansion of tcg_gen_ctzi_* Date: Sat, 12 Sep 2026 00:30:57 -1000 Message-ID: <20260912103126.598030-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209358338158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 46 +++++++++-------------------------- 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2a860d7a6c2..b5271751994 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -199,7 +198,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index d0b1141dc10..209bb57b968 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -17,6 +17,7 @@ DEF_RR(not) DEF_RRI(addi) DEF_RRI(andi) DEF_RRI(clzi) +DEF_RRI(ctzi) DEF_RRI(muli) DEF_RRI(ori) DEF_RRI(sari) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a33def70cad..3a61cfbc3bd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -502,6 +502,7 @@ static void gen_ctpop(TCGType type, TCGTemp *dst, TCGTe= mp *src) static void gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { TCGTemp *t1, *t2; + int width =3D tcg_type_size(type) * 8; =20 if (tcg_op_supported(INDEX_op_ctz, type, 0)) { gen_op_ttt(INDEX_op_ctz, type, dst, src1, src2); @@ -511,10 +512,14 @@ static void gen_ctz(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) t1 =3D tcg_temp_new_internal(type, TEMP_EBB); gen_addi(type, t1, src1, -1); gen_andc(type, t1, t1, src1); + if (src2->kind =3D=3D TEMP_CONST && src2->val =3D=3D width) { + /* No fixup required. */ + gen_ctpop(type, dst, t1); + tcg_temp_free_internal(t1); + return; + } gen_ctpop(type, t1, t1); } else if (tcg_op_supported(INDEX_op_clz, type, 0)) { - int width =3D tcg_type_size(type) * 8; - t1 =3D tcg_temp_new_internal(type, TEMP_EBB); gen_neg(type, t1, src1); gen_and(type, t1, t1, src1); @@ -547,6 +552,11 @@ static void gen_ctz(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) tcg_temp_free_internal(t1); } =20 +static void gen_ctzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -944,22 +954,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - if (arg2 =3D=3D 32 - && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0) - && tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_REG, 0)) { - /* This equivalence has the advantage of not requiring a fixup. */ - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_subi_i32(t, arg1, 1); - tcg_gen_andc_i32(t, t, arg1); - tcg_gen_ctpop_i32(ret, t); - tcg_temp_free_i32(t); - } else { - tcg_gen_ctz_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { @@ -1805,22 +1799,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - if (arg2 =3D=3D 64 - && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) - && tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - /* This equivalence has the advantage of not requiring a fixup. */ - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_subi_i64(t, arg1, 1); - tcg_gen_andc_i64(t, t, arg1); - tcg_gen_ctpop_i64(ret, t); - tcg_temp_free_i64(t); - } else { - tcg_gen_ctz_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209374; cv=none; d=zohomail.com; s=zohoarc; b=RTIRkUhZVhslcXAue/4TLJkkpZRMvdGr9+BpXHOMj29UFPqp24HbY5rOOzOos1/csetasOcj3gza6OOOW+rUu8VKYk7bkLxqhP2VGRi8HZQQVFC2FvaeSi43mHGo3MAFpNLxpw7XNJ+xVBms2YT0uOnvLLL61kolzIKfuS8UHaM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209374; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=AKIjnJh4OS0o2r8BfuNc3nL07d0J+MaEN1OKj1bS2iw=; b=b46sstKpv8POSjF9eLcDydO7vhXbLs0ivF7SBOgv5+N9EfUhmqZ/YBpgwbvAayPCmtJVuLSSSKSytUQ8cWsV9hYLn2I16iAckcU4eWAYqRu/or18g82fVf7Imozr8I+T193NSKW8f3VH0LVAbqGW1rqY8qaYvOeNsa7TPBu/5SI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209374968741.9607777988349; Sat, 12 Sep 2026 03:36:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5L-0002OP-94; Sat, 12 Sep 2026 06:35:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008UC-0Z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4t-0008M8-0A for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:26 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2dcff8f44f2so26042835ad.1 for ; Sat, 12 Sep 2026 03:35:22 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209321; x=1789814121; 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:content-type; bh=AKIjnJh4OS0o2r8BfuNc3nL07d0J+MaEN1OKj1bS2iw=; b=Pl6dBoFf/b4UbZb9DTQuG7B073tYc6i9Uz+OV2aWhc7EfWUfs265B607EiGPuXx9i4 QYyg76kgzyqZpNH6Gh/ZZ8WzfdlECBQnv05GkjbBZFYmcYIpye0L/8pyTAWAqehIdvDm TmStNpB1qnPMFPGoRPaqGreoaXurNW//U+ikPb+5QDBWiXKs53h2Kwwwf9C0KOKKjqPK 35bAxco6ITwBZnj3fvnWLXXiHHBF4xjtRxr/ETsLAYonzYpiEwHa4vdzJDe8rcy4Fyri kBQYFoYzuFTBWLXh7wWjq4P8KMYOLKXDirxdiWvpvtL7rKYAGdUtlETvvV9c953fKPt4 0CcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209321; x=1789814121; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=AKIjnJh4OS0o2r8BfuNc3nL07d0J+MaEN1OKj1bS2iw=; b=kawQs1mfByVUpnYKzqp18So7b58ioiGtcNl0gU12SjgmTAoEW1V8H+paXpBvH8ueG+ U74JDB5mzIx/c1stDbxOKMP2+8vVkEM9xlDFUlkhUnqCT1Z+klUGUjwwdsuNohoOcvDM l3JHvjbxH145S+vPq37ecMtdFr2AEZLRYCbskt9mVCPGJnUYuemEheoJyHtz/fsbpZ/W iZiRvdI7aW6FEsiejm7bvbJEfJ5R+CE3BJAR69me3UP02ujK4X6GZrk37cI0FFRnrdAF cp9S0jvTGe0d9V9ICHHz/lbOGsDjiUnu7qkr+qFunnbxsoNiPNySuHEO+tJ0dr32oqcN 7qog== X-Gm-Message-State: AFuF++nWPrhdp8WFZykxcoP6MzaLMPwDh1gAr2tkTRD/WcRo2gxrlk78 zBH6I78p/WIFSJOEPJKVhv3zL0aNTL/1Y0iQgn6UWX1Myn8Sl/+wDsRby1eVLoq4Q76udbfjB3u 6QVQPxy0= X-Gm-Gg: AYBFou1OlEB4LWSPsrtQreu+Z/kmkKCchku+JkfdFakIoE/brzkUAdM/BOzu/cm8acS GOYf6dlCBMnF0XeDrN6PDsX/jAAnqYtfL0J6o+WAqp27HWlaEe3GTQrZyEFvxXJjpIIKSGFtR0T T+8HfyhJxdvf3bcLjfRCVdJokJlA6MEeoDASjP7jR3m19hKHBcr7O3sb5NUWrVDgFYJlM6TM1pN 3s1Q2Kcie2MMdfdLsDWEpwyMN/N1UdGkA0Ots88BpOTE8P5GbrVNKowl+nQEUDh+fx1tNActA22 k5Le6uCwXi3rgrcCzFDE69OBLy2SG+z25b3jOZm+lOs2kZ4G3NkrLxVHD/qrXDxCHvwzMPkKMlW FbJXVPgs4UznhQPKFTnUxz/7DpNCKPfJ9Q3rh5k0tdpks3j/5cxHteF/J7PuszWiiJg8iRUCCbi /LHcu2p55UX+k30GSkgEago3eCTa0F43QIaJUlU3i0Kb0ysn4d5N0tjmDlNfGSR6eAhTX9DJSuJ XOeZoZ02jFjsWcPGQ== X-Received: by 2002:a17:903:2f05:b0:2ca:d91d:d3a7 with SMTP id d9443c01a7336-2dd2a3368f2mr147266245ad.10.1789209321344; Sat, 12 Sep 2026 03:35:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 54/82] tcg: Generic expansion of tcg_gen_clrsb_* Date: Sat, 12 Sep 2026 00:30:58 -1000 Message-ID: <20260912103126.598030-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209376410158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 46 ++++++++++++++--------------------- 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b5271751994..cdaa805c47b 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -198,7 +197,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 209bb57b968..0f370e4e04b 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -10,6 +10,7 @@ DEF_CRRRRR(movcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) +DEF_RR(clrsb) DEF_RR(ctpop) DEF_RR(mov) DEF_RR(neg) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3a61cfbc3bd..549d257de8b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -451,6 +451,24 @@ static void gen_brcondi(TCGType type, TCGCond cond, TC= GTemp *src1, gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +static void gen_clrsb(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, t, src, width - 1); + gen_xor(type, t, t, src); + gen_clzi(type, t, t, width); + gen_addi(type, dst, t, -1); + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + gen_helper_clrsb_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } else { + gen_helper_clrsb_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src)); + } +} + static void gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_clz, type, 0)) { @@ -954,20 +972,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t, arg, 31); - tcg_gen_xor_i32(t, t, arg); - tcg_gen_clzi_i32(t, t, 32); - tcg_gen_subi_i32(ret, t, 1); - tcg_temp_free_i32(t); - } else { - gen_helper_clrsb_i32(ret, arg); - } -} - void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { @@ -1799,20 +1803,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t, arg, 63); - tcg_gen_xor_i64(t, t, arg); - tcg_gen_clzi_i64(t, t, 64); - tcg_gen_subi_i64(ret, t, 1); - tcg_temp_free_i64(t); - } else { - gen_helper_clrsb_i64(ret, arg); - } -} - void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209465; cv=none; d=zohomail.com; s=zohoarc; b=EKJYqjxVNPRZ1V7FHqjoePK/+kzcxJJmWITiHg5BRa5h42h9HzwSyVWCY2S/DV4jDZFRKHt/S5od1Kq8KXeTSIdhy9JZ+6s0Wcrle60EVFqiNGom6Y4otcomeq//YsqczKsRPxdmZmokFuWIjrVTIGK2eAnFvdHWqBPO21i4x3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209465; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=YcncWtTVp6UfcNywzRunqJeXDpsUJB5J4Wh++F49y8c=; b=gQPP1nzY7qtOxjKJrI1+s6vJ4xznxz+VI7fWoKmrq/DKnb6JsMvMIXWK9pP1DmJ20E81EYd5EPG+Af/m53/KdWm3fHWzCwDKg/PRa5nF+d0Me13cAO//t5YYaJtXLlqpIBPsGr3AWJUowvbNSEtUcy1fR361xi6bTrstEuEizc4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209465159565.5611872098029; Sat, 12 Sep 2026 03:37:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5X-00031k-6t; Sat, 12 Sep 2026 06:36:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4x-0008UB-0n for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:27 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4u-0008MT-2N for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:26 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d8fb334e72so6859955ad.1 for ; Sat, 12 Sep 2026 03:35:23 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209322; x=1789814122; 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:content-type; bh=YcncWtTVp6UfcNywzRunqJeXDpsUJB5J4Wh++F49y8c=; b=G1NKV0aIr2Isq+RcarndF/wtm25KixlwJA092/x85IocCC37qRbR1FUodCLM+HDtJ+ gRNkI9ddJWhAjGBethQUs0fj2fVzIB2pk+2VRfAMs2CnOQzEGEQZ7y4pjUoo4LZdcye2 rBMETbqDDZ3TE69z1NW/BdJd6O4uCZSbj+GIS6Z9MDI9jAHzGu3rBfKzDhOKwiRSDWkv oi12ik3QxM+wQ6tCLb57GC50AhmTOl87ZLvCCSM4WlyaTvpYQZwguqXkANdickWv4FNG pmdrY77bMxfccDblJvwFr1lyzFh7XCtCulrlmsAzkkhgX9I7+FtuNnJQH2b8guEpFz30 g0mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209322; x=1789814122; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=YcncWtTVp6UfcNywzRunqJeXDpsUJB5J4Wh++F49y8c=; b=EdPTotXyQ0dfPE/YU8TeRmtI+cQSnOtf4rJZMb6jvEuzpAWHMzjMv6aRqqObxS+uOf j2zBF8cXiabHNIhLyvf5wO1sY/AZuWi0IRZg+q/uqMAKGCjBgKtMX4+eJyGB54NXpfQv 7OSUQ3yfXxYDkshgOwD6Tfb4CwhZFjC4Cux34bubnnY3t5dxxL0vpP0lK/q5PT+GH+4+ zLlkymAp/Z+QvoZszo7heT1hYTQgHNe2JcFwAh6/Q7rVEc4RzG9Dsqc832OU5S+Y1FLU 9A/bL5meWyt9LDHQFm14cTeUKNcn0fDpkgyrCUAXqKYXc6xGe6Q2p/usO5wyPHvpVVEk +2rA== X-Gm-Message-State: AFuF++mSubKiNbQHt0n++YmRSNjdWjYCp3/At0oUnLsrgvN1wm8R6MJ2 tKG1llhlKP5mjx8PB7KZs/6dPSAZ0xajy/W8p/LLruHhEOEY0OJavw9wKwCWQZ+LTvXr/0Eo1zw Ms6LE6dc= X-Gm-Gg: AYBFou2IPzBh8nAZtrJuSZEmnj4GthMlP3vm06zTfL9AZ2i/7CKE2/psWjyfEICN6yf NM3I3rAbgUpSUBJbS/aN6IhFMXbPJeFTDndo18JnJ73AdrqvTEGDG+5zET/wOKTWEe9FllTvxnL f3C8nb+yCpUpiNmRQHs7cyylCOMcZII7DYnGO6KGrfAYeeYFoI02ki4J3+vH/GmQLVz3tGOluKi BB7aycg2fRVKO7OkFAbCud5bgZrdoTChVMZg7uOp/R7pwwfuQHTmyt+Wg1mF4tBYRQkVYcq8e3q 18fjR2K9KYS9anCwZyXE9pzY8L87Vz220OBKUbAf/uTT8Puk/gh+w++GyJUg8z5hY7ezpcujSaW EJyDwTbk+bNdihjSr1NzspuxAK6gdxWI4BPXe6B8++5G/gx3nr+/QbDAtEFi+0/GvPs3M36HHd3 41liQ4x/zn+9SQR3xQR/4gSsj7As33atn0iCeAlDkZTP5vgAelLi018l6FKX7D8pDsC6uFScgyd tnQznw= X-Received: by 2002:a17:902:db0f:b0:2d9:520c:38e7 with SMTP id d9443c01a7336-2dd2a1ce7edmr150109595ad.1.1789209322307; Sat, 12 Sep 2026 03:35:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 55/82] tcg: Generic expansion of tcg_gen_rotl_* Date: Sat, 12 Sep 2026 00:30:59 -1000 Message-ID: <20260912103126.598030-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209466906158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 63 ++++++++++++----------------------- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index cdaa805c47b..94f880a81e7 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -197,7 +196,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 0f370e4e04b..61d00fa493d 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -41,6 +41,7 @@ DEF_RRR(or) DEF_RRR(orc) DEF_RRR(rem) DEF_RRR(remu) +DEF_RRR(rotl) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 549d257de8b..677e93736f5 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -806,6 +806,27 @@ static void gen_remu(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, tmp, src2); + gen_op_ttt(INDEX_op_rotr, type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } else { + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_shl(type, t0, src1, src2); + gen_neg(type, t1, src2); + gen_shr(type, t1, src1, t1); + gen_or(type, dst, t0, t1); + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -972,27 +993,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t0, arg2); - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_shl_i32(t0, arg1, arg2); - tcg_gen_neg_i32(t1, arg2); - tcg_gen_shr_i32(t1, arg1, t1); - tcg_gen_or_i32(ret, t0, t1); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1803,27 +1803,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t0, arg2); - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_shl_i64(t0, arg1, arg2); - tcg_gen_neg_i64(t1, arg2); - tcg_gen_shr_i64(t1, arg1, t1); - tcg_gen_or_i64(ret, t0, t1); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209446; cv=none; d=zohomail.com; s=zohoarc; b=PyOH10Vzc512+ntbvZCxUSPAzWEu/VtV3HHnPVUvva06C+R5WMFx/DF6hKWo+X5RBy2jROrBaJIQWMfWJN7+eQIZ9Ar+oYnnPjdl1jn4cp0ZDUUgy1feP/mJr0hr67Wd1yNKQ9++OA+MfEDdyZiaBAtfy6tav/jMTaxbEmkmv7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209446; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0oS1/eFGVqpoGzeUmREjnEqA5r/sM9lJ0iZCchPgAtM=; b=BI/9mNL+xbTn4c1+xLXUURpkn9OEaRBTbVvpxVFfK4Qu9VNLqRpsmbGMqpyAjObeqDYOv5VSmSTlvyHaFl/WtWvUnAdF47sD53TF0Jxz7kMIXp/beiB5sec4wqcwC2t9K2lJfNUI90+GCPs5JilwiS0QPIfqcNcuVQEoUmrhR38= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209446597903.260093604919; Sat, 12 Sep 2026 03:37:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5c-0003S7-OR; Sat, 12 Sep 2026 06:36:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L4y-0000CT-T1 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:30 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4u-0008NJ-Pc for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:28 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50db3so186969a12.1 for ; Sat, 12 Sep 2026 03:35:24 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209323; x=1789814123; 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:content-type; bh=0oS1/eFGVqpoGzeUmREjnEqA5r/sM9lJ0iZCchPgAtM=; b=jMGYKsztEAYTT8Ym06/E8LAzL2Yc1xf//l1fc24nbtbOfCZW2pIqgVLWSleoU/XGJY CzAiCBMO3Ji5Xbg04IRp6vpVcRAruIOMQQOcs/gGWVLi5NnNijuXIEEec7d55MQx8lMT aRZA/cfeZILpJ/4Zx+fNScSOt70mXCZnqT3OMM5NmjJaZVKz77SglX1nKb/uwhs+aP9e HgiuTd0ueIj012mSEclnZCFioYm322ZtK6mOM1x+HfsLxGdh0g68R5GyAg0z7jq2UTqe giHVMqR4v/rPfxp8o2m2hr0onsIBiDrr0QJrNN6wRR/LfJFeOF2bunciMq853P/Wh3+g +HiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209323; x=1789814123; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=0oS1/eFGVqpoGzeUmREjnEqA5r/sM9lJ0iZCchPgAtM=; b=L5d7GyEO3Ykh12ce7RqU6JLO99xVG8GZpYy9KYeTjQqXn70EpM/XEby7FzKJoH3Zxk q+UADtymm0fI84Eq96UU7OGGVRIBk5M1cEVQ1ZXYcQXLIaBQrSc5bW7I6RHNYOEgAKoS c5a1sFTSLrmeGxH2NjI9QuU82OTVHd/JLwU3PMOgVGsHj7drO8uzOLEy5WNnWiWG1/4w slmGc7Niyqgoc0JkWkrfTJrMW6/SgALN+ngGF/ng3ig3an2G9xdfcBqYAPES7fSH4vfz 8RFL5LNyf3ppCApI6jQ6VWCOrmrIeCavDXfj2RgqxdF1Ttv48esEGZoHBnNzjiKcpdO+ tLfA== X-Gm-Message-State: AFuF++l+/APG4gT1TVngot/e8wdQpGfAOydGYuhUAvgXSkgqqQkcL7Vq 1fFr9CRJXDYBPq3ea36rgRG49cqDTsuynUOxodLGLWF/NzC0HJEOotL2Qyqhvbow8GZ7KjcLOFm PxNpD+3g= X-Gm-Gg: AYBFou1NdSRVyjYVIDa9ChI8IvhmYKIaQxu4zOMB66U32spVcPNw3d1bo+/gZkj5ckv 94ssLZE5bor8VGDSWfkzYzloUY1xS3sBTPltiJXpLtKpzKHt2BWvwi80r07eeN2f0vINLUOVLu1 VHfWu3RFXPSJWcwWkr8gfnPXS4TzpqIeaPk7RDc1M4UQlM1qlOBgHxLPYLFa4fxu84IQkBz75JW vRtne4hGiPtjjuVaKYZ9BHuoNx85QrHZovTPDaKJCEfMlwjBltNxWWqz3iy6gtztSHTdnEeVRdd PewWAMUzpKxrVP327gnQRN0m9+UWQzT838/bSvHxuGhVbykoCI+vyXxxkxjtJ5P35K9OsLWzeze cXjqRzxkRNX3mNa5Q/gUCIGNFXGAKG37fDoDcLQkB/SzfO2TvzvIyLpcH2VbYeRCQeE+87WWV1U fA8///rnXr3CRhubnazN1g4abfnjkRELnXvXDqeqoiWLoFuIPZ2daV086Tmn6jkXP7cf5h6mwRo NW6H/SywfEIrBoEZUM= X-Received: by 2002:a05:6a20:914d:b0:3d0:ba81:79b7 with SMTP id adf61e73a8af0-3db0e12bacfmr4109413637.12.1789209323245; Sat, 12 Sep 2026 03:35:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 56/82] tcg: Generic expansion of tcg_gen_rotr_* Date: Sat, 12 Sep 2026 00:31:00 -1000 Message-ID: <20260912103126.598030-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209448676158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 63 ++++++++++++----------------------- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 94f880a81e7..7a0b87e13cc 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); @@ -197,7 +196,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 61d00fa493d..f77598c5531 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -42,6 +42,7 @@ DEF_RRR(orc) DEF_RRR(rem) DEF_RRR(remu) DEF_RRR(rotl) +DEF_RRR(rotr) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 677e93736f5..abf6b64c3e5 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -827,6 +827,27 @@ static void gen_rotl(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + gen_op_ttt(INDEX_op_rotr, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, tmp, src2); + gen_op_ttt(INDEX_op_rotl, type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } else { + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_shr(type, t0, src1, src2); + gen_neg(type, t1, src2); + gen_shl(type, t1, src1, t1); + gen_or(type, dst, t0, t1); + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -1005,27 +1026,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, = int32_t arg2) } } =20 -void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t0, arg2); - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_shr_i32(t0, arg1, arg2); - tcg_gen_neg_i32(t1, arg2); - tcg_gen_shl_i32(t1, arg1, t1); - tcg_gen_or_i32(ret, t0, t1); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1815,27 +1815,6 @@ void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) } } =20 -void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t0, arg2); - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_shr_i64(t0, arg1, arg2); - tcg_gen_neg_i64(t1, arg2); - tcg_gen_shl_i64(t1, arg1, t1); - tcg_gen_or_i64(ret, t0, t1); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209381; cv=none; d=zohomail.com; s=zohoarc; b=Z3xEJbO4tuyxyATFNLNKk1ThnnZUFT10HWTD//vsTrev4cR4DkPvPZj8wMxbFEgdxZLmWaxveEa5FuV66FcpKp81Mz86pQv2PVpUZ5LrArs06RcfAQxFXABbi8d1+BYZlk3F7Ol957swZuHaZULTSiYmWi63W0yZCoQqu3nPcV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209381; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PJRJBXUvIUib7ZDX99FPFTDrJALDcOHjUW2ioYzB9UY=; b=bi+s9YDLDRwiiHx9OwKNFG8HzBfAz6qGYlInKd3tkfCw++6YA0m6dwOgwkbCkQkkhTVeWRNxNNV4HdcP1Sl0NKxgFmykTe6KBau2jbDEjraKhge6SZ7NHvCZxbxr1pdLMCQJpIUCqHkyPGYp50xDiS3qSbUeZRIhXHeNpP8zrbU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209381872632.9180448724197; Sat, 12 Sep 2026 03:36:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5H-0001nr-2q; Sat, 12 Sep 2026 06:35:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L50-0000Ig-RF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:31 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4w-0008O7-L2 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:30 -0400 Received: by mail-pz2-x0f.google.com with SMTP id d2e1a72fcca58-85469b35611so186781b3a.0 for ; Sat, 12 Sep 2026 03:35:25 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209324; x=1789814124; 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:content-type; bh=PJRJBXUvIUib7ZDX99FPFTDrJALDcOHjUW2ioYzB9UY=; b=b7Am+dLPuQF4TlECLngssA8RhZYUpyq84sbfNXqTi5DuMhsXwTf98DEAM6O7R6Dww6 WcvcBoiGcjXMDFdmN27Xu2aAerf4IreRwM384V2fPoohSerUqv3y8+MWMxLCShg2af58 9y8ggWeyjl6YDGyo3/N0nd1i8SxjqfxH8KqB/BjqLiW/aII0vAj6Z2wX3tIpCYGfEVot SvqEwPQgXNiyrCBkZDoI9kq6d2ZLqDG893IMTa8yRVe51p1r9BvGYDhL8jX0t3zSVVSF 8jqYsTTRT34vfuGXiG6Dp6BrulIzTUz6kbj/yzSpyfT6Skr4AsGWSnaspDGL50kvmZRX HoAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209324; x=1789814124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PJRJBXUvIUib7ZDX99FPFTDrJALDcOHjUW2ioYzB9UY=; b=dV/gNPPcC0gPX9pTl4D64UuDeL1CtvVToTodLdbOtKt7dVAtBVUShW38+6IWf/0E4D TQgqBPsDwMuFyX6b9WOld77ZowFF7Fu19jWq5R2NLryIXJ6OnwPEwbMV8xsK2eoCNIJZ 4zsMu3fdJUA+AjqcVVN37TvWajpZGRnuU4EThZCazgTtH/azs0uMsPBb2KNQeSpORT4j QKdb/F8Wg20fhhCh0ldw354ilvct7fW1UsX405O30TlMLMhjpxZ0A0D4vVbk8c1MFEW8 Akqq3BUbuJFNZOrjV+V22A0dX+JSHInK8aqVTRVaF7ndXsaMqYEGTTsDHUyOnkEoE2Yo tmhQ== X-Gm-Message-State: AFuF++ns5nLlsWnJIrRY6jGF+ECu7h7QNN0t4UMNGm46g3S8RTJIZgKM SzLMGuEQZbQe2ghNjiI/bur7K7wF+39Qve8NLdaAIyXeQs2V5cnnY+4JKbik50Qd/jCm375jAk+ CJkKhPYw= X-Gm-Gg: AYBFou3D4bR+GPJIyVcudBC6GC6m7WG2A+0MPVeyE0i70mY/Q2oIScL2BD08TuuBCdt SVZHcQcVhjpauT0rkm/3a1WJmv5mx3mOX/s60U2t2yKnCdweJAwps3ONW5N+vn/EKNEqwrdDc8C kqQPr7S6GaL//Q4SS3Rf5zB6/WsIq4FcA38f/5Z1mMityRzz9UjS3frJwhc3HYfpw1PC0sIxMRG fzbYRR+tn4vpRunC3tAFGFnYYNE4w4BHgAPp2EXzjYjxuc6Nd+3KWQoHRtRKlP4gyovlcrCxEW1 BLiE3pLFVDdJm13+YUmBbOACbD9EZfnQwW4TyfaZHdXJjZaguEHVVKHd7HN0cc+y01TPn8DjpIh 0L0zc8bhG2I3A+TbsD3cws7dGJAgUkD6ZCa3nfhKJMHImRbPx5oxQ7fQ9/0994zQqpE+twCON0J mVRo1Awj7beNzA1+vsa/imyZ6XzTgEy8NXq6rOQwuWxwxCo8JOWQTXr50cJfI2F2Igt0M22/689 khcpjoo X-Received: by 2002:a05:6a21:48d:b0:3d3:ad3c:49a7 with SMTP id adf61e73a8af0-3db0e41e850mr4683499637.21.1789209324181; Sat, 12 Sep 2026 03:35:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 57/82] tcg: Generic expansion of tcg_gen_rotri_* Date: Sat, 12 Sep 2026 00:31:01 -1000 Message-ID: <20260912103126.598030-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209382457158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 49 ++++++++++++++--------------------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7a0b87e13cc..265582c5a27 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -196,7 +195,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index f77598c5531..76263510228 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -21,6 +21,7 @@ DEF_RRI(clzi) DEF_RRI(ctzi) DEF_RRI(muli) DEF_RRI(ori) +DEF_RRI(rotri) DEF_RRI(sari) DEF_RRI(shli) DEF_RRI(shri) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index abf6b64c3e5..f7531d321ca 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -848,6 +848,25 @@ static void gen_rotr(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t s= rc2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + gen_op_ttt(INDEX_op_rotr, type, dst, src1, + tcg_constant_internal(type, src2)); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, width - src2)); + } else { + /* Do not recurse with the rotri simplification. */ + gen_op_ttti(INDEX_op_extract2, type, dst, src1, src1, src2); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -1026,21 +1045,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, = int32_t arg2) } } =20 -void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, tcg_constant_i32(arg2)); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, tcg_constant_i32(32 - ar= g2)); - } else { - /* Do not recurse with the rotri simplification. */ - tcg_gen_op4i_i32(INDEX_op_extract2, ret, arg1, arg1, arg2); - } -} - void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len) { @@ -1815,21 +1819,6 @@ void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) } } =20 -void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, tcg_constant_i64(arg2)); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, tcg_constant_i64(64 - ar= g2)); - } else { - /* Do not recurse with the rotri simplification. */ - tcg_gen_op4i_i64(INDEX_op_extract2, ret, arg1, arg1, arg2); - } -} - void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209362; cv=none; d=zohomail.com; s=zohoarc; b=QImOSInBy2BfauJz8xUcVxWWnMgbSVXAh47N+dwQIBL/is2QlMm9FuW7z5md9OUzKGBWRflHEibnAw8Gbn2s+CCUiirv1qWLxb8lMa5KxVz7WZNDBbyP9rM5ZTAeyMyE4UPNboLEsGEjvaA0KdxDgx2WPqcjfq1BrKgWg6YA78U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209362; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PShwmw0taxsRaEPyF7uJxLPTKm1fJqNHr1RM9auVA9c=; b=S4U0njnj8SD+Vi6ppDeWVcazlu14KOdtTEIUHJWTFwFNetaUuFlBBq7LDhlIqj2uXXdiytwz92XEkCdI3ED+sIEg7Nxpa/lhLhPXkjr0qpuxWFrUTyXQusjSmIx7EDuoHTtFKPLpGa2juk6WE5rnANBj+0k552/WsfBLx1cleEo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209362658349.4763132597526; Sat, 12 Sep 2026 03:36:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L57-0000jU-5g; Sat, 12 Sep 2026 06:35:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L50-0000Ia-RR for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:31 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4w-0008OZ-Lb for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:30 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d8fe517774so9448775ad.0 for ; Sat, 12 Sep 2026 03:35:26 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209325; x=1789814125; 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:content-type; bh=PShwmw0taxsRaEPyF7uJxLPTKm1fJqNHr1RM9auVA9c=; b=EFwxED+eVVCS3WbrA1mt3tR0F2MkpcPf5Fcl7T8gKlVEeCpQMXy/jmUspEFiyQW3pb FdftzhobB0zeSli2t+705ZHHpuLKQn2Z/5DjXXqcKYPbDAF2QVUjL2Ws3zPWZQQ93YVR eeNCjOhE2qKF7NYfXXpFLiKu4VPdSlSdVOdfHo8A87I5O8qjpnhbCu4Ww67ODXLCFtyW jG9rJg09ntFYPBRaxVeg7JwS6fyvd6HSOoOnF5EIHIflg3BCfw2T7I0vPvHbygHfth3X X8MXmuWqtoWvtOt/j6FLZ2xUAtLLjv2n7LLHgepNITsFGKiDfXGFpVwwikOkH2zgoUry sopA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209325; x=1789814125; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PShwmw0taxsRaEPyF7uJxLPTKm1fJqNHr1RM9auVA9c=; b=LpC5sMvC9QBJNgafFAKUpKOqQfk1+Uj3pEOrm5gNovnDGT49jJRJHcgq+QoriEBAkd O/T1ZGmP0bCEbQv6XAI/sZTfwSvskW8FC+k076v/8PU3huWJIfo5nZh8tW4NJ5mLS9l3 gr9u/VmjLqcpig1VCAC5HvU7c5qR/81SsB97PWAmISsyGEdOIl6YRWfDYTPz9jbmL0Dx LHX9XnAjjtO0KXTdgrKfPaqIJZq4jPZpwRIK5K0j0tTKNuOm8AMtapEhun/zspukk+s9 3TqMChDO9GYijPy7vQ1Z6ZJCIqc1qZDS4Ds+wJnUrmYE90XSaIB//pVOFtUQskv0pOSw 6f1w== X-Gm-Message-State: AFuF++kQ11CCOQ3jFqaPtNTBIHG4GJVz2/yzaSNg+hgvenCchs19oHlV MciuhMkIOYEmKqCFz4COskFcaYEF0AxaBsS0zaTBNOqYTaRyzcV4aTidoss4wne3k2vta32bDNO UYqw1Jyc= X-Gm-Gg: AYBFou2FFjIgnb+WWaSTyjuswbSkHA601iBPO3BOzkHAqbSzCnesw/Y/MHih1X0ApNf 51eqlV9IH7a2OCNaqzEAelzJ1ZkUJ/JYR85g7CW8T/U+J1p/sOp8N2TAP5X6NzzGcNyVHbaqJzr LjmOVXFJIcU539bskoPsgBreXyLZB5ntRTQ1R2JJNG/IyFn+LVW4LloU3gukOALUDxpBN17bi7Y r/1ZzxIGFsaS+tFzY/TVii4ye8c6RCG4nQoPKf4nUiJIE+B8jWZvrVLt0pXbYB5JcLMqrHOyiN3 yt+kTDRdFq+gKvAdUDPSPgUKL8EPTp72naBYmI0dP5StiI2WnJ4pKPZxp1fFO1B0x+yTRofNXBl IbU0O22oYmqIke6/Vk+1eery/7U9ul7Tzo//0KZF9L8eV3RdC68OyZjh6a4hapgJPUOAL7kXSAR cM5UpJinwqj0LNCPi2bRBNYIzIyXfXDPR5NN25CD1eg9xqVT4I6hOsY6C1zLZsWqLVIY+F7k/Hj Ja1tas= X-Received: by 2002:a17:903:2443:b0:2d6:fd55:3a9d with SMTP id d9443c01a7336-2dd2a1ce17cmr141651275ad.3.1789209325154; Sat, 12 Sep 2026 03:35:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 58/82] tcg: Generic expansion of tcg_gen_rotli_* Date: Sat, 12 Sep 2026 00:31:02 -1000 Message-ID: <20260912103126.598030-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209364372158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 39 ++++++++++++++--------------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 265582c5a27..df7999e92cf 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -194,7 +193,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 76263510228..dd66a2ecd8d 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -21,6 +21,7 @@ DEF_RRI(clzi) DEF_RRI(ctzi) DEF_RRI(muli) DEF_RRI(ori) +DEF_RRI(rotli) DEF_RRI(rotri) DEF_RRI(sari) DEF_RRI(shli) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index f7531d321ca..8add0836952 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -827,6 +827,21 @@ static void gen_rotl(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t s= rc2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, src2)); + } else { + gen_rotri(type, dst, src1, -src2 & (width - 1)); + } +} + static void gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_rotr, type, 0)) { @@ -1033,18 +1048,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, tcg_constant_i32(arg2)); - } else { - tcg_gen_rotri_i32(ret, arg1, -arg2 & 31); - } -} - void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len) { @@ -1807,18 +1810,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, tcg_constant_i64(arg2)); - } else { - tcg_gen_rotri_i64(ret, arg1, -arg2 & 63); - } -} - void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209472; cv=none; d=zohomail.com; s=zohoarc; b=P2WESPKYF3tcMAgdLFKRKywEDtiN0VItX3y8X8LlX2MCoDJrzIaHyWuailM28FZfNplkYVPvf0+ZM7TmKqRhLS0t31sn+XtEFlj5RuCALqQRrCUs2QLAzSPBVn9EMXbwVqc8cwfDqniHQ+AtG71NcMFWqPGxrVJOaFgrkXiwZhE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209472; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=B+8V8e7wOs1tD7+FAtuFdqurAMz6XOgd+GHMqukixMM=; b=NOw1VDXY0sSYZDWiPHOyotc2ucZwThz8/l/nyGT8lSNp/NrBI9gpQi+jzZCweIBTQYaLV8mOjI7Ymwao4aFMi+a3hBUO1HjPGrd6pXWVdopT3qgEok3Ci6+48eFi9J4qmuv3prHhPphS/3Q4elWwLPAugDyFqwEvzUs78d+CS7Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209472712501.7631859931179; Sat, 12 Sep 2026 03:37:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L58-0000wl-RV; Sat, 12 Sep 2026 06:35:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L52-0000Ro-BN for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:33 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4y-0008Oz-JW for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:32 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so262486a12.3 for ; Sat, 12 Sep 2026 03:35:27 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209326; x=1789814126; 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:content-type; bh=B+8V8e7wOs1tD7+FAtuFdqurAMz6XOgd+GHMqukixMM=; b=xLT5Cpl/9zAlDEOUc48QOeTe6yU5VWelPFJnZM9WfPqgVpjdUWe5xLqJhC0tITlyBf OYLXT14u328E/UUc2sM1/5pak19njB14zX92BhEvjkoxz4Nv4EkjuF+dpO7S+K33CN7o zRSIUCH4ser70g9vOCB6fFhbeqxf84EheK05ZpVV53EdnLGSRtHy6fxPTuMa6/NCqlwm EJN6fDJ5OwyeRoICeRMydlOfwUZwXYAmzdmY3gdjAHUQjN0IM36MiYyaogN1Yjbu2BNu r/IySMxsswD6pssf1PqjC5dFK5YV82IRQkAf51Dnpknk9RAMZR/vLUB5BPQQMBX8XLw5 6uTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209326; x=1789814126; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=B+8V8e7wOs1tD7+FAtuFdqurAMz6XOgd+GHMqukixMM=; b=rs3botfeSYOyXiuRFZ4sp1qXMV4gSWa+ZyWbf155mhRPnjtsfjMfa55FJgzXK6ux8Z ZpGgIN5BsivQIn4obfMH8yovsMs/cc3UjMwJH5fmrQit8RLoeL/YzAc/oS5BD0ubdhNC rsl6fI3kAij745j0egOGUS9RuEjwKAoj+FaBqdetkoZOSJ/Tk9hEQqT/Ty3vXUZePih2 MnUz+daYNImqWtxsnv23IO8Hw36amJ849ox2OiJw9mKSazkp8OQW+1n7/ua9eisiiuBa 17TbfJ6ZxSyvMaKCFB4zFnG7nGPLgHRqKKJTc3jc/8NA3B+9+ILxTCo2wexJBE0mstYU Inzw== X-Gm-Message-State: AFuF++loesyL7HszwA2SxPTfUWUwqAjgqE6fhXTXE8MQKJn9kQ9/KKtE LUXGy4hJdyU8LR6/YwFZih2SwqkN4c4EluqTVrmbgJbHKwxhSU2NI0GTLtuLbYttKsf0DiChkAw OpPKd2cA= X-Gm-Gg: AYBFou07BMlfTEzaJSH7/jNGC2g1lHLsWYcZazwBTPIzKcDDpqYNRJT8BiGgO6BivJM OJwpouDy1XikNcAvH7SGJJopKoixjcSiSI381wupvydwf/EAECOlSezM12h0i8+Ofsvf/66dYNz bRPABDngg9exPOZAAbe4k9YQ21cDAqF0VkHmDP6Z8x4HVo2WNCHZK/coOogcuRoU/rjXTpBHCVZ 8SxDZywlmIyd4TECh7quO6UYUMDEK8M93yyvTPfqxGzrkpCTgyU0DclrPOR0FF4hQbHGndKjhEy YSBDqhoTVVXtn93KrXirTcGMqtmWjaSUtSA0Xf6oHHMwg7oTFpFrUEIfGHr0BzM9AWVAx2+oHLf K3RO65hWzYzjkXF9Ok4rSKEU8aWFrCDb2FFDB4yAEImvdrbEpv7aSjIFTI+5t4bXxk+7rjkOTXb vScKmEM5HSYScditk8Nhjh7WfmYnILZxcihi9hhrKQ5MZGc3ifAkvKIIgc+CDcjmB5EtRYUFlJe pxzTbZM X-Received: by 2002:a05:6a21:4d8c:b0:3d3:ad3c:49aa with SMTP id adf61e73a8af0-3db0e451d0fmr4085346637.24.1789209326067; Sat, 12 Sep 2026 03:35:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 59/82] tcg: Generic expansion of tcg_gen_deposit_* Date: Sat, 12 Sep 2026 00:31:03 -1000 Message-ID: <20260912103126.598030-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209474856158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 9 ++--- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 66 +++++++++++++++++++---------------- 3 files changed, 42 insertions(+), 34 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index df7999e92cf..eae8bbd129d 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -126,6 +126,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info); void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, \ TCGV d, TCGV e, TCGV f); =20 +#define DEF_RRRUU(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + unsigned d, unsigned e); + #include "tcg-op-def.h.inc" =20 #undef DEF_R @@ -139,11 +143,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRRUU =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, - unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -193,8 +196,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, - unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index dd66a2ecd8d..415d10b9fe9 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -50,3 +50,4 @@ DEF_RRR(shl) DEF_RRR(shr) DEF_RRR(sub) DEF_RRR(xor) +DEF_RRRUU(deposit) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8add0836952..61700f0d620 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -127,6 +127,14 @@ static TCGOp *gen_op_ttti(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= , a3); } =20 +static TCGOp *gen_op_tttii(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGArg a3, TCGArg a4) +{ + return tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), + temp_arg(t2), a3, a4); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -352,6 +360,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, \ TCGTemp *, TCGTemp *, TCGTemp *); =20 +#define DEF_RRRUU(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *, \ + unsigned, unsigned); + #include "tcg/tcg-op-def2.h.inc" =20 #undef DEF_R @@ -365,6 +377,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRRUU =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); @@ -575,6 +588,23 @@ static void gen_ctzi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_deposit(TCGType type, TCGTemp *dst, TCGTemp *src1, + TCGTemp *src2, unsigned ofs, unsigned len) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + if (len =3D=3D width) { + gen_mov(type, dst, src2); + } else { + gen_op_tttii(INDEX_op_deposit, type, dst, src1, src2, ofs, len); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -1032,6 +1062,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) TCGV d, TCGV e, TCGV f) \ { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), TTMP(d), TTMP(e), TTMP(f)); } =20 +#define DEF_RRRUU(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + unsigned d, unsigned e) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), d, e); } + #include "tcg/tcg-op-def.h.inc" =20 #undef DEF_R @@ -1045,24 +1080,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TC= GTemp *src1, int64_t src2) #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRRUU =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - if (len =3D=3D 32) { - tcg_gen_mov_i32(ret, arg2); - } else { - tcg_gen_op5ii_i32(INDEX_op_deposit, ret, arg1, arg2, ofs, len); - } -} - void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len) { @@ -1810,21 +1831,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - if (len =3D=3D 64) { - tcg_gen_mov_i64(ret, arg2); - } else { - tcg_gen_op5ii_i64(INDEX_op_deposit, ret, arg1, arg2, ofs, len); - } -} - void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209444; cv=none; d=zohomail.com; s=zohoarc; b=VYrQO/W4ykrUSkbfX0vxtdJJJoshKJiPA1iYg/8C3FxeYzz/9qaa7k5f3ewsjAGuGJAwRVUZMbkdEwm7bLm0eGipA3DiGAGTcW+fdZwCBcpIQ41QifLgvbaSSen9WCZV/LulIEqSbhBlNHb0af0F0vWx1RXzV8pt5NgRFAUTZgw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209444; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=zEfXwy2yvC5ex/Yq7PmgQwT81kyrdLrcqCUkVwnf4RA=; b=I5VemDdFevAUspAyIn4ltleEFjBPLpOHGUPYLObdrmmWadAHWSvE9aPefYoNyDygHiqGnqGbodrQ10m2JfVcQDQkqBVj+UeMixtRLuIN8hZEqP9LWmf5AIVE0x1ivbrliPauEDS1nH33IT0GlkGA7IbBqLf4pfnGdIkj1mIED9Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209444226577.9431731181899; Sat, 12 Sep 2026 03:37:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5E-0001WU-1m; Sat, 12 Sep 2026 06:35:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L52-0000Tk-UN for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:33 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L4y-0008PU-Jb for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:32 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccc09d65so585282a91.3 for ; Sat, 12 Sep 2026 03:35:28 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209327; x=1789814127; 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:content-type; bh=zEfXwy2yvC5ex/Yq7PmgQwT81kyrdLrcqCUkVwnf4RA=; b=fhCY953qR2MEaDFRlTsa5GLe/sbrnfLN+UITwyvMXrhUin+PA4KP7Ls1A6j6K1nRCV ha3vgSKNwVRYc/3/x7gYOd6jMYUu7S0rmpDvjmOUdtJAenaIYGwX4FuTIJWYyTf3cCLq ZpV2YKV1VSqaubbelhGEYV4J8k9mZWMkCsLnkmnEUwaK2VFop9iojkA/O9m+fW7R+e1g DDkcCukITF6pEeE3QYg1PGDPklOPaActvu+aLMBxVomq4OCN3g6ZOHWhcO8chlD/f+1T dgoNaBbmxf2+pEvYKNLxtli/d5xJWnkFoFiOgHaeP4JKQT5UmZfWpO6g7HBL+d0RBGMx ul6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209327; x=1789814127; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zEfXwy2yvC5ex/Yq7PmgQwT81kyrdLrcqCUkVwnf4RA=; b=hERQFG9ZCnkdZWShAztOzm0746Nbs9ll3ATEgD/39teDSq/f5xpuLF5S+kTw8odA/V jV7vPv7sarE3hnLmfoRTrjNIH4zRUMmXC9FmFjATgcI2v0e9l8HDpxEnJ6yWMpTEMub1 NsN9etKWsO3Q2MNtib9DEaoNqy75ytgZAqSUTk69NLgV+nkNje8nLqUvTwhwKbslrW2A coXOYIiqN6m46YQ9O8ISYDEdd2g5qUHyXqTbuP3/ey1RrQFhmzXeEWUDcdKFkvR309n5 R+7R8B3p+3LFp9v3+nJTfPUHPH6hWxMWd+bVpqN6HGbCCV+OPykokT/5AQkpOEsMZWTr 5xug== X-Gm-Message-State: AFuF++mEcEoHF9rb17kGB009s7Qi8BMb/Kv8LzVoUndaey3NAgjNfacj ZZ2jZxdD+QhmD+9/IuJB+gs7yIV71qAvKEICETUEJk1isG/eCM5wyM4b8pB8XFp135ff1hPUCQ2 YQpffIZw= X-Gm-Gg: AYBFou3CRedL33Ul/vn5hP9LB0gl7C89cSLmMUBxPxiJsYajisgQTBjDY8swyMOG+FY bNvwH2jl6Dt8KJQviw+5BYKJAb36Aqq6Qxw0jYO/ulW5889kkf/LjlGTFea14AvOdOUWbCUOsFC k887DX/Usl+aF3eYixigTdOrhb7G8+AAGONmhfi4wJmAEmWHx0acxklW3kMc1Qvs9HfkfYEAzEH SSCbzl18J8V7KVGtPVw2YhKGiRkgF+4xlR57BZ2p5AY4gsbCMdkhLQNr0iDkMpV4ijA+zGzY30W ZsxGFWPYk22tWtSm/j0cNMk1h9oCoSAJBa8rzbGE4JkHrWosdt08Y7mp5pcnOsGrK6xpco6xDoI gsg4hi8GppVGNSoY37iHJ/Wbr7nBa6BcN1PWMpH315qCcL8CDCv0gD/cebapTaRdYISSwwG64hm ZWs/i0UnCA0aroALy8Mq+5eW3DLEyFijyzl+Qn0sjEi+eoMtQXAcZ89hZTvntTlkoPPwncledzl 2P9QPw= X-Received: by 2002:a17:90b:28d0:b0:398:9bd4:d18 with SMTP id 98e67ed59e1d1-39d9c3f2ba7mr15791409a91.23.1789209327084; Sat, 12 Sep 2026 03:35:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 60/82] tcg: Generic expansion of tcg_gen_extract_* Date: Sat, 12 Sep 2026 00:31:04 -1000 Message-ID: <20260912103126.598030-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209444739158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 +- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 141 +++++++++++++--------------------- 3 files changed, 60 insertions(+), 90 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index eae8bbd129d..0a37a8edb60 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -126,6 +126,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void glue(glue(tcg_gen_,NAME),TEXT)(TCGCond a, TCGV b, TCGV c, \ TCGV d, TCGV e, TCGV f); =20 +#define DEF_RRUU(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, unsigned c, unsign= ed d); + #define DEF_RRRUU(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ unsigned d, unsigned e); @@ -143,14 +146,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRUU #undef DEF_RRRUU =20 /* 32 bit ops */ =20 void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); -void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, @@ -198,8 +200,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); -void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 415d10b9fe9..24db95e294d 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -51,3 +51,4 @@ DEF_RRR(shr) DEF_RRR(sub) DEF_RRR(xor) DEF_RRRUU(deposit) +DEF_RRUU(extract) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 61700f0d620..d196c36fc4f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -360,6 +360,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) static void glue(gen_,NAME)(TCGType, TCGCond, TCGTemp *, TCGTemp *, \ TCGTemp *, TCGTemp *, TCGTemp *); =20 +#define DEF_RRUU(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ + unsigned, unsigned); + #define DEF_RRRUU(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *, \ unsigned, unsigned); @@ -377,6 +381,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRUU #undef DEF_RRRUU =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); @@ -651,6 +656,50 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + unsigned width =3D tcg_type_size(type) * 8; + uint64_t mask; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + /* Canonicalize certain special cases, even if extract is supported. = */ + if (ofs + len =3D=3D width) { + gen_shri(type, dst, src, width - len); + return; + } + + if (TCG_TARGET_extract_valid(type, ofs, len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src, ofs, len); + return; + } + + mask =3D MAKE_64BIT_MASK(0, len); + if (ofs =3D=3D 0) { + gen_andi(type, dst, src, mask); + return; + } + + /* Assume that zero-extension, if available, is cheaper than a shift. = */ + if (TCG_TARGET_extract_valid(type, 0, ofs + len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src, 0, ofs + len); + gen_shri(type, dst, dst, ofs); + return; + } + + if (tcg_op_imm_match(INDEX_op_and, type, mask)) { + gen_shri(type, dst, src, ofs); + gen_andi(type, dst, dst, mask); + } else { + gen_shli(type, dst, src, width - len - ofs); + gen_shri(type, dst, dst, width - len); + } +} + static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); @@ -1062,6 +1111,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) TCGV d, TCGV e, TCGV f) \ { gen_##NAME(TYPE, a, TTMP(b), TTMP(c), TTMP(d), TTMP(e), TTMP(f)); } =20 +#define DEF_RRUU(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, \ + unsigned c, unsigned d) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), c, d); } + #define DEF_RRRUU(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ unsigned d, unsigned e) \ @@ -1080,6 +1134,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_CRRR #undef DEF_CRRI #undef DEF_CRRRRR +#undef DEF_RRUU #undef DEF_RRRUU =20 /* 32 bit ops */ @@ -1102,49 +1157,6 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 ar= g, } } =20 -void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - uint32_t mask; - - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 32) { - tcg_gen_shri_i32(ret, arg, 32 - len); - return; - } - - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, ofs, len)) { - tcg_gen_op4ii_i32(INDEX_op_extract, ret, arg, ofs, len); - return; - } - - mask =3D (1u << len) - 1; - if (ofs =3D=3D 0) { - tcg_gen_andi_i32(ret, arg, mask); - return; - } - - /* Assume that zero-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, 0, ofs + len)) { - tcg_gen_op4ii_i32(INDEX_op_extract, ret, arg, 0, ofs + len); - tcg_gen_shri_i32(ret, ret, ofs); - return; - } - - if (tcg_op_imm_match(INDEX_op_and, TCG_TYPE_I32, mask)) { - tcg_gen_shri_i32(ret, arg, ofs); - tcg_gen_andi_i32(ret, ret, mask); - } else { - tcg_gen_shli_i32(ret, arg, 32 - len - ofs); - tcg_gen_shri_i32(ret, ret, 32 - len); - } -} - void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len) { @@ -1849,49 +1861,6 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 ar= g, } } =20 -void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - uint64_t mask; - - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 64) { - tcg_gen_shri_i64(ret, arg, 64 - len); - return; - } - - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, ofs, len)) { - tcg_gen_op4ii_i64(INDEX_op_extract, ret, arg, ofs, len); - return; - } - - mask =3D (1ull << len) - 1; - if (ofs =3D=3D 0) { - tcg_gen_andi_i64(ret, arg, mask); - return; - } - - /* Assume that zero-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, ofs + len)) { - tcg_gen_op4ii_i64(INDEX_op_extract, ret, arg, 0, ofs + len); - tcg_gen_shri_i64(ret, ret, ofs); - return; - } - - if (tcg_op_imm_match(INDEX_op_and, TCG_TYPE_I64, mask)) { - tcg_gen_shri_i64(ret, arg, ofs); - tcg_gen_andi_i64(ret, ret, mask); - } else { - tcg_gen_shli_i64(ret, arg, 64 - len - ofs); - tcg_gen_shri_i64(ret, ret, 64 - len); - } -} - void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209348; cv=none; d=zohomail.com; s=zohoarc; b=elP99LtYVXTigQA32lwVziU8j9dnPJ50Z2J272Z3KrbJFDUXfZKOaDPrY1TsvTi+uU4AIHyqUwBPG0jWl0Oq3PNA1WtPtysHSSQBMu57BV3Z4xy1mtKfaEsQb7hIKTw7d/VY195xEMCZR9jg8PDrCxPkg5+uqE1sFE6NUd7wVEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209348; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bsS+mu3ApIHTiAf0Klz7Y1dC8MvYFHqWgd9rsoZI5JY=; b=Oo3Wuz+fJ4xDomUsblDPh4vK2cegAUQPmZuTvMBrmin49O3MLr5fArNbj/tS5ipnmOoduPxn6XPHwX398n+cxWCkZcKdq1uw3vVzaKZNMCgZnROk0FjKmOFH84uAt3n+MAN/U/c4t8XfByBjjjEAJQvxeYUmmdg+4f0/6de7Eco= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209348276351.1217356651546; Sat, 12 Sep 2026 03:35:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5D-0001Jx-LJ; Sat, 12 Sep 2026 06:35:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L54-0000Zb-B4 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:34 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L50-0008Po-Fu for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:34 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d747ee1f9bso7245165ad.3 for ; Sat, 12 Sep 2026 03:35:29 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209328; x=1789814128; 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:content-type; bh=bsS+mu3ApIHTiAf0Klz7Y1dC8MvYFHqWgd9rsoZI5JY=; b=VX/LuTp9UB85GuVwihyKzmOF1QiRVZivWodEzz6tHvRRFvRYxK6sVhFJPdB0Yr7Sky /56av6OIRRcVVanFs/x120qZtPU/0vghn5bYjSU5AjGIkU2gRWjH0OnxKEgPqKVeZLF2 JvYjILw4hyXLVqJdkw79o6KdFpisfGux8frfPRradHs9Dl+gkpIKY93am3zkffDlr97D 3AVzqXuLxjmjYhvXBeqr3WC0NqFVF1Xlj6JzXQomUOhs4ZudDVbR0egQCLXY6vMEwPd+ K/UbD9vzSpsWBXmSOSaISdiNuppj/uj1+dfwE4m8O0QVJ82pmsr+nW4c3sZdRxGCo0/I L5ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209328; x=1789814128; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=bsS+mu3ApIHTiAf0Klz7Y1dC8MvYFHqWgd9rsoZI5JY=; b=h+d93dS3+6f2haLxvnl5VvxJMpAcGA0gdqJ603zcfQf8lw2Y+CA1LGPZoWA2tRV2Kn Kj47K6Dclkdq6Nu5QM78Ix8YIxtCCRq+TzvIjYLuuzVbqcZ9ZLiLjq55pJB6JibHp5MX a9fc6VgG1yyKzSONhaR4VTm8Ge56oyVrtpgQWtFyTIRqCVakqC3U47X9RVvB9sceLkx7 km31R1N6HL2fwmuBLQh/GqY7dE+uxF2qmw8z8yG/aIevq0xCrxc2X3HY5WTw/MJX+NCt B8BoWaeQMUdnVfg8iqdQ7lchJL8Dg/Y6mwSmDsHmb2e8rJPCGqkSzEnamac5McBbJB3O uDuA== X-Gm-Message-State: AFuF++l+ltvdEYoxmIlVStLT9mIYA4RE+d1Qo+Ie3A688RjBZkzba3af bx49e1Y6Vbey3OOc8E9xEzZwjFe6YDY7GONY0W0pSRq/oAOTs8wamTQSEMFwj/Vkz+JtEMlft/i sCs7EnLo= X-Gm-Gg: AYBFou1cjPA2TDIa13TXcmWUkqrVnDC9J5YfVaYg4VSvITNnrXbOiMHqmf1GkZQwOzG gXirNfcon8UJbrVB1cRHyNd2cMiF2jXBBnvTFseB/+kgMbkvddR/PoVs9Kx65JxbV7XsNo/OGYg b6XQkoYRTv1/Q1g0/zC7WJvbpb+OvsBACFOmdQYAjfRHO7YnDvGcxzX5yxlYErlfnM24e7SzBKG T+4V8IR+desbYozc/PgDDIFo95PEyDs/+HUg3Luq8DQ6yHqrGUAexYT2IHBAajzau5V/3za2Uad 7adAUaeD8jqfUUTiL0XPODkC+CadIMGCOgTIxneJTce1ceoxGKgwupQa3yrtIgnd7SyQ3f7/LWZ Xmb4RmaluprWogvWbIMKhkbPVVXkGyr7LaiV8XLKn5PJWpJovFym2wU0jZ+Fa6ulhojzBqtOyhS 7+2IQp2RmgY/5s+ZGxHwrM+/NWMCSdrt5CK7/UCUOmTcPX9Lt+EMJgM6mSrQTDuFgJGXexaoUwT 5JVP3ensuUY4LZpmQ== X-Received: by 2002:a17:903:1ac5:b0:2db:539c:b7c7 with SMTP id d9443c01a7336-2dd2a46d478mr155214465ad.20.1789209328069; Sat, 12 Sep 2026 03:35:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 61/82] tcg: Generic expansion of tcg_gen_sextract_* Date: Sat, 12 Sep 2026 00:31:05 -1000 Message-ID: <20260912103126.598030-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209350328158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 121 +++++++++++----------------------- 3 files changed, 38 insertions(+), 88 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 0a37a8edb60..7c6421f692c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -153,8 +153,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); -void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -200,8 +198,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); -void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 24db95e294d..5cbdf39b3e6 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -52,3 +52,4 @@ DEF_RRR(sub) DEF_RRR(xor) DEF_RRRUU(deposit) DEF_RRUU(extract) +DEF_RRUU(sextract) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d196c36fc4f..2a31ae17f4d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -244,20 +244,6 @@ static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i= 64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4); } =20 -static TCGOp * DNI tcg_gen_op4ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 = a2, - TCGArg a3, TCGArg a4) -{ - return tcg_gen_op4(opc, TCG_TYPE_I32, - tcgv_i32_arg(a1), tcgv_i32_arg(a2), a3, a4); -} - -static TCGOp * DNI tcg_gen_op4ii_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 = a2, - TCGArg a3, TCGArg a4) -{ - return tcg_gen_op4(opc, TCG_TYPE_I64, - tcgv_i64_arg(a1), tcgv_i64_arg(a2), a3, a4); -} - static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, TCGv_i32 a3, TCGArg a4, TCGArg a5) { @@ -994,6 +980,43 @@ static void gen_setcondi(TCGType type, TCGCond cond, T= CGTemp *dst, gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_sextract(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + /* Canonicalize certain special cases, even if extract is supported. = */ + if (ofs + len =3D=3D width) { + gen_sari(type, dst, src, width - len); + return; + } + + if (TCG_TARGET_sextract_valid(type, ofs, len)) { + gen_op_ttii(INDEX_op_sextract, type, dst, src, ofs, len); + return; + } + + /* Assume that sign-extension, if available, is cheaper than a shift. = */ + if (TCG_TARGET_sextract_valid(type, 0, ofs + len)) { + gen_op_ttii(INDEX_op_sextract, type, dst, src, 0, ofs + len); + gen_sari(type, dst, dst, ofs); + return; + } + if (TCG_TARGET_sextract_valid(type, 0, len)) { + gen_shri(type, dst, src, ofs); + gen_op_ttii(INDEX_op_sextract, type, dst, dst, 0, len); + return; + } + + gen_shli(type, dst, src, width - len - ofs); + gen_sari(type, dst, dst, width - len); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -1157,41 +1180,6 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 ar= g, } } =20 -void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 32) { - tcg_gen_sari_i32(ret, arg, 32 - len); - return; - } - - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, ofs, len)) { - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, arg, ofs, len); - return; - } - - /* Assume that sign-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, 0, ofs + len)) { - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, arg, 0, ofs + len); - tcg_gen_sari_i32(ret, ret, ofs); - return; - } - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, 0, len)) { - tcg_gen_shri_i32(ret, arg, ofs); - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, ret, 0, len); - return; - } - - tcg_gen_shli_i32(ret, arg, 32 - len - ofs); - tcg_gen_sari_i32(ret, ret, 32 - len); -} - /* * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i32 above, len is fixed at 32. @@ -1861,41 +1849,6 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 ar= g, } } =20 -void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - /* Canonicalize certain special cases, even if sextract is supported. = */ - if (ofs + len =3D=3D 64) { - tcg_gen_sari_i64(ret, arg, 64 - len); - return; - } - - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, ofs, len)) { - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, arg, ofs, len); - return; - } - - /* Assume that sign-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, 0, ofs + len)) { - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, arg, 0, ofs + len); - tcg_gen_sari_i64(ret, ret, ofs); - return; - } - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, 0, len)) { - tcg_gen_shri_i64(ret, arg, ofs); - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, ret, 0, len); - return; - } - - tcg_gen_shli_i64(ret, arg, 64 - len - ofs); - tcg_gen_sari_i64(ret, ret, 64 - len); -} - /* * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i64 above, len is fixed at 64. --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209407; cv=none; d=zohomail.com; s=zohoarc; b=eT0osMMFv488QbTe3Itg5yrLWEdp1pNxZ6Ic+5zE9ICluBfwmFt09fXPXOSCH35ya9N4lIXcYi2IwCEyZjD956tIbsyxdAYeo79JdioiWpXkivxIwxbZ43DhDM+K1x8z6+CuNN1DxbTT37eyU7YxR4KZ3Fi8R1YaapEQyt+W9wY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209407; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NGow9khTMJdJyNb7w/1VSQnYYbdDLJ0wD4pOXXQLE7Q=; b=FygAfChlgjxe4Y3FPsF6FCJ1tgjouKBefE1M/jUANWKaJXv8aOn5355CR3ZGEIrVVFYbViC5+rEfbeaBefiUzUi/D1dc75m+/dt5Mhvlne0NFC7OXS6podRxGrwp6gjWOFptbPK+44RvQsFKZ05TMIv5Gw/R8JfUf7N3BSI4O14= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209407041242.71796870460787; Sat, 12 Sep 2026 03:36:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5H-0001nQ-2G; Sat, 12 Sep 2026 06:35:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L54-0000XJ-3R for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:34 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L50-0008Q1-HM for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:33 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb65437so250389a91.3 for ; Sat, 12 Sep 2026 03:35:30 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209329; x=1789814129; 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:content-type; bh=NGow9khTMJdJyNb7w/1VSQnYYbdDLJ0wD4pOXXQLE7Q=; b=G2RsCjFTWoHlPv1vZj42wtSWT4gOqCPBTbKVMXh68+955TSBppoNSfImzK6u6kwOV6 TnRqHoSvITl3yaU5vKTdd0jcHOMDTCf4uLBZTpEA51XQbFgNqaNtzHTRYCpz8nqzmlWt ZSR7nm+/WyjHh6Fo/g6EfLw5sVsWXl6zA40fejEBafDiLpPi+xei1sXxDyO4lOGjal3U AA3pzqYMWJuZz3sPckuTGycTY3X2O63S1hoqkKAfZ7QLmMTn633h0JTHnCvgl1hlWUHe 32txMn8gGmU0FUynrX/EiQY12a+G2dF7dEetUIRihSzg3u0ssAqbqMCZ2NJ/vWGVqAQ4 U0jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209329; x=1789814129; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=NGow9khTMJdJyNb7w/1VSQnYYbdDLJ0wD4pOXXQLE7Q=; b=EP41gKPO3jMsFLpmTVvnPUI2gk0+AMWj6H4tZQ8RhJl2jbs0LdRqGYlkh/jawiCYAG 2WEcgOtwGOJC87/VS3f7a3IRzxGm6Wjrfq76m2MXEUQW5zA79+E8YnUcOASGsEk5NRMc ta9YoWTGA3eDWocWjo3YTIzT17ZOXd3aofSCjzdPIGvLazNW25puMjkhqFMZcLauNcmp UD0PPRu4StQ0LYcZLoz0+zeTu2+Eibo4MMr8EvCsa0VTqlcJtGzPE+o7UGB4HZOEbOZy kFLNSNxMjhYPVptAsEVRYUItBekaXsjo10JNf4txu7FXOjkYu1h2BX4L9hWp5ccHJuTL jtIg== X-Gm-Message-State: AFuF++n7JhyhxsIu5kjV1n2A14asmm6oU02pzj4Pc5LOZelRDZkaHZ0r BjzEXK9oC2NeqjME5rdpL91wmofielsJajSHwoDoypzYGfMXgS0Wl+ttAdj1AuPMRhroW+pLcQK AxE10neM= X-Gm-Gg: AYBFou3aCBpI8aOykUIZsqmndIG9otK7Lqf/O9cua9MJD32NA2+xM/dvMGow2t3IYu7 q8hOtxJ91VVrAXweCCsSdWkMAFOO50ODC+8ao7KL1XNWVG/y6f5/5v2zelzfjE56dQoZkwaYuiA +wUDrVWqagLSRUVRCGsGXUlY8xvYnu7mAuWUwL6+xohaHrJSIfZmOqisospeze+4C5cyhcKW/pn V4YXPJx/wHj6M3G36v4i+MI7BtLvfV20pXaF1pw6d5LKZaAUSjM/D7Pb17qyPxyCDXuwcZS62GQ ChUrVO28PISf2ChOt4kYWTBLlXL8yn8EWT42BMeqYtOh5lietaUy4OIrsjPlwlE+foIKJCkxbYg bkx+52zZBV5q4soHRyFuBy1Ik+5P+RRrsCSy0lxvLw9r7yIFTpfoyG6CTuy+KcrrNXBoE5gO01G 7p9kQk+KlLuI3sOZ/ZRQTW9cVfRDeYhHlGNAhJBzvPaRo7ndtNyQW+g8ejkcKtPKvk+RzuaD/Rb 8m0qt4= X-Received: by 2002:a17:90b:52cd:b0:385:393e:7124 with SMTP id 98e67ed59e1d1-39dbc699006mr4356644a91.14.1789209328976; Sat, 12 Sep 2026 03:35:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 62/82] tcg: Generic expansion of tcg_gen_deposit_z_* Date: Sat, 12 Sep 2026 00:31:06 -1000 Message-ID: <20260912103126.598030-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209408542158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 70 ++++++++++------------------------- 3 files changed, 21 insertions(+), 54 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7c6421f692c..bd98d2bec41 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -151,8 +151,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -196,8 +194,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 5cbdf39b3e6..15d20872088 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -51,5 +51,6 @@ DEF_RRR(shr) DEF_RRR(sub) DEF_RRR(xor) DEF_RRRUU(deposit) +DEF_RRUU(deposit_z) DEF_RRUU(extract) DEF_RRUU(sextract) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2a31ae17f4d..b19244e6de4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -244,20 +244,6 @@ static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i= 64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4); } =20 -static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGArg a4, TCGArg a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), a4, a5); -} - -static void DNI tcg_gen_op5ii_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGArg a4, TCGArg a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), a4, a5); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -596,6 +582,26 @@ static void gen_deposit(TCGType type, TCGTemp *dst, TC= GTemp *src1, } } =20 +static void gen_deposit_z(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + if (ofs + len =3D=3D width) { + gen_shli(type, dst, src, ofs); + } else if (ofs =3D=3D 0) { + gen_extract(type, dst, src, 0, len); + } else { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_op_tttii(INDEX_op_deposit, type, dst, zero, src, ofs, len); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -1162,24 +1168,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - if (ofs + len =3D=3D 32) { - tcg_gen_shli_i32(ret, arg, ofs); - } else if (ofs =3D=3D 0) { - tcg_gen_extract_i32(ret, arg, 0, len); - } else { - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5ii_i32(INDEX_op_deposit, ret, zero, arg, ofs, len); - } -} - /* * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i32 above, len is fixed at 32. @@ -1831,24 +1819,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - if (ofs + len =3D=3D 64) { - tcg_gen_shli_i64(ret, arg, ofs); - } else if (ofs =3D=3D 0) { - tcg_gen_andi_i64(ret, arg, (1ull << len) - 1); - } else { - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5ii_i64(INDEX_op_deposit, ret, zero, arg, ofs, len); - } -} - /* * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i64 above, len is fixed at 64. --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209425; cv=none; d=zohomail.com; s=zohoarc; b=Ms4adJKVk+V4rnJ+29owUl59hz5k+rfDYZMBW/OqaRCNq9VRdKlXNVtbxeLSc7CrHSH/UsarVFmYLViihotzi6QjT8p0TqstPhJOcibmUyXXTxaDKpt1GRd2Vas/eYWaPJIqsnSC7pE9Q0/NJlXsL5AZvPyn8VBRfbub4Slaogo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209425; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=yn7R7w3Tj0CaaudcdY/pBR/VH6O1LVkvIKXD5S3MhaY=; b=GSZATciRs3H8GkD7XQVQEQMtLg/THtO6Ra9oxprgj1UZjypm87cn1Vo71chEgFpNjd+XvJsjbCLGZhg/b7hoJ3dsZhgrH4BfWfkeaGf4B3AgbcXUBJwmKCrGHP8MDcM11wD/eHqb8fsbFCIvFbFZyS6FfDjScsbIB+SSW3iRBVk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209425776302.0759211773136; Sat, 12 Sep 2026 03:37:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5I-00026j-OQ; Sat, 12 Sep 2026 06:35:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L53-0000Ws-Vp for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:34 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L51-0008QD-G1 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:33 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2d6e954afbdso13723185ad.2 for ; Sat, 12 Sep 2026 03:35:31 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209330; x=1789814130; 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:content-type; bh=yn7R7w3Tj0CaaudcdY/pBR/VH6O1LVkvIKXD5S3MhaY=; b=WPPkFXEs3vnbvmAHeYsar+vNEhSPQjwM4DF3Pf4PJR4BMHtXWmavHSRZmdjzxhmI7A RLYa/KC7ibqT6zNvQ8rZ361wFyBV9nMiT/2bKfYZK0YDtcOiWjwUKwWBU/gxAzKpx4nY f1a2jAKw+G2C0FnUSp2WcDFIM97GZgElGf1YWjh3UzudS8sjU31Ixth+APn+RFy/bFK6 zs0ohUnqYE7pjwEa3dF/Y3lYhX/lGRNnVQ7zpGLIptM5pJTMEqvFHSj11TZTzTmsRko0 evj2seDT/vYyy+CLy8pkH4pQPCdpAZ/ZyQ5BEyONNHZCTHPXY4WgAM7k2KGFEYTRb66X xAhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209330; x=1789814130; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=yn7R7w3Tj0CaaudcdY/pBR/VH6O1LVkvIKXD5S3MhaY=; b=kYM38Dr039nvilSfWQoaK3jcLlm/hzHEmI5aBiSby1i0T82qXJe2SAM2OUOCz/QaSz eCk69L5zJJpjrgMbvGQrKFegZZJ7R843hV8u90FyjJA9PnyOfapWaQfQks+3lACADpHz /ouSE7EZ428CMNUu9l9qlJWMagKZHGEsbMF+xldCOWWYwqJq0wiAyK7H4inguVTGZ3yx 9Anpa9x81nezkDcvVyT9/JF+YIKOWvqWiH5aayaERuKPVIsECu7GxYEVXF2bMoinqrPf Jtof6Ivj3O7DcEoIbuFo56L2Yzz5MMOQGYcFz5PDZ/dCwcGunYmny3JOXHgsIgGRBRot /L4Q== X-Gm-Message-State: AFuF++lP2AfzNp2gVDRmsabtHMKSBNlWK7BHMTIdzPEynUWXyi1jXICp nNUz1nsyJi8fHQ5p2YdDbAg5ZvKJJQ/XhQtYcO+A31WIVeQSjGJ8V7uH6nOWUPbLAQ/LJBv4tEe 6Zzi8pD4= X-Gm-Gg: AYBFou1KCAQIkEJKkbMZpWSXzFPhroC0wx/YuPmmUNFcDzPJ7NUnxYS+fBE6Qsjp2dK 2BvgQm6zRE379TPNEZyVfhfNlCIRz+C0q6ZggER2JAsJ0jmtUr9kw/uPivof2TbitjzwkzQVgwa FVRBh37FvHr+mnQhbEpc4kM8JuseBFem38uHsPgyYkDh6aSNmTNQu0vaPQjaTV3/IiMypsvIHcG 0BZ44A05SIuWCjh2WHEJQzKjswjICi9eeSyHzCvmCh279YbwO46XZTiRsSmsgv1zr1DGuKsEq8P nAVnZgXQl5cC3ayDUx3M9zWiUNCkSvrsKGkqWcLAyccjEDc2dZq5DZngL8oZBJ9SIYXTRPlZPP6 gsq7hxXAHg/aEma3BczM8PwkirxKFDA9eX6oHSJv/QOyglW3BPhq2ukwOCetEWbcz/GkzyIY4aD 9Uz+BZP7By3+HSPmBmNfROpt3V9vh9OTVx7qQJudNE3F93Svb9WPgfHP5bZiO3fV9KNt4ksXw0E iqHgNc= X-Received: by 2002:a17:903:8c5:b0:2da:eb8f:b4e4 with SMTP id d9443c01a7336-2dd2a1dd9e4mr133774025ad.7.1789209329907; Sat, 12 Sep 2026 03:35:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 63/82] tcg: Generic expansion of tcg_gen_ext8s_* Date: Sat, 12 Sep 2026 00:31:07 -1000 Message-ID: <20260912103126.598030-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209426675158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index bd98d2bec41..1851577860e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -162,7 +162,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -206,7 +205,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 15d20872088..9174fd3db63 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -12,6 +12,7 @@ DEF_RI(movi) DEF_RIR(subfi) DEF_RR(clrsb) DEF_RR(ctpop) +DEF_RR(ext8s) DEF_RR(mov) DEF_RR(neg) DEF_RR(not) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b19244e6de4..756492548df 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -648,6 +648,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_sextract(type, dst, src, 0, 8); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1314,11 +1319,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_sextract_i32(ret, arg, 0, 8); -} - void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_sextract_i32(ret, arg, 0, 16); @@ -1620,11 +1620,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_sextract_i64(ret, arg, 0, 8); -} - void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 16); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209365; cv=none; d=zohomail.com; s=zohoarc; b=eqHJ4pnZxE/zq/iB6VJgSpuXVaa1aupCPv5Iwmm2t5z042tf/jePlVXJaktPBsVFbO17SrTp8v073RaPpkYMqLvNcNu4LEaYlnyZgxw8QsJWgwgKLsO4+/5XpWMryIuDw2e3/3T0VZ5oFTd26zVDz1R1roglVe+jzVivkkl0J54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209365; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FMezBfWh0T1f9Xgh+I0DAAlpbdPSUWlPZxpdljX35x4=; b=kR+FLMI2YOu3wR+MkDa5n53MGH061urbSWcoV1Se0SnTsbZ4hEg3hhjJLZpZkqHDVvqs6wyPx9sHR+njWWQHUPE/q+EAkzi3+XrZb54L0spD9OJsXAgmzWXyw54qSzhkHZsNcdNPyJx6SJSG8EB8p0kc5+EY2UILiot3dcaBuII= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209365047620.0319115201771; Sat, 12 Sep 2026 03:36:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5G-0001ku-8l; Sat, 12 Sep 2026 06:35:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L55-0000cl-Az for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:35 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L52-0008QZ-N0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:35 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8520161fdb9so2010915b3a.3 for ; Sat, 12 Sep 2026 03:35:32 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209331; x=1789814131; 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:content-type; bh=FMezBfWh0T1f9Xgh+I0DAAlpbdPSUWlPZxpdljX35x4=; b=GPOuujD2Jlro0Rb7OArZzpKZOQcJyVcvCOAH4eek7cPUPkUMf+UK1rTDuVYtOmaFA+ xV5Uj0tuVz0gYTwL054/ypWbe/gipHHRPpGBC2hZFTnb7pElWMFe4JKAyQEdWF62QXOe ZikbbbYx9cDlFXrJjzXxLh+PTnOY/wvD+OmbligryNEjvni2p4mIUCYbMQnbKmBmvWIv qvlSzlTHJDGwoB6qnAzwdrdu+/rOUmsltKtm0b6/Wjy9VuW0zwhUfZTIpV/d3czzHPaU /1r3EGomFZDj3CtUBEufVyBcTGKQVP2gKjr1omMS2nIBRGOXV5tybXXgX6YoyA3mxwQi CSjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209331; x=1789814131; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FMezBfWh0T1f9Xgh+I0DAAlpbdPSUWlPZxpdljX35x4=; b=aZM4juzxp6KpivQgpmbuJuB9OpLgsHEBMkmw+ksVtS80tX5GKcgLgn03env6X90QdX WNDZWrCLmmh/LFQVYlTmhep3oMYEP2UWE7u9zxGHRJNM+HoudSdXxaEPQFLL/PZh6sMx aJ9qyRuEyZvTiqZ8D3ywrW35isM7d+ARu4hy7MOM2zwfNfuoEJv/tNYyrwD9j7dkqbtb 5M2BoZFlRIhZG90n0ZlJGgHdW0Bi1FtbuUe1mChRZYg31HajJulkkY+T6CEMIsR/Ut/c DvatI/q32aDk5Jm9wpK4evXmVWLnwwwms5Er5pMus7JB2XYGZ7f1bej8FeSSYGpS5F3L fbMQ== X-Gm-Message-State: AFuF++nt1vokBEJ2V0XSbg8Cx35mtLjGZCKqUPDOIwRo0BTO/Tu6cfQo +IyKVD5NriRzlUNACqgEbtnKbUwuRe+aAZlgAQAi3hEZb81QTf20b5sXxOGMhLRh/97npA8ZWOf 0zU8WAvw= X-Gm-Gg: AYBFou1CmqFMs5Go8i6ek63pEDrd5yoCMMNgweVMJoaHccGRPstCxLRo+/e3DPV0D4M WEtJTACkNI0LsNqGYeTQMzlcIDtj2BPH9P3CnnFgxawjUp3jYlWrfcs1n0on6UjWLESvCjcq0fm O+O3XoG2FyZHmfM8EXbe+bTGcH0VLocVRrE1S0NmVkQCffPnngmIY3eTEYAmi0HMTUK7hm11sjL xbMZ40dgCZ+Pe7IGBOUnVB++38FUVyNeyzOlW9a4RTVzFgLxA3SqywbLhR80wZW3OomkzCvk3hT nMdIDxmMvNXqkZB2d3HEDZ7B+EcTXko9JIDTOuOMvmplmpRZiZz/lzX9zY3EyGKPLRm46Q76rhY j0Hu66gk6t7T1slCGKC+kstq20Lm+456t0WyhkKXjZrOM1UJxSB8Wq9LO6lG/EelLpikpLTLlCx JtHmTBM3hofVx3SZa+ASso9PAxA6q/AKuu3e+CADmMP7boHUCtnZBePUUosHmlQFcj7pU6yt3UT OKd/e85ewcx3X6M9w== X-Received: by 2002:a05:6a20:9147:b0:3d3:ae50:97cd with SMTP id adf61e73a8af0-3daed880077mr13793994637.26.1789209330887; Sat, 12 Sep 2026 03:35:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 64/82] tcg: Generic expansion of tcg_gen_ext8u_* Date: Sat, 12 Sep 2026 00:31:08 -1000 Message-ID: <20260912103126.598030-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209366462158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1851577860e..25464d67306 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -163,7 +163,6 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i= 32 arg1, TCGv_i32 arg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -207,7 +206,6 @@ void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i= 64 arg1, TCGv_i64 arg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 9174fd3db63..05162cdaa87 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -13,6 +13,7 @@ DEF_RIR(subfi) DEF_RR(clrsb) DEF_RR(ctpop) DEF_RR(ext8s) +DEF_RR(ext8u) DEF_RR(mov) DEF_RR(neg) DEF_RR(not) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 756492548df..7a617d2093a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -653,6 +653,11 @@ static void gen_ext8s(TCGType type, TCGTemp *dst, TCGT= emp *src) gen_sextract(type, dst, src, 0, 8); } =20 +static void gen_ext8u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_extract(type, dst, src, 0, 8); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1324,11 +1329,6 @@ void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) tcg_gen_sextract_i32(ret, arg, 0, 16); } =20 -void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_extract_i32(ret, arg, 0, 8); -} - void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_extract_i32(ret, arg, 0, 16); @@ -1630,11 +1630,6 @@ void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_sextract_i64(ret, arg, 0, 32); } =20 -void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_extract_i64(ret, arg, 0, 8); -} - void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_extract_i64(ret, arg, 0, 16); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209424; cv=none; d=zohomail.com; s=zohoarc; b=mcdol7BGOwKatuSPJ311ZXCABEDuX00xUDx6MLTw5UZvz8gaj9wdc1VPvv5746dBunLyu736q2ngDDd4aNZsp5KsJQF513AghuFAh1vBXMDYIC/izCUoecD3gUSm8wUGrKYq7JmqSBAw7CRRXYGOnKy5NgLmhb63ZnrY6fXfFT8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209424; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZUaOM8ch/eTmMYg60Xwfk6svanahlG07Mhbjk98QIEM=; b=LaGbD131EaWhfDtNl/CZkiYtJl+Mkw3vwfZY5z7nbR4StGMLMyCiBx5XtJrXwnfDiMlVjCVshnmG5wfoSbfuqdhNb/QOx8iDfuHk8kuCgdTIFCWhblReGs8XgoaY5zIHY74TSpkzYuBPohywudZAoy6YJEqk85b/Gx3e2z+piLY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209424304297.13824790844205; Sat, 12 Sep 2026 03:37:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5K-0002KF-Fq; Sat, 12 Sep 2026 06:35:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L55-0000dp-Dt for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:35 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L53-0008R7-AZ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:35 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d747ee1f38so7784515ad.2 for ; Sat, 12 Sep 2026 03:35:32 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209332; x=1789814132; 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:content-type; bh=ZUaOM8ch/eTmMYg60Xwfk6svanahlG07Mhbjk98QIEM=; b=AjO5q0Egc3XzMT4hqUsxM0x6tdpJ5ZIOBOB0WJyAubBYBYA1J9UPBPQ+UV9G/DGkp2 bmUkAE5MBPlqELLtbO/OSSeHNAdBi84esysLp99dgL85EWjrFtAgSlyg/GN2QrSEY1wX Htk5Oxz7SO7wvNA9KxP7Vg4jUbHmE8BlBXiZ6SFxzNKFItMN/FG/MLrDP4AKxPyTzGop Lvq0nDcHfS8bJuziHNCDtaClyhBvodlKIm0fCt7Iee5wi41jk81nESk0cjoEzZu//BwP gg6sj9xlPsTd7/AqdgbQKRrHVCMxIIQ2V6alNHXoIm0XHg/dlR63IPGv0RngYExPgHBU NEXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209332; x=1789814132; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ZUaOM8ch/eTmMYg60Xwfk6svanahlG07Mhbjk98QIEM=; b=Qb6w6XXrTnwZN10O2BZnh+M6SnZWmpKwv7+2zTzntZDd4qR+t8/XH4BLVE5Ut1IG+o TQjXZS4Qd14Oyvd6NTigiNrAzJIOKkX1boBvA1eemXcIEjbBesmKYnU+VjoU20J+e3KG mlaTgRwdogpRFjziKlAiFCMhIQmjabm0G0LRx7E6fzgjgypbOp6bt/Ad+3Oib3fVxBkD +K0J3ItU+lyobBcqpe9J8iMH1XmL6Z/+ECnydjBupe0L990iLQEqJRUZpw41zMkHek1a AjxafI10+9FMzKrSbJfoFw2QZ9+aiNOSzmxPTJaENfoKO+vzpP2ULBTeIlEZIA5hzpjh UC4w== X-Gm-Message-State: AFuF++kzt/ntmTwJNl92eL/QX/uCK9X+VWXZp3jIKAuZRA4HR+452wdE 29YmsqcCCliKbEm23ObjJgxm/m86jecWmSk9wsAgYSrZJM+YrllD2h7MkH9eAQ+YfMjZQVXTVyH nEmuYbBc= X-Gm-Gg: AYBFou1pkM2JNtI6JCWKXe8exmriJ9uUdewnN4Z80Nf/LnGeRZLkQNaIYZYkYGqF8g1 sUbRQapytsVTAuI5j54TOGjfftkAl22VuGw8fU3zj6EvP+BiwBVeD5L4Pp75lGmtwHGkF3W+vA7 p2BIYAKnqFDXtaViTm7RgNripsfi0lRnAyl/hNvmeR3ZA9YjNCaLaexGmkSXUWnIKZT+3H4QjqH 8k3Tr9oExmgaRI/vvnWamFNrX1W3FxoxxNOfrqvB/FR3oDE37k4XKVQLhLuYOvi8QYvqCHw0Jps iCL62lYQ35ICFxPy8/bOQKk0SBy6bS9MZ1PgEF2ToHdYCFIrpmb7Gfu8gZVbcpZW5KHAwTrp9TM s4+jnMDSaXBXlJF0nS+R2CDGwKIbLXW+CJZi4vGCodwidsgF6v3z0GG5pGtOHx2yYo/AD73ttLp Cpz90q0V52mWD+NIJr+1z24X4fA2mpMpxDoYdaD35i60qObVpdwV2J8gJRaHH6lxZRlbFdeZMnb ZrlMo0= X-Received: by 2002:a17:903:1508:b0:2d8:d4cc:be62 with SMTP id d9443c01a7336-2dd2a35aa10mr162573705ad.15.1789209331948; Sat, 12 Sep 2026 03:35:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 65/82] tcg: Generic expansion of tcg_gen_ext16s_* Date: Sat, 12 Sep 2026 00:31:09 -1000 Message-ID: <20260912103126.598030-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209424589158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 25464d67306..a7edac63f69 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -162,7 +162,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -204,7 +203,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 05162cdaa87..3a8b1307b10 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -14,6 +14,7 @@ DEF_RR(clrsb) DEF_RR(ctpop) DEF_RR(ext8s) DEF_RR(ext8u) +DEF_RR(ext16s) DEF_RR(mov) DEF_RR(neg) DEF_RR(not) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7a617d2093a..3ef2220e424 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -658,6 +658,11 @@ static void gen_ext8u(TCGType type, TCGTemp *dst, TCGT= emp *src) gen_extract(type, dst, src, 0, 8); } =20 +static void gen_ext16s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_sextract(type, dst, src, 0, 16); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1324,11 +1329,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_sextract_i32(ret, arg, 0, 16); -} - void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_extract_i32(ret, arg, 0, 16); @@ -1620,11 +1620,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_sextract_i64(ret, arg, 0, 16); -} - void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 32); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209405; cv=none; d=zohomail.com; s=zohoarc; b=LMb4cj3YAkRVt8v0iDwa8ccSRmKt5yUXgEfxvNkbF2YOA9qPJOm3MpDwFzIthY4RVyI7wV7pDCIF6FCvjm28phDpDT2moQfDIaNuEYqdgqhdk+wMCIN51qpD9rEheWb+qY8wUhdh/jerBZqdpShhJUed3kiFNVCl+GAy/diyOrM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209405; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=zc4+IXTuCi0YCziCJv8xnw0ywKGucD+a7A26Xp2UU4g=; b=SogY7RwzrwI7SH6muBjNHvDU0b4Xqif+5XhMcH2ap9KDnW0OuKNb23StRUjBfa3Sc0CubOXVOUSDX+6YUyAuWSX9zhAeF4mxNwKvXuaM4Jsu51LiFZ2oLNz+r6m/d1PW2LpHvrpJYNKeVqDX+1mloDVnFoDz9obULcFI7d+S+6s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209405852739.2838049365708; Sat, 12 Sep 2026 03:36:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5E-0001WX-43; Sat, 12 Sep 2026 06:35:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L56-0000h2-3t for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:36 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L54-0008RV-Bg for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:35 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-cc147d86bebso2075159a12.0 for ; Sat, 12 Sep 2026 03:35:33 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209333; x=1789814133; 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:content-type; bh=zc4+IXTuCi0YCziCJv8xnw0ywKGucD+a7A26Xp2UU4g=; b=H1C98Hkqh1fyqjGvlAPRH9iFIxFi53fROk8sm4zMCfXwZuvTocM2FbYvZBvIbiDPAU gj2IqRJ7QqKoUT8z7Fz3ggBswxZ3oP7Dx0TQ5H0l4h1A7Qz4FtLRfdWOA0GJn7kjlVas i7yz/UqnPj2HCbnLm/r/jgDdi3ptH4VLUIRfeoaFggLgYLjRioUMQbtscjeMIpUr4ZFp 9t4S27F9ix7GKQlf9OKmO1EKFCzGkp4Okw266hGanMjZRlOHhn2l2H5HLWfOim1/lSk0 ugFsl6Cc10RLIktAZq2ifeO2fEorqRa8ShfMlj846AwbANXlP6MFHNYt5uut2xfOUfwC 6ZSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209333; x=1789814133; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zc4+IXTuCi0YCziCJv8xnw0ywKGucD+a7A26Xp2UU4g=; b=CgWW1l6Us4uY2Zlbqo1vtTsEbFV1D+KBG6ip1/6TLaruJ3vIwRkJSVjvqDBXHmOPgD 7Tm951skXKi+y9YFAAdqRWXqyTtX/oMSsjz2dCyq5vaFYqsYU+xFze6wmeR0/hoxWfpw yP2Elf2KrgU5KjrPXJFY94Bn3HyV8c1y7skK5UFZow0IfrzGd+1tEXtcqvUaA3OD+9/M mGSsi5kWga2a6jD0NDOiOpA5wufJZQ0mVGlzOBUUUnhZvb4P3y3TSuaPS4dcx3M/YzMI 1ny4oVNmZ4Hhw4eENt5JigHLwT+GBytWsrg5YpFX4YS9P2LeskXd3OzBIxg4pYK+BSfZ Nn7w== X-Gm-Message-State: AFuF++no/gWUvYOR1pe4YPeTOYDgY1lIK6/6it5iJCit0cWoH1EzmGH5 9RslnVvyf5bISm0idcym2TD41ZlJ/U87uhUdNiLoeHpX4M5CTQdA+O40iXQi30Aexm4TW9XEASa Xv7BuY8E= X-Gm-Gg: AYBFou2ESSfpx/z9Jc/FwYi79OhHSrDFT07b1HXrjdXVi7O5coZSCG7B8mOVSMBsz7j CzDHDke7z+BaP7YOHEWxc/s71tQWnqdYoSpqQDJ+Sr8UQJrNMVmW8sbf1v9d1bPjlQwm+n2NKQM SX87TGwGXJFCfO8Q/XzcGlYnTi5q7Tc2ny7wEZKz9+erhyfdqYy5uVpm8qeVgYxdMuSmgIx1YZD VZpzmIufD4sI3bUhzk8lmx4408yuTou9t1UT64W3N3PbK4FwzeR7RisYfrNbyx4RQo+XJpdLTrO k+wfx0ztFG8O4r08YFVZ0JswfNwGv9cwZFEYmILCstm3wFIrpcu21DGkQAuzXdLziZYGENs3SkD Py+SSLt4kF0J1KNvXm1YeRZnhGkJHj+Dxk7VZITIamALSPryR8rZTx2QujLcyqui1ddVz4JfMEF BdSATbZ5IgImn3Kuf4E25M6coscamP6OgBy9cVqB8lo7/3Y2312QJqVHaqiMpYaDSCtgPcCLZzn gW9QNh6 X-Received: by 2002:a05:6a21:ae09:b0:3da:f2e4:4ac7 with SMTP id adf61e73a8af0-3daf2e464c8mr6251618637.26.1789209332871; Sat, 12 Sep 2026 03:35:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 66/82] tcg: Generic expansion of tcg_gen_ext16u_* Date: Sat, 12 Sep 2026 00:31:10 -1000 Message-ID: <20260912103126.598030-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209406554158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index a7edac63f69..5dae5ce3b2a 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -162,7 +162,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -204,7 +203,6 @@ void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i= 64 arg1, TCGv_i64 arg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc); void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 3a8b1307b10..e4b338f5e64 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -15,6 +15,7 @@ DEF_RR(ctpop) DEF_RR(ext8s) DEF_RR(ext8u) DEF_RR(ext16s) +DEF_RR(ext16u) DEF_RR(mov) DEF_RR(neg) DEF_RR(not) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3ef2220e424..f0ab8e643d8 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -663,6 +663,11 @@ static void gen_ext16s(TCGType type, TCGTemp *dst, TCG= Temp *src) gen_sextract(type, dst, src, 0, 16); } =20 +static void gen_ext16u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_extract(type, dst, src, 0, 16); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1329,11 +1334,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_extract_i32(ret, arg, 0, 16); -} - /* * Internal helper for bit and byte reversal. * Given a repeating matched block of 1's and 0's, swap the bits within @@ -1625,11 +1625,6 @@ void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_sextract_i64(ret, arg, 0, 32); } =20 -void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_extract_i64(ret, arg, 0, 16); -} - void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_extract_i64(ret, arg, 0, 32); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209411; cv=none; d=zohomail.com; s=zohoarc; b=M+gteAKj0qDYgmOfdTi86fl0NurN1al4uSWhh6SRmfqkSZuuSx++CvxGIgIDArqfQScyq0A5Kn+UwfWi8wcDlo+mOCfwQNBKUEQkv4n+vRSNZ+JmQB1sGdqD7lhVavhiuqtMpRudJ//8z6beV/11K81z+RNfBi2ruSuQKeMha4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209411; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=dReCs6a/7zx4llAzY52vfCEC3/VaC4cw11nYAiX5JUw=; b=X4/Fmsz2ijdYvQ6HccKVt5yUWRh25XfIi7lgavMBA4U4572az+M/QYJT+89HuImETg4Hj7KHXriGbpiSz1KsZAX9qSnE7ztjf5hnpGrN4dsoyylMmqHdOkM1BquCkx05iTWxa6zHB/ZHwy8tXRy+3WjjyGkAoU509fbBlrZCL7c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209411623284.85406034495463; Sat, 12 Sep 2026 03:36:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5O-0002c4-77; Sat, 12 Sep 2026 06:35:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L57-0000n1-53 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:37 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L55-0008S7-E9 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:36 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39dbdfaef3cso392092a91.1 for ; Sat, 12 Sep 2026 03:35:34 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209334; x=1789814134; 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:content-type; bh=dReCs6a/7zx4llAzY52vfCEC3/VaC4cw11nYAiX5JUw=; b=XgE4+STy7k1CMjVSJtNdLyUX3ucZggFCg3cfUCRQyII2+bgHGu9taj0bSKLoKCw3r0 TKOaJ+ckNVGl5Vlh1/vhLJgh3Lsd0Glcim0uwD/xnp7Qew5WoF2+HPvX+Kenl+Kx+1jN XpJRpXZhphroL9yfj/TxT40LM12+eV3mSdxBNcqtZA1egaBbZrNpNSCwMgRkdSKVKWG6 f5pq0z0v4tC6P5PyBA/r2wp96881jMSqnEzSc4bJXo9KhT8+2XtmI+j79QRtn5/f2UYV jqc8a/TINQMqXo1l4i599cSFoHz4tdAl9A7iPKv+H3d9wuCDgXCiYqQ3cUy8+GpeI5T2 V9ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209334; x=1789814134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=dReCs6a/7zx4llAzY52vfCEC3/VaC4cw11nYAiX5JUw=; b=WGV94gP8be9TrRNNQGy9Wj3eQDX4SiAj22M29pLJVK593r9t+oOiL25VuGH11n2DU6 fSPOmUDkJnkmItf9OGlxcwiEdS+JWe6otpklI5iAG3fN2NT9RfZKrI0ufUZWmV7uh3Yo YWq7+jTSw/6ayYS1eGHIwLneMMkYNPefEl9yxXw+tP8FfJKzUwAaXYut42/g/LhNbZKe Kmu9n60K+hgCn7ILeJ8gygTwo8bnwS3Sg2upUL8/4HfijHyegktwDUTM3B7k/N0Z73qa HPFddIh7Fv3uLyxii4nws9PEKyxqvr3cyYvYp9FesTXQSEDyg22Nra3wCP6czCsoAUjV 0RfA== X-Gm-Message-State: AFuF++nfcHiZTbPtX5Gm/5XZ12M7JGZmKoIYErsyuU8Ucn0EkWo05hzp c4bPTVIc8nK0QEm3S3zNqlaCKrEujOW//0bx4jYBe22xez/dFgGPqT+kmAkhu3EpRxjBUFJ6CIE E/oTBsHs= X-Gm-Gg: AYBFou1ByLTy4fvOg+WL3jpKx07rQDJtkYMwGBNlCkHFgk92dyFcgIWpoLFl0mrxzo8 XPdMjkqkLZUAZ13UeZ1MqRb7r9NZNXwJfR1qt5pZ+IooeUMUd+z8V6qtzR44CNABgM4V6PgWCh/ nYNDwngUZgVWszNW6CbBnqMLnqdKm1qMvkYy4S7DjblmwK8XngzHBKd0GYNIKdmCsNz8iJOeKAE QhTviWqeodZvJgyJOmg01LQQ71+d59+wvLVkQgbcxIExHPuTty8EH/BxZWokw/RqjB8fwu5C7v8 99nrQRJQCTwqEu2v6YN+eFJ3uN95bdY4dNGa98q8lmF8O5KhQ2G699G0FRyZCFMhyBCwv6KQgG+ 3vf/DJ29/gu1Mh7rDO+4o/pNCOLLiofVI704nZXsDdFBgCOO1Ocb2YCBJxOBu7qndLCcxwTjb2P YTB3AdlwwMYlqClS6q7L5DasuLKfRboZYQ8yWnICQoZ0E39h4JOHY/V2jJImWXK+DIV8wP807NT OTGu00= X-Received: by 2002:a17:90b:4fc5:b0:398:9be8:ea65 with SMTP id 98e67ed59e1d1-39d9c227639mr15361419a91.18.1789209333870; Sat, 12 Sep 2026 03:35:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 67/82] tcg: Generic expansion of tcg_gen_ext_* Date: Sat, 12 Sep 2026 00:31:11 -1000 Message-ID: <20260912103126.598030-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209412694158500 Content-Type: text/plain; charset="utf-8" Move from tcg-op-ldst.c and compute the width of the extract instead of using a switch. Signed-off-by: Richard Henderson --- tcg/tcg-op-ldst.c | 54 ----------------------------------------------- tcg/tcg-op.c | 21 ++++++++++++++++++ 2 files changed, 21 insertions(+), 54 deletions(-) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 22211ccb452..031c5ce926b 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -760,60 +760,6 @@ void tcg_gen_qemu_st_i128_chk(TCGv_i128 val, TCGTemp *= addr, TCGArg idx, tcg_gen_qemu_st_i128_int(val, addr, idx, memop); } =20 -void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc) -{ - switch (opc & MO_SSIZE) { - case MO_SB: - tcg_gen_ext8s_i32(ret, val); - break; - case MO_UB: - tcg_gen_ext8u_i32(ret, val); - break; - case MO_SW: - tcg_gen_ext16s_i32(ret, val); - break; - case MO_UW: - tcg_gen_ext16u_i32(ret, val); - break; - case MO_UL: - case MO_SL: - tcg_gen_mov_i32(ret, val); - break; - default: - g_assert_not_reached(); - } -} - -void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc) -{ - switch (opc & MO_SSIZE) { - case MO_SB: - tcg_gen_ext8s_i64(ret, val); - break; - case MO_UB: - tcg_gen_ext8u_i64(ret, val); - break; - case MO_SW: - tcg_gen_ext16s_i64(ret, val); - break; - case MO_UW: - tcg_gen_ext16u_i64(ret, val); - break; - case MO_SL: - tcg_gen_ext32s_i64(ret, val); - break; - case MO_UL: - tcg_gen_ext32u_i64(ret, val); - break; - case MO_UQ: - case MO_SQ: - tcg_gen_mov_i64(ret, val); - break; - default: - g_assert_not_reached(); - } -} - typedef void (*gen_atomic_cx_i32)(TCGv_i32, TCGv_env, TCGv_i64, TCGv_i32, TCGv_i32, TCGv_i32); typedef void (*gen_atomic_cx_i64)(TCGv_i64, TCGv_env, TCGv_i64, diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index f0ab8e643d8..5c6e3a75224 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1186,6 +1186,17 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) #undef DEF_RRUU #undef DEF_RRRUU =20 +static void gen_ext(TCGType type, TCGTemp *dst, TCGTemp *src, MemOp mop) +{ + unsigned width =3D memop_size(mop) * 8; + + if (mop & MO_SIGN) { + gen_sextract(type, dst, src, 0, width); + } else { + gen_extract(type, dst, src, 0, width); + } +} + /* 32 bit ops */ =20 /* @@ -1207,6 +1218,16 @@ void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al,= TCGv_i32 ah, } } =20 +void tcg_gen_ext_i32(TCGv_i32 dst, TCGv_i32 src, MemOp mop) +{ + gen_ext(TCG_TYPE_I32, tcgv_i32_temp(dst), tcgv_i32_temp(src), mop); +} + +void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, MemOp mop) +{ + gen_ext(TCG_TYPE_I64, tcgv_i64_temp(dst), tcgv_i64_temp(src), mop); +} + void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209419; cv=none; d=zohomail.com; s=zohoarc; b=U/NA+LJrPk6suKTUlMJkBNUDoCZn/jagp10piHZ2R/5wBFVi3jkzh5rjNccfBueP1MN784A0DAzk8iWfV0nPqVMOyXjlzJYHDVOBHXioqqnoKzdgtVSP4/HswH2ekcZcnGPtN0BRUnh/c3Vg2MyIIUf7YY++ul2Zc2M8tccETj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209419; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=7lFqiKrKjbt7dUifdYdfSfb9Z6MPEL1UJH7wZb4BeQw=; b=GPG/v650LdabRkBcb9Ok4f49JVq1etmxI7iH6+T3+eTQFzald5mtT2KGTLrB3yxy4gwrpTqWCEsAJTqfAGamNpF7hzuerypbxwbafPQQrwKv+AyaS+waUni1kbwuOOMDRHlduliRdiSx90lWn3IQMzg0rPQVC7nBNAF92S5DLow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209419821991.234231352004; Sat, 12 Sep 2026 03:36:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5L-0002OW-9U; Sat, 12 Sep 2026 06:35:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L58-0000uu-1V for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:38 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L56-0008Sd-9X for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:37 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2db1ca069c8so3645015ad.3 for ; Sat, 12 Sep 2026 03:35:35 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209335; x=1789814135; 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:content-type; bh=7lFqiKrKjbt7dUifdYdfSfb9Z6MPEL1UJH7wZb4BeQw=; b=J+xeNETPZwc5H0P8DCS2lXrDKiCcyi4eulsCTOGgOkw7xBwyWo4/MzrSNJuGk6ZU18 Ni6yj0St81E56nmMTNFiAzgvR8T2gGGZ33XNtIV7GofO6smsd9R9Vbo7MvyPXcxFsCfB G0KUIsYipmIJRM51WGAKr3PAXksOJmb3r5znX7zA798nGk5ZAFPVY4viyuyhKBrG6Cx3 0zwsAY2yLoLDjJCtnsO/XF/ydrkNJcp9lbCol5L6AXzXOqOnl0WClXEpZbq7tjuvXvyG slCCWzMjjTuMcrdcN4T8tpU9XD/jydo95tQ50P04iGB6kN7g0x1yva44gdPP0Zw8KUPI sL4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209335; x=1789814135; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=7lFqiKrKjbt7dUifdYdfSfb9Z6MPEL1UJH7wZb4BeQw=; b=MARLOXPhhRK4AWiEWZv3RBm9xKJ7Phc4WTPQXkP/BcSeJumpmfJSUTS9oTL/QdXKJJ Wb4EnHqGHKGVi0L8Ln4ZNkYCYDgFTxUnhRH52RhwDN6REgolzoOUCvcoKnFm288r8Kmq ptJfGUuep8qcN2bSnQH2XSBQFo4aCh6rmKcFcI81qYMkotFY8d8Z7gfBidBQJTzMEA/E tv+wFHDN9+rY6W//LBy0AHeMMPoeb92pM65XnphhBvTtqp969GMBmdek3q+71ioUOvpe wwKliQ+ETTDEWMAO8BGRT+WCoLwW3xeY1WfPBzFCMCG8Eyjvb6YTaYjN3Niq2ABc2cff JxjQ== X-Gm-Message-State: AFuF++mvPDr+Mj8dOIQRlU6QcUz2UznB6mvqr31jb7Og8h/YBS+YVv+R tleO9O6g8MmFShVXSJiA729kem1uXQRLS0WG6O2Pb7BUi/J+4eiTwl1Wyqzv2fzCzcYV7Kuj5HQ ahwpJObc= X-Gm-Gg: AYBFou2uffTGy3sJShXqt842veemLMtMrY3Ww5La0C/v51/ZbHdw7/QZu0LSQA3Hd4Y JlUsPobHs/0d7uXtp62OTNpnQp/FMeg1XnF268XPz1hSZg9tuLqTkqbfIIjfW/SZ5aiUwonu4Jf N3fxgQ4h5SiIcUwA0YvAnTMEzA9Jz8s6AGz6jDojqWy0GhzbLejBBJqaK3QoRre2NfyYMlNMo10 ZsvrQa5Ur120HmaMHsunPhzGjdGeizAroRGK05MQYccm1qkHNU34mmdtTIkqnvuuTCF06sRK5// k5UkehHGyD5+jQnErdj84ushHqd3G8VgCbYx8VIwodwQEvnsFb1U7O4VT0OdIg1BKeb2FuWsp0P IWq0QmgXd1aK+rcweFb+dAVRbwqS57b4lxiYBERSwRX0l5wMetHfxCVf4D1Ta1oMtnSA5PtKPY9 OXj7JmiYNXT0nV67a/toMGYJZX/ulPSN7pliicIkkVldVkQxKyKEF35exUBXfh4DSswmiRubdG1 W+eOCQ= X-Received: by 2002:a17:903:1a4c:b0:2d9:464f:d45f with SMTP id d9443c01a7336-2dd4bc33217mr40057915ad.5.1789209334871; Sat, 12 Sep 2026 03:35:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 68/82] tcg: Generic expansion of tcg_gen_smin_* Date: Sat, 12 Sep 2026 00:31:12 -1000 Message-ID: <20260912103126.598030-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209420573158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 5dae5ce3b2a..f5c9248fc93 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -166,7 +166,6 @@ void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp = opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_smin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_smax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); @@ -210,7 +209,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_smin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_smax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index e4b338f5e64..f616e27a228 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -52,6 +52,7 @@ DEF_RRR(rotr) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) +DEF_RRR(smin) DEF_RRR(sub) DEF_RRR(xor) DEF_RRRUU(deposit) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5c6e3a75224..34f1ee060ac 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1073,6 +1073,15 @@ static void gen_shri(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) } } =20 +static void gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_smin, type, 0)) { + gen_op_ttt(INDEX_op_smin, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_LT, dst, src1, src2, src1, src2); + } +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1487,15 +1496,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_smin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_smin, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, a, b); - } -} - void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I32, 0)) { @@ -2027,15 +2027,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_smin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_smin, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, a, b); - } -} - void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209430; cv=none; d=zohomail.com; s=zohoarc; b=XejDq+Iy4HOhRYOAD79/BUk0s/Y9v+Z0jiORaYz69GOrwqzxIcKPNP/SZtNk6lDiKjofb4AKkfzYdwifhmGuWj2zSzp8aCg/Ws1f4yo1soFd8sxbpFTVIFI/j1ctr9fwEzakGm99tm+Se9XnCnLLIfl50CSNsDoJkDRM8nd4SUE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209430; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ldWn7snxHOcB+mXrFkvAGABF21kvv1rR3g+gRwUheG4=; b=ZTXi1/S2t2w0NdA0ZXRUPxtHBD1BjM0dI0Ft4rI+rvx4mtVxvpomGjham0G5Q/+7kabLh8JAZ4Fok4ApdKdpd/xg2b9OL76y3HUmZCcTNAZyVoOPEqNQGOya2klclvJJqJrj+tiXYQvNuRDkYPYXavp4MFhHNBEEVzXjk0jcqeo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209430271819.307877825188; Sat, 12 Sep 2026 03:37:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5J-0002CT-Ai; Sat, 12 Sep 2026 06:35:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L59-00013E-7T for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:39 -0400 Received: from mail-pz2-x1f.google.com ([2607:f8b0:4864:3b::1f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L57-0008Su-AS for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:38 -0400 Received: by mail-pz2-x1f.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so262541a12.3 for ; Sat, 12 Sep 2026 03:35:36 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209336; x=1789814136; 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:content-type; bh=ldWn7snxHOcB+mXrFkvAGABF21kvv1rR3g+gRwUheG4=; b=aKg5+BPXkUVExR+p76/9mxLXQ7VYOryIIh+dJR58GH2nDbwJZcRIlsIxF+Szm3eI6H wnOJwQbkUxACpsoWBfYa5qOuixBo7kbfciiVjxx/skGT5CGNPPOSh91oQiCk0Bd51mRm UnTTsq5liTy1hXukoKXq3x1WlJOK1zrqeQACNTqA3FqQcUvZpTArr0ny5/eK4fR25wOp 1uyJEcAj6XbNdlyFyZdIJCBbcUoJP7PQXuXlUqBhFbZ1NcH86Ixh615NPqcnIroJFDzg +3rrRXUa3c7bQDyK2lEvrxaCExhLY1jBuec3+hg6x+srKButsciiP/KW6lrB2cK1nIE0 VUqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209336; x=1789814136; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ldWn7snxHOcB+mXrFkvAGABF21kvv1rR3g+gRwUheG4=; b=OzsTzMGHyfsU1HmjQmOVwCs6BndEXTS2avWz3f6onLAdL2BjuIrABVBzpe5iDhlx/w EW2QiqTcn9jCLGnXuHglUII4qfy3+PVujIgsObPsgnw+2ZWjPXrDmraCCYp4ly3L4lR3 nHaxbRkWIE/bAYTf5+wUTtkR97Z5l+pL4ittBu+FW3wP7GTEkqIdvYoqVSQE0qC6Gmw6 9wxwaIpj5c3Ti7nApSeluPPM771kn+VagCSE1xZ7grNvZKvQfEe+g2g1r41mzRtfMeVS qAxOf6CxgD/6ni1w+qfqSkjbkuoDyEhgh8T0bTx6kj74o2mgGfO2tWiFtlp7QkZO+U17 46Lw== X-Gm-Message-State: AFuF++ne8hOyqwZyfOvIUfEKz5fkU4panr3D1q06sBzX2I21LSH6k8Od 3OSYE0NTz2tcLUDUYEcczgsWARv14Py4GMbp6UnDvx8uxD23lOqTPC/NZloVGdYdGqbaQdKWjir RnHlwL+g= X-Gm-Gg: AYBFou3ZcAkFBV+R7X2Xebo1DIDW3nYfs6Tcn6hmyzFQEbIB4feKO5lbcoaLbOY7r+F FRoxBTG+/0Z88t4OYiC0e/V04GRsTgj1ZBHoKqP9BSDfUnx7hoDyW/Uj3ePwQVmgJbL8rWxjtYJ S8aR+TJ3Rtf9ZIKX+mZ93Yl8inQuSsk/g8F+QuXkoh4HimGQ7ndUv0OZAEuM2tZkRm8n5qBj/HX VMDSXvSoR9ZSYTJlGfne8VdUwmNWOA0LlmteITQ9Ab2Ti20SLweF1vujjEolU+dR8aZ3Vu4FjE2 raE0Hhly1kWh12uZ/5HcWxEyTkJD26q+D2pkoz4G0bra8ooSHn466wVKHqEKLdm79RPScX/G/ee peSJlabYX/kzQI2dOXlydg1zoYJ77p9E7pK7007oGZ1W3ZY+MOzUzxnZHpVbyYFE51pbaOkQvm+ VAxPN47Sd0qU/il87VsO++UnGNtFiubrR7JbHjGifWxTneIzgX0rzJLsbH7mUQUVGPcqRmhRotw VAkEu0= X-Received: by 2002:a05:6a21:6016:b0:3cc:9618:f51a with SMTP id adf61e73a8af0-3db0e0ea40amr3913764637.8.1789209335811; Sat, 12 Sep 2026 03:35:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 69/82] tcg: Generic expansion of tcg_gen_smax_* Date: Sat, 12 Sep 2026 00:31:13 -1000 Message-ID: <20260912103126.598030-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::1f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x1f.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209430692158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f5c9248fc93..e751e721a84 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -166,7 +166,6 @@ void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp = opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_smax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); @@ -209,7 +208,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_smax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index f616e27a228..6eb33424581 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -52,6 +52,7 @@ DEF_RRR(rotr) DEF_RRR(sar) DEF_RRR(shl) DEF_RRR(shr) +DEF_RRR(smax) DEF_RRR(smin) DEF_RRR(sub) DEF_RRR(xor) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 34f1ee060ac..d72e64e709f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1073,6 +1073,15 @@ static void gen_shri(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) } } =20 +static void gen_smax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + gen_op_ttt(INDEX_op_smax, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_GT, dst, src1, src2, src1, src2); + } +} + static void gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_smin, type, 0)) { @@ -1505,15 +1514,6 @@ void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv= _i32 b) } } =20 -void tcg_gen_smax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_smax, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, b, a); - } -} - void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { @@ -2036,15 +2036,6 @@ void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv= _i64 b) } } =20 -void tcg_gen_smax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_smax, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, b, a); - } -} - void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209446; cv=none; d=zohomail.com; s=zohoarc; b=W86tXxLwrGRX1xb+fNvEwyoiCG1TtWfEL52EkSUu7oCj9qPfmXJ4Pt5GcQ7kUke1tgp6SytoJ5UM9S2fhjFI/BmZRFWav9QfEC4Gn1Qjmpio3L9sAhlUV9J9KezVC5luaA/e6XdBh0eIXnuMkBJUqbBRB0x1iA2VKg0L+8uj30M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209446; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+HWJJU+aitLdRJLXp09ZhME0eWw/SsaseRmwYa96kb8=; b=Ew7xu4uQfoF8ujbVjXsNqHol8bBbJmYLwa6eA8Qn6F0ymvuVPqo94NfkIZA/IdqqaAN/mAtnAXbeUDGm5xS4TG1mDQ9JL94Sub/8vbshk1Nzts6PafbmxBQmoHJM9hQ2NBkLrZ8+tU77l/QqFvRrpXlxDp8Reiovzvdfu6QM6h8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920944673171.64411536835723; Sat, 12 Sep 2026 03:37:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5d-0003Zk-1X; Sat, 12 Sep 2026 06:36:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L59-000184-U4 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:40 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L58-0008TD-34 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:39 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso799595a12.0 for ; Sat, 12 Sep 2026 03:35:37 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209337; x=1789814137; 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:content-type; bh=+HWJJU+aitLdRJLXp09ZhME0eWw/SsaseRmwYa96kb8=; b=vyqld51WxceJxOfhaMrxmQkTM7EM3DKyD2CHMsrRMAO7fNCVxRuvIs6SK2BgrmRwd/ cikEKWjbkyVsO8hk+CiwkhPjyuuxs/RRBNAGbXXYpa1OQbxDMBYvmXOgX85/ss/SM/K0 DrCklGePINoPuBgGIq/FxjShMMm2ycS8q2pHDOX8nlJB75PlcH/K2ni+5ArhxH6ZPSeK h73eDifFGnYQIOkyt1POnfA0W/y/J7ikEOQ+0L0LbnMjAVm/ZhkYAq3nOZAxHfdkpf0n 2I3Zzlx3lrVQO+4slWo4a76mVkw0Qjq/pgc3GqZBbSUDNPx0G+jeAAW3wnnY5p9YD6A+ 7Nmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209337; x=1789814137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=+HWJJU+aitLdRJLXp09ZhME0eWw/SsaseRmwYa96kb8=; b=d2u7ur/XZ//pAlaZ5dltFogpT80v3qdjSZ8fyxs6Ss9oPQWbjwmJhi0wEMJeIlkvJL d9SoLtSf1RgZrlZU3At3D1fv80EDYnTfikT5AYquLygxCZPrSUQ3HT5LEgTiQSso6T4P TMRxyZhFn9iCHQa1lerS/6xnM2J8WopHgqs89JxC6erhLhFrvX0EpzKYDJdMuRdVPuBL BPkAQqkRZCAVf4Ebg8JQaTwbh/bCaneMm/UIuBJBelW9K7dvMwxFS3vR31mutiPZKBlw EJfeYtozgrEY9wDoXmnfdYNXzuDa1D37axTucGqMidetadTqxwtsOrwNlOqk1a6Gi66Z GbEg== X-Gm-Message-State: AFuF++nFyJ8mfgVoU0ElVE5CuYT/OXGLineTglSNfTjiRZ8+mKiOWvV3 BjMfSqyxkjAprQH2GqwDuYApn3QGUpbc9OxG+bJb/KYjsyCMGpvOB0MBF4+d52c3aHxtqV6PJCn P2D0COrg= X-Gm-Gg: AYBFou2xcnom0KxYaTWkcwAYy7APNoAZcI2ByWDM5n3uZ58ahtECqR701gmwWSRN+d1 oiOr2Oi3PvdV6q10keUx4a5FWvmmkNNxv9qb+HlUBvqa1huhj+2/oRgZI5x1dXpZRZYIm8peAIG 4KTsgMSnc4IL6nro4CcAmTazDOu5kbw8/JEEuq+J6SSMscta5bYmL8GIPhVdRUxpqtnasXHKu+q NrRsb17SyufMMiCO7NkIXE9pFxYCsbv9gwV4+1ljZL94tcJ4U+2KBD9v4jOOp+58Cri+/fEHFMN xJii79cWhBKHAgj/sf/6PyfR6lRjS2QOGqfpReCTsv9v4uHHNo1+lBbi1rjZ658fXYEIdA+Dl7z rSe0y2uKiFyT1ow9JnYzIiGIvijXGALX4+qZYreuh77R8PyAhEKOLcX5972vanLbqyPH2YoOCBp AgHQdMCRjxwWDWUbvm8AaONJXyY+vW0LzLZqP83ziYef6O9urfR+mFAQUo6sFnwLWRvQL8rXSZt Wml0GE+F2oLqzj37g== X-Received: by 2002:a05:6a20:5482:b0:3d3:aec2:4dcc with SMTP id adf61e73a8af0-3daed3db048mr14749921637.24.1789209336747; Sat, 12 Sep 2026 03:35:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 70/82] tcg: Generic expansion of tcg_gen_umin_* Date: Sat, 12 Sep 2026 00:31:14 -1000 Message-ID: <20260912103126.598030-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209448676158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e751e721a84..de0e535cc10 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -166,7 +166,6 @@ void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp = opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_umin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); @@ -208,7 +207,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_umin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 6eb33424581..fb76cb39ec3 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -55,6 +55,7 @@ DEF_RRR(shr) DEF_RRR(smax) DEF_RRR(smin) DEF_RRR(sub) +DEF_RRR(umin) DEF_RRR(xor) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d72e64e709f..5afc0cca18d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1110,6 +1110,15 @@ static void gen_subfi(TCGType type, TCGTemp *dst, in= t64_t src1, TCGTemp *src2) } } =20 +static void gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_umin, type, 0)) { + gen_op_ttt(INDEX_op_umin, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, src1, src2); + } +} + static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1505,15 +1514,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_umin, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, a, b); - } -} - void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { @@ -2027,15 +2027,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_umin, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, a, b); - } -} - void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209451; cv=none; d=zohomail.com; s=zohoarc; b=RXq0+yuYwR2i09f3pA2Ad1FlW1rtuIlCbQsjd2TY34mSkbSueHRolLsu8hWNshVeqs3k8HNn/Jk9JBjeFLST2djmyzAIKZsqo3cicoYQZIqPmT8weMnc8Ix0E9NwIcOFparO5G8VYjQg1mEx8erbuTdl734mU+iqAJproSje//Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209451; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=newdrgVvvOB46f7SbNgTuNYOzaQB6WVqzQqV5Nz87so=; b=aII9H61bVNVkEOs7955M9TotbsOn3PNRKdvVTDDFKDXqlM+uR3uKjJaM4Aob89HsrEF4CcMa6dNgCCHMGtHw6gS8hvYUcX8MCAe8nhPTpPu5yzGpKkl0wD4rFPpVHXBI51/ukyholoAGhWCDMHmxvyokNAkZKdUsZVn0/loJ5hI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209451371705.707039983477; Sat, 12 Sep 2026 03:37:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5m-0004bm-6k; Sat, 12 Sep 2026 06:36:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5B-0001EY-Do for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:41 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L59-0008TV-8v for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:41 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2d942c7cc2fso17185725ad.3 for ; Sat, 12 Sep 2026 03:35:38 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209338; x=1789814138; 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:content-type; bh=newdrgVvvOB46f7SbNgTuNYOzaQB6WVqzQqV5Nz87so=; b=VxSoLgiH0Ees7uSBMI5Ff+RoyVZdvGWQcEmUX6557nnNJiHwJGFn3j7cDNYbQjNtww Bwv8l/h7iID61+LVgCwUvtD1nW58q8bPRDp9M1ZI+8XGG6P3TZTjQGWldE4z3crR3rvG uqFzQtr5AEqAHtvh36g+VzlxPgBGgMzTmLVcKfDhY/KuhuFxXCeAb2aOXc2op3fXbdd2 FYmYvcb0z76ScZsUm5ihdzdSPi4Ngy3aLRNllFeOmsD4B7NmFoan6LWQW7d305ZKC7j4 /nXqmwULSiPIBGfy69x/lWzmB8uvQIxxrdx3qk/djvinxVmr/HEojCiD6Fn/ncqekb7E HDiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209338; x=1789814138; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=newdrgVvvOB46f7SbNgTuNYOzaQB6WVqzQqV5Nz87so=; b=qzhKLOzihS6gwM1mchJmKNjurVmcOzJw3Ej+zQaz0jw9vwteyuGSPYfRCNraKlgsrN bzDlplJO+tUJ3qg/w/BJ8cRj/E6TWwL9YbgQOtnfhBOovpwNeJqOWf+fhiA87TvewLKs sAyFtgN0j3jIT+g0j+YvVEiAk5GofeIlcs+/zRleAANF2p0t7PMp/RwTr6NGrdGl+XX1 r8Tlg05nBhqzcpZwsVHbrqYNQUXY0O4TINNnLnkKihn//AbQHvEhXRhXvZ/OstJOpfCj /BtAT1QXw7dMvA8lvFv5mXDazN+22sNSozZi4Wws+OJ9Pexj5PYUJo87POJ+rvi5DyXW q/nw== X-Gm-Message-State: AFuF++lopEALFpdn1doloG/H5WGzgYEemyoc6viOk1wDIw7J7qUkGXZc p0IgBt9PNncGdoBzvrBYZF3os/iiTGTpGZj404dsT+W7KGMw9+B/xuMuQYWMamnE4+3QKDzk1LJ jW0Msda8= X-Gm-Gg: AYBFou0GGbxSXB5dhUkFHGYeQoKvBc0Efq//FExF7HPr3Lh4Ah9s88xIEWxThS8yFny DKDcYe5TLuuFA/HKhcpmIGXA/NldX+vEHeaPk4/NwUFNYAMzLnlhjK8MVr9ocU3QK4/7AZyx2M8 +EXdOtLIusTGamfCbT2MrH+S50ez45D8kXZDGJwusDRpL3XX4Cz5AnWMARVft5V4nc1zFdx0xZF APeuSth0OsvhQ48olZghON60jar+elss1d20ZEzAeWql0pfcGb5rONY+ie4m4/BOsYYKHj86dHi et2Ygu4OzzUOJcPSPCHRo0vuij0LPI4RWI5uYFPTSkxXBoZaWsZ4YrIsyBf2MXl52VajqX7s+tc jijZl2jkMEOMKTP4lcQFR2TXOvlYpxzDv7iYpNcHHizpXrQpX3L8g00V61p+O3HbpZACTI/eA5k XPdyZYZFPrHtUW557jXddiCuGYRCdUFRDjLC/MJG6/AB5C6gsPHsMEfRMCu7J97/i23ZOEhu4PR DOplQ0= X-Received: by 2002:a17:90b:3842:b0:39d:93a3:7adc with SMTP id 98e67ed59e1d1-39d9c3ab85fmr13478271a91.25.1789209337683; Sat, 12 Sep 2026 03:35:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 71/82] tcg: Generic expansion of tcg_gen_umax_* Date: Sat, 12 Sep 2026 00:31:15 -1000 Message-ID: <20260912103126.598030-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209452799158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index de0e535cc10..1b7f9cf473f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -166,7 +166,6 @@ void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp = opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -207,7 +206,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index fb76cb39ec3..4dfe7513e37 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -55,6 +55,7 @@ DEF_RRR(shr) DEF_RRR(smax) DEF_RRR(smin) DEF_RRR(sub) +DEF_RRR(umax) DEF_RRR(umin) DEF_RRR(xor) DEF_RRRUU(deposit) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5afc0cca18d..b2b201c33f4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1110,6 +1110,15 @@ static void gen_subfi(TCGType type, TCGTemp *dst, in= t64_t src1, TCGTemp *src2) } } =20 +static void gen_umax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + gen_op_ttt(INDEX_op_umax, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_GTU, dst, src1, src2, src1, src2); + } +} + static void gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_umin, type, 0)) { @@ -1514,15 +1523,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_umax, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, b, a); - } -} - void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { TCGv_i32 t =3D tcg_temp_ebb_new_i32(); @@ -2027,15 +2027,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_umax, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, b, a); - } -} - void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { TCGv_i64 t =3D tcg_temp_ebb_new_i64(); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209433; cv=none; d=zohomail.com; s=zohoarc; b=U/r6qvJKdPm5GPxKJF6LTU6qk9ZfV+cuoupZwMP4SQ0ZERsT1DKNRc9cCS+qaPYwJRl+wgoIJNh1r/NXq+N1XqztqYtHjDj9YVpjD3NrBmq160NGHfGvoRYvaQpUUfCIteOHtETiVexUCgl01EcN+LXgPYSH6lVF2rR+ZFD42IU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209433; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=EGdS1EzhRdJFK/8NNyAnn71d7UhOhRUoQWES/PAECmg=; b=buMWIag+Y9EZwknqz54mGR1OqPOXvHEEUgfncymekM0dS8hr+7/EK8M5IpORA30xVs401UmZx+ujWLpUtYcthsXi3KiDoKhergoe38iKTz5TtXMw4kz7BkP5YEsqVlInf1CjWeCqdG19pOJT3+avAgpKC19PbWUC8Y9+A4VvTMw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209433416508.08132815305714; Sat, 12 Sep 2026 03:37:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L60-0005Rd-ED; Sat, 12 Sep 2026 06:36:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5C-0001HG-5N for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:42 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5A-0008Tv-6N for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:41 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2d8f265cbe6so17890075ad.0 for ; Sat, 12 Sep 2026 03:35:39 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209339; x=1789814139; 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:content-type; bh=EGdS1EzhRdJFK/8NNyAnn71d7UhOhRUoQWES/PAECmg=; b=ZMIzrN91SH3FWta11bpsk4NFouuaHBR11vcvrzuTcHY01yRKEBsQkD2UWVUJu60mPc R4YpH/NhUucINDmYcSO8WL73IHyle56nNr+nM2wpFM+w84XA5ScV50sogD+VWc/jfSIZ 6bydveZZC7VUeeZNvsJOJ3rWcJk9m6XwBXA4OlvEs4GwFhYHWRiMpGYn+zvekpanrDES I6Jj4PI1w9r4Tb7s7ss3sT2BKFNJp+pwJH4Efhc6lfeCfk11MFY4ih/xr6jtB01yOhLA RQU28dErLRax4nH1iwMD/LptKkx+b91XJRrtJqvdLj51dc5R3HjDECmLmNfOgczIXtYp m7ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209339; x=1789814139; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=EGdS1EzhRdJFK/8NNyAnn71d7UhOhRUoQWES/PAECmg=; b=VRQTgiGvn3OdbF4c11xvaFBwO9OWnJsQG3raudv/dD8V8W4q9Z7+iHCn8TE2kJaq2h v/mzY/hFB7TDY0qZam/ko7s/DXQm3e5gRDaMJtJE2l8HoMgtgwCaJZYUSwKeKSQZ/ba+ mjGUGamYDI6bOI1LK4heYRsHdbx7UjuZ0wz6GjaBHyUv2UicH8+LSfmA1akM9q6n6UHf TiNXlcXAb0WE2wst9sQtKr+tm4MrJQLM0EAoWJIgR9ArLl0HZt0TFEYW8gvUIds9Onp1 0vznY2T/q0wj4T+lhg41IRoA/nUX0EmSMzSvn5CLrbHXHzbriuV9k17A2rOJjZYyFQYY edaA== X-Gm-Message-State: AFuF++nL52ROuUakO8oC8kaKM/aWZKFgZTOn7ibGka5jFYjm2Rwz2v69 7zzgsRxIpA49ja6Hml5BAtI+Sy9nvrYelLxvZJV9vGkgxHnHNOpxKDQ2c8As49Ci3HX8/BjuBFd qHOFZ74k= X-Gm-Gg: AYBFou2OzQjkKaI4tELoTK+0tQeT5Yfe9HulGQLWqvQNFZ0/bgOEztnXE3jyUPSsEhG hNN79zP3Tb61N7L4arBfRMJZCeY0T7+LKBJBF1F06JfdVYKK233RcZIsxI5Mrlcgrrj9d9o4WDm dOZKXtBq3aIE1j3hKMOj6YJ8URmUg2U0dz2c9NEwMzcJL2yJlbSL/U69Cn6Q0q+1MWauIrUkTWJ EdBJSOTuYfyXt2SpDWOdAAev5w1mNNFzM0qErp6gmf4u1+F+6VpSHGKtKfjBBE2rTZIsI7tK24z Iur4gsQHezZDtPlUzeLisvckNz7h9Hx9XVtznKPKxcVHPlixHfDsm+7lhOmyK3Uj71JTgOWYN6D UQgiyLn35Q5yLOuKytxmz33HE7ac2NsozPH8FZsSp060V/2Do8mUuZMs8TLGIMMe4InpguHu5j4 JZ6Ox6+53LMTwlMRCOaDEGLd9cug9j5W3m+2Mtf0c9eQTb2z1+P0Tg8zautbj1n8VccSyN/N55l ahgC6g= X-Received: by 2002:a17:902:db0f:b0:2c8:2808:3ec9 with SMTP id d9443c01a7336-2dd2a3474bcmr131977115ad.12.1789209338567; Sat, 12 Sep 2026 03:35:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 72/82] tcg: Generic expansion of tcg_gen_abs_* Date: Sat, 12 Sep 2026 00:31:16 -1000 Message-ID: <20260912103126.598030-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209434650158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 31 +++++++++++-------------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1b7f9cf473f..944e26c7d28 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -167,7 +167,6 @@ void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, in= t flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -207,7 +206,6 @@ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 4dfe7513e37..745708c1bbb 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -10,6 +10,7 @@ DEF_CRRRRR(movcond) DEF_R(discard) DEF_RI(movi) DEF_RIR(subfi) +DEF_RR(abs) DEF_RR(clrsb) DEF_RR(ctpop) DEF_RR(ext8s) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b2b201c33f4..ea99a8842d6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -367,6 +367,17 @@ static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *sr= c); * are of the proper type. */ =20 +static void gen_abs(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, tmp, src, width - 1); + gen_xor(type, dst, src, tmp); + gen_sub(type, dst, dst, tmp); + tcg_temp_free_internal(tmp); +} + static void gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_add, type, dst, src1, src2); @@ -1533,16 +1544,6 @@ void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCG= v_i32 b) tcg_temp_free_i32(t); } =20 -void tcg_gen_abs_i32(TCGv_i32 ret, TCGv_i32 a) -{ - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - - tcg_gen_sari_i32(t, a, 31); - tcg_gen_xor_i32(ret, a, t); - tcg_gen_sub_i32(ret, ret, t); - tcg_temp_free_i32(t); -} - void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld8u, ret, arg2, offset); @@ -2037,16 +2038,6 @@ void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCG= v_i64 b) tcg_temp_free_i64(t); } =20 -void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) -{ - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - - tcg_gen_sari_i64(t, a, 63); - tcg_gen_xor_i64(ret, a, t); - tcg_gen_sub_i64(ret, ret, t); - tcg_temp_free_i64(t); -} - /* Size changing operations. */ =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209476; cv=none; d=zohomail.com; s=zohoarc; b=lES5bl+XFM3mKUsTjMK9X3Tz2ipGJaHUpGMf4jZjTinPLfpGEwCVJB4QANRnOkSbHgyULeYjOyvRMLN58IVeyRCh1J8mVxrKtUZTJB4EmR7StV/mDHxeELQoOUF8Un+EJd6UU8zPvaQ6dbTzG6gM3h8nAfcgasXWTa5vHIhDGX0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209476; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=QyGkiurvnoAYjYLquOStBYPlS72W2sK6OBBiB2KbEZU=; b=k5WoVt+LizFqR9QE2Em62dUtz1l/OuHlM57a0wheZyDwG+0Lwf7vYMMJfbGHKtn/+5iGY6w7KEgI0ytt2GB40DQTwwJM2QoxSRW1Bq/oFtI8yAwsx63ohBzpn4K9qXhk9OzkHOvpm5CHTVZnYC/06tnNnsSIjCSbhCwP4dxxH0U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209476492241.25310274079288; Sat, 12 Sep 2026 03:37:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5u-0005E4-P7; Sat, 12 Sep 2026 06:36:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5C-0001OL-Or for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:42 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5A-0008UE-VP for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:42 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-cbee846deecso2545264a12.1 for ; Sat, 12 Sep 2026 03:35:40 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209339; x=1789814139; 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:content-type; bh=QyGkiurvnoAYjYLquOStBYPlS72W2sK6OBBiB2KbEZU=; b=SEhijHEa1QHkMmzLFNv27NOoKUQhkkjbulPiaDHuCOwdgPTsAD5zrcylXad0k/5qu3 qoqEdsx0e0mh5qeT5YO3jaw9BIQqk6T44v0vxSTEauhhmtvH9P5DFzmrlZlWZp+EvCcf DkXBklLO6XZbqNgFkxbqBe+RizgNscleIgEe/8FU2J0IWLHyrrCcxaByqydWlr71lID1 T2QafQGLunjhrs/4qhnfzH1/OtSVToDYvFKF9KFYPV6mf2xAmINS9TK7jbchm/9xhHiR 13DIhYDicMpOhDyKz0Yi50B2uGaYROlFVM80qyFLSJEIjmnp/S4q0SY6H7FUXmUfOjwZ OoDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209339; x=1789814139; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=QyGkiurvnoAYjYLquOStBYPlS72W2sK6OBBiB2KbEZU=; b=ADrJauq+IRnn7WnNNxMbXCqL9MNexYrEndHkICOAwnnlwrIFdp/+Zbg+vJzMQcn5nZ YfeyPLZpcyzgPop9ZIO1c71kW6BrwrctPEw6k4FCS3qrEstLNUvKDv3eJrIP06Kifjb2 jC/hOMxWZ9smjs3h0U2Trhtgz0xNHBZi3lvgA6NoPVa5YzlcCv2I8wdJmuwK5bN9WPyA zm1OEJe0X8YwKrNQMu1C/upg8cIVN5uo93+azlL3aeJmv9Fl4pXgB8OPPedZTinm4Y/M wvANFofFxWEYOT+BajqJu7MJuzouxsA6/b5jMu5mOSdSAdTzEiYrAtZH94iXMwdiCeN4 qQkA== X-Gm-Message-State: AFuF++mjIbOkuEh0Z+5XzZvzPLYl/99G814qEOix4v8JbRY4zevEWun2 ADzOAZmp3VqwXHex42gdzYxywTNMxLkHa51DTRq9ejU1KUQ0z5FLsHGlePKp7F5nzt6DtCrRA8O 2Y0X9HSI= X-Gm-Gg: AYBFou0LbqUkxvVvUUw/e6SIhvXm8fiQGyJzdwpIZPfXTKFLJFDRmWLviOXBXZ6doN9 X28OutLvquJRPC85RmYVKp57q+3wdkTomQCIEX/MUA1ks8EDudmZFyf++wC7PQt3fTeT/tmmjmj wwCZ6t/ez4L1y5aGDMrXkaoFnVYnPk9z59CwyuRGcSq7rG/BbRFTKWxrAdRoF0QpGK+PT9sal+t iwVrsZ2rr67iqB0zIf3Bzxs3RZGO8Qyb1KcRqLBOXFWJEPZZH6gelBA3XHzfJ0MaRQYHPEJMdHT HYzHrdzaJJMmJhrMApV7ey9r2rk59lGqX/AkCxafM6ZwsW6F+q/kOOkfoR3TpF5dgpNRM9sVmB9 WvybvSHduZzYt01+kMD3HBAy6REulG7vgs0TS7hHgUm91G/ANzEeUW83DGBM4sJzyH/2+K/Dw2g sOgCOOF3VxRYmCfSxW+nFQQC0PXKTTO35bBelvNIoOuUabIeA4ZbeUnGj3BlgHpXF9oIWGASXQQ p00FfI= X-Received: by 2002:a05:6a20:9f8b:b0:3d1:9166:5c68 with SMTP id adf61e73a8af0-3daed592b5bmr15798223637.8.1789209339456; Sat, 12 Sep 2026 03:35:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 73/82] tcg: Use smax in abs if available Date: Sat, 12 Sep 2026 00:31:17 -1000 Message-ID: <20260912103126.598030-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209476904158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ea99a8842d6..566349e8a9a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -370,11 +370,16 @@ static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *s= rc); static void gen_abs(TCGType type, TCGTemp *dst, TCGTemp *src) { TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); - int width =3D tcg_type_size(type) * 8; =20 - gen_sari(type, tmp, src, width - 1); - gen_xor(type, dst, src, tmp); - gen_sub(type, dst, dst, tmp); + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + gen_neg(type, tmp, src); + gen_smax(type, dst, tmp, src); + } else { + int width =3D tcg_type_size(type) * 8; + gen_sari(type, tmp, src, width - 1); + gen_xor(type, dst, src, tmp); + gen_sub(type, dst, dst, tmp); + } tcg_temp_free_internal(tmp); } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209432; cv=none; d=zohomail.com; s=zohoarc; b=ZG6l/8NjTIzGl5YQLMT9PK97o3OB3h8tUd28vXEjqZZpUV6Wx7f9TkrUqb6T8pKqZigAqQ7GkADY857Io1KwVt9hG5tjmbnDEW12hCNxdMZoWQglfE8rGcgpYyw8UA2vfwDkN+EE4u1S/kwnD9NYWVvIoKC3k0JJ5AJESWn1e78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209432; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=/aaMe0Gg8UF8VRwBc25oZ69Ww0YRqFMd0yrNRchGJho=; b=lycJeDsXxTvrWAEV4K1avskiuujC6QdNopTIfwUnu6J6XDWiPAXQroqJA/kFz6EyGMoBWQKQYr4hyCsjQ1P0s8epOp3YrX568IYNml6PH1CBUrBVUQALPisM6G3Yujyj+WG5aP2GCUdD36cnrZsKmJXn3N1B7AKfduMeHCJCifY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209432811475.2126886561215; Sat, 12 Sep 2026 03:37:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5g-0003nI-0b; Sat, 12 Sep 2026 06:36:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5E-0001Xj-2K for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:44 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5B-0008UX-Th for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:43 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb652d7so284976a91.0 for ; Sat, 12 Sep 2026 03:35:41 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209340; x=1789814140; 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:content-type; bh=/aaMe0Gg8UF8VRwBc25oZ69Ww0YRqFMd0yrNRchGJho=; b=jUgQcpL28YStjUHLF4OcmMSU7t2GTNT3euLAWJJ7Qck77D5oz70vccnGv/LxF34TS/ 1k6HJk3rnN1BTGbrM7y4ImbiLTe6mAklOraY4iGlq6AJ3efuG94GUVaj0eouDwARmbAV 5xdlqJyKjUj1QYnv1vkpgWB8TL3OEbg8t38t7jLWLqRHG/l8aoLTQOQOMpERch5lwpIF DDxwVsKxJSIb6hSVU8wbFZVKtOe858ML23yWzGwFs5iO4+QWMIFVqCCyIO6c321wHgA9 Kgq0rXo+CkAuOgx0F08ogMvz9XwGuXoNIQnRcjBdW0ePeQCRQ/+NBA/vurTc/RoZvlSm V8+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209340; x=1789814140; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=/aaMe0Gg8UF8VRwBc25oZ69Ww0YRqFMd0yrNRchGJho=; b=sru2OMYa33/lgukfyRlwh8I7MdJIWFgicIIBbceoTunvAWcb7LDfo4EKceKVnFntp8 XFIk1IwWaTO6eeyX95PsKsSCTuj1SFhwZZAaPNOhJZosenK+iH60wjjg2W4tqjq5/a3V aLAMOzupczhipowoUZhmYxnkX90e+JwmOdfyPp1sGwssZu4bkmJ+s3aLj0usQtpBH9RG n1iui2IE49eQskUb8xLFv/ncN+FafKvL7hX0/EKU1czadkt1w/YKFu/CbJpVC7uVckGF CtxytxDP02CwES3twNW/NjxFq7jB8vuZfmOfPCxhBbRwSr3KfzwUCzVfdGg1XSWyQdi5 om6g== X-Gm-Message-State: AFuF++lQJu1Vn36rzaHqU61fkRKiyZyoVkQJD5qy7+IpARuN6nxCkgGf SHSkh59EM3ZcdMHwk0x5zBLo+3iV31gGos4Zdml9beBZqCkwomFh09Ht7rN4N1VML+1I3/sgRtW 3vHHcRBQ= X-Gm-Gg: AYBFou3jgjXZs+qcPcfwVn1VHnL+2DFcxCwmBNnwOSkyrkQnUvdAdSrMfeGMa/WgF6I ND7DTqpxEdpmCJtFhqt6Er/wA6Of6qR7zVAeCcpsXdU08TG7ABvTWVRLwZlmTM6PuFfrRaixskd +GadFByBQpFyNH5hBuH40GGV6mpgDuT3+u+GCvFLu5LqFxNVzhK33i3q8VHYv0ajTOvRWiaiAsV lID9WpwagOXZ/Q4ugOQH9zVCyksQGLXROxnAmeURTyoPJjmRygoLSd/TwCFIAyTdZsLwox0176v OVldzIWVcxgQkMb3vKPAVND3I08Bb61WU4awScen2eA2knAqCsi6Z2V8PUMIfrCKvymOlm3JYpJ 07uw7nIX8LZJUafdOcx3P0p242t2TNUGxsG/2qMWS0yvnSufxBST9OAJNRWl8Dt6tyHkzbhAv2L C8sBUhDoIp9GtyTc73dnyzuPUnmbLvsahi9oMvgqBWCSe4EreOMR7gWAXJprc0ICLT/BBNS1Awb t1stww= X-Received: by 2002:a17:90b:1c90:b0:398:d6f4:c61a with SMTP id 98e67ed59e1d1-39dbc6c4eb6mr4042122a91.17.1789209340427; Sat, 12 Sep 2026 03:35:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 74/82] tcg: Generic expansion of tcg_gen_ussub_* Date: Sat, 12 Sep 2026 00:31:18 -1000 Message-ID: <20260912103126.598030-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209434641158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 944e26c7d28..903949e18b8 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -166,7 +166,6 @@ void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp = opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -205,7 +204,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 745708c1bbb..19e1eb38dfb 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -58,6 +58,7 @@ DEF_RRR(smin) DEF_RRR(sub) DEF_RRR(umax) DEF_RRR(umin) +DEF_RRR(ussub) DEF_RRR(xor) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 566349e8a9a..6c76cecc501 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1144,6 +1144,16 @@ static void gen_umin(TCGType type, TCGTemp *dst, TCG= Temp *src1, TCGTemp *src2) } } =20 +static void gen_ussub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *= src2) +{ + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *zero =3D tcg_constant_internal(type, 0); + + gen_sub(type, tmp, src1, src2); + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + tcg_temp_free_internal(tmp); +} + static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1539,16 +1549,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - TCGv_i32 z =3D tcg_constant_i32(0); - - tcg_gen_sub_i32(t, a, b); - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, z, t); - tcg_temp_free_i32(t); -} - void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld8u, ret, arg2, offset); @@ -2033,16 +2033,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - TCGv_i64 z =3D tcg_constant_i64(0); - - tcg_gen_sub_i64(t, a, b); - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, z, t); - tcg_temp_free_i64(t); -} - /* Size changing operations. */ =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209401; cv=none; d=zohomail.com; s=zohoarc; b=NOBxUf6S0jan1603M0m4btjzvj53TNb5OjhFDO2Hf2861dmOei0LMUE/sj5GsSyR7K54HJYZq6tYll/XgCbv71Wz9s+3WpEvP5u3mvz+wUq0Y3l5mJn6gqYN6moL+LcknVnrvIQ84crtedRfsAgS9X0Xo5PE/ESFKI0vNwILCZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209401; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FcKD0bQYlAhK2PtfL2mvjA3hed1eL7X/1Mksn4LYhpo=; b=kqHwVXAjvx3cvHrRBk/9OWtuoTVkzZy9bxsXAi4MAJdiWATEyzZlYFma/wnHlrl/fshrKpLwZn0I4uHXSqM4yy71gPOfHqy/J3Z/ZdNz7LQzSgMgBei3P02j/5X358FuP/XgF7ryVwiofL5Yp73+379jLDBo6oVu9UjsfIU9dnc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209401877357.4302587376935; Sat, 12 Sep 2026 03:36:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L63-0005Uh-EX; Sat, 12 Sep 2026 06:36:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5F-0001gr-5Z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:45 -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 1x5L5D-0008Uu-5g for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:44 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-86a25369f16so1395790b3a.3 for ; Sat, 12 Sep 2026 03:35:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209341; x=1789814141; 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:content-type; bh=FcKD0bQYlAhK2PtfL2mvjA3hed1eL7X/1Mksn4LYhpo=; b=BbmZjkPbmsZZ22zJwocfOiowwh+lebo2Flp8R8Wb4F/Bb7LH0Nd0S8SFl5MsBMjPJI a2r05F75XrAKg6j2NUUIq4H580aL34m/AGqp1JdMSwuZgwmZZ6UubQzeDtrc1NR89UvS JXj0U9zLDVuaz/sf4S91+TycFsWsZ+wpzW89pkgpLrm9dhQzGjFIEB/BAkL2fPDlR6Fd JVdVh2q5D1zZU9qYaLNfJqa/TYv7IPnFiAz6Qvnx4846eF+uLi9yaZwRUFpJwhkWVgYv IT4HX/m2x/T1DMeEDHDO1XSrrOt9O9S+qJmIT50534h/fJ3bcUCpVJI0O1DBbSIw5e+z Ajyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209341; x=1789814141; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FcKD0bQYlAhK2PtfL2mvjA3hed1eL7X/1Mksn4LYhpo=; b=CGMvsPBEiGsP2RGGY3pwS2b7fgr+fm+g/RZoSvPHddIehrM4Z7DEj3qBKzK0yMv+xp ILqE9tjwfnZD5rb/K57F8RBVfKKetuVriWNp0bMrZ4oTdb1MnY6Wy+wKtVtwjvRGib2+ g3jrcWFZMn1wWmh4zg9uucD3DveOBPXcpwVpCDAV00N1iGZWJfPQZY/1E2KLiocS49Uq YwKW11awbCZG2BuVgiNDKbgRygwMGmpLkJJaV9UDOnm5PShFdusGQtIsGup9GDetW77y GH6sjt+RGi/ORGEyNSSfqyag3V3ew5PQf+X3ThGpwIM4gvsg6yrZyDHLs+WJ51wqosMP eerA== X-Gm-Message-State: AFuF++n1KplWf+8V4/kOSa2vW4EkOno7q0eYQhJSmEg9JLqMHudJA2X9 lgJ/Xwkg7XA00qQC6GWW3k7FheLmKvwu2Up+j1ST0PYUHiOYC53cttu4Ktr9Zmenpivw59o4AFP /7uU5sqg= X-Gm-Gg: AYBFou29NAVT7pNstWmJYa8lMH1biPSigS8pJd87Ru1OMqtYvk3zNHio/yBxEd176n8 W1p7G/9v4nLKRlggSYxTgzTJemMZo4HsQ3Vfm6xIvDBPg27/tdeST0onJQa6t3ujgLLQ9L/BcNi gElEAhfYtqDocDhdQrBjwz0XOBP2iKdpwaQaY913l3G1OO9cIqjN/xMpemNYl3vKCTCWYjzl6sf cj8VfbZ3SypbKuKbVGHzZY9I0NSZ/CBGkPLyOaDPo7PDfqcsNBG8ZArU+JV0tVjtjmht5zQh8VL bNpqY3a+2GshS3RlhZ+kDXgHCgjjoJBgWudp47YRWnDrK+a5VaVBL5CnW89N2PJHHUdGfN8L9nz yFjX6w/2tQm9z7tmkE68fHxKGwYygUVONdFJylOmeYwY59zUyCBqrgUWtv/i4h+KRglxcQS4my+ yDMUzugSZqbuj5XsJoNOkS/Lt0YikDLQz0f/xn0nDlhtY85X1bq+NlpUbSmwZf83s8JVkXjCQof gh7oHc= X-Received: by 2002:a05:6a20:9f95:b0:3da:80a1:f2f with SMTP id adf61e73a8af0-3daed5d1801mr15553184637.14.1789209341365; Sat, 12 Sep 2026 03:35:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 75/82] tcg: Use umax in ussub if available Date: Sat, 12 Sep 2026 00:31:19 -1000 Message-ID: <20260912103126.598030-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209402567158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6c76cecc501..49c187c3784 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1147,10 +1147,15 @@ static void gen_umin(TCGType type, TCGTemp *dst, TC= GTemp *src1, TCGTemp *src2) static void gen_ussub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *= src2) { TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); - TCGTemp *zero =3D tcg_constant_internal(type, 0); =20 - gen_sub(type, tmp, src1, src2); - gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + gen_umax(type, tmp, src1, src2); + gen_sub(type, dst, tmp, src2); + } else { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_sub(type, tmp, src1, src2); + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + } tcg_temp_free_internal(tmp); } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209407; cv=none; d=zohomail.com; s=zohoarc; b=EdHcaEKsn7a9K5+3gNAlsM8vubdvAKrWTX4azkem4ORXmiazcPvq5bdy7KbOpi+JXM7AiwwSoKuFWrWEa6Auhp7hGerE3z2m4doqwH36IaGMQInwf1Re90mEdiy48Cp3OGbBXs6Qtw2ePuNeh0nD3Y51Q+Tt1HHUK/F9WbbeDy0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209407; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=v2ow9fwckZthbz5r2DXkFsS1b9Pk3wQEEzB6yKoQ8nw=; b=nP/CqrNbdWZk31+FXPNj0x4WsvPatCjfuVq6Uio10PCyFUancvbY4/Il2feECCDJzZYCbNdyysOf7PEebt2zxGzgKEyCIOgCKSVTYjIAHFahcyXMy+SsWfy3fY9EEcgenOoIs4+RGL1ZwTN2KWh+7Yy1iUo2J3H1mhii3ce4JGU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209407936912.9346117929011; Sat, 12 Sep 2026 03:36:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5b-0003Di-Hf; Sat, 12 Sep 2026 06:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5H-0001wu-4V for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:47 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5D-0008VF-Vf for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:46 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2dso569055a12.3 for ; Sat, 12 Sep 2026 03:35:43 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209342; x=1789814142; 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:content-type; bh=v2ow9fwckZthbz5r2DXkFsS1b9Pk3wQEEzB6yKoQ8nw=; b=ogDlXwSjCDC70Fzb7Uu9ufqbS6HabSdQ3NpvnZDOwthz6Ch4uyJnI8qXeDl06csS8n mdyaCOMxOTlu0LXNQUPfeIhiUqTDAzQXjucsEAopaZywdyNd4udFT1co7Oj09cbQ/uXu LovrRtY4nbivrBqzJLdCNSyC7yrN64Ew28dB9PlhZEoZ/Xhi2M52vG/IdA+ekwoitK/e dIBqCuPqVnJzLBbAfFNHMjeVTapNC35swJER8JqXJGn4kPyao76lhCEYxnU7Ok310Lmr CtSNUSKkhmg5F567pEc7fZVosMk1V2h37ORkhyncP8XYPhuTy2/qj9vMLbVvqsFsa4ZB u2Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209342; x=1789814142; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=v2ow9fwckZthbz5r2DXkFsS1b9Pk3wQEEzB6yKoQ8nw=; b=DK/w8FKC9LTDq3w86fqKeOhF+KmmKZ24Jm3Y9j7ejbqcv7jY7b5TgeKvNlkUJMCafY wJU5qmWJcJpnMEj52cA22o91vyMXjRkhv44L6BaohIFAFLoP/wPOsuztuGxNfvPZGAis hcajoar7vVjYdp2NavuNL6sXUetkxXv6EIgRmuEbNt7P31PMu9Y4k/OgZ851SRXXCF/4 YAw8pjxx1E8jkULmO4cwzgFi/S7KqnRyb5/yQPVvAV7MWXJvaLkz9XNaA4Vw2gr7YL1K sdKYFkIWvH24yEd7oWcZ3O6UboX/KQhLxXsfKdPP4zxOA5vT+0rbhb+qfr+GqfKrOiaB cLPw== X-Gm-Message-State: AFuF++lV9h5VfKVklx32yaCz2rjtdV4ur8U+PZH9VRCNpb5aYWALM8Yr OWfQ7PxKcMDQRsXKCqgWcmXEepQNgw1Rt72LGE5dWnWP8wwzm0Xy+nrR0sBhHbygdlYrSv3pB13 h3xlnYOE= X-Gm-Gg: AYBFou1oZFgsSSt+g4P223Gi/z2MQ5xqLvT4etJApq/VD3dpSAc3hSk7tH32VRuAePu aZt34xSmwSDtVix/3L/M5C9tcFOWCff40dmbzjNmRsQVFhMkX28zIvmw39R8iy6MLlkjP8ezCL3 F17/2Dzclc6LUTV9/35GyzYoXjHVKNwlNvTOywNIoT+VFGec/mG8c9BNQ3gdwAR/5/8S+unLUxD 1Rp6dX/EIlhmUT/b3p6n41OJqIAORVI8/maTwwLrls2truRSJfCHrX2rmNGBh/e0O4puupGNP45 +LBHdVh5BeBwQJoEqs3p3pl0IH4MyyRfyuG24z4GcNbCgbQHYG6sYPCADnAO+xnD+taNoP32gsm Ww4xJbgirTsLE5xXoujOUX3QBweb/ZEch6vA3OxND5mRumm+Y4sE6deMP92oMQnjIv37FsYuK2q 62eVUBFmYP9YzyY/I6UchHbETz1dy817LJBw9dIcc+411ovA+Se6zotrwcH95TvcyWMADitxfCz Nogta8= X-Received: by 2002:a05:6a21:6b18:b0:3c3:b57b:627d with SMTP id adf61e73a8af0-3daed20b6f9mr15383537637.12.1789209342387; Sat, 12 Sep 2026 03:35:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 76/82] tcg: Generic expansion of tcg_gen_extract2_* Date: Sat, 12 Sep 2026 00:31:20 -1000 Message-ID: <20260912103126.598030-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209408543158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 ++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 84 +++++++++++++---------------------- 3 files changed, 35 insertions(+), 58 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 903949e18b8..489121d478c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,6 +129,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RRUU(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, unsigned c, unsign= ed d); =20 +#define DEF_RRRU(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, unsigned d= ); + #define DEF_RRRUU(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ unsigned d, unsigned e); @@ -147,12 +150,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #undef DEF_CRRI #undef DEF_CRRRRR #undef DEF_RRUU +#undef DEF_RRRU #undef DEF_RRRUU =20 /* 32 bit ops */ =20 -void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, - unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -184,8 +186,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, - unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 19e1eb38dfb..187cffbdf4d 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -60,6 +60,7 @@ DEF_RRR(umax) DEF_RRR(umin) DEF_RRR(ussub) DEF_RRR(xor) +DEF_RRRU(extract2) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) DEF_RRUU(extract) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 49c187c3784..3fd9d8bb92c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -230,20 +230,6 @@ static void DNI tcg_gen_op4_i64(TCGOpcode opc, TCGv_i6= 4 a1, TCGv_i64 a2, tcgv_i64_arg(a3), tcgv_i64_arg(a4)); } =20 -static void DNI tcg_gen_op4i_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGArg a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), a4); -} - -static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGArg a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), a4); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -336,6 +322,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ unsigned, unsigned); =20 +#define DEF_RRRU(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ + TCGTemp *, unsigned); + #define DEF_RRRUU(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *, \ unsigned, unsigned); @@ -354,6 +344,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_CRRI #undef DEF_CRRRRR #undef DEF_RRUU +#undef DEF_RRRU #undef DEF_RRRUU =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); @@ -728,6 +719,23 @@ static void gen_extract(TCGType type, TCGTemp *dst, TC= GTemp *src, } } =20 +static void gen_extract2(TCGType type, TCGTemp *dst, TCGTemp *lo, TCGTemp = *hi, + unsigned int ofs) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs <=3D width); + if (ofs =3D=3D 0) { + gen_mov(type, dst, lo); + } else if (ofs =3D=3D width) { + gen_mov(type, dst, hi); + } else if (lo =3D=3D hi) { + gen_rotri(type, dst, lo, ofs); + } else { + gen_op_ttti(INDEX_op_extract2, type, dst, lo, hi, ofs); + } +} + static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); @@ -1232,6 +1240,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) unsigned c, unsigned d) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b), c, d); } =20 +#define DEF_RRRU(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + unsigned d) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), d); } + #define DEF_RRRUU(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ unsigned d, unsigned e) \ @@ -1251,6 +1264,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_CRRI #undef DEF_CRRRRR #undef DEF_RRUU +#undef DEF_RRRU #undef DEF_RRRUU =20 static void gen_ext(TCGType type, TCGTemp *dst, TCGTemp *src, MemOp mop) @@ -1264,27 +1278,6 @@ static void gen_ext(TCGType type, TCGTemp *dst, TCGT= emp *src, MemOp mop) } } =20 -/* 32 bit ops */ - -/* - * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. - * Unlike tcg_gen_extract_i32 above, len is fixed at 32. - */ -void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, - unsigned int ofs) -{ - tcg_debug_assert(ofs <=3D 32); - if (ofs =3D=3D 0) { - tcg_gen_mov_i32(ret, al); - } else if (ofs =3D=3D 32) { - tcg_gen_mov_i32(ret, ah); - } else if (al =3D=3D ah) { - tcg_gen_rotri_i32(ret, al, ofs); - } else { - tcg_gen_op4i_i32(INDEX_op_extract2, ret, al, ah, ofs); - } -} - void tcg_gen_ext_i32(TCGv_i32 dst, TCGv_i32 src, MemOp mop) { gen_ext(TCG_TYPE_I32, tcgv_i32_temp(dst), tcgv_i32_temp(src), mop); @@ -1295,6 +1288,8 @@ void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, MemO= p mop) gen_ext(TCG_TYPE_I64, tcgv_i64_temp(dst), tcgv_i64_temp(src), mop); } =20 +/* 32 bit ops */ + void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1831,25 +1826,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -/* - * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. - * Unlike tcg_gen_extract_i64 above, len is fixed at 64. - */ -void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, - unsigned int ofs) -{ - tcg_debug_assert(ofs <=3D 64); - if (ofs =3D=3D 0) { - tcg_gen_mov_i64(ret, al); - } else if (ofs =3D=3D 64) { - tcg_gen_mov_i64(ret, ah); - } else if (al =3D=3D ah) { - tcg_gen_rotri_i64(ret, al, ofs); - } else { - tcg_gen_op4i_i64(INDEX_op_extract2, ret, al, ah, ofs); - } -} - void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209459; cv=none; d=zohomail.com; s=zohoarc; b=kOK3F32xat+/nJcIWcsjbQ1Pep2x4+nLfnZQnz80KiVMCP0OvA68jVaSMzru6mqOWOUPII1oWHd5MteGcZmNNw+pqYohSM09QMjLg/Sy1TvtPqKSAstoI1XpHN/sksWUgo20avSszTOxnnnjc9nsxRWrWCi2aIDa3szCnAd+zoQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209459; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FBx7yarZFWiRiwdeUt91Lu25tly+yF456lbhvZaOQUQ=; b=LDCHyhYLJCcMEj5iphatZ7j+PguZ0Gfi/m3w7VJiW4mGTQBfuqd4qVlwKqbYce5msyZmt9ex6JBU26GOSAlQ9+IvW0qOO+sp5dd6c+fFPqPOD4EJebtyiS1rdGbncf2JHS7NIWnnTSrx/Un3zqPXBBdOdsH4xHsqhQx+wLOb4QY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209459345102.72061675167515; Sat, 12 Sep 2026 03:37:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5X-000318-4F; Sat, 12 Sep 2026 06:36:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5H-00022s-Tt for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:48 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5E-0008VX-Up for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:47 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d91ede8035so4589865ad.3 for ; Sat, 12 Sep 2026 03:35:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209343; x=1789814143; 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:content-type; bh=FBx7yarZFWiRiwdeUt91Lu25tly+yF456lbhvZaOQUQ=; b=brQTCxeGInmrjWuzvOfMExAUXtesH4/3E/6lfh+Q+cn7xNpMNMVr/EoUgTC+Dfo+EU Sgk2hoZMiE5g7yWXSkbRUg7AVy6+hSuRhpV8yYBK8QW1aTTLlfHNGLQ0HOdJ0kofORD1 wxhy0w03y8RKiHH+FgXinm44z6z/WjR7SDCeVPQhT8QLWKKzkUCt082X4sBotnsreg4M aEB2O4X7JclC1FTjFD1mG3zIfqFeLMSbrHVF0+VXakQ4aghj15Xi0i7BDEUnsTRtq9Fj IdSBsUsKKFSLlqWk381rRrRG+5CQfu/pYR3UEQQkERLDJ5bei+NKoKFM36POnmdsagjd ndKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209343; x=1789814143; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FBx7yarZFWiRiwdeUt91Lu25tly+yF456lbhvZaOQUQ=; b=P3VRrhJgbWa4y35rj4kAKrQ3iHk18rD6RcjUMTsToyG2c+v9JPU2tz+qurFcIJeJEv OAGaraVel0ck71JN8pauD48+VGxma112JTL5ty6mYcJ0zBgx9tYb23FcrBX3GHlaHhcF kSJoh0FYWAKVFjD8/+Kid6JVH6ilCRqZkhe9Ylen0f/BJo0ODFuTF11KTbsH7VnhGT67 B9Vn8dlMx7ZLnZQ1qeANju31thV5xwIZm70mWjbcDASywo/s+dRT6MRRqaQkeMNgSVXN MAfLjAPKmH2Spy91VvAcdGBU8lFbH7ImO6p6Du2qDUYq3FIyWNr6Z4/onsdXddbXm3o9 NLvg== X-Gm-Message-State: AFuF++kQalThzTcZezGa3pZ7SS0IwasSep/BctlB9NkMkO8Mh0o4juK5 2hsFXD8wpEqyb5B9zQi1VD9BMXW2OM9o0a10WvYjJ5jkzmup0n4cNRg3gkWI5BsTaou7hdIyN3l TXc1KQqU= X-Gm-Gg: AYBFou2i6XGw0xmg15W73M+LrL5xEyN6R/dqwTcT4JVw0FG7l1uJsDJh0TMEsw8P3hq AVXO0dNax9syG/oVg5vmlDfXaEGuCqDtgRvuGBnx9lgi2XjC3EazP3YPQGTi935Canc9NMtRxzU 66gBX0my5mZzM7/s6SXgFiFhuACUF5y3Wez3y8z1GZNrfH/1+IbLE78OgOx0e7qi8TQ9+Vzy2xD +h0kR0vgBwlHn2BnhXUICXUgEoobENLmsgyui6AjZ/eKefiUcvMG0XKZre0yvgrxfD8C+h0rTk8 63aVg1q9j+GLCuK9J7T+fRp7Z+kqOTm4auQiv0xEADrKznddepOBI4rRVcTZ26dzXkIMm05vNM9 0iFvYCJH5iWNT6/BERg4UNoXmH/4F6ae5EEpFAxcezaqJjN02Af/45yMO2Xcd4rFleKGY9QbCk2 Hgknk+DpM78q5hDepf9KfP8fowgrU0L+zmXEySX8euD5Q3LWRHqnSYOexptV3ZrL+niNOvQTtM/ c/cLRg= X-Received: by 2002:a17:902:f54b:b0:2d8:d4ce:7e3d with SMTP id d9443c01a7336-2dd4bd7a4cdmr37028985ad.18.1789209343317; Sat, 12 Sep 2026 03:35:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 77/82] tcg: Generic expansion of tcg_gen_addcio_* Date: Sat, 12 Sep 2026 00:31:21 -1000 Message-ID: <20260912103126.598030-78-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209460730158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 +-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 91 ++++++++++++++--------------------- 3 files changed, 42 insertions(+), 58 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 489121d478c..7f67b8972d1 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -101,6 +101,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RRR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c); =20 +#define DEF_RRRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, TCGV d, TC= GV e); + #define DEF_RI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b); =20 @@ -141,6 +144,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -159,8 +163,6 @@ void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i3= 2 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); -void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, - TCGv_i32 a, TCGv_i32 b, TCGv_i32 ci); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); @@ -190,8 +192,6 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i6= 4 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); -void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, - TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 187cffbdf4d..e4f694e5514 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -60,6 +60,7 @@ DEF_RRR(umax) DEF_RRR(umin) DEF_RRR(ussub) DEF_RRR(xor) +DEF_RRRRR(addcio) DEF_RRRU(extract2) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3fd9d8bb92c..34532f8179c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -293,6 +293,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) #define DEF_RRR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *); =20 +#define DEF_RRRRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ + TCGTemp *, TCGTemp *, TCGTemp *); + #define DEF_RI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t); =20 @@ -335,6 +339,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -388,6 +393,32 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, + TCGTemp *a, TCGTemp *b, TCGTemp *ci) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_addci, type, 0)) { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + TCGTemp *mone =3D tcg_constant_internal(type, -1); + + gen_op_ttt(INDEX_op_addco, type, t0, ci, mone); + gen_op_ttt(INDEX_op_addcio, type, r, a, b); + gen_op_ttt(INDEX_op_addci, type, co, zero, zero); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_add(type, t0, a, b); + gen_setcond(type, TCG_COND_LTU, t1, t0, a); + gen_add(type, r, t0, ci); + gen_setcond(type, TCG_COND_LTU, t0, r, t0); + gen_or(type, co, t0, t1); + + tcg_temp_free_internal(t1); + } + tcg_temp_free_internal(t0); +} + static void gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_and, type, dst, src1, src2); @@ -1200,6 +1231,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c)); } =20 +#define DEF_RRRRR(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + TCGV d, TCGV e) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), TTMP(d), TTMP(e)); } + #define DEF_RI(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b) \ { gen_##NAME(TYPE, TTMP(a), b); } @@ -1255,6 +1291,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -1312,33 +1349,6 @@ void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv= _i32 al, } } =20 -void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, - TCGv_i32 a, TCGv_i32 b, TCGv_i32 ci) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - TCGv_i32 mone =3D tcg_constant_i32(-1); - - tcg_gen_op3_i32(INDEX_op_addco, t0, ci, mone); - tcg_gen_op3_i32(INDEX_op_addcio, r, a, b); - tcg_gen_op3_i32(INDEX_op_addci, co, zero, zero); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - - tcg_gen_add_i32(t0, a, b); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, t0, a); - tcg_gen_add_i32(r, t0, ci); - tcg_gen_setcond_i32(TCG_COND_LTU, t0, r, t0); - tcg_gen_or_i32(co, t0, t1); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1849,33 +1859,6 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv= _i64 al, } } =20 -void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, - TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I64, 0)) { - TCGv_i64 discard =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - TCGv_i64 mone =3D tcg_constant_i64(-1); - - tcg_gen_op3_i64(INDEX_op_addco, discard, ci, mone); - tcg_gen_op3_i64(INDEX_op_addcio, r, a, b); - tcg_gen_op3_i64(INDEX_op_addci, co, zero, zero); - tcg_temp_free_i64(discard); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_add_i64(t0, a, b); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, t0, a); - tcg_gen_add_i64(r, t0, ci); - tcg_gen_setcond_i64(TCG_COND_LTU, t0, r, t0); - tcg_gen_or_i64(co, t0, t1); - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b) { tcg_debug_assert(n > 2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209429; cv=none; d=zohomail.com; s=zohoarc; b=G8KVk8iNsvpFgYmA3l4VPNlZ0tSx16nCESybzzeqOMWiDWgkqtoGn3lreioW1P/7MqSkQl4JuvT77pplXU+L04NKEfjOil1mnBSbmPoliowOqNk5HBwQ0T1CjDjBk9e7mNh4q57YQOUJlkuTEvSRSDsV//dho6YeDc40Ay5UDV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209429; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NaWj55VnqqirT0yKVomCVojAAQ1p55Kfckt7u5blQTk=; b=CKRClm+rggPSD4sKQxJiZWuBIy4bphqNlt/hL7XebfhHTbp5dS+iExBgL3BCGVtOQ8u2RYaIfzPD1+7EYOZGraqow1alGwXiFTWNsRRy2nyNUIruYb3/S7Khim104IjsZX5Sm/MKnHAhlGiu7PnMNx/H4cDrI1/MuFp2y59kGwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209429526526.5571597330868; Sat, 12 Sep 2026 03:37:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5j-0004C4-10; Sat, 12 Sep 2026 06:36:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5J-0002CA-08 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:49 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5F-0008Vn-RF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:48 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccd66bb4so358888a91.1 for ; Sat, 12 Sep 2026 03:35:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209344; x=1789814144; 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:content-type; bh=NaWj55VnqqirT0yKVomCVojAAQ1p55Kfckt7u5blQTk=; b=Xn69txnvcV9SRVtqEPOzHR4w1Set8Uzmr6NT492nGdfR4OXSVfAYkUXq+9L7IIFc+4 985EkpPNyGocan4gwvD98TO6L9ZFqk/znU3Q5qB3ggjWfahstAeuJAf94xS5TIxjMw8R mDu/UsXpM23Hn9orWQFmpAi8p3dDVYa3dqs1e0/CABCiAA0U2KuMtcFQG2YheSHlwLki WjVwoCgEC+M5oFMhtx/R85Med6di4St0vtIASKiHSlaf7vQ8Cl8DZvM/E+U5NE4QaG3i wcvYWSNTvC3FxNENGxDLHE0IAC0TdSfZG6v2TH9gDIA9zqo0W0Hi+cBzAUzjLnRpJtwl EHHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209344; x=1789814144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=NaWj55VnqqirT0yKVomCVojAAQ1p55Kfckt7u5blQTk=; b=O4Y8eEvcn8H8k7X9eJQh12RTR03i9vefdWNH6PTBJs7yxwlMXQ45t0TWrQMhS84LH8 zYQvK7vU7/2eWpf5aHjiflAzFuYKD3RFHpr7sNxo0QQjA0KzObvCRwBeLhOQ3a4iK/hl at87Ym/kQS9vYcQYCRT4tJUkuuRWBwl9gcORqDyNQr6/eqjy1RKkIciQh0hQJqY4eD7h UWUyUXkPJeZENmqSMQKJ1M18iaG7wDi2DvedPSDLOJCxohQ2Hma/8/RGTwlq2FKXJqFL DnaNuQqUc108N7ySfrwoYT7ZJLG9gFpFagdER1oINJqGHVd3b3zGrA6uK80IKw8h99wc xZSA== X-Gm-Message-State: AFuF++m872u3M+FjZiqfIM+ZI6lWbQdm2b76PdtPbVFjT3IfIMg9gWul uULl1CDRxhwXjXGbHQGDwbWejAVi6FnWjA9TomVMp5sNx3qUqXWaTpNdO6JeiJNahFRx8Y0bvcp lgSYZU4A= X-Gm-Gg: AYBFou1ddTGewurL33ATJu0gmV39/2PixdTj4/5wHYxlegV+njaWh/j/NR7y3c93kP1 q2wmomr2UVjNM9ntxVl8stXnaWd2wQPuTUVCEPcDHJVWDR1g0XxLM8CFSO2DD4B69uguvHY+P27 Nw6qOUdRjcElp/LYTZe/yPBksG/s2KYlsOOZUNX80NFe/d74Skb7NGI1DOI5lLpEhsL9ggJC+cJ NtSkitlLX59UJZEpoXHwVG1shA5P1BfKbIyTEBME6elm7B547FGkFWdVynYWM1C4XszkMAKkczR whiSvKB0wUd61bkH5Cvj7gLBh5WuDS+jjCq1wpDRC0rQFihkbcnC37IQ2/eNEzte2YPpyMIPh/H UVcPB2eglIGXraX8YmjQctZ0bcu9aYQWJXuHeNPnIdtB6n9SE/ijHsR1VCgvR4dmLAfSIsAk12b Cb7g+HSBGlcyO2Z8h9t5jbEaQh3H4DPOLRXnzFA09NOBmO1UMUs6D+3hJkxDBPLnljuedNKtXpl QDFMhI= X-Received: by 2002:a17:90b:580f:b0:39d:b769:3067 with SMTP id 98e67ed59e1d1-39dbbc723bamr3890600a91.0.1789209344233; Sat, 12 Sep 2026 03:35:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 78/82] tcg: Generic expansion of tcg_gen_add2_* Date: Sat, 12 Sep 2026 00:31:22 -1000 Message-ID: <20260912103126.598030-79-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209430610158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 9 ++-- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 78 +++++++++++++++-------------------- 3 files changed, 39 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7f67b8972d1..67d32fc9f2e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -104,6 +104,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info); #define DEF_RRRRR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, TCGV d, TC= GV e); =20 +#define DEF_RRRRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + TCGV d, TCGV e, TCGV f); + #define DEF_RI(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b); =20 @@ -145,6 +149,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_RR #undef DEF_RRR #undef DEF_RRRRR +#undef DEF_RRRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -159,8 +164,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); @@ -188,8 +191,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index e4f694e5514..dc567a27ffe 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -61,6 +61,7 @@ DEF_RRR(umin) DEF_RRR(ussub) DEF_RRR(xor) DEF_RRRRR(addcio) +DEF_RRRRRR(add2) DEF_RRRU(extract2) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 34532f8179c..164b8bb26b6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -297,6 +297,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ TCGTemp *, TCGTemp *, TCGTemp *); =20 +#define DEF_RRRRRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *, \ + TCGTemp *, TCGTemp *, TCGTemp *); + #define DEF_RI(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, int64_t); =20 @@ -340,6 +344,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_RR #undef DEF_RRR #undef DEF_RRRRR +#undef DEF_RRRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -393,6 +398,28 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_add2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_addci, type, 0)) { + gen_op_ttt(INDEX_op_addco, type, t0, al, bl); + gen_op_ttt(INDEX_op_addci, type, rh, ah, bh); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_add(type, t0, al, bl); + gen_setcond(type, TCG_COND_LTU, t1, t0, al); + gen_add(type, rh, ah, bh); + gen_add(type, rh, rh, t1); + + tcg_temp_free_internal(t1); + } + gen_mov(type, rl, t0); + tcg_temp_free_internal(t0); +} + static void gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, TCGTemp *a, TCGTemp *b, TCGTemp *ci) { @@ -1236,6 +1263,11 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) TCGV d, TCGV e) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), TTMP(d), TTMP(e)); } =20 +#define DEF_RRRRRR(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ + TCGV d, TCGV e, TCGV f) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), TTMP(d), TTMP(e), TTMP(f= )); } + #define DEF_RI(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TINT b) \ { gen_##NAME(TYPE, TTMP(a), b); } @@ -1292,6 +1324,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_RR #undef DEF_RRR #undef DEF_RRRRR +#undef DEF_RRRRRR #undef DEF_RI #undef DEF_RRI #undef DEF_RIR @@ -1327,28 +1360,6 @@ void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, Mem= Op mop) =20 /* 32 bit ops */ =20 -void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_addco, t0, al, bl); - tcg_gen_op3_i32(INDEX_op_addci, rh, ah, bh); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_add_i32(t0, al, bl); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, t0, al); - tcg_gen_add_i32(rh, ah, bh); - tcg_gen_add_i32(rh, rh, t1); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1836,29 +1847,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_REG, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_op3_i64(INDEX_op_addco, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_addci, rh, ah, bh); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_add_i64(t0, al, bl); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, t0, al); - tcg_gen_add_i64(rh, ah, bh); - tcg_gen_add_i64(rh, rh, t1); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b) { tcg_debug_assert(n > 2); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209443; cv=none; d=zohomail.com; s=zohoarc; b=jdz15E5Sb8Qmy10BZGpopEn/wE/2H2euHMoUKQavDl84Vu/ixKftYAI8EiJE53PdS8bdmYp0RCy4JsFkaP6SbytJi+fIP842jH9JqGT0vz9vpgb9T9CebCf4xflQcy8Y2OTqekg5E6RNX64kI6hBKXeTk0aBMVmBEABNfN6NT/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209443; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6i3xXZbPEroHYzTlSOxIG/qtruVFdBi6eR0RDPNX6Z0=; b=Mx3mZyAsvZhHmbeUq/C1vzPuSvhTOU7Sr00ppORR2JUVuMNcyISs8vuOK+qISkGPFoOu0oEQ4SuVciEX1FTkyVF5kmTWZm+GvLxoN9WAYR4wC0V0EFhiuKKZ/VUYjqrrhdDvllc6K0LbtU/2BqiOOWX6YQt5it5wiedKRVKU6TI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209443555776.6206683721538; Sat, 12 Sep 2026 03:37:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L5k-0004PT-F7; Sat, 12 Sep 2026 06:36:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L5J-0002EW-BT for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:49 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L5G-0008W9-UQ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:35:49 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2db710396ffso24959855ad.1 for ; Sat, 12 Sep 2026 03:35:46 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4f55735sm13673674eec.24.2026.09.12.03.35.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:35:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209345; x=1789814145; 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:content-type; bh=6i3xXZbPEroHYzTlSOxIG/qtruVFdBi6eR0RDPNX6Z0=; b=kgPjsyhoHamjPIXyUYtmko5CMiRGmnZiJ/KIOGPGE4fIzVbyhATKbKHzpm8tQ3ChZo CEvPxp+wvRk1PzA4oNSVrFVWSXOXNstq+6XzkY0nj5D5oChnRjez7m1yPCL5IpPEhdK/ bxPaIKXYYcDGHEulIu+BLXBsNVzJB9dfMvsuVhJARFB+wLNiFcmsLUmaF/r8FLl2DRpG MY3IhlwDTqRtXyVR8dJ5fJCmruYKQ/5/Z27ThsZaD7U8WLW2m7snEkWrIrqNP/tlee8p OVllo1nRYmEeMOUPgShhwgecd2WupFjNtr93dDEoS1xNG9+ssObc7Rpt5wkIJmoKXCNF xh1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209345; x=1789814145; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=6i3xXZbPEroHYzTlSOxIG/qtruVFdBi6eR0RDPNX6Z0=; b=gxMZPxLJ+tJytRI7ZtZiccyxXosTOM60xNlKXLZlifSefrmJ5Sa7bAwu840xTlJbXg dkZmgDuA8AfuEr/yJfT3TUDoZD7Cycm/BpF7B4KWqNSSXv8RS+l3D8S1vMI7bmCnDbmd 4wvotOj2Zq9EJU98/ER+JorIN1H5RrJVACEgXkApEgLAvD5sQpLshFsstCSae+iaEx6y UF2rPBOrtB9KnCdZ/2HjZayRhczH7dE1j/hKeyCPe8b+qGgzPK9aAXVEnqASNEMatJjF 041Qp1iW5dE3eNv92ryCWnJu9BbxHrzAiz4NcLiIP7jrE748j6Zsnu8fHav5RHfhmlCY nwRw== X-Gm-Message-State: AFuF++kW7/RKwaYLimxk8fCZa5DGy3TxkVZUIz4zZEogh2DjjgQfNPZ1 GC4UWZkG9+V66WJs/pDm6xanKm3CLQCxf4bvruu9exlf/MaoObsV0DmPi3m3WKCf3pLfQpSRFiY uIOm9VXk= X-Gm-Gg: AYBFou3tbVKDqt6D/u+fV2gdmAbAXFWWKsN2Mb0LH+eMMI5JxzHJ+Nd8t29rlPqEn4R LZsB6u0Q18SsLv82jBd2gZyeJ2fqusTqEHYNZDvQQZIQ4LEWIt22sqGZu0LzMCi8W3ihAvYn06s P685mY5E4ljIElTxOBNZ1N/MGvEA5ayU+NsiAf82FLd9eDfmGZYwFGbUPuj6dYuYfyizlRLq1KH rMtYGP3qR37BI9eJE6Nr2wXgmLOhNraupntk9n5GzYXXBt43kdKJtG0HrMCRnatzszQzkjvbiiy 9H5iBDueBYyZ6zKI9AePu7fyO9gmf6LsNKPAFD7EEZKsPqSDcbGXvz9r1IrltsPQjq8Hr3/RWCk ysEzvOEms4P1SiOm/K5AwXomF/jj0QN+y/jw6tMNIRxDgu3pjc9YXUE2Li9OKHkj+0um5R5dOtG o+B64ic/jfKLUzJVoxVRwSLpNL3oTaMnqJYWehgn+tkgu8SL/zJLiw4LvN5mSmRBOfB+w1Mxx8E fuv+uo= X-Received: by 2002:a17:902:f64f:b0:2d7:1f17:41f8 with SMTP id d9443c01a7336-2dd0ec755c5mr146046825ad.15.1789209345236; Sat, 12 Sep 2026 03:35:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 79/82] tcg: Generic expansion of tcg_gen_sub2_* Date: Sat, 12 Sep 2026 00:31:23 -1000 Message-ID: <20260912103126.598030-80-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209444738158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 --- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 67 ++++++++++++----------------------- 3 files changed, 23 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 67d32fc9f2e..96fb4d5a47c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -164,8 +164,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); @@ -191,8 +189,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index dc567a27ffe..337733b71a6 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -62,6 +62,7 @@ DEF_RRR(ussub) DEF_RRR(xor) DEF_RRRRR(addcio) DEF_RRRRRR(add2) +DEF_RRRRRR(sub2) DEF_RRRU(extract2) DEF_RRRUU(deposit) DEF_RRUU(deposit_z) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 164b8bb26b6..ca4440746cb 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1183,6 +1183,28 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) gen_addi(type, dst, src1, -src2); } =20 +static void gen_sub2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_subbi, type, 0)) { + gen_op_ttt(INDEX_op_subbo, type, t0, al, bl); + gen_op_ttt(INDEX_op_subbi, type, rh, ah, bh); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_sub(type, t0, al, bl); + gen_setcond(type, TCG_COND_LTU, t1, al, bl); + gen_sub(type, rh, ah, bh); + gen_sub(type, rh, rh, t1); + + tcg_temp_free_internal(t1); + } + gen_mov(type, rl, t0); + tcg_temp_free_internal(t0); +} + static void gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *s= rc2) { if (src1 =3D=3D 0) { @@ -1360,28 +1382,6 @@ void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, Mem= Op mop) =20 /* 32 bit ops */ =20 -void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) -{ - if (tcg_op_supported(INDEX_op_subbi, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_subbo, t0, al, bl); - tcg_gen_op3_i32(INDEX_op_subbi, rh, ah, bh); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sub_i32(t0, al, bl); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, al, bl); - tcg_gen_sub_i32(rh, ah, bh); - tcg_gen_sub_i32(rh, rh, t1); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) { if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { @@ -1889,29 +1889,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) -{ - if (tcg_op_supported(INDEX_op_subbi, TCG_TYPE_REG, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_op3_i64(INDEX_op_subbo, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_subbi, rh, ah, bh); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sub_i64(t0, al, bl); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, al, bl); - tcg_gen_sub_i64(rh, ah, bh); - tcg_gen_sub_i64(rh, rh, t1); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) { if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209571; cv=none; d=zohomail.com; s=zohoarc; b=ntSbMB+mzCLClj3BDCUjyz3rsAeOsE4KYGe0HKDr+zyK7d8dR+kozNT4r56frbbYELHrhNYG0QZCft/Y3spscPgS4+9jIOCveBiYQx/eIiVkplNoS8RxccgFmYg8824rOsGe/vTsnhuvh3FDt9TXscJjAloK3hSYlr9njv768e8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209571; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=yYg+qLBEmbn6CTj46bhZ7/XiOyxk2LV37CXOnJkl9CY=; b=UUDwbX454tk1cDQCbLXgz73pIssLTLGshwgGhEGUQ/u16wt5gdktCYIEJcr/M+y/v1eBQNSvIZmMKv+kCMI2aReLLoD4C7raCRW5A0RaJrnliAZpPU+O+1/lf5cZAvMfgcJJ3AhF2Ar9dh+WBTQApVihNb5Xkoz89BZcJex33J4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178920957166177.74524496562117; Sat, 12 Sep 2026 03:39:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L8J-0006k2-1d; Sat, 12 Sep 2026 06:38:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L8F-0006jg-PF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:51 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L8D-0000bC-P5 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:51 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4bdf8abaaso799753a12.2 for ; Sat, 12 Sep 2026 03:38:48 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4e9b359sm12702231eec.14.2026.09.12.03.38.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:38:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209527; x=1789814327; 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:content-type; bh=yYg+qLBEmbn6CTj46bhZ7/XiOyxk2LV37CXOnJkl9CY=; b=vQAHtwaKtAuSow9QyfgTbMgYzuVwXlDhXXybAVb9nMKSdLOUnfMYmo/0jijYnp212G FM2TbL6ue+vTOyyUpqJewSlD7cnV93Tibgwbxm42h2hiJxMS6kINhiP0qheoPzsvzrQm k75zD5RFs/yKBQyuWTm9Z+C8bf/ZXafsFFbZMAQVD38DeW4I8RWCUaVi7rLSGkGgrjas DIC71q0XmO9wkHiTxzaBAE3JPEVUt3jBk10GW6TsM2KVMWHTA+bRtZ6dAghWcEk2TvEV Z4EQwLgOsMIKTgKzde5KgjBUHhXlFnBV8Fo5oG1QRnOa/ifoQ6kHsyXOUUe7sY2od1cq uItQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209527; x=1789814327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=yYg+qLBEmbn6CTj46bhZ7/XiOyxk2LV37CXOnJkl9CY=; b=dmRQKDbzyZ5SbGk0BSAUxn9Twq9xfK64LLn+lTJvpWVAt1swkBlC+FdwRfcX0734Bu vV+r4WgwNCP26iNPnE6P64vgKEBJrD3xyzJEamwl0FKXSwlKrZ4qXvsLSA7sxuopuNYT 8M5JUlfqX6L0JUivM88nb1uk2uVfQUW5Cs1IEbwoCrfjMiF3Pq7Fu6IxrwdYtyxYLnKs wtA98mzbPov518QhEyMtcV1/60wJJ/gpyaI7f8ujfiCRSZDXdeXr1oYR+6FE7qmpfP7W jwUmMcmDutdCwyohL5qNoYQGarc1eDorgHXt9cfbFYO6IdMyHv0yA8k3t/zmwLc9N5+2 EMkw== X-Gm-Message-State: AFuF++k1FXsKduUJeXyK8h/fu1jTJxhRBiCP5DHH1Ijk0O+t91RXC+rS xNzPBW5HD/wPUL1ERy+R/mD+T8gUtTmdNNecDQfqC20O2mZVyjG3O+ifF56tRAiAuSJqBqrRhay JxNtZF3I= X-Gm-Gg: AYBFou1O6K8yuLpg8UnJd8U2dz3qW5MqQn4y0fb4QkEAzhg5F2fQ+X9jGAfkKX+rJ05 ZYML5+lkm9xTKGprd3MNSllwxyd1iT53wr8xxBi+AsPCllVAd18MxxKTBh6xo39ckjTs/oBUEMV rw7fheI9QdDbtMIAAv+VxFTUfAQhBnxMospcU7MZqI1T6Mt+OAnNWAw3F6ElpyMKSQsdddqoymA f16F5mtbvEq7IY6uweAmSHXNRNcRlHXD6ZyQRxUxu/BFfjZIPwM8CNBy7n6ktWp1mMgtMAC5UOe cMhHU63ELaFYSCk6ElSkBF1ByaHMRRvbMyQbj6aIv3MwzdJb9D6r5fcffjvwzhLhlLiZp5xkiS2 d7vxy/63qjKCNrMhb8BIekzSvnYhzyuGptncwSzpkXcTCbc0rBLuK53H1WxKgfYlY4hp+p4WTES 8ChN9SYKLU9cciG+HpbH3AgBnYmdcgLiukU4XVO7p5Wpwsz3Je5xv2cSGArpKSmbCinm1BV4baS ER/khQl X-Received: by 2002:a05:6a20:a128:b0:3cd:67e9:8565 with SMTP id adf61e73a8af0-3daed19f362mr15338055637.9.1789209527444; Sat, 12 Sep 2026 03:38:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 80/82] tcg: Generic expansion of tcg_gen_mulu2_* Date: Sat, 12 Sep 2026 00:31:24 -1000 Message-ID: <20260912103126.598030-81-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209573132158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 ++- include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 96 ++++++++++++++++++++--------------- 3 files changed, 60 insertions(+), 43 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 96fb4d5a47c..f8d65cc98ef 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -101,6 +101,9 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #define DEF_RRR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c); =20 +#define DEF_RRRR(NAME) \ + void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, TCGV d); + #define DEF_RRRRR(NAME) \ void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, TCGV d, TC= GV e); =20 @@ -148,6 +151,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRR #undef DEF_RRRRR #undef DEF_RRRRRR #undef DEF_RI @@ -164,7 +168,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); @@ -190,7 +193,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); -void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 337733b71a6..24a7f5592ed 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -60,6 +60,7 @@ DEF_RRR(umax) DEF_RRR(umin) DEF_RRR(ussub) DEF_RRR(xor) +DEF_RRRR(mulu2) DEF_RRRRR(addcio) DEF_RRRRRR(add2) DEF_RRRRRR(sub2) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ca4440746cb..a12147367ac 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -135,6 +135,13 @@ static TCGOp *gen_op_tttii(TCGOpcode opc, TCGType type, temp_arg(t2), a3, a4); } =20 +static TCGOp *gen_op_tttt(TCGOpcode opc, TCGType type, TCGTemp *t0, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), + temp_arg(t2), temp_arg(t3)); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -293,6 +300,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) #define DEF_RRR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, TCGTemp *); =20 +#define DEF_RRRR(NAME) \ + static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ + TCGTemp *, TCGTemp *); + #define DEF_RRRRR(NAME) \ static void glue(gen_,NAME)(TCGType, TCGTemp *, TCGTemp *, \ TCGTemp *, TCGTemp *, TCGTemp *); @@ -343,6 +354,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRR #undef DEF_RRRRR #undef DEF_RRRRRR #undef DEF_RI @@ -854,6 +866,44 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_mulu2, type, 0)) { + gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_muluh, type, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_mul(type, t, src1, src2); + gen_op_ttt(INDEX_op_muluh, type, rh, src1, src2); + gen_mov(type, rl, t); + + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + /* Simply extend and use host 64-bit multiply. */ + gen_extu_i32_i64(t0, src1); + gen_extu_i32_i64(t1, src2); + gen_mul(TCG_TYPE_I64, t0, t0, t1); + gen_extrl_i64_i32(rl, t0); + gen_extrh_i64_i32(rh, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } else { + TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_muluh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + gen_mov(TCG_TYPE_I64, rl, t); + + tcg_temp_free_internal(t); + } +} + static void gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_nand, type, 0)) { @@ -1280,6 +1330,10 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c) \ { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c)); } =20 +#define DEF_RRRR(NAME) \ + DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, TCGV d= ) \ + { gen_##NAME(TYPE, TTMP(a), TTMP(b), TTMP(c), TTMP(d)); } + #define DEF_RRRRR(NAME) \ DNI void glue(glue(tcg_gen_,NAME),TEXT)(TCGV a, TCGV b, TCGV c, \ TCGV d, TCGV e) \ @@ -1345,6 +1399,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) #undef DEF_R #undef DEF_RR #undef DEF_RRR +#undef DEF_RRRR #undef DEF_RRRRR #undef DEF_RRRRRR #undef DEF_RI @@ -1382,28 +1437,6 @@ void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, Mem= Op mop) =20 /* 32 bit ops */ =20 -void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) -{ - if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { - tcg_gen_op4_i32(INDEX_op_mulu2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I32, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i32(INDEX_op_muluh, rh, arg1, arg2); - tcg_gen_mov_i32(rl, t); - tcg_temp_free_i32(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t0, arg1); - tcg_gen_extu_i32_i64(t1, arg2); - tcg_gen_mul_i64(t0, t0, t1); - tcg_gen_extr_i64_i32(rl, rh, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) { if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I32, 0)) { @@ -1889,25 +1922,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) -{ - if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0)) { - tcg_gen_op4_i64(INDEX_op_mulu2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i64(INDEX_op_muluh, rh, arg1, arg2); - tcg_gen_mov_i64(rl, t); - tcg_temp_free_i64(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mul_i64(t0, arg1, arg2); - gen_helper_muluh_i64(rh, arg1, arg2); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) { if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209556; cv=none; d=zohomail.com; s=zohoarc; b=eWJeNVlm3culSa06c3biIFsT//GVZPy1iazTVfnYyXTuRXtXDvdFPtx8U6MvInkq235HvGCaTN8pxlt8ap5hkxg7b4RcU9XJz729SQFFXUMlk24IM65rQa3Yd2nKzNnOCPUztMc34Xv8lLfwG1nMtQAt2AyIwo2ekLHVgYtIQRY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209556; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=HwAs2OR8nUvFBiGlkWRFxLOHkFlpIsSfaweC9OIlPtc=; b=hvxFnr+BEmpBxQK6tpTox4aPzJ+vJoFyM5z2qVmwvWQDTroOW/pS997ohfhdrOULVxRmEYKfzUsM77JhmAXM2t0kD4QZFc7DIgqNxjaxacJVSlWUX5vuKDeVFpxI3ellGwWVhrLsKLI8qbqvrZmd8abf9ZtUKiMfJZN0W2Z0DdA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209556551743.6577039552482; Sat, 12 Sep 2026 03:39:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L8K-0006ka-L9; Sat, 12 Sep 2026 06:38:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L8H-0006jn-Gv for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:54 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L8E-0000bP-4J for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:53 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-39647184c73so2529155a91.1 for ; Sat, 12 Sep 2026 03:38:49 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4e9b359sm12702231eec.14.2026.09.12.03.38.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:38:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209528; x=1789814328; 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:content-type; bh=HwAs2OR8nUvFBiGlkWRFxLOHkFlpIsSfaweC9OIlPtc=; b=zCxFLGfmjY7WTzaqKWqIY57aUXk94fhb5AZ3qaSUZTSGprld0gnxh5AbWlzd53SbdU dm8P9TCeOadOSqIk8uL9shECR0nfMmePqevvPWZ/CNyGbRyVR9PPMLvxSs1N6OImeEPq tB6qrQAku15qcvMUqfvM7qkm/dYhpjv/wunIfW6oWytCaXf+gv2SSt55hEvh7kv+AZK4 HfIgpOR0dkQ0udNretfZE+1nkKnYgRsYcTHYwdY5oRQlxNeIHnVmoKBujKCsHt+FXqLS 0Xxvjx+pYYxb+efkZxt8INjRzmzsUXSQCVjJJuhSYLldmqm3FsWOgPSLHPkqIZn3wsut i+qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209528; x=1789814328; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=HwAs2OR8nUvFBiGlkWRFxLOHkFlpIsSfaweC9OIlPtc=; b=WVPidKqeAbSyDGxP3o9IXtHq2PKdV2fuVOggGn+E0wrUczjc0ZmYxC1LLeHif9vp7z oB7yWf+x7T5Rd0ebM0BeeXyLI8tVbl7Ysdv/bJduSFrQCam5qM78ZvdZEogf4CLL3Xzz wMfJexQKy1G1RTlOHiq6EPZfnUqFY9BJEMfjkpyde9LkI7K6KhDus9H0z90WEKXNMBXx yzQPhIT4LmYmdb9w6JP6QOr8/oWeH11ythTSypJmiLCF9qMX6OK4Y+ifs2RtzBoh8x90 FImps68fj41U2xchsNbzTBhERe65Evy5NGzpBkM+UH2GFnHTzN5IzCX1FzVi8PS6Ab8C dCKg== X-Gm-Message-State: AFuF++knEZvBugFGdBlifBt4DK7Bni0nDcpdfAlgZlyAdrZZKAdUClGy XKAw1GJB+laeZ6TQ5nDDG4uePRva66y90uWjFT4FeghpZUBLSdaPV5VAl2SeGTKpfQhvbhibqfY T01eWSiE= X-Gm-Gg: AYBFou0/i4c/5LGoVkuNGj8k6Vcpdv4Y1dRY2MV2I9kEbrNDkZDlyq6qsFbbGTNQO/1 4U0OOq+rv1l5uLWz+XShcyssBoy5j6IzbSFR73G6uEcFDCASpAwiUdEI1g2Mqk8YuywZ0bOq0+i yhxAi6rm8TPhB8jbJlXCmBw2CO+0YT8NrgsaEeopoWMe7j0eFJYTNCGLYdlevCutwmsRPtUjH+a Qd7o5dWlSgECFLeVfMlTsasGZU8d+ZAwT44Qdav5DAb5U/DnSR4cZlJI8OA79PvS+DX55wra9te DJ+mEUFns6WBri6akjAuGbglHU4RXDr5R0arkjYe9zUmEmThPXhuScvW4jlnwd6WXGO+U5OzPCy qCvCYsuO7kgeOikNG68EbXf5Q7Wv8RGCdUSporBw8x1RoP5wHP1pRlSSHmvAP88ayqY+loGF/wo MqDqrRIyZzmooKdqRpUFnt9amawIVfkIp3mZnqbwx3oLEfDeBOURdLRg0TL+JqS4ojS+1NWxfwO 3pzmPc= X-Received: by 2002:a17:90b:1d51:b0:39b:3b03:8a32 with SMTP id 98e67ed59e1d1-39d77bf643bmr15718172a91.29.1789209528338; Sat, 12 Sep 2026 03:38:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 81/82] tcg: Generic expansion of tcg_gen_muls2_* Date: Sat, 12 Sep 2026 00:31:25 -1000 Message-ID: <20260912103126.598030-82-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209557093158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def2.h.inc | 1 + tcg/tcg-op.c | 141 +++++++++++++++------------------- 3 files changed, 61 insertions(+), 83 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f8d65cc98ef..a46dac9abd5 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -168,7 +168,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -193,7 +192,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); -void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def2.h.inc b/include/tcg/tcg-op-def2.h.inc index 24a7f5592ed..48d9270f3d0 100644 --- a/include/tcg/tcg-op-def2.h.inc +++ b/include/tcg/tcg-op-def2.h.inc @@ -60,6 +60,7 @@ DEF_RRR(umax) DEF_RRR(umin) DEF_RRR(ussub) DEF_RRR(xor) +DEF_RRRR(muls2) DEF_RRRR(mulu2) DEF_RRRRR(addcio) DEF_RRRRRR(add2) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a12147367ac..829a400ff1b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -183,13 +183,6 @@ static void DNI tcg_gen_op2_i64(TCGOpcode opc, TCGv_i6= 4 a1, TCGv_i64 a2) tcg_gen_op2(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2)); } =20 -static void DNI tcg_gen_op3_i32(TCGOpcode opc, TCGv_i32 a1, - TCGv_i32 a2, TCGv_i32 a3) -{ - tcg_gen_op3(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), - tcgv_i32_arg(a2), tcgv_i32_arg(a3)); -} - static void DNI tcg_gen_op3_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, TCGv_i64 a3) { @@ -223,20 +216,6 @@ static void DNI tcg_gen_ldst_op_i64(TCGOpcode opc, TCG= v_i64 val, tcgv_ptr_arg(base), offset); } =20 -static void DNI tcg_gen_op4_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4)); -} - -static void DNI tcg_gen_op4_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4)); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -866,6 +845,66 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_muls2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_muls2, type, 0)) { + gen_op_tttt(INDEX_op_muls2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I32, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_mul(type, t, src1, src2); + gen_op_ttt(INDEX_op_mulsh, type, rh, src1, src2); + gen_mov(type, rl, t); + + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + /* Simply extend and use host 64-bit multiply. */ + gen_ext_i32_i64(t0, src1); + gen_ext_i32_i64(t1, src2); + gen_mul(TCG_TYPE_I64, t0, t0, t1); + gen_extrl_i64_i32(rl, t0); + gen_extrh_i64_i32(rh, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t3 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mulu2(TCG_TYPE_I64, t0, t1, src1, src2); + + /* Adjust for negative inputs. */ + gen_sari(TCG_TYPE_I64, t2, src1, 63); + gen_sari(TCG_TYPE_I64, t3, src2, 63); + gen_and(TCG_TYPE_I64, t2, t2, src2); + gen_and(TCG_TYPE_I64, t3, t3, src1); + gen_sub(TCG_TYPE_I64, rh, t1, t2); + gen_sub(TCG_TYPE_I64, rh, rh, t3); + gen_mov(TCG_TYPE_I64, rl, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + tcg_temp_free_internal(t3); + } else { + TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_mulsh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + gen_mov(TCG_TYPE_I64, rl, t); + + tcg_temp_free_internal(t); + } +} + static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *src1, TCGTemp *src2) { @@ -1437,28 +1476,6 @@ void tcg_gen_ext_i64(TCGv_i64 dst, TCGv_i64 src, Mem= Op mop) =20 /* 32 bit ops */ =20 -void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) -{ - if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I32, 0)) { - tcg_gen_op4_i32(INDEX_op_muls2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I32, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i32(INDEX_op_mulsh, rh, arg1, arg2); - tcg_gen_mov_i32(rl, t); - tcg_temp_free_i32(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_ext_i32_i64(t0, arg1); - tcg_gen_ext_i32_i64(t1, arg2); - tcg_gen_mul_i64(t0, t0, t1); - tcg_gen_extr_i64_i32(rl, rh, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); @@ -1922,44 +1939,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) -{ - if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I64, 0)) { - tcg_gen_op4_i64(INDEX_op_muls2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i64(INDEX_op_mulsh, rh, arg1, arg2); - tcg_gen_mov_i64(rl, t); - tcg_temp_free_i64(t); - } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || - tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t3 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mulu2_i64(t0, t1, arg1, arg2); - /* Adjust for negative inputs. */ - tcg_gen_sari_i64(t2, arg1, 63); - tcg_gen_sari_i64(t3, arg2, 63); - tcg_gen_and_i64(t2, t2, arg2); - tcg_gen_and_i64(t3, t3, arg1); - tcg_gen_sub_i64(rh, t1, t2); - tcg_gen_sub_i64(rh, rh, t3); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - tcg_temp_free_i64(t3); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mul_i64(t0, arg1, arg2); - gen_helper_mulsh_i64(rh, arg1, arg2); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); --=20 2.53.0 From nobody Sat Sep 26 20:52:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1789209553; cv=none; d=zohomail.com; s=zohoarc; b=HKvo2FB4E5wn/s6G3vWx/Wu8ec6NbvLf07l6e2Lu+4+8Z98ATXkbYkATmSYPf5ZkcBj6IwBjBeJu+we77OKDKb7SehuLqNZbyzLzWcI0dG5nOdzRvraqplRSLkqBU4OuooXb+Ykvtzn1q64kPZEtocubDRDIdFY9RTEAVadCYRU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789209553; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=baXAlzN6SUZ/28JUDqdTNn15iwERXkS9cPzuvqcCx48=; b=E6UtF+bYWTmepscLdot/tgfAXNhwmOJ5nc0hDHcTuOZHOW7engX6o9PzAcaXavGFPpCXX7MebI1HgyaMm6t9RJAadYlRmoxDFubAWXB0NKlKWsCth3r74wMBPWUPwhyhcgTiAxpSssUsAfaWPOrVMToxqvllUHsb60ILYdwobo0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789209553257399.1868098310821; Sat, 12 Sep 2026 03:39:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5L8L-0006l0-2b; Sat, 12 Sep 2026 06:38:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x5L8H-0006jo-QQ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:54 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5L8F-0000bX-Cb for qemu-devel@nongnu.org; Sat, 12 Sep 2026 06:38:53 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-395cf2535acso1820696a91.1 for ; Sat, 12 Sep 2026 03:38:50 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4e9b359sm12702231eec.14.2026.09.12.03.38.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 03:38:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789209529; x=1789814329; 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:content-type; bh=baXAlzN6SUZ/28JUDqdTNn15iwERXkS9cPzuvqcCx48=; b=goZE30hsnyUhSbwRr2yww66xOzw9NE0pIvjWv6LFaSKLXQKKJhJDPLGn/uvFzspZ/X GWuShIeFvJawC29EYxFEbzaRzhQXrgRN3q3Gn8KevrAHT93vlyrTJtvemdPRuv2JH5ZN NBwjgCrUKe7iNWvYqfRfxR6AbmdfcLlZSwEefhRy1u3JCTlg2h7oXLErz6xnKCK2KDsG moQQ0+xQ4IfR0cwVfebhtYrX3H7zIC7K4ayph2BYgNKEk9ukTt4JXXx4jmD8sd6O1GuP l8WB6X+clMqInThl65eM13jZ8fiuE5Vtu6O9VNKqYX8GH+LczqoPBKlX1ud74cut/WUk dByA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789209529; x=1789814329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=baXAlzN6SUZ/28JUDqdTNn15iwERXkS9cPzuvqcCx48=; b=F8lqCzrCh1iIZcQcWFdAKqhFCdzawQW8E66yB6WEb1hvBuUJK1Rt28x5qdm7LjjAIa NLI94u2CsxygZFDF0WcnEkZ9Das/VJJZtkO5TVuTARHOiSocmZWs4Jc8fH68QXNt2h48 muhfR7wAW4ZRYLOxCgJ4mWuYyglQJC8olLqIYAgv9IlB/IuY/jH4JQXVykVPOVsjyKbB aRwNY/8vkCSxTN2J7Ue+Mv5mhYveju9royvBhvG6nMPYVXXs9RKSpymhERqhjT/hJTEd ppxkZYKZCw8sjq7zh4s0uZVq31tnqk5D9emTaxjicMC+alaR7+Rqr5Ol9S1EvfYI4yFs YLYg== X-Gm-Message-State: AFuF++kaFlEclFUSlmnzlMDMHcfFwXXR/QCse5/i2jMLLXc5fO0rIk9N rmuR04gMHThDfzKQMm/iM76TfK7Mq+MtlqOOGsRrIMFsGF9XSZb+vN4QhCm0d0107SkQuIqghPo IO9Rd4cQ= X-Gm-Gg: AYBFou1IiERGfM5DjH1dp7BgDJoqgiZcNjUMjEjy5nwhRzuzh/bnK+bCt1+PKXi0/q/ ewDs8SDxRDRm7uIjuUg52f9v4pTa5cvfqizOsht+XZaTqZaMgrZDoPAmmiH3B7iGlR27LyO8aZo rLdg+TrRsA9zUy20kAkBF6gL3DVqZ7u7DZr0Ty6TU7VSG/drYPAqjk0twWQpMIeiC/qAB7r9Uw3 EP3a3Hb7qT18XzrDGqb6caz/XzAfzA3O5FYwcWiJTKzFlZ60G01Wty0UuyYykSJQZ7zuCaAQuXc Fq1p6M+X3w88ezPCMi6GgzzUqja6KP0f8CWIV8AW+R7+ITQkVQlBxmX3HRf7OYUXgj3Ap1MN9pi 04c/812YBmOilkeXF+yxSfuvpVaEiIjwyKt99tG5UZfs4UYIchYl4J7FEL9WijbjzIDW0d+fowR 5qqe+7bO54UzMTEH4rdeoHNTdTmjOWjvI/LekRupEuYLAEzISLxE+P4yAb1D6g8v4lIovwg9MzY ffjdSQ= X-Received: by 2002:a17:90b:4fc5:b0:398:ceed:b903 with SMTP id 98e67ed59e1d1-39d77962e6fmr17963897a91.11.1789209529241; Sat, 12 Sep 2026 03:38:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 82/82] tcg: Expand missing mulu2_i64 during liveness Date: Sat, 12 Sep 2026 00:31:26 -1000 Message-ID: <20260912103126.598030-83-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260912103126.598030-1-richard.henderson@linaro.org> References: <20260912103126.598030-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789209555398158500 Content-Type: text/plain; charset="utf-8" During liveness, we finally know whether the high part of the double-word multiply is actually used. If we were to decompose the operation earlier, we would prevent the removal of the unused value. This is fairly common with translated x86 code, where the high part of the multiply may only be used for condition codes, which may easily be dead code eliminated. Once we know the computation is required, expand the multiply by parts for hosts without ISA support. At present this is older s390x and sparc64. This is far more efficient than the out-of-line helper. Since this is after the normal tcg_optmize pass, do some minimal constant decomposition and value propagation for the subexpressions within the double-word multiply. Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 3 - accel/tcg/tcg-runtime.c | 14 --- tcg/tcg-op.c | 34 ++----- tcg/tcg.c | 214 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 218 insertions(+), 47 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 003c963bc7d..0dda2079fd0 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -1,6 +1,3 @@ -DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) diff --git a/accel/tcg/tcg-runtime.c b/accel/tcg/tcg-runtime.c index 77c4024148f..44b48a1ea79 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -32,20 +32,6 @@ #include "exec/helper-info.c.inc" #undef HELPER_H =20 -uint64_t HELPER(muluh_i64)(uint64_t arg1, uint64_t arg2) -{ - uint64_t l, h; - mulu64(&l, &h, arg1, arg2); - return h; -} - -int64_t HELPER(mulsh_i64)(int64_t arg1, int64_t arg2) -{ - uint64_t l, h; - muls64(&l, &h, arg1, arg2); - return h; -} - uint32_t HELPER(clz_i32)(uint32_t arg, uint32_t zero_val) { return arg ? clz32(arg) : zero_val; diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 829a400ff1b..08b44fc5254 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -871,8 +871,7 @@ static void gen_muls2(TCGType type, TCGTemp *rl, TCGTem= p *rh, =20 tcg_temp_free_internal(t0); tcg_temp_free_internal(t1); - } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || - tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { + } else { TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); @@ -893,24 +892,13 @@ static void gen_muls2(TCGType type, TCGTemp *rl, TCGT= emp *rh, tcg_temp_free_internal(t1); tcg_temp_free_internal(t2); tcg_temp_free_internal(t3); - } else { - TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); - - gen_mul(TCG_TYPE_I64, t, src1, src2); - gen_helper_mulsh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), - temp_tcgv_i64(src2)); - gen_mov(TCG_TYPE_I64, rl, t); - - tcg_temp_free_internal(t); } } =20 static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *src1, TCGTemp *src2) { - if (tcg_op_supported(INDEX_op_mulu2, type, 0)) { - gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); - } else if (tcg_op_supported(INDEX_op_muluh, type, 0)) { + if (tcg_op_supported(INDEX_op_muluh, type, 0)) { TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); =20 gen_mul(type, t, src1, src2); @@ -918,7 +906,14 @@ static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTe= mp *rh, gen_mov(type, rl, t); =20 tcg_temp_free_internal(t); - } else if (type =3D=3D TCG_TYPE_I32) { + } if (type =3D=3D TCG_TYPE_I64 || + tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { + /* + * Unsupported mulu2_i64 is expanded after liveness analysis + * has a chance to discard an unused high-part. + */ + gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); + } else { TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); =20 @@ -931,15 +926,6 @@ static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTe= mp *rh, =20 tcg_temp_free_internal(t0); tcg_temp_free_internal(t1); - } else { - TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); - - gen_mul(TCG_TYPE_I64, t, src1, src2); - gen_helper_muluh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), - temp_tcgv_i64(src2)); - gen_mov(TCG_TYPE_I64, rl, t); - - tcg_temp_free_internal(t); } } =20 diff --git a/tcg/tcg.c b/tcg/tcg.c index 489df0e7386..8cdca81ceb2 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -3687,6 +3687,32 @@ static inline void la_reset_pref(TCGTemp *ts) =3D (ts->state =3D=3D TS_DEAD ? 0 : tcg_target_available_regs[ts->= type]); } =20 +/* For liveness_pass_1, allocate a new dead temporary. */ +static TCGTemp *la_temp_new(TCGType type) +{ + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + t->state_ptr =3D tcg_malloc(sizeof(TCGRegSet)); + t->state =3D TS_DEAD; + la_reset_pref(t); + + return t; +} + +/* For liveness_pass_1, allocate a new constant. */ +static TCGTemp *la_const_new(TCGType type, int64_t val) +{ + TCGTemp *t =3D tcg_constant_internal(type, val); + + /* This constant may already be live within the TB. */ + if (!t->state_ptr) { + t->state_ptr =3D tcg_malloc(sizeof(TCGRegSet)); + t->state =3D TS_DEAD; + la_reset_pref(t); + } + return t; +} + /* liveness analysis: end of function: all temps are dead, and globals should be in memory. */ static void la_func_end(TCGContext *s, int ng, int nt) @@ -3890,9 +3916,184 @@ static void assert_carry_dead(TCGContext *s) tcg_debug_assert(!s->carry_live); } =20 -/* Liveness analysis : update the opc_arg_life array to tell if a - given input arguments is dead. Instructions updating dead - temporaries are removed. */ +/* + * Expand missing mulu2. This is delayed until liveness because x86 + * translation generates double-word multiplies which may turn out to + * be dead with condition codes, and we may be able to simplify to + * just a single-word multiply. + */ + +static TCGTemp *la_mulu2_ext32u(TCGContext *ctx, TCGOp *op, + TCGTemp *dst, TCGTemp *src) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, INDEX_op_extract, + TCG_TYPE_I64, 4); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src); + op2->args[2] =3D 0; + op2->args[3] =3D 32; + return dst; +} + +static TCGTemp *la_mulu2_mov(TCGContext *ctx, TCGOp *op, + TCGTemp *dst, TCGTemp *src) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, INDEX_op_mov, TCG_TYPE_I6= 4, 2); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src); + return dst; +} + +static TCGTemp *la_mulu2_op3(TCGContext *ctx, TCGOp *op, TCGOpcode opc, + TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, opc, TCG_TYPE_I64, 3); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src1); + op2->args[2] =3D temp_arg(src2); + return dst; +} + +static TCGTemp *la_mulu2_op3c(TCGContext *ctx, TCGOp *op, TCGOpcode opc, + TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (src2->kind !=3D TEMP_CONST && (src1->kind =3D=3D TEMP_CONST || dst= =3D=3D src2)) { + TCGTemp *t =3D src1; + src1 =3D src2; + src2 =3D t; + } + return la_mulu2_op3(ctx, op, opc, dst, src1, src2); +} + +static TCGOp *la_expand_mulu2_i64(TCGContext *s, TCGOp *op) +{ + TCGTemp *o0_orig =3D arg_temp(op->args[0]); + TCGTemp *o1_orig =3D arg_temp(op->args[1]); + TCGTemp *i0 =3D arg_temp(op->args[2]); + TCGTemp *i1 =3D arg_temp(op->args[3]); + TCGTemp *o0, *o1, *l0, *l1, *h0, *h1, *m0, *m1, *t0 =3D NULL, *t1 =3D = NULL; + TCGTemp *t32 =3D la_const_new(TCG_TYPE_I64, 32); + TCGTemp *tzero =3D la_const_new(TCG_TYPE_I64, 0); + TCGOp *ret; + + /* + * At present, the only two hosts missing some form of double-word or + * high-part multiply are s390x without misc-insn-ext-2 (before z14) + * or sparc64 without vis3 (before ultrasparc t3). + * Both of these have ext32u and addci. + */ + tcg_debug_assert(op->opc =3D=3D INDEX_op_mulu2); + tcg_debug_assert(TCGOP_TYPE(op) =3D=3D TCG_TYPE_I64); + tcg_debug_assert(TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, 32)); + tcg_debug_assert(tcg_op_supported(INDEX_op_addci, TCG_TYPE_I64, 0)); + + /* + * Split the two 64-bit multiplicands into unsigned halves. + * Via fold_multiply2, i0 must be non-constant. + */ + l0 =3D la_mulu2_ext32u(s, op, la_temp_new(TCG_TYPE_I64), i0); + h0 =3D la_mulu2_op3(s, op, INDEX_op_shr, la_temp_new(TCG_TYPE_I64), i0= , t32); + + if (i1->kind =3D=3D TEMP_CONST) { + l1 =3D la_const_new(TCG_TYPE_I64, extract64(i1->val, 0, 32)); + h1 =3D la_const_new(TCG_TYPE_I64, extract64(i1->val, 32, 32)); + } else { + l1 =3D la_mulu2_ext32u(s, op, la_temp_new(TCG_TYPE_I64), i1); + h1 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), i1, t32); + } + + /* + * Compute partial products. + */ + if (l1 =3D=3D tzero) { + o0 =3D tzero; + m0 =3D tzero; + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_mul, o0_orig, l0, l1); + m0 =3D la_mulu2_op3c(s, op, INDEX_op_mul, + la_temp_new(TCG_TYPE_I64), h0, l1); + } + if (h1 =3D=3D tzero) { + m1 =3D tzero; + o1 =3D tzero; + } else { + m1 =3D la_mulu2_op3c(s, op, INDEX_op_mul, + la_temp_new(TCG_TYPE_I64), l0, h1); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_mul, o1_orig, h0, h1); + } + + /* + * The middle partial products need shifting up by 32, producing + * bits within [63:32] and [95:64]. + */ + if (m0 !=3D tzero) { + t0 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), m0, t32); + la_mulu2_op3(s, op, INDEX_op_shl, m0, m0, t32); + if (o0 =3D=3D tzero) { + o0 =3D m0; + if (o1 =3D=3D tzero) { + o1 =3D t0; + } else { + o1 =3D la_mulu2_op3c(s, op, INDEX_op_add, o0_orig, o1, t0); + } + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_addco, o0_orig, o0, m0); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_addci, o1_orig, o1, t0); + } + } + if (m1 !=3D tzero) { + t1 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), m1, t32); + la_mulu2_op3(s, op, INDEX_op_shl, m1, m1, t32); + if (o0 =3D=3D tzero) { + o0 =3D m1; + if (o1 =3D=3D tzero) { + o1 =3D t1; + } else { + o1 =3D la_mulu2_op3c(s, op, INDEX_op_add, o0_orig, o1, t1); + } + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_addco, o0_orig, o0, m1); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_addci, o1_orig, o1, t1); + } + } + + /* Final write-back, if necessary. */ + if (o0 !=3D o0_orig) { + la_mulu2_mov(s, op, o0_orig, o0); + } + if (o1 !=3D o1_orig) { + la_mulu2_mov(s, op, o1_orig, o1); + } + + tcg_temp_free_internal(l0); + tcg_temp_free_internal(l1); + tcg_temp_free_internal(h0); + tcg_temp_free_internal(h1); + tcg_temp_free_internal(m0); + tcg_temp_free_internal(m1); + if (t0) { + tcg_temp_free_internal(t0); + } + if (t1) { + tcg_temp_free_internal(t1); + } + + ret =3D QTAILQ_PREV(op, link); + tcg_op_remove(s, op); + return ret; +} + +/* + * Liveness analysis : update the opc_arg_life array to tell if a + * given input arguments is dead. Instructions updating dead + * temporaries are removed. + */ static void __attribute__((noinline)) liveness_pass_1(TCGContext *s) { @@ -4067,10 +4268,11 @@ liveness_pass_1(TCGContext *s) op->args[0] =3D op->args[1]; op->args[1] =3D op->args[2]; op->args[2] =3D op->args[3]; - } else { - goto do_not_remove; + } else if (!tcg_op_supported(opc, TCGOP_TYPE(op), 0)) { + op =3D la_expand_mulu2_i64(s, op); + op_prev =3D QTAILQ_PREV(op, link); + opc =3D op->opc; } - /* Mark the single-word operation live. */ goto do_not_remove; =20 case INDEX_op_addco: --=20 2.53.0