From patchwork Sat Sep 5 11:12:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11759023 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5BF6213B6 for ; Sat, 5 Sep 2020 11:12:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 40CC420760 for ; Sat, 5 Sep 2020 11:12:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X9X5LLo4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728423AbgIELM3 (ORCPT ); Sat, 5 Sep 2020 07:12:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728430AbgIELMW (ORCPT ); Sat, 5 Sep 2020 07:12:22 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C95EDC061245 for ; Sat, 5 Sep 2020 04:12:20 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id i22so11858697eja.5 for ; Sat, 05 Sep 2020 04:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QvU1Zc6FDCgpXPiz8LPz25ihK1xA0Tr5Bo0r+9cilEk=; b=X9X5LLo45V8hU/3Dmt/VZN1bu2v7oUmJhRxgbli5hByC9PTvq6alIlCNFWGexZBQkg 31fjOfTpx23ODFkT6zdyICQ9jRVnJ47AODA0HSzxCMur0+Ixieyv+F95PFyM+SR+YIwG WRSo99U1UV2MyIDe1R8oVraAgINR3rURCkzyaNDM2wjldr0+b+CyPTrHRfCR9dPGOY/V M0qOh/UQ0sBjzASBAzCqnpJB17SeJkmo7kKWW4pB/WmepfGunj0k9WGVT6gsS9FFb+90 thonqLBpkY1uY8sDv0soPMHtxj8tNoiCYGQfizCD6cEg8Vc8X3dQRma+VBdOztu8thq5 Ewpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QvU1Zc6FDCgpXPiz8LPz25ihK1xA0Tr5Bo0r+9cilEk=; b=YeLmkieqsbkVRj9nUlqTny25G0x9vGHhUq6akqxR4YpXbTr8R/YdPxINBMLXrmdiiG DTHKEk6CDGgo99hj78tI+KVS8qc6IARjmmKAjw589I8puoshwBT6sIII14T5Ufla4Xxc XpBQzCT4xizZ4iz9fdsxGltsPoFH5L0kHPsKOQ5A2ytBnMefmwvhoaMXqchcMP7ioQMq dEHl7r3TnZq3qpWXt4e3EXmkIsan3cCPd43sd2Zs8yUEczCktMRrwjtx+MTwvJHGI7RY 1Qp9V2VivNrHpmw7EoF3HLD+evWezfsJcT2mFoYwYASWKv6vIJJceoS1+LE8YmyY9yl5 Y71g== X-Gm-Message-State: AOAM53023yq8d33+N8qrG6AHwb+xroIcKJIGATvz3bL0UnTuIHUuwlmm ZVBL5eLMdnE3twI6IxbrhD6PdrIDEzA= X-Google-Smtp-Source: ABdhPJze+gzTuNbHSAgdDaZVFP9z6W15Vu//ib/xcmPl4fhICIGig5C+oqK84Vx/47hd4YN8dPiX1Q== X-Received: by 2002:a17:906:8690:: with SMTP id g16mr11737931ejx.187.1599304337838; Sat, 05 Sep 2020 04:12:17 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:e1b1:2430:dffc:e425]) by smtp.gmail.com with ESMTPSA id u15sm8319506edj.69.2020.09.05.04.12.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2020 04:12:17 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 1/4] add support for a new instruction: OP_FMA Date: Sat, 5 Sep 2020 13:12:08 +0200 Message-Id: <20200905111211.82199-2-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> References: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org This will be the instruction for fused multiply-add but the motivation for it is some experimentation with the linearization of builtins. Signed-off-by: Luc Van Oostenryck --- linearize.c | 2 ++ opcode.def | 1 + 2 files changed, 3 insertions(+) diff --git a/linearize.c b/linearize.c index 5a8e74970d98..1a2677713123 100644 --- a/linearize.c +++ b/linearize.c @@ -244,6 +244,7 @@ static const char *opcodes[] = { /* Special three-input */ [OP_SEL] = "select", + [OP_FMA] = "fma", /* Memory */ [OP_LOAD] = "load", @@ -461,6 +462,7 @@ const char *show_instruction(struct instruction *insn) break; case OP_SEL: + case OP_FMA: buf += sprintf(buf, "%s <- %s, %s, %s", show_pseudo(insn->target), show_pseudo(insn->src1), show_pseudo(insn->src2), show_pseudo(insn->src3)); break; diff --git a/opcode.def b/opcode.def index 2583e2f4a602..58fe9983cbc2 100644 --- a/opcode.def +++ b/opcode.def @@ -91,6 +91,7 @@ OPCODE(SLICE, BADOP, BADOP, BADOP, 1, OPF_TARGET) /* Select - three input values */ OPCODE(SEL, BADOP, BADOP, BADOP, 3, OPF_TARGET) +OPCODE(FMA, BADOP, BADOP, BADOP, 3, OPF_TARGET) /* Memory */ OPCODE(LOAD, BADOP, BADOP, BADOP, 1, OPF_TARGET) From patchwork Sat Sep 5 11:12:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11759021 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 28E99618 for ; Sat, 5 Sep 2020 11:12:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0E56820757 for ; Sat, 5 Sep 2020 11:12:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tBOlTF6O" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726597AbgIELM3 (ORCPT ); Sat, 5 Sep 2020 07:12:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728423AbgIELMW (ORCPT ); Sat, 5 Sep 2020 07:12:22 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5A0FC061244 for ; Sat, 5 Sep 2020 04:12:20 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id gr14so10741417ejb.1 for ; Sat, 05 Sep 2020 04:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=418VP1+1t5fc4HhZsGx+u9DZBLjOWfYxJXcHSQhE0bY=; b=tBOlTF6OOAh5jgOPtFUt/SXximaztvoIYruABcacBkqI1Y5qZGD8IEN8FgLSCHsAOU ZNfyt9sfzxmlIkFn5jHTFs80xYYrpRF5ykufBnwSKAPKjRFKXCAnYJj+wOSpr50zdyYs +8f+SJSA84uXMrrMXqOot8tkFrY2Ci++Tih1YRVvoXrEXsitWfTwdPA1nqWk+UE/eZT6 u8sO3TQN1jACpv7oVCwOL5sO6gKS6ZFdnWyPL9v7dIckPuSyMP0dXLDM4YEATZxxYy0U S4DlEyKIiur5Or6PJ/HLM9DDq27053rpNeLVYiDisgF4mG1UdIUJT+DKWwS6g+ogtoIQ KuqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=418VP1+1t5fc4HhZsGx+u9DZBLjOWfYxJXcHSQhE0bY=; b=pJDtzmB0/ZUGVC9AdWJS4NwP7z+mORxIMZ7c4O/eMo6PwPAmKk6zAgi8AwZ3xBRLK9 /fEqlo21HEXMrVwzsWDoYQY9nTkTSK2/HGvejLYaz05yA1ySW1guqtPfH8TebYK0kPgc 830bEesTWVotiNERQi2GaSjqbJhCjL+TVEOj978VHsYK9n6eOighSgjtwX08WKRdglq6 7jNYbZp6ItfatlwFXWNVv5qyMzwTGyKMriU94BvDa2ymHFHcmilDNVMEbwJujlw6wFwb sxbK8OQvzGGeYfrbvRarQKZWnMJbIc5VfM/9K8u/PVoO1DEm2ccV5lrh+Br/Gbey6g9j r6+Q== X-Gm-Message-State: AOAM530C+Eh84VedKZKE2qykeN/vd5KWCbbYNYjIXcRn/qOtlm16F2FT 3T5a3U9Br7z4ExYEOs1VsM3qVUlH8d8= X-Google-Smtp-Source: ABdhPJwO6h+fG9C41O5reX+0NEhoVDm6ZlLvG8ByccyQiDbE62nZpgiGQY7i8uuStKgoC2UtAVw5ZA== X-Received: by 2002:a17:906:3053:: with SMTP id d19mr12510900ejd.190.1599304338714; Sat, 05 Sep 2020 04:12:18 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:e1b1:2430:dffc:e425]) by smtp.gmail.com with ESMTPSA id u15sm8319506edj.69.2020.09.05.04.12.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2020 04:12:18 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 2/4] builtin: allow linearization to fail Date: Sat, 5 Sep 2020 13:12:09 +0200 Message-Id: <20200905111211.82199-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> References: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Allow the linearization of builtins to fail and continue with the normal linearization of OP_CALLs. The motivation for this is for the linearization of target specific builtins. Signed-off-by: Luc Van Oostenryck --- linearize.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/linearize.c b/linearize.c index 1a2677713123..bf55045bcbce 100644 --- a/linearize.c +++ b/linearize.c @@ -1513,8 +1513,11 @@ static pseudo_t linearize_call_expression(struct entrypoint *ep, struct expressi fntype = fn->ctype; // handle builtins - if (fntype->op && fntype->op->linearize) - return fntype->op->linearize(ep, expr); + if (fntype->op && fntype->op->linearize) { + retval = fntype->op->linearize(ep, expr); + if (retval) + return retval; + } ctype = &fntype->ctype; if (fntype->type == SYM_NODE) From patchwork Sat Sep 5 11:12:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11759019 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A0F60746 for ; Sat, 5 Sep 2020 11:12:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8197020757 for ; Sat, 5 Sep 2020 11:12:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CYmC09K6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728445AbgIELM2 (ORCPT ); Sat, 5 Sep 2020 07:12:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726597AbgIELMW (ORCPT ); Sat, 5 Sep 2020 07:12:22 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 462DFC061246 for ; Sat, 5 Sep 2020 04:12:21 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id l63so8364506edl.9 for ; Sat, 05 Sep 2020 04:12:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zVrIHyAXQ1SLiiV8C9LWNogRBbUIjq8pdftnJ8yMazE=; b=CYmC09K6Oc2cEQhg4dI7tH7fuzNrnrOuKTg/60LnfnrCoxqvSOIW09PsmKgM7eJmDP bXI+ME5VZFL1Hz7mhXLnGKBlaCWOpz9iNDruGzgrJEQluq07xZoh7uX0Cep8g4xSsS1W B0Fvi0a4ul0BMtYDRa3TmlNxxKfZsqC5Rxnnai/mZKzPW82x12POEPIVNVQfUVyu/sp5 tbno3254m6PG719yT32BndfyqVpBbl0tNTfsmkADa29OAUQFxiADTBQb4nxhiCBuAYdk 3Px4VFpO9CAWE2JsyH14ltf2JOskyhGFC0bK9EnhJDtHwdA0hx+fPl9/+nGadv/hn4Pl KSWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zVrIHyAXQ1SLiiV8C9LWNogRBbUIjq8pdftnJ8yMazE=; b=mJlaFZu5VqDKD2zoz1PUsVlLqUHqtrIsQsV0xcK/hU22QEHeksKwsH0BviZXdmOSZu INWMXdaEevGQzZfLJmwSp/HN3/L+dYdSNd3qKE0VrYESiF8XkRzyOvG4LkR5iD56PVKd DJf5LjXueZKZJV01OZpisDzVehl8zCe8S+nncE2GpZJQP4EIBAtFbBSwwEO0F2xgkPmh KiPZUgXbulGrihj9S9AUqz0k3K8xi1/cSmFsrfCf+wALD7KX59iJQG2/eSznRIIB1THe 1+Q7alk6sgAu3GajtKTK6RSr16U4YrH7plEqVjXQ7BQ5+OPa4AkJYk8Zq2nTOAI1LLOy CkLg== X-Gm-Message-State: AOAM533Y0jX1/c/XpE8y4VfwKEvkLBSvmOy7Jq1yCGicUo+u4yekQQn+ AFMgFsjt23Bn+9t2R9kG84WCRJ4a5fM= X-Google-Smtp-Source: ABdhPJz5/o+FyK3n3qL+QInpMIGhgEOAAGWrieX7x3hVCioyxhlhMZpw81kpOORS1Oms1d08UCgtdA== X-Received: by 2002:aa7:cb92:: with SMTP id r18mr13158151edt.158.1599304339622; Sat, 05 Sep 2020 04:12:19 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:e1b1:2430:dffc:e425]) by smtp.gmail.com with ESMTPSA id u15sm8319506edj.69.2020.09.05.04.12.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2020 04:12:19 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 3/4] builtin: add declaration for __builtin_fma{,f,l}() Date: Sat, 5 Sep 2020 13:12:10 +0200 Message-Id: <20200905111211.82199-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> References: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The motivation for this is to experiment with adding infrastructure for the linearization of builtins. Signed-off-by: Luc Van Oostenryck --- builtin.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builtin.c b/builtin.c index 2e9be8be8adb..26b612dc401b 100644 --- a/builtin.c +++ b/builtin.c @@ -490,6 +490,9 @@ static const struct builtin_fn builtins_common[] = { { "__builtin_ffs", &int_ctype, 0, { &int_ctype }, .op = &ffs_op }, { "__builtin_ffsl", &int_ctype, 0, { &long_ctype }, .op = &ffs_op }, { "__builtin_ffsll", &int_ctype, 0, { &llong_ctype }, .op = &ffs_op }, + { "__builtin_fma", &double_ctype, 0, { &double_ctype, &double_ctype, &double_ctype }}, + { "__builtin_fmaf", &float_ctype, 0, { &float_ctype, &float_ctype, &float_ctype }}, + { "__builtin_fmal", &ldouble_ctype, 0, { &ldouble_ctype, &ldouble_ctype, &ldouble_ctype }}, { "__builtin_frame_address", &ptr_ctype, 0, { &uint_ctype }}, { "__builtin_free", &void_ctype, 0, { &ptr_ctype }}, { "__builtin_huge_val", &double_ctype, 0 }, From patchwork Sat Sep 5 11:12:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11759025 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D5D43746 for ; Sat, 5 Sep 2020 11:12:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BAF5920757 for ; Sat, 5 Sep 2020 11:12:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PtTfYx/4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728430AbgIELMc (ORCPT ); Sat, 5 Sep 2020 07:12:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728441AbgIELMW (ORCPT ); Sat, 5 Sep 2020 07:12:22 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 298DAC061247 for ; Sat, 5 Sep 2020 04:12:22 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id c8so8386946edv.5 for ; Sat, 05 Sep 2020 04:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QO3anLvSeGn6IAwSx7rlCmQM1i8Y1JKz/q4br5mhYZs=; b=PtTfYx/4iD1fQbI3/GuLS1JSe8VdUKEc123FKf5+LeCBlpi1pf3BMxMDBFvfKRbZdI 67IsB/rcYoAmcNpjn1Jdhez49EtgaKQV7PTJTBs0IPH2Mjl271RPbK0rGBoefqxtALlp VYrm5Z/x6lzunJK4yhxqhKaGCsI3hX3hgOOefO6N5AuTDUd94DLm5Jo2x9lqY85yuMCP E4vaqL1PqjOn7NXogtKxRVhavONKJxtqH3/pOY32/OchNb2ATwThTh8/SSTjczoHDMQX 0oIXVPFZmRfWk6mMQOMXI5aU+kHdEu0qte9zCE/aY7AB8NOf0JOX9MeMWp9NwX2KbWQG L86Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QO3anLvSeGn6IAwSx7rlCmQM1i8Y1JKz/q4br5mhYZs=; b=IY4snggzyCKdV66r60zoT+5mmwOUe/8AHeNXI2K+iHj7QEyLpIZiBLyVAFlStFJoDr 3zI7hLTHjhyXQypzbHzxchpxof0Wdc4dwZbQjZxpxbOD87S+N2Kbj1x2sZdS4x0li898 0aaxl+V1vbvyMv9Mitk5npnrz+20FWNHDp6pEuDcIUelzexWPZeUmPJvljJQPQaYqfAv H1ZmSquYh3GFVRgv3ci/+k0RQUr8rKUl7f+EX4mJ3qbseVSIkDydhqMF3aywlsvdJ+bB Xq+vknDkJUGxOsIUfySEUV8BIpO8o8blBGGBsg5DfZqzfTGxX0trV+pwurN+qpXGyp6S y31A== X-Gm-Message-State: AOAM5331HMwvWrEE94oiaJ5Nfb3vwhg/zONPabUVA8k2Imu0BxZOs8Ks xGiLUuev3QBcrAjANuDdBO6ZrTED5Gs= X-Google-Smtp-Source: ABdhPJySMvNBh0NhaqaHnDga8QGS33KMU12HWifHJ/qWyYfMHLdD396hiBWvVrrGetBVyQBNYCJkMA== X-Received: by 2002:a50:f69a:: with SMTP id d26mr12654752edn.21.1599304340539; Sat, 05 Sep 2020 04:12:20 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:a7fb:e200:e1b1:2430:dffc:e425]) by smtp.gmail.com with ESMTPSA id u15sm8319506edj.69.2020.09.05.04.12.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2020 04:12:19 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 4/4] builtin: teach sparse to linearize __builtin_fma() Date: Sat, 5 Sep 2020 13:12:11 +0200 Message-Id: <20200905111211.82199-5-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> References: <20200905111211.82199-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The support for the linearization of builtins was already added for __builtin_unreachable() but this builtin has no arguments and no return value. So, to complete the experience of builtin linearization, add the linearization of __builtin_fma(). Signed-off-by: Luc Van Oostenryck --- linearize.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/linearize.c b/linearize.c index bf55045bcbce..7157ba511671 100644 --- a/linearize.c +++ b/linearize.c @@ -2585,6 +2585,23 @@ struct entrypoint *linearize_symbol(struct symbol *sym) * Builtin functions */ +static pseudo_t linearize_fma(struct entrypoint *ep, struct expression *expr) +{ + struct instruction *insn = alloc_typed_instruction(OP_FMA, expr->ctype); + struct expression *arg; + + PREPARE_PTR_LIST(expr->args, arg); + insn->src1 = linearize_expression(ep, arg); + NEXT_PTR_LIST(arg) + insn->src2 = linearize_expression(ep, arg); + NEXT_PTR_LIST(arg) + insn->src3 = linearize_expression(ep, arg); + FINISH_PTR_LIST(arg); + + add_one_insn(ep, insn); + return insn->target = alloc_pseudo(insn); +} + static pseudo_t linearize_unreachable(struct entrypoint *ep, struct expression *exp) { add_unreachable(ep); @@ -2597,6 +2614,9 @@ static struct sym_init { struct symbol_op op; } builtins_table[] = { // must be declared in builtin.c:declare_builtins[] + { "__builtin_fma", linearize_fma }, + { "__builtin_fmaf", linearize_fma }, + { "__builtin_fmal", linearize_fma }, { "__builtin_unreachable", linearize_unreachable }, { } };