From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by sourceware.org (Postfix) with ESMTPS id 1C5EE385842D for ; Wed, 21 Feb 2024 13:16:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1C5EE385842D 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 1C5EE385842D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::134 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-x134.google.com with SMTP id 2adb3069b0e04-512b25893c9so4143306e87.3 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=VJTCXkIVWH6z2ay53ZaGlV5tVIanEAw89Go9glDsY84wDVdHUbBzVm1RNRNsfmMdv+ SxI7fUVIcCj8lZtM+L9SL0gsXVBcXZjgCYgeZ38vTPPvhNmjcPzHs8pbGj56FXVeAIsc KVcXBOGnrjyY6RLfU73J27vVL9/G/89H8jp6z9VjadsDSp6+5qQF2paSsSjQ9mseI5g+ afXVrBhis8d2aBIjWcW8GrBv6SeCl3vBzDICW3Ve5WitnJMcXtvkWRK3mNmrpZlU9o+g 6qAiYHccitL8dhVUfKoCC7Xsxn9U0S3JCXo/wdQ8g3Ug/yc7uaTv9/rqTDe+kq2dBBdE GNEw== X-Gm-Message-State: AOJu0YyuuGjA3xjTQHcisE6eDNXTKkqyJWEIxZPMBnhMghb7Zh62pNc/ 8NtQllu3JXsK8RWjQvvPoXzYiG9+QKCbV2FBScOdJU22KhxbOI4JjWHP6KR0bw== X-Google-Smtp-Source: AGHT+IGv9IAdrkvLZD94GQlLGh8B1pJ4/H3EGv0isMsfjfq2CIxjddHY1tUje5yEITK8v95r+Bpxyg== 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=20Poulhi=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> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 List-Id: 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 } } -- 2.42.1