Source: rust-criterion-cycles-per-byte Version: 0.5.0-1 Severity: normal X-Debbugs-Cc: wuruil...@loongson.cn
Dear Maintainer, rust-criterion-cycles-per-byte compiled incorrectly on the loongarch platform, the attached patch fixes the problem. I have verified on loongarch that the package compiles successfully. wuruilong -- System Information: Debian Release: trixie/sid APT prefers unreleased APT policy: (500, 'unreleased'), (500, 'unstable') Architecture: loong64 (loongarch64) Kernel: Linux 5.10.0-60.96.0.126.oe2203.loongarch64 (SMP w/32 CPU threads) Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: unable to detect
Description: <short summary of the patch> TODO: Put a short summary on the line above and replace this paragraph with a longer explanation of this change. Complete the meta-information with other relevant fields (see below for details). To make it easier, the information below has been extracted from the changelog. Adjust it or drop it. . rust-criterion-cycles-per-byte (0.5.0-1) unstable; urgency=medium . * Package criterion-cycles-per-byte 0.5.0 from crates.io using debcargo 2.6.0 Author: Jelmer Vernooij <jel...@debian.org> --- The information above should follow the Patch Tagging Guidelines, please checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>) Bug: <upstream-bugtracker-url> Bug-Debian: https://bugs.debian.org/<bugnumber> Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber> Forwarded: (no|not-needed|<patch-forwarded-url>) Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>) Reviewed-By: <name and email of someone who approved/reviewed the patch> Last-Update: 2024-09-18 --- rust-criterion-cycles-per-byte-0.5.0.orig/src/lib.rs +++ rust-criterion-cycles-per-byte-0.5.0/src/lib.rs @@ -30,8 +30,12 @@ use criterion::{ Throughput, }; -#[cfg(not(any(target_arch = "x86_64", target_arch = "x86")))] -compile_error!("criterion-cycles-per-byte currently relies on x86 or x86_64."); +#[cfg(not(any( + target_arch = "x86_64", + target_arch = "x86", + target_arch = "loongarch64" +)))] +compile_error!("criterion-cycles-per-byte currently relies on x86 or x86_64 or loongarch64."); /// `CyclesPerByte` measures clock cycles using the x86 or x86_64 `rdtsc` instruction. `cpb` is /// the preferred measurement for cryptographic algorithms. @@ -48,6 +52,18 @@ fn rdtsc() -> u64 { unsafe { core::arch::x86::_rdtsc() } + + #[cfg(target_arch = "loongarch64")] + unsafe { + let counter: u64; + + core::arch::asm!( + "rdtime.d {0}, $zero", + out(reg) counter, + ); + + counter + } } impl Measurement for CyclesPerByte {