Skip to content

Commit 0733d6c

Browse files
committed
Implement simd_round_ties_even for cg_clif and cg_gcc
1 parent cc0e31f commit 0733d6c

File tree

2 files changed

+6
-1
lines changed
  • compiler
    • rustc_codegen_cranelift/src/intrinsics
    • rustc_codegen_gcc/src/intrinsic

2 files changed

+6
-1
lines changed

compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
495495
| sym::simd_flog
496496
| sym::simd_flog10
497497
| sym::simd_flog2
498-
| sym::simd_round => {
498+
| sym::simd_round
499+
| sym::simd_round_ties_even => {
499500
intrinsic_args!(fx, args => (a); intrinsic);
500501

501502
if !a.layout().ty.is_simd() {
@@ -526,6 +527,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
526527
(sym::simd_flog2, types::F64) => "log2",
527528
(sym::simd_round, types::F32) => "roundf",
528529
(sym::simd_round, types::F64) => "round",
530+
(sym::simd_round_ties_even, types::F32) => "rintf",
531+
(sym::simd_round_ties_even, types::F64) => "rint",
529532
_ => unreachable!("{:?}", intrinsic),
530533
};
531534
fx.lib_call(

compiler/rustc_codegen_gcc/src/intrinsic/simd.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,7 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
779779
sym::simd_fsin => "sin",
780780
sym::simd_fsqrt => "sqrt",
781781
sym::simd_round => "round",
782+
sym::simd_round_ties_even => "rint",
782783
sym::simd_trunc => "trunc",
783784
_ => return_error!(InvalidMonomorphization::UnrecognizedIntrinsic { span, name }),
784785
};
@@ -826,6 +827,7 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
826827
| sym::simd_fsin
827828
| sym::simd_fsqrt
828829
| sym::simd_round
830+
| sym::simd_round_ties_even
829831
| sym::simd_trunc
830832
) {
831833
return simd_simple_float_intrinsic(name, in_elem, in_ty, in_len, bx, span, args);

0 commit comments

Comments
 (0)