From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id B23143858D1E for ; Wed, 25 Oct 2023 15:40:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B23143858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B23143858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::529 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698248446; cv=none; b=qHBiNRtvMSJhSxstC3kIqGRKeqEhjGUEvKEhNyEifyfuHZDA1vnMQnJ8JntVh64Rgeh0MSrro+bh5R5WC85+716yr4xy9wE7KIoj2Vw4xM2aYTB+n9q+hTb0q9HHXNMI5RnOKIDQg7CU00W7fP3shRrVMaGiEbuYhh+tGB8Xj9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698248446; c=relaxed/simple; bh=C9EPOBEwCKp8slEySlIgZEkFN5uIanuQu55l5HwyI1w=; h=DKIM-Signature:From:Mime-Version:Subject:Date:Message-Id:To; b=cSpUIDIIS31O141iO5vaybn8X6g8lWKp7dvb85qgPDEsQNKfK28ZX23yTnRLLeae/rUi2XTKGF9JCR5l/eIV4pwy3AFyZD2mJBWWnfN/VbZrO3XArTZ1f1N+KE7Bm7yOVT8o2BNQH/sUTtA3ZZzr3Hzyc8kI+sPIAGup5DTIEOY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-53e2dc8fa02so9141394a12.2 for ; Wed, 25 Oct 2023 08:40:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698248443; x=1698853243; darn=gcc.gnu.org; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=vtkC7mEdG38LRdajnbZC6zLUsUGHjWWroc7Afq4E03U=; b=PgDlAixGj5uV8JzMEtIp0YAv4CR/XWz6xZsqnKwLkINPEfEdHosoHnzURKGnI8kNnV 4JjMxGkzAdUabdMWOOsZXmNH5igzBwbAX5ewk4nWEsMjZtDepFlDcTtAP484qZRrUMys K5hTgezxW6fvujDDFaf/w7XAYw7ZsKJBKXYIU+pRy9MnjJyFj6PnRzoeU1rF9x1eDZVd OVteqzBCY6he6y4logXCZtoBchEdLPvL26zyFGfGmMURG7+qsdorjIRgNJxTWdSg91Vu nX+MH09dIJaQOoZCLXo8u4GkboioXg3J1ZwXOqCzbKC78t+4YfA0OF9liIMXDCUpb3Oy uJVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698248443; x=1698853243; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vtkC7mEdG38LRdajnbZC6zLUsUGHjWWroc7Afq4E03U=; b=aOfnFV+sVgjRrSuESz+BQXtHOB/qZrRjmOBdw/Z3KdpcWlGZauqVFk8dGxVcKOh7fs gQ+TgkD70hQrhpWlrVYw7wj5amxHlgjrBgPcINRh15M3Mu+8+iKCtezh1U/fmKDj0HQV Xck4/mRWl4/AQRD+y8vyCSPWK4N1c1SjWDOFEZRgzNVO64FWmVmTqaWFX+M8/FVuy3Fb CHTYvGzW80hghMXOi5uc06Tacc/8O72cULba9LgPXkfhNeVdOhCWTk/hHyenSSzWM3DR vOBuTLYsjWPWVTSrmvWNP8+hcd3bbm70E6L+o/kZlwmRQDsXded010d+b1o44Ymji77Z 79rg== X-Gm-Message-State: AOJu0YzoXngRUEqo+k2hQG2kGWk08mvktUJ9D6uuVrjL7MVfxhi44bUx +u7phWJzg1mhlJPaKW9x0ss= X-Google-Smtp-Source: AGHT+IFtXBk3PD/F7lIy0oFsCvHQsEltxK7kqzvmyEqoJHymRViTU16H/o4OzC7xrO5YhbNvjHv50Q== X-Received: by 2002:a17:907:2d92:b0:9c3:cd12:1929 with SMTP id gt18-20020a1709072d9200b009c3cd121929mr12072511ejc.60.1698248443147; Wed, 25 Oct 2023 08:40:43 -0700 (PDT) Received: from smtpclient.apple (dynamic-095-114-071-188.95.114.pool.telefonica.de. [95.114.71.188]) by smtp.gmail.com with ESMTPSA id 16-20020a170906225000b0098921e1b064sm10129357ejr.181.2023.10.25.08.40.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 25 Oct 2023 08:40:42 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: Richard Biener Mime-Version: 1.0 (1.0) Subject: Re: Question on replacing .MASK_STORE with ternary expressions Date: Wed, 25 Oct 2023 17:40:32 +0200 Message-Id: <42F6AE9F-FFF8-4D7F-8060-2EB205790EDC@gmail.com> References: Cc: gcc@gcc.gnu.org In-Reply-To: To: Hanke Zhang X-Mailer: iPhone Mail (20H30) X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: > Am 25.10.2023 um 17:25 schrieb Hanke Zhang via Gcc : >=20 > =EF=BB=BFHi, I got a gimple relative question. >=20 > I'm trying to replace the .MASK_STORE with a ternary expression in > pass_ifcvt like below: >=20 > .MASK_STORE(addr, align, mask, value) =3D> *addr =3D mask ? value : *addr;= >=20 > But when I do this, I'm stucked. The addr here is a SSA_NAME of > course. When I try to get the value that 'addr' points to through a > SSA_NAME as lhs like the code below, GCC reports an error. >=20 > // get MASK_STORE > gimple_stmt_iterator gsi =3D gsi_for_stmt (stmt); > tree addr =3D gimple_call_arg (stmt, 0); > tree mask =3D gimple_call_arg (stmt, 2); > tree rhs =3D gimple_call_arg (stmt, 3); >=20 > // deref_ssa =3D *addr > tree deref_ssa =3D create_tmp_reg_or_ssa_name (TREE_TYPE (rhs), NULL); > tree deref =3D build1 (INDIRECT_REF, TREE_TYPE (deref_ssa), addr); > gimple *stmt1 =3D gimple_build_assign(deref_ssa, deref); >=20 > // ssa1 =3D mask ? deref_ssa : rhs > tree cond =3D build3 (COND_EXPR, TREE_TYPE (rhs), mask, rhs, deref_ssa); > tree ssa1 =3D create_tmp_reg_or_ssa_name (TREE_TYPE (rhs), NULL); > gimple *stmt2 =3D gimple_build_assign(ssa1, cond); >=20 > // *addr =3D ssa1 > tree indirect_ref =3D build1 (INDIRECT_REF, TREE_TYPE (deref_ssa), addr); > gimple *stmt3 =3D gimple_build_assign(indirect_ref, ssa1); >=20 > // insert stmts > gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT); > gsi_insert_before (&gsi, stmt2, GSI_SAME_STMT); > gsi_insert_before (&gsi, stmt3, GSI_SAME_STMT); >=20 > // remove the origin MASK_STORE > gsi_remove (&gsi, true); >=20 > The error: >=20 > _588 =3D *_589; > _587 =3D _136 ? _272 : _588; > *_589 =3D _587; > unhandled expression in get_expr_operands(): > type size > unit-size > align:32 warn_if_not_align:0 symtab:0 alias-set 8 > canonical-type 0x7f25f57a12a0 precision:32 > pointer_to_this > >=20 > arg:0 type > public unsigned DI > size > unit-size > align:64 warn_if_not_align:0 symtab:0 alias-set 20 > structural-equality> >=20 > def_stmt _589 =3D &IMAGPART_EXPR <_452->amplitude>; > version:589 > ptr-info 0x7f25f5716f18>> >=20 > Is there a way to fix this? You need to use a MEM_REF , not an INDIRECT_REF > Thanks > Hanke Zhang