Received: by 2002:a05:7412:8d23:b0:f7:29d7:fb05 with SMTP id bj35csp428201rdb; Sat, 16 Dec 2023 14:47:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IHKc1h/j3GjWWSm2kiK4AA/5QICbZVRaLQVRKngoLYbr5/5CGCFZ8K/QauLKN/vpAWjKxP8 X-Received: by 2002:a05:6808:648e:b0:3ba:10b1:7a24 with SMTP id fh14-20020a056808648e00b003ba10b17a24mr12137342oib.105.1702766877670; Sat, 16 Dec 2023 14:47:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702766877; cv=none; d=google.com; s=arc-20160816; b=YysaPVuIaDYYu0GTX0i1oCArfaINvd+mZ9M7SrLPHo5AI6v3tbI1J/eQZxOXLuS1tm FbvD3pSnnm6meKXckRVIZKv2DtdlcgrO5fjDuqK3cvucRQyJ3XJHivOzLxI4iIKF4T+f TVzKrPAEAn8+vAAV36DZRUzkgxlSz16DrHQbJiw2UOR+pbAuBCZczq+FjyloLRMoE9S5 4t89iKF+l5eiqml1jJAE49zkhz3XojHLlH3SjO95Ru0EmCcLBJ02DNQLiJ4jsBP++sM+ W2c9JUtJx9Yq3XPG+3rGrD/Gk4PtjypBVcLhTH9o66AkF50snxtE8PcjGYZPUgNoQNSE kNdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=4Ks0TZfvA9r0e4SlJoFIjoCo3olYVenfAjk3AapK29U=; fh=YZGP4lEWjtGDFirwY1avemseIuDub6k+TIVHVVfDOyo=; b=cBrRFI3ctigbOqZdFSZxiTm6oBnCIzv50q2eLxyuVqiLV9IfJQ0DqmKVFll4KbqZnV fBFhljmpmR+T6l/YUbV/rd07WEt8VMjMA/ZYEWHP7fIpVZ855jHBFjCmyZvtIZoOygFt h2+EzDW318U/xRHgecj2qyHXtEG2TKSNubNTq2o1RXJQmhOVauPHpe2xw/tOQXWeRp2B gNvJfWENfEXN9G6fQyuXX8zAPpxpWSBvIuSojQjhTGfqqzfTliQ5lS/GNGRPXiNzlcT0 6QM7RHPYG9vFSJnIlX/rwcXQJj1o1THJNeW9+X9EyDvYzLPqM05uLSK5nJzvdgB+AG8f oVcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VwyGaVcj; spf=pass (google.com: domain of linux-kernel+bounces-2393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-2393-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id d18-20020a056a00199200b006cb997a7799si15511547pfl.67.2023.12.16.14.47.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 Dec 2023 14:47:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-2393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VwyGaVcj; spf=pass (google.com: domain of linux-kernel+bounces-2393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-2393-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 52F0E2850CE for ; Sat, 16 Dec 2023 22:47:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1D7A737141; Sat, 16 Dec 2023 22:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VwyGaVcj" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E035E36AEA; Sat, 16 Dec 2023 22:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-40c3fe6c08fso21086205e9.1; Sat, 16 Dec 2023 14:47:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702766865; x=1703371665; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4Ks0TZfvA9r0e4SlJoFIjoCo3olYVenfAjk3AapK29U=; b=VwyGaVcjkwvuYi66Z3o8hUQwUvuUHCbZF5owRHX0r0yTmuZAhIo81GNXAuDJMCB26o Kw5wMBOfR/uWXbw4OCe6Q8gGfhodYlHPjwpOP9s1lpz2BZy/tnAFOR5B0GZSanR7Clss P6w3H+L75VUsUOqQh3SmXNa70CPy1cnMf0ecdLTe6/ErZfY1Rg6S90atjChE9D0gKTyG TsTYMDqCugNMMJ9Ovw3HCHGgqR3UG0TgZgC526REMNT50d4uW48ezMLBBwyLZfvUCZQx EnIHLlq/5Idwkq4mhehOGdxJAZTueZCuMq4bkfGaBgGTG/sUV4KQaU5poYkxpkA6qyDZ SOYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702766865; x=1703371665; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4Ks0TZfvA9r0e4SlJoFIjoCo3olYVenfAjk3AapK29U=; b=OHTjK4cbv2UpFJTFPZhgSVVnWHn1ZEJ+IIR7RpNQ+zJx+gDzx/e4p7cfK2pMcRAUlG Nfbue+e+haG/38CdYyuxsnF6J44UcrRRZ5GU/xxT0RzDqsj6xpBIBS16PfEBYsbQJ/Qn 62ISGpDHlMFVkbQLDsZevTiSvAyW5pTOpSrHf+C0pXMaITnYIC0R9usUAt1mSaPu+1bj 1HDA9E7A1bUudh0WN9V+/0J7pomFfyf5nZ1q19EdcNKPHo2Ll+E3CV3afpmqYxUCv+tV GiSzpuZFlvU7a7OKFwTuNXLw5xTiukXTYcedeP4oh9B8prR019pS3lLCNNwG6gnXAtYj NPeA== X-Gm-Message-State: AOJu0Yw2v8IOH8NBZDKMV8mkN/t8tPg/FGRBISstbIAtmXbBgvsd9X4w 7olhEjJTBoHtG33eS5XGlka8ILuBVF0doMzOYIo= X-Received: by 2002:a05:600c:4897:b0:40b:5e21:c5d6 with SMTP id j23-20020a05600c489700b0040b5e21c5d6mr4713226wmp.164.1702766864676; Sat, 16 Dec 2023 14:47:44 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <97ada80f3aaaeb16bf97e31a8fc204513b4fb6a9.1702594357.git.dxu@dxuuu.xyz> In-Reply-To: From: Alexei Starovoitov Date: Sat, 16 Dec 2023 14:47:33 -0800 Message-ID: Subject: Re: [PATCH bpf-next 2/3] bpf: selftests: Add bpf_assert_if() and bpf_assert_with_if() macros To: Daniel Xu Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Shuah Khan , Kumar Kartikeya Dwivedi , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Mykola Lysenko , bpf , "open list:KERNEL SELFTEST FRAMEWORK" , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 14, 2023 at 7:10=E2=80=AFPM Alexei Starovoitov wrote: > > Just realized that we can go the other way instead. > > We can get rid of bpf_assert_eq/ne/... and replace with: > > diff --git a/tools/testing/selftests/bpf/bpf_experimental.h > b/tools/testing/selftests/bpf/bpf_experimental.h > index 1386baf9ae4a..1c500287766d 100644 > --- a/tools/testing/selftests/bpf/bpf_experimental.h > +++ b/tools/testing/selftests/bpf/bpf_experimental.h > @@ -254,6 +254,15 @@ extern void bpf_throw(u64 cookie) __ksym; > } > \ > }) > > +#define _EQ(LHS, RHS) \ > + ({ int var =3D 1;\ > + asm volatile goto("if %[lhs] =3D=3D %[rhs] goto %l[l_yes]= " \ > + :: [lhs] "r"(LHS), [rhs] "i"(RHS) :: l_yes);\ > + var =3D 0;\ > +l_yes:\ > + var;\ > + }) Realized we can do much better. We can take advantage that bpf assembly syntax resembles C and do: bpf_assert(CMP(cookie, "!=3D", 0); and use it as generic "volatile compare" that compiler cannot optimize out: Replacing: if (foo < bar) ... with if (CMP(foo, "<", bar)) ... when the compare operator should be preserved. I'll try to prototype it soon. Might go further and use C++ for bpf programs :) Override operator<, opreator=3D=3D, ... then if (foo < bar) will be in asm code as written in C++ bpf prog.