From patchwork Wed Feb 21 13:15:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 204212 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2685:b0:108:e6aa:91d0 with SMTP id mn5csp1028723dyc; Wed, 21 Feb 2024 05:18:38 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVSsQqI0WYlmu2eAW+zHUgB3oEPfuMStPb5h/U04xeSMP363jhrap7BRPkDHsPJwvaw15NuRfKuUGEk+dhMxIh4ghiFTw== X-Google-Smtp-Source: AGHT+IHaVooLWpmClpHwmdIXLM7qzSl6M+suSs+PZ+/PztjbMHYdzX2bLRNtRAlS6WXwGFyfhuGB X-Received: by 2002:a05:622a:649:b0:42c:49cd:38cd with SMTP id a9-20020a05622a064900b0042c49cd38cdmr21617465qtb.30.1708521518395; Wed, 21 Feb 2024 05:18:38 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708521518; cv=pass; d=google.com; s=arc-20160816; b=Bz9ZEb/6D3mvc37+hroQ97jI92f6YBhvCJYaBQAbE2Me9MMftjkK0HdxpuZuTkHvvT Cc97yoxb6/LyTMpR8XDI3K2xOwfJmiNrb5sK85QRYNJ1uYOBsj4pYhut1v8T4VI7YsR6 rSGUmWaCe6v1W1lv8kL2lFRAHRuTU+feVvp+txrDP1Cti+br491Jy1mE9LJy/EK6FPyU FM896Tv7a2SbseG87AykU+mu+PaqTeYnL0H6by9jImor2X2kX9wWzBi8aC9NGBV855xB L4o+mT6pjLYPCdoylBKm0nlamZDB9QXz8PvJ+zMhAjtuvN8iTWQxagTXs9dxfexTiesc Z//Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:reply-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=LplcoHTugmBbDiSf34qaSvjlxzNh5h6FAFNX+V4KM/U=; fh=fgIXLMOrMbFC6WGgZPIv1Mbz6EA+ksDMMLQRALdydiE=; b=wVErDTyjWww/07ZRY/ZTDEON2gtu6PiZPZiDMxqA7w9Re2e5RvmcD0ruFdYuVyF8sr WImhW7Cc65dV5YzQJCZX6qYv3VG0diCyTaJMtt0RddlAi8jMvohwTa1WU+VGUwckUsn5 UorcvGed7lENBFeTeLrUv1LuwjykjzD+qoBISEAbkzomkpjopqICNDLoxHtjKQ6LwGRg KXUd4Z6CKTfV8J7/rx8jata+4AFQF89RwjGkSM4DDD2ONtsqssIiBqVlhNKg0199eNW6 CyyQi8ETxSorLMyeiUcmgRj9JqvvVZ9CPAdYH8gjW4iFbfp9Ii4p6n/8bqgo4VI531GF 3KDw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=BVH1hyBD; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id a9-20020ac87209000000b0042e2aa4a8e0si3078086qtp.49.2024.02.21.05.18.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Feb 2024 05:18:38 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=BVH1hyBD; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D019838582B3 for ; Wed, 21 Feb 2024 13:18:37 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by sourceware.org (Postfix) with ESMTPS id C727D3858429 for ; Wed, 21 Feb 2024 13:16:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C727D3858429 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C727D3858429 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::12d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708521392; cv=none; b=uaM8/IKKVHM+ygGHdq4tsvAmICyYnQ8Nq4MjLCpFNOxwouYPm32TPp1F4A4TN4ghPCFF5HCc+BNOh5UzN9iNTFedwj/vVqBCE6sV664PEi+3/Xb0NoJM7hKtjS3Ok4Pj81PYV7tH5gQvjS1Js8prEC+UptZPSPZw49ygTJUL/AI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708521392; c=relaxed/simple; bh=/L21c/ES14yFLc3WykkfjeAJX2zIAaSHa2fRWeC9eqo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Olp16Bquzz+Uppx43+et7KILyeIREIuj0haLL/0jMU92vn7QD4yifpy/RT7xFw0CwJtcWjpZFAFTMFWAjHucjhBWcVnr+eA03bjSY+RQSUuVgsbJ56ECgQICtaiKQVH9gYHXFQgi4/80gkKFgNp3202CaNhK8HckuiIYc364E+Y= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-511ac32fe38so10163855e87.1 for ; Wed, 21 Feb 2024 05:16:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1708521387; x=1709126187; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=LplcoHTugmBbDiSf34qaSvjlxzNh5h6FAFNX+V4KM/U=; b=BVH1hyBDEe/IwzubSu5lxAtOUohfxowNyF6buyWgY8RA1MCXicrVBQgOy4RJJ6ypKa NbBQQgvOeZNaozUToxX21GZgVAq8weV18iHLXz3gs+u7qCtV9l7miznHnNwRFZWKo1IX pSTTrQYCv++W8Y151aRo3Xdzjlgg+KN2TsIfWgmFFqsVRmkRU2bzFMOaQy6LN6b0clNY /jV6iWe4+AE+XU0cO/A+ZVD3OHR+AM95+jZGmPj4JW9a/fWTSOe2daBKLEnM7ZbD1IQP Hd1iVOQM8Pz2eh6wmxT14Gxg0BiRJWn6woTHhAGFwvN/fNKtpX6csME4U7lRbrmUKftP mAnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708521387; x=1709126187; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=LplcoHTugmBbDiSf34qaSvjlxzNh5h6FAFNX+V4KM/U=; b=kvg7S4pEld5Y/YQB6wqdYyiYiIJYBKGiDfX8U/jZbm+I5Uoh1tn0/9k/SmWJI3tsAw UY7y3d62H/zg+EzVb/JGvQ+2ftTfytQCZqumh1Y9oRcfyAoblCko8gTR0fvi4XoJxy/g BPpx8eG0N9Ha7ZMTq2qHLqDMOhAlymQqjOrj7DvbN2d1RlJiVfnYX+ZsqdSHIzAc8zJU DmU5tqP8qMe+c583CU82x5VjVDdmbaJWfcQOZ2AMIsEja0CTWZHzYIr5jQVQltj/q6fd fbHFnkKgzda68eryBDBGubjEer0jqw4/AIvommWkE7lvs9TgrwZuNo137klIE4zskTEH 9inQ== X-Gm-Message-State: AOJu0Yx6xucc3yW+BHMvPOrOvDSUTTibOy1u47nOxYMAACFDe0K7nHAK k57UrMA5UxijvGE4xvbsRjwrvrwfme+crfjkuZ2zbhFrimhf4+xblWD6B6ND3v7s5aumcF8g0pA = X-Received: by 2002:a05:6512:11c5:b0:511:429e:43d4 with SMTP id h5-20020a05651211c500b00511429e43d4mr14130489lfr.11.1708521387498; Wed, 21 Feb 2024 05:16:27 -0800 (PST) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id m12-20020a170906160c00b00a3d0a094574sm4927074ejd.66.2024.02.21.05.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Feb 2024 05:16:26 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, =?utf-8?q?Marc_Poulhi=C3=A8s?= Subject: [COMMITTED 6/9] gccrs: add powi intrinsics Date: Wed, 21 Feb 2024 14:15:24 +0100 Message-ID: <20240221131636.3336103-9-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.42.1 In-Reply-To: <20240221131636.3336103-2-arthur.cohen@embecosm.com> References: <20240221131636.3336103-2-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: arthur.cohen@embecosm.com Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791514659612639339 X-GMAIL-MSGID: 1791514659612639339 From: Marc Poulhiès gcc/rust/ChangeLog: * backend/rust-builtins.cc (BuiltinsContext::register_rust_mappings): Add powi and reformat. * backend/rust-builtins.h: Add missing copyright header. gcc/testsuite/ChangeLog: * rust/compile/torture/intrinsics-math.rs: Adjust pow test, add test for powi. Signed-off-by: Marc Poulhiès --- gcc/rust/backend/rust-builtins.cc | 30 +++++++++++++++++-- gcc/rust/backend/rust-builtins.h | 2 ++ .../rust/compile/torture/intrinsics-math.rs | 12 ++++++-- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/gcc/rust/backend/rust-builtins.cc b/gcc/rust/backend/rust-builtins.cc index 1a87f869206..282ecba70cb 100644 --- a/gcc/rust/backend/rust-builtins.cc +++ b/gcc/rust/backend/rust-builtins.cc @@ -285,46 +285,70 @@ void BuiltinsContext::register_rust_mappings () { rust_intrinsic_to_gcc_builtin = { - {"sinf32", "__builtin_sinf"}, - {"sqrtf32", "__builtin_sqrtf"}, - {"sqrtf64", "__builtin_sqrt"}, {"unreachable", "__builtin_unreachable"}, {"abort", "__builtin_abort"}, + + // Math intrinsics + {"sqrtf32", "__builtin_sqrtf"}, + {"sqrtf64", "__builtin_sqrt"}, + + {"sinf32", "__builtin_sinf"}, {"sinf64", "__builtin_sin"}, + {"cosf32", "__builtin_cosf"}, {"cosf64", "__builtin_cos"}, + {"powf32", "__builtin_powf"}, {"powf64", "__builtin_pow"}, + + {"powif32", "__builtin_powif"}, + {"powif64", "__builtin_powi"}, + {"expf32", "__builtin_expf"}, {"expf64", "__builtin_exp"}, + {"exp2f32", "__builtin_exp2f"}, {"exp2f64", "__builtin_exp2"}, + {"logf32", "__builtin_logf"}, {"logf64", "__builtin_log"}, + {"log10f32", "__builtin_log10f"}, {"log10f64", "__builtin_log10"}, + {"log2f32", "__builtin_log2f"}, {"log2f64", "__builtin_log2"}, + {"fmaf32", "__builtin_fmaf"}, {"fmaf64", "__builtin_fma"}, + {"fabsf32", "__builtin_fabsf"}, {"fabsf64", "__builtin_fabs"}, + {"minnumf32", "__builtin_fminf"}, {"minnumf64", "__builtin_fmin"}, + {"maxnumf32", "__builtin_fmaxf"}, {"maxnumf64", "__builtin_fmax"}, + {"copysignf32", "__builtin_copysignf"}, {"copysignf64", "__builtin_copysign"}, + {"floorf32", "__builtin_floorf"}, {"floorf64", "__builtin_floor"}, + {"ceilf32", "__builtin_ceilf"}, {"ceilf64", "__builtin_ceil"}, + {"truncf32", "__builtin_truncf"}, {"truncf64", "__builtin_trunc"}, + {"rintf32", "__builtin_rintf"}, {"rintf64", "__builtin_rint"}, + {"nearbyintf32", "__builtin_nearbyintf"}, {"nearbyintf64", "__builtin_nearbyint"}, + {"roundf32", "__builtin_roundf"}, {"roundf64", "__builtin_round"}, }; diff --git a/gcc/rust/backend/rust-builtins.h b/gcc/rust/backend/rust-builtins.h index 5052edad51e..65dd850e3c6 100644 --- a/gcc/rust/backend/rust-builtins.h +++ b/gcc/rust/backend/rust-builtins.h @@ -1,3 +1,5 @@ +// Copyright (C) 2020-2024 Free Software Foundation, Inc. + // This file is part of GCC. // GCC is free software; you can redistribute it and/or modify it under diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-math.rs b/gcc/testsuite/rust/compile/torture/intrinsics-math.rs index 42acdde1494..e0d15f99d48 100644 --- a/gcc/testsuite/rust/compile/torture/intrinsics-math.rs +++ b/gcc/testsuite/rust/compile/torture/intrinsics-math.rs @@ -14,6 +14,9 @@ extern "rust-intrinsic" { pub fn powf32(a: f32, x: f32) -> f32; pub fn powf64(a: f64, x: f64) -> f64; + pub fn powif32(a: f32, x: i32) -> f32; + pub fn powif64(a: f64, x: i32) -> f64; + pub fn expf32(x: f32) -> f32; pub fn expf64(x: f64) -> f64; @@ -84,9 +87,14 @@ fn main() { // { dg-final { scan-tree-dump-times {(?n)f64 .* __builtin_cos.? \(.*6\.0e\+0\);$} 1 original } } f32 = powf32(7f32, 8f32); - // { dg-final { scan-tree-dump-times {(?n)f32 .* __builtin_pow. \(.*7\.0e\+0, .*8\.0e\+0\);$} 1 original } } + // { dg-final { scan-tree-dump-times {(?n)f32 .* __builtin_pow[^i] \(.*7\.0e\+0, .*8\.0e\+0\);$} 1 original } } f64 = powf64(9f64, 10f64); - // { dg-final { scan-tree-dump-times {(?n)f64 .* __builtin_pow.? \(.*9\.0e\+0, .*1\.0e\+1\);$} 1 original } } + // { dg-final { scan-tree-dump-times {(?n)f64 .* __builtin_pow[^i]? \(.*9\.0e\+0, .*1\.0e\+1\);$} 1 original } } + + f32 = powif32(7f32, 8i32); + // { dg-final { scan-tree-dump-times {(?n)f32 .* __builtin_powi. \(.*7\.0e\+0, .*8\);$} 1 original } } + f64 = powif64(9f64, 10i32); + // { dg-final { scan-tree-dump-times {(?n)f64 .* __builtin_powi.? \(.*9\.0e\+0, .*10\);$} 1 original } } f32 = expf32(11f32); // { dg-final { scan-tree-dump-times {(?n)f32 .* __builtin_exp. \(.*1\.1e\+1\);$} 1 original } }