{"id":2215639,"url":"http://patchwork.ozlabs.org/api/patches/2215639/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260324231418.3118-2-gerris.rs@gmail.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260324231418.3118-2-gerris.rs@gmail.com>","list_archive_url":null,"date":"2026-03-24T23:14:18","name":"[gccrs,COMMIT,2/2] intrinsic: Add separated tests for each type","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"8c6f482822d63456842edb39a318766606f78a16","submitter":{"id":92092,"url":"http://patchwork.ozlabs.org/api/people/92092/?format=json","name":null,"email":"gerris.rs@gmail.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260324231418.3118-2-gerris.rs@gmail.com/mbox/","series":[{"id":497359,"url":"http://patchwork.ozlabs.org/api/series/497359/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=497359","date":"2026-03-24T23:14:18","name":"[gccrs,COMMIT,1/2] intrinsic: Add ctlz and ctlz_nonzero intrinsics","version":1,"mbox":"http://patchwork.ozlabs.org/series/497359/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2215639/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2215639/checks/","tags":{},"related":[],"headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=HGFTElTB;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=HGFTElTB","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=none smtp.remote-ip=74.125.82.54"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgQrG6jfwz1xy3\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 10:15:40 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 604764BB588D\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 24 Mar 2026 23:15:38 +0000 (GMT)","from mail-dl1-f54.google.com (mail-dl1-f54.google.com\n [74.125.82.54])\n by sourceware.org (Postfix) with ESMTPS id 1F57D4BB5885\n for <gcc-patches@gcc.gnu.org>; Tue, 24 Mar 2026 23:14:23 +0000 (GMT)","by mail-dl1-f54.google.com with SMTP id\n a92af1059eb24-1271257ae53so2031885c88.1\n for <gcc-patches@gcc.gnu.org>; Tue, 24 Mar 2026 16:14:23 -0700 (PDT)","from\n runnervm46oaq.024wrwsfosyuda1nzj1jdj35te.dx.internal.cloudapp.net\n ([172.184.191.164]) by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2c10b2d01f7sm16171559eec.23.2026.03.24.16.14.20\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 24 Mar 2026 16:14:21 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 604764BB588D","OpenDKIM Filter v2.11.0 sourceware.org 1F57D4BB5885"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 1F57D4BB5885","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 1F57D4BB5885","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774394063; cv=none;\n b=IEbcM4gmBcKHkZfCqUYGkxZEEGrRdWExF/mo3yzhTmlfOtPxF1OU3pSLdADiKRYdI6jgqtNfDWAINUuLOowZh7hZe+ohnw45Ne1TvI0j/VdtOXxSSTkWX4OJ9WAZ7hYtjJ1KWamjeKXmJgPnOCBNWRsPs1PNzoHf6L7X3b7aTOw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774394063; c=relaxed/simple;\n bh=jYY1ICdmUq6a0qvyAE/gvH2NXSGlgkqIhWmwZi3CdMw=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=OIw5u2r7RlPBfx8prG2DoqitrLF2tLR5ns5tpQy/uT+hJcrCpDWQ8ZnwD62RuHpYOpokHcXqBVwAIQRaiTlKY5FvdhP1KLLkmgPm1GmgRTjXdhZYIMxZo1dgDVSJz5KgMVFLsHII0eio8tHBgCD5Z7hln6JV23aIbcmpLY1QUJc=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774394062; x=1774998862; darn=gcc.gnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=FvxPjKpo46sPTTaBmNxlfrjjdXpKhfR7pq55+27uTbI=;\n b=HGFTElTBflQeJ2yEOLjinmZvfX27I6k8l/XXNQ5JSui07OSsgCFSU6+Ux9JQYvO2c9\n 1TqBT0P8TdGBaxXd+PAKjPHazRJ1brH07tHL83VSh9hOI485MQ656+AFSVI7bcYjg+C3\n IEhEVfU+ehhaLzTsWxl+k8x3qA9eDksgXYPf8he8/MHL/QvIXAbTy5YLBFyRFdHPqMJ+\n ut6ajk4LppnWqWGRQEfqCCJ6givBf9ITBC4vW8wEpEZjnbpw7WP7pG9Apnx1QCYVHV10\n TtBHt5SKlgMXh79jROPA9KcUCICHgwS4Zp1g9UVd4Gix6iZ/dlgc+IDNX+jKfldaWq6S\n tg/A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774394062; x=1774998862;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=FvxPjKpo46sPTTaBmNxlfrjjdXpKhfR7pq55+27uTbI=;\n b=F5bXyPLSDEfBBPNx08MW8fQMxonKfHJHxop0qq+WSx+UIMX5J5kuwtGIFIm4zIdgGG\n 0Zcl9RW9Oou1oq1/J7F1g10tRSWyQwsrOwCGphZV/nBOvGvbP99/S5F/6SWNwyU6hxQx\n CcIkpA1JNWa3VpwSfAkw9YSVdVMfHY6ZC5F9UM860w5LHxizv1sieeiebQqNr0IYqdpb\n 1MpmMn1BHGk49XvIjVpgOuDqxQBymGDAFhfldtFaeXWJ47xk1I/ZYgye1nwozBVvhOEF\n IlvVlasV0tVYcgksW1YoV5dbwbcw4nRcOTFBXe3kprF3gsw5GUrRfoctZO+36yRdw1nW\n 96ng==","X-Gm-Message-State":"AOJu0YzApn+ZBCFuOg78EX5eFJ1SQWEioex5SUR/3LqNrGiR1MFyCmSP\n dnh0avtp/dJ8vSWUmT92PK7fgvDzTnSDUFfMBbPlzCqgIII302EBksgbqzYkxA==","X-Gm-Gg":"ATEYQzyX9/jkWURQVCnJJT7J6e9UWzYFFSwTH1XiedJTkGPE5xPrQGT+rMXnxzJzEv9\n IaNz0SfKto6Ft7GgFJrVNsdDmPq8CzUOdt/ayKLrKgi763Tkv3H2U2JMLErU6j5yH1PHgxp+nM9\n dUYff6uCi3drPwnUsJRFbansru913Ce2uI/DvPt6f2PDekgDb3IWDDswBrvdSXXZSpevfpKxdqO\n CSDBtkP/XP5HYDo+BblGUaQRsSMIzislVkWlTbY7SXDYkhc5FT18NhAcIeS3tGaF8KR7SncCm5v\n Wa2QQ79c9mgxTgc8frNNdfRPiT+v9C1Iwc2vAUh3lE0JP2NqOzUqueiWXChIEVaV7k0eMmJZ6Vk\n aGYevjDXhp/b60BTYRdO8RNUaW04XDaRJueN6NqvjtPQd0dAQJK2XR2Y9rdJxxPmJbe/1ODl6ma\n GR4xuioCmgPIVtwl/Bi4PKZ43/SbWCmSKgXxezdHMvwZq/hhMThjzJXrGsqAHtjzeOF+aLjfUN9\n 7mk3TE8J5BDTfmfDOZiF1M=","X-Received":"by 2002:a05:7022:618b:b0:12a:6a64:81d9 with SMTP id\n a92af1059eb24-12a96e5d601mr583088c88.13.1774394061797;\n Tue, 24 Mar 2026 16:14:21 -0700 (PDT)","From":"gerris.rs@gmail.com","To":"gcc-patches@gcc.gnu.org,\n\tgcc-rust@gcc.gnu.org","Cc":"pierre-emmanuel.patry@embecosm.com, arthur.cohen@embecosm.com,\n dkm+gccrs@kataplop.net, Mohamed Ali <mohmedali1462005@gmail.com>","Subject":"[gccrs COMMIT 2/2] intrinsic: Add separated tests for each type","Date":"Tue, 24 Mar 2026 23:14:18 +0000","Message-ID":"<20260324231418.3118-2-gerris.rs@gmail.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260324231418.3118-1-gerris.rs@gmail.com>","References":"<20260324231418.3118-1-gerris.rs@gmail.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"From: Mohamed Ali <mohmedali1462005@gmail.com>\n\ngcc/testsuite/ChangeLog:\n\n\t* rust/execute/torture/ctlz_i16.rs: New test.\n\t* rust/execute/torture/ctlz_i32.rs: New test.\n\t* rust/execute/torture/ctlz_i64.rs: New test.\n\t* rust/execute/torture/ctlz_i8.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_i16.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_i32.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_i64.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_i8.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_u16.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_u32.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_u64.rs: New test.\n\t* rust/execute/torture/ctlz_nonzero_u8.rs: New test.\n\t* rust/execute/torture/ctlz_u16.rs: New test.\n\t* rust/execute/torture/ctlz_u32.rs: New test.\n\t* rust/execute/torture/ctlz_u64.rs: New test.\n\t* rust/execute/torture/ctlz_u8.rs: New test.\n\nSigned-off-by: Mohamed Ali <mohmedali1462005@gmail.com>\n---\nThis change was merged into the gccrs repository and is posted here for\nupstream visibility and potential drive-by review, as requested by GCC\nrelease managers.\nEach commit email contains a link to its details on github from where you can\nfind the Pull-Request and associated discussions.\n\n\nCommit on github: https://github.com/Rust-GCC/gccrs/commit/2889c50e2031a865b5704ef60f3463d0f8b05c31\n\nThe commit has been mentioned in the following pull-request(s):\n - https://github.com/Rust-GCC/gccrs/pull/4467\n\n .../rust/execute/torture/ctlz_i16.rs          | 28 ++++++++++++++++++\n .../rust/execute/torture/ctlz_i32.rs          | 28 ++++++++++++++++++\n .../rust/execute/torture/ctlz_i64.rs          | 28 ++++++++++++++++++\n gcc/testsuite/rust/execute/torture/ctlz_i8.rs | 29 +++++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_i16.rs  | 27 +++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_i32.rs  | 27 +++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_i64.rs  | 27 +++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_i8.rs   | 27 +++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_u16.rs  | 25 ++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_u32.rs  | 25 ++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_u64.rs  | 25 ++++++++++++++++\n .../rust/execute/torture/ctlz_nonzero_u8.rs   | 25 ++++++++++++++++\n .../rust/execute/torture/ctlz_u16.rs          | 26 +++++++++++++++++\n .../rust/execute/torture/ctlz_u32.rs          | 26 +++++++++++++++++\n .../rust/execute/torture/ctlz_u64.rs          | 26 +++++++++++++++++\n gcc/testsuite/rust/execute/torture/ctlz_u8.rs | 26 +++++++++++++++++\n 16 files changed, 425 insertions(+)\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_i16.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_i32.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_i64.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_i8.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_i16.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_i32.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_i64.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_i8.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_u16.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_u32.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_u64.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_nonzero_u8.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_u16.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_u32.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_u64.rs\n create mode 100644 gcc/testsuite/rust/execute/torture/ctlz_u8.rs","diff":"diff --git a/gcc/testsuite/rust/execute/torture/ctlz_i16.rs b/gcc/testsuite/rust/execute/torture/ctlz_i16.rs\nnew file mode 100644\nindex 000000000..90db2e531\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_i16.rs\n@@ -0,0 +1,28 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0i16) != 16 {\n+        abort();\n+    }\n+    // 1i16 = 0x0001: 15 leading zeros\n+    if ctlz(1i16) != 15 {\n+        abort();\n+    }\n+    // -1i16 = 0xFFFF: 0 leading zeros\n+    if ctlz(-1i16) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_i32.rs b/gcc/testsuite/rust/execute/torture/ctlz_i32.rs\nnew file mode 100644\nindex 000000000..d49668751\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_i32.rs\n@@ -0,0 +1,28 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0i32) != 32 {\n+        abort();\n+    }\n+    // 1i32 = 0x00000001: 31 leading zeros\n+    if ctlz(1i32) != 31 {\n+        abort();\n+    }\n+    // -1i32 = 0xFFFFFFFF: 0 leading zeros\n+    if ctlz(-1i32) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_i64.rs b/gcc/testsuite/rust/execute/torture/ctlz_i64.rs\nnew file mode 100644\nindex 000000000..feb4694d0\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_i64.rs\n@@ -0,0 +1,28 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0i64) != 64 {\n+        abort();\n+    }\n+    // 1i64 = 0x0000000000000001: 63 leading zeros\n+    if ctlz(1i64) != 63 {\n+        abort();\n+    }\n+    // -1i64 = 0xFFFFFFFFFFFFFFFF: 0 leading zeros\n+    if ctlz(-1i64) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_i8.rs b/gcc/testsuite/rust/execute/torture/ctlz_i8.rs\nnew file mode 100644\nindex 000000000..204999f60\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_i8.rs\n@@ -0,0 +1,29 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    // 0i8 has all 8 bits zero\n+    if ctlz(0i8) != 8 {\n+        abort();\n+    }\n+    // 1i8 = 0x01: 7 leading zeros\n+    if ctlz(1i8) != 7 {\n+        abort();\n+    }\n+    // -1i8 = 0xFF in two's complement: all bits set, 0 leading zeros\n+    if ctlz(-1i8) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i16.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i16.rs\nnew file mode 100644\nindex 000000000..e8593ab22\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i16.rs\n@@ -0,0 +1,27 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        // 1i16 = 0x0001: 15 leading zeros\n+        if ctlz_nonzero(1i16) != 15 {\n+            abort();\n+        }\n+        // -1i16 = 0xFFFF: 0 leading zeros\n+        if ctlz_nonzero(-1i16) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i32.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i32.rs\nnew file mode 100644\nindex 000000000..2c5afd3c1\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i32.rs\n@@ -0,0 +1,27 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        // 1i32 = 0x00000001: 31 leading zeros\n+        if ctlz_nonzero(1i32) != 31 {\n+            abort();\n+        }\n+        // -1i32 = 0xFFFFFFFF: 0 leading zeros\n+        if ctlz_nonzero(-1i32) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i64.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i64.rs\nnew file mode 100644\nindex 000000000..b34f4ca16\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i64.rs\n@@ -0,0 +1,27 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        // 1i64 = 0x0000000000000001: 63 leading zeros\n+        if ctlz_nonzero(1i64) != 63 {\n+            abort();\n+        }\n+        // -1i64 = 0xFFFFFFFFFFFFFFFF: 0 leading zeros\n+        if ctlz_nonzero(-1i64) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i8.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i8.rs\nnew file mode 100644\nindex 000000000..0f6c7f0c9\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_i8.rs\n@@ -0,0 +1,27 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        // 1i8 = 0x01: 7 leading zeros\n+        if ctlz_nonzero(1i8) != 7 {\n+            abort();\n+        }\n+        // -1i8 = 0xFF: 0 leading zeros\n+        if ctlz_nonzero(-1i8) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u16.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u16.rs\nnew file mode 100644\nindex 000000000..da0521c1c\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u16.rs\n@@ -0,0 +1,25 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        if ctlz_nonzero(1u16) != 15 {\n+            abort();\n+        }\n+        if ctlz_nonzero(0xFFFFu16) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u32.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u32.rs\nnew file mode 100644\nindex 000000000..b1224067b\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u32.rs\n@@ -0,0 +1,25 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        if ctlz_nonzero(1u32) != 31 {\n+            abort();\n+        }\n+        if ctlz_nonzero(0xFFFFFFFFu32) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u64.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u64.rs\nnew file mode 100644\nindex 000000000..9297c9d50\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u64.rs\n@@ -0,0 +1,25 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        if ctlz_nonzero(1u64) != 63 {\n+            abort();\n+        }\n+        if ctlz_nonzero(!0u64) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u8.rs b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u8.rs\nnew file mode 100644\nindex 000000000..d7baa555a\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_nonzero_u8.rs\n@@ -0,0 +1,25 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz_nonzero<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    unsafe {\n+        if ctlz_nonzero(1u8) != 7 {\n+            abort();\n+        }\n+        if ctlz_nonzero(255u8) != 0 {\n+            abort();\n+        }\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_u16.rs b/gcc/testsuite/rust/execute/torture/ctlz_u16.rs\nnew file mode 100644\nindex 000000000..ded1b7458\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_u16.rs\n@@ -0,0 +1,26 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0u16) != 16 {\n+        abort();\n+    }\n+    if ctlz(1u16) != 15 {\n+        abort();\n+    }\n+    if ctlz(0xFFFFu16) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_u32.rs b/gcc/testsuite/rust/execute/torture/ctlz_u32.rs\nnew file mode 100644\nindex 000000000..cb0b20cb3\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_u32.rs\n@@ -0,0 +1,26 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0u32) != 32 {\n+        abort();\n+    }\n+    if ctlz(1u32) != 31 {\n+        abort();\n+    }\n+    if ctlz(0xFFFFFFFFu32) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_u64.rs b/gcc/testsuite/rust/execute/torture/ctlz_u64.rs\nnew file mode 100644\nindex 000000000..bcf478e73\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_u64.rs\n@@ -0,0 +1,26 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0u64) != 64 {\n+        abort();\n+    }\n+    if ctlz(1u64) != 63 {\n+        abort();\n+    }\n+    if ctlz(!0u64) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\ndiff --git a/gcc/testsuite/rust/execute/torture/ctlz_u8.rs b/gcc/testsuite/rust/execute/torture/ctlz_u8.rs\nnew file mode 100644\nindex 000000000..8907a86cb\n--- /dev/null\n+++ b/gcc/testsuite/rust/execute/torture/ctlz_u8.rs\n@@ -0,0 +1,26 @@\n+#![feature(no_core)]\n+#![no_core]\n+#![feature(intrinsics)]\n+#![feature(lang_items)]\n+\n+#[lang = \"sized\"]\n+pub trait Sized {}\n+\n+extern \"rust-intrinsic\" {\n+    pub fn ctlz<T>(x: T) -> u32;\n+    pub fn abort() -> !;\n+}\n+\n+fn main() -> i32 {\n+    if ctlz(0u8) != 8 {\n+        abort();\n+    }\n+    if ctlz(1u8) != 7 {\n+        abort();\n+    }\n+    if ctlz(255u8) != 0 {\n+        abort();\n+    }\n+\n+    0\n+}\n","prefixes":["gccrs","COMMIT","2/2"]}