diff options
| author | Madhav Madhusoodanan <madhavmadhusoodanan@gmail.com> | 2025-05-25 21:17:31 +0530 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2025-05-27 23:27:38 +0000 |
| commit | 54e277cdd58d6ceed114d5fca92405ec6f68d213 (patch) | |
| tree | c197127129598abb147de00689005c8b9bc5e478 | |
| parent | 57006ad521bf811678e9a0f283e5dc8b066941ff (diff) | |
| download | rust-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.rs | 11 | ||||
| -rw-r--r-- | library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs | 15 |
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, |
