From 3b583400734faeaf5e7e13e0bfbc7fddec0f9a00 Mon Sep 17 00:00:00 2001 From: Kajetan Puchalski Date: Wed, 5 Feb 2025 15:24:53 +0000 Subject: [PATCH] intrinsic-test: Print C++ float16_t in hex Upstream Rust currently does not support printing f16s in decimal. For the intrinsics tests to work, make C++ print float16_t in the same format. Can be droppen once https://github.com/rust-lang/rust/pull/127013 is merged. --- .../stdarch/crates/intrinsic-test/missing_aarch64.txt | 3 +++ library/stdarch/crates/intrinsic-test/src/main.rs | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/library/stdarch/crates/intrinsic-test/missing_aarch64.txt b/library/stdarch/crates/intrinsic-test/missing_aarch64.txt index 4784a0decbd3..ff13fcf4fc6a 100644 --- a/library/stdarch/crates/intrinsic-test/missing_aarch64.txt +++ b/library/stdarch/crates/intrinsic-test/missing_aarch64.txt @@ -27,3 +27,6 @@ vrnd64z_f64 # Broken in Clang vcvth_s16_f16 +# FIXME: Broken output due to missing f16 printing support in Rust, see git blame for this line +vmulh_lane_f16 +vmulh_laneq_f16 diff --git a/library/stdarch/crates/intrinsic-test/src/main.rs b/library/stdarch/crates/intrinsic-test/src/main.rs index 57df40bb2fda..a64e264d8b1b 100644 --- a/library/stdarch/crates/intrinsic-test/src/main.rs +++ b/library/stdarch/crates/intrinsic-test/src/main.rs @@ -114,6 +114,15 @@ std::ostream& operator<<(std::ostream& os, poly128_t value) {{ }} #endif +std::ostream& operator<<(std::ostream& os, float16_t value) {{ + uint16_t temp = 0; + memcpy(&temp, &value, sizeof(float16_t)); + std::stringstream ss; + ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << temp; + os << ss.str(); + return os; +}} + {arglists} int main(int argc, char **argv) {{