diff options
| author | sayantn <sayantn05@gmail.com> | 2025-06-03 20:37:10 +0530 |
|---|---|---|
| committer | sayantn <sayantn05@gmail.com> | 2025-06-03 20:37:10 +0530 |
| commit | b97136c817c989f37baca1191a07828346251a64 (patch) | |
| tree | dcf3d80cbb609fdd0308eb24bcd0acca05fe4b1d | |
| parent | 99e783d4e9bdcc44e2071973631a7d5e689b0787 (diff) | |
| download | rust-b97136c817c989f37baca1191a07828346251a64.tar.gz rust-b97136c817c989f37baca1191a07828346251a64.zip | |
Add impl for `llvm.roundeven` in cg_clif
- remove unused `llvm.aarch64.neon.frintn` from cg_clif
| -rw-r--r-- | example/neon.rs | 2 | ||||
| -rw-r--r-- | src/intrinsics/llvm.rs | 8 | ||||
| -rw-r--r-- | src/intrinsics/llvm_aarch64.rs | 8 |
3 files changed, 9 insertions, 9 deletions
diff --git a/example/neon.rs b/example/neon.rs index 69ce17d3d75..704f866e2c4 100644 --- a/example/neon.rs +++ b/example/neon.rs @@ -233,7 +233,7 @@ unsafe fn test_vaddvq_f32() { #[cfg(target_arch = "aarch64")] unsafe fn test_vrndnq_f32() { - // AArch64 llvm intrinsic: llvm.aarch64.neon.frintn.v4f32 + // llvm intrinsic: llvm.roundeven.v4f32 let a = f32x4::from([0.1, -1.9, 4.5, 5.5]); let e = f32x4::from([0., -2., 4., 6.]); let r: f32x4 = transmute(vrndnq_f32(transmute(a))); diff --git a/src/intrinsics/llvm.rs b/src/intrinsics/llvm.rs index 2e02e85a997..81dc038a551 100644 --- a/src/intrinsics/llvm.rs +++ b/src/intrinsics/llvm.rs @@ -62,6 +62,14 @@ pub(crate) fn codegen_llvm_intrinsic_call<'tcx>( }); } + _ if intrinsic.starts_with("llvm.roundeven.v") => { + intrinsic_args!(fx, args => (v); intrinsic); + + simd_for_each_lane(fx, v, ret, &|fx, _lane_ty, _res_lane_ty, lane| { + fx.bcx.ins().nearest(lane) + }); + } + _ => { fx.tcx .dcx() diff --git a/src/intrinsics/llvm_aarch64.rs b/src/intrinsics/llvm_aarch64.rs index d22483cf177..5448f1b1e90 100644 --- a/src/intrinsics/llvm_aarch64.rs +++ b/src/intrinsics/llvm_aarch64.rs @@ -264,14 +264,6 @@ pub(super) fn codegen_aarch64_llvm_intrinsic_call<'tcx>( simd_reduce(fx, v, None, ret, &|fx, _ty, a, b| fx.bcx.ins().fadd(a, b)); } - _ if intrinsic.starts_with("llvm.aarch64.neon.frintn.v") => { - intrinsic_args!(fx, args => (v); intrinsic); - - simd_for_each_lane(fx, v, ret, &|fx, _lane_ty, _res_lane_ty, lane| { - fx.bcx.ins().nearest(lane) - }); - } - _ if intrinsic.starts_with("llvm.aarch64.neon.smaxv.i") => { intrinsic_args!(fx, args => (v); intrinsic); |
