Skip to content

Commit 17b04e2

Browse files
committed
rounding
1 parent c2a06ce commit 17b04e2

4 files changed

Lines changed: 41 additions & 24 deletions

File tree

crates/intrinsic-test/missing_x86_gcc.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ _mm512_mask_reduce_min_pd
2121
_mm512_mask_reduce_min_ps
2222

2323
# Rounding errors in release mode
24-
_mm_maskz_fmadd_sd
25-
_mm_maskz_fmadd_ss
26-
_mm_maskz_fmsub_sd
27-
_mm_maskz_fmsub_ss
28-
_mm_maskz_fnmadd_sd
29-
_mm_maskz_fnmadd_ss
24+
#_mm_maskz_fmadd_sd
25+
#_mm_maskz_fmadd_ss
26+
#_mm_maskz_fmsub_sd
27+
#_mm_maskz_fmsub_ss
28+
#_mm_maskz_fnmadd_sd
29+
#_mm_maskz_fnmadd_ss

crates/intrinsic-test/missing_x86_icx.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ _mm512_mask_reduce_min_pd
1212
_mm512_mask_reduce_min_ps
1313

1414
# Rounding errors in release mode
15-
_mm_maskz_fmadd_round_sd
16-
_mm_maskz_fmadd_round_ss
17-
_mm_maskz_fmadd_round_sh
18-
_mm_maskz_fmsub_round_sd
19-
_mm_maskz_fmsub_round_ss
20-
_mm_maskz_fmsub_round_sh
21-
_mm_maskz_fnmadd_round_sd
22-
_mm_maskz_fnmadd_round_ss
23-
_mm_maskz_fnmadd_round_sh
24-
_mm_maskz_fnmsub_round_sd
25-
_mm_maskz_fnmsub_round_ss
26-
_mm_maskz_fnmsub_sd
27-
_mm_maskz_fnmsub_ss
15+
#_mm_maskz_fmadd_round_sd
16+
#_mm_maskz_fmadd_round_ss
17+
#_mm_maskz_fmadd_round_sh
18+
#_mm_maskz_fmsub_round_sd
19+
#_mm_maskz_fmsub_round_ss
20+
#_mm_maskz_fmsub_round_sh
21+
#_mm_maskz_fnmadd_round_sd
22+
#_mm_maskz_fnmadd_round_ss
23+
#_mm_maskz_fnmadd_round_sh
24+
#_mm_maskz_fnmsub_round_sd
25+
#_mm_maskz_fnmsub_round_ss
26+
#_mm_maskz_fnmsub_sd
27+
#_mm_maskz_fnmsub_ss

crates/intrinsic-test/src/common/gen_rust.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use itertools::Itertools;
44

55
use super::intrinsic_helpers::IntrinsicTypeDefinition;
66
use crate::common::argument::ArgumentList;
7+
use crate::common::cli::ProcessedCli;
78
use crate::common::intrinsic::Intrinsic;
89
use crate::common::intrinsic_helpers::TypeKind;
910

@@ -314,11 +315,17 @@ pub fn write_build_rs(
314315
w: &mut impl std::io::Write,
315316
i: usize,
316317
arch_flags: &[&str],
318+
cli_options: &ProcessedCli,
317319
) -> std::io::Result<()> {
318-
const COMMON_FLAGS: &[&str] = &[
319-
"-ffp-contract=off",
320+
const COMMON_FLAGS: &[&str] = &["-ffp-contract=off", "-Wno-narrowing"];
321+
const CLANG_FLAGS: &[&str] = &["-ffp-model=strict"];
322+
const GCC_FLAGS: &[&str] = &[
320323
"-flax-vector-conversions",
321-
"-Wno-narrowing",
324+
"-fno-fast-math",
325+
"-frounding-math",
326+
"-fexcess-precision=standard",
327+
"-ftrapping-math",
328+
"-fsignaling-nans",
322329
];
323330

324331
write!(
@@ -333,7 +340,17 @@ pub fn write_build_rs(
333340
i = i
334341
)?;
335342

336-
for flag in COMMON_FLAGS.iter().chain(arch_flags) {
343+
let compiler_specific_flags = match &*cli_options.cc {
344+
"gcc" => GCC_FLAGS,
345+
"clang" | "icx" => CLANG_FLAGS,
346+
cc => unimplemented!("Unknown C compiler {cc}"),
347+
};
348+
349+
for flag in COMMON_FLAGS
350+
.iter()
351+
.chain(compiler_specific_flags)
352+
.chain(arch_flags)
353+
{
337354
writeln!(w, "\"{flag}\",")?;
338355
}
339356

crates/intrinsic-test/src/common/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ pub trait SupportedArchitectureTest {
9797
trace!("generating `{build_rs_filename}`");
9898
let mut file = File::create(&build_rs_filename).unwrap();
9999

100-
write_build_rs(&mut file, i, &arch_flags).unwrap();
100+
write_build_rs(&mut file, i, &arch_flags, &cli_options).unwrap();
101101
run_rustfmt(&build_rs_filename);
102102

103103
Ok(())

0 commit comments

Comments
 (0)