about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xlibrary/stdarch/ci/run.sh2
-rw-r--r--library/stdarch/crates/core_arch/src/x86/rdtsc.rs8
2 files changed, 6 insertions, 4 deletions
diff --git a/library/stdarch/ci/run.sh b/library/stdarch/ci/run.sh
index fd7ec81d505..8eadb9285c9 100755
--- a/library/stdarch/ci/run.sh
+++ b/library/stdarch/ci/run.sh
@@ -10,7 +10,7 @@ set -ex
 #export RUST_TEST_NOCAPTURE=1
 #export RUST_TEST_THREADS=1
 
-export RUSTFLAGS="${RUSTFLAGS} -D warnings -Z merge-functions=disabled "
+export RUSTFLAGS="${RUSTFLAGS} -D warnings -Z merge-functions=disabled -Z verify-llvm-ir"
 export HOST_RUSTFLAGS="${RUSTFLAGS}"
 export PROFILE="${PROFILE:="--profile=release"}"
 
diff --git a/library/stdarch/crates/core_arch/src/x86/rdtsc.rs b/library/stdarch/crates/core_arch/src/x86/rdtsc.rs
index e714aa863b9..3b348153d60 100644
--- a/library/stdarch/crates/core_arch/src/x86/rdtsc.rs
+++ b/library/stdarch/crates/core_arch/src/x86/rdtsc.rs
@@ -46,15 +46,17 @@ pub unsafe fn _rdtsc() -> u64 {
 #[cfg_attr(test, assert_instr(rdtscp))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn __rdtscp(aux: *mut u32) -> u64 {
-    rdtscp(aux as *mut _)
+    let (tsc, auxval) = rdtscp();
+    *aux = auxval;
+    tsc
 }
 
 #[allow(improper_ctypes)]
-unsafe extern "C" {
+unsafe extern "unadjusted" {
     #[link_name = "llvm.x86.rdtsc"]
     fn rdtsc() -> u64;
     #[link_name = "llvm.x86.rdtscp"]
-    fn rdtscp(aux: *mut u8) -> u64;
+    fn rdtscp() -> (u64, u32);
 }
 
 #[cfg(test)]