@@ -15297,6 +15297,21 @@ pub unsafe fn vrnd32xq_f32(a: float32x4_t) -> float32x4_t {
15297
15297
vrnd32xq_f32_(a)
15298
15298
}
15299
15299
15300
+ /// Floating-point round to 32-bit integer, using current rounding mode
15301
+ ///
15302
+ /// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd32xq_f64)
15303
+ #[inline]
15304
+ #[target_feature(enable = "neon,frintts")]
15305
+ #[cfg_attr(test, assert_instr(frint32x))]
15306
+ pub unsafe fn vrnd32xq_f64(a: float64x2_t) -> float64x2_t {
15307
+ #[allow(improper_ctypes)]
15308
+ extern "unadjusted" {
15309
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.frint32x.v2f64")]
15310
+ fn vrnd32xq_f64_(a: float64x2_t) -> float64x2_t;
15311
+ }
15312
+ vrnd32xq_f64_(a)
15313
+ }
15314
+
15300
15315
/// Floating-point round to 32-bit integer toward zero
15301
15316
///
15302
15317
/// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd32z_f32)
@@ -15327,6 +15342,21 @@ pub unsafe fn vrnd32zq_f32(a: float32x4_t) -> float32x4_t {
15327
15342
vrnd32zq_f32_(a)
15328
15343
}
15329
15344
15345
+ /// Floating-point round to 32-bit integer toward zero
15346
+ ///
15347
+ /// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd32zq_f64)
15348
+ #[inline]
15349
+ #[target_feature(enable = "neon,frintts")]
15350
+ #[cfg_attr(test, assert_instr(frint32z))]
15351
+ pub unsafe fn vrnd32zq_f64(a: float64x2_t) -> float64x2_t {
15352
+ #[allow(improper_ctypes)]
15353
+ extern "unadjusted" {
15354
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.frint32z.v2f64")]
15355
+ fn vrnd32zq_f64_(a: float64x2_t) -> float64x2_t;
15356
+ }
15357
+ vrnd32zq_f64_(a)
15358
+ }
15359
+
15330
15360
/// Floating-point round to 64-bit integer, using current rounding mode
15331
15361
///
15332
15362
/// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd64x_f32)
@@ -15357,6 +15387,21 @@ pub unsafe fn vrnd64xq_f32(a: float32x4_t) -> float32x4_t {
15357
15387
vrnd64xq_f32_(a)
15358
15388
}
15359
15389
15390
+ /// Floating-point round to 64-bit integer, using current rounding mode
15391
+ ///
15392
+ /// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd64xq_f64)
15393
+ #[inline]
15394
+ #[target_feature(enable = "neon,frintts")]
15395
+ #[cfg_attr(test, assert_instr(frint64x))]
15396
+ pub unsafe fn vrnd64xq_f64(a: float64x2_t) -> float64x2_t {
15397
+ #[allow(improper_ctypes)]
15398
+ extern "unadjusted" {
15399
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.frint64x.v2f64")]
15400
+ fn vrnd64xq_f64_(a: float64x2_t) -> float64x2_t;
15401
+ }
15402
+ vrnd64xq_f64_(a)
15403
+ }
15404
+
15360
15405
/// Floating-point round to 64-bit integer toward zero
15361
15406
///
15362
15407
/// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd64z_f32)
@@ -15387,6 +15432,21 @@ pub unsafe fn vrnd64zq_f32(a: float32x4_t) -> float32x4_t {
15387
15432
vrnd64zq_f32_(a)
15388
15433
}
15389
15434
15435
+ /// Floating-point round to 64-bit integer toward zero
15436
+ ///
15437
+ /// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrnd64zq_f64)
15438
+ #[inline]
15439
+ #[target_feature(enable = "neon,frintts")]
15440
+ #[cfg_attr(test, assert_instr(frint64z))]
15441
+ pub unsafe fn vrnd64zq_f64(a: float64x2_t) -> float64x2_t {
15442
+ #[allow(improper_ctypes)]
15443
+ extern "unadjusted" {
15444
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.frint64z.v2f64")]
15445
+ fn vrnd64zq_f64_(a: float64x2_t) -> float64x2_t;
15446
+ }
15447
+ vrnd64zq_f64_(a)
15448
+ }
15449
+
15390
15450
/// Transpose vectors
15391
15451
///
15392
15452
/// [Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn1_s8)
@@ -26810,6 +26870,14 @@ mod test {
26810
26870
assert_eq!(r, e);
26811
26871
}
26812
26872
26873
+ #[simd_test(enable = "neon,frintts")]
26874
+ unsafe fn test_vrnd32xq_f64() {
26875
+ let a: f64x2 = f64x2::new(1.1, 1.9);
26876
+ let e: f64x2 = f64x2::new(1.0, 2.0);
26877
+ let r: f64x2 = transmute(vrnd32xq_f64(transmute(a)));
26878
+ assert_eq!(r, e);
26879
+ }
26880
+
26813
26881
#[simd_test(enable = "neon,frintts")]
26814
26882
unsafe fn test_vrnd32z_f32() {
26815
26883
let a: f32x2 = f32x2::new(1.1, 1.9);
@@ -26826,6 +26894,14 @@ mod test {
26826
26894
assert_eq!(r, e);
26827
26895
}
26828
26896
26897
+ #[simd_test(enable = "neon,frintts")]
26898
+ unsafe fn test_vrnd32zq_f64() {
26899
+ let a: f64x2 = f64x2::new(1.1, 1.9);
26900
+ let e: f64x2 = f64x2::new(1.0, 1.0);
26901
+ let r: f64x2 = transmute(vrnd32zq_f64(transmute(a)));
26902
+ assert_eq!(r, e);
26903
+ }
26904
+
26829
26905
#[simd_test(enable = "neon,frintts")]
26830
26906
unsafe fn test_vrnd64x_f32() {
26831
26907
let a: f32x2 = f32x2::new(1.1, 1.9);
@@ -26842,6 +26918,14 @@ mod test {
26842
26918
assert_eq!(r, e);
26843
26919
}
26844
26920
26921
+ #[simd_test(enable = "neon,frintts")]
26922
+ unsafe fn test_vrnd64xq_f64() {
26923
+ let a: f64x2 = f64x2::new(1.1, 1.9);
26924
+ let e: f64x2 = f64x2::new(1.0, 2.0);
26925
+ let r: f64x2 = transmute(vrnd64xq_f64(transmute(a)));
26926
+ assert_eq!(r, e);
26927
+ }
26928
+
26845
26929
#[simd_test(enable = "neon,frintts")]
26846
26930
unsafe fn test_vrnd64z_f32() {
26847
26931
let a: f32x2 = f32x2::new(1.1, 1.9);
@@ -26858,6 +26942,14 @@ mod test {
26858
26942
assert_eq!(r, e);
26859
26943
}
26860
26944
26945
+ #[simd_test(enable = "neon,frintts")]
26946
+ unsafe fn test_vrnd64zq_f64() {
26947
+ let a: f64x2 = f64x2::new(1.1, 1.9);
26948
+ let e: f64x2 = f64x2::new(1.0, 1.0);
26949
+ let r: f64x2 = transmute(vrnd64zq_f64(transmute(a)));
26950
+ assert_eq!(r, e);
26951
+ }
26952
+
26861
26953
#[simd_test(enable = "neon")]
26862
26954
unsafe fn test_vtrn1_s8() {
26863
26955
let a: i8x8 = i8x8::new(0, 2, 4, 6, 8, 10, 12, 14);
0 commit comments