about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadhav Madhusoodanan <madhavmadhusoodanan@gmail.com>2025-05-25 21:17:31 +0530
committerAmanieu d'Antras <amanieu@gmail.com>2025-05-27 23:27:38 +0000
commit54e277cdd58d6ceed114d5fca92405ec6f68d213 (patch)
treec197127129598abb147de00689005c8b9bc5e478
parent57006ad521bf811678e9a0f283e5dc8b066941ff (diff)
downloadrust-54e277cdd58d6ceed114d5fca92405ec6f68d213.tar.gz
rust-54e277cdd58d6ceed114d5fca92405ec6f68d213.zip
fix: moved f16 formatting code to common module
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs11
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs15
2 files changed, 16 insertions, 10 deletions
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs b/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
index 0c3a832bac8..e3b0fbbce93 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
@@ -127,16 +127,7 @@ impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {
             constraints
         };
 
-        // the `intrinsic-test` crate compares the output of C and Rust intrinsics. Currently, It uses
-        // a string representation of the output value to compare. In C, f16 values are currently printed
-        // as hexadecimal integers. Since https://github.com/rust-lang/rust/pull/127013, rust does print
-        // them as decimal floating point values. To keep the intrinsics tests working, for now, format
-        // vectors containing f16 values like C prints them.
-        let return_value = match self.results.kind() {
-            TypeKind::Float if self.results.inner_size() == 16 => "debug_f16(__return_value)",
-            _ => "format_args!(\"{__return_value:.150?}\")",
-        };
-
+        let return_value = self.format_f16_return_value();
         let indentation2 = indentation.nested();
         let indentation3 = indentation2.nested();
 
diff --git a/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs b/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs
index fcc2d4941b3..9a2bf74a63d 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs
@@ -6,6 +6,7 @@ use itertools::Itertools;
 use super::argument::Argument;
 use super::gen_c::generate_c_program;
 use super::gen_rust::generate_rust_program;
+use super::intrinsic_helpers::TypeKind;
 
 // The number of times each intrinsic will be called.
 const PASSES: u32 = 20;
@@ -41,6 +42,20 @@ where
     /// there is an int i in scope which is the current pass number.
     fn print_result_c(&self, _indentation: Indentation, _additional: &str) -> String;
 
+    fn format_f16_return_value(&self) -> String {
+        // the `intrinsic-test` crate compares the output of C and Rust intrinsics. Currently, It uses
+        // a string representation of the output value to compare. In C, f16 values are currently printed
+        // as hexadecimal integers. Since https://github.com/rust-lang/rust/pull/127013, rust does print
+        // them as decimal floating point values. To keep the intrinsics tests working, for now, format
+        // vectors containing f16 values like C prints them.
+        let return_value = match self.results().kind() {
+            TypeKind::Float if self.results().inner_size() == 16 => "debug_f16(__return_value)",
+            _ => "format_args!(\"{__return_value:.150?}\")",
+        };
+
+        String::from(return_value)
+    }
+
     fn generate_loop_c(
         &self,
         indentation: Indentation,