1arch_cfgs:2 - arch_name: aarch643 target_feature: [neon]4 llvm_prefix: llvm.aarch64.neon5# Generate big endian shuffles6auto_big_endian: true78# We do not want to automatically generate signed/unsigned casts9auto_llvm_sign_conversion: false1011# Repeatedly used anchors12# #[stable(feature = "neon_intrinsics", since = "1.59.0")]13neon-stable: &neon-stable14 FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1516# #[stable(feature = "stdarch_neon_fp16", since = "1.94.0")]17neon-stable-fp16: &neon-stable-fp1618 FnCall: [stable, ['feature = "stdarch_neon_fp16"', 'since = "1.94.0"']]1920# #[cfg(not(target_arch = "arm64ec"))]21target-not-arm64ec: &target-not-arm64ec22 FnCall: [cfg, [{ FnCall: [not, ['target_arch = "arm64ec"']]}]]2324# #[cfg_attr(all(test, not(target_env = "msvc"))]25msvc-disabled: &msvc-disabled26 FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]2728# all(test, target_arch = "arm")29test-is-arm: &test-is-arm30 FnCall: [all, [test, 'target_arch = "arm"']]3132# #[target_feature(enable = "neon,aes")]33neon-aes: &neon-aes34 FnCall: [target_feature, ['enable = "neon,aes"']]3536# #[target_feature(enable = "neon,i8mm")]37neon-i8mm: &neon-i8mm38 FnCall: [target_feature, ['enable = "neon,i8mm"']]3940# #[target_feature(enable = "neon,fp16")]41neon-fp16: &neon-fp1642 FnCall: [target_feature, ['enable = "neon,fp16"']]4344# #[cfg_attr(not(target_arch = "arm"), target_feature(enable = "fhm"))]45enable-fhm: &enable-fhm46 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, { FnCall: [target_feature, ['enable = "fhm"']] }]]4748enable-fcma: &enable-fcma49 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, { FnCall: [target_feature, ['enable = "fcma"']] }]]5051# #[unstable(feature = "stdarch_neon_fcma", issue = "117222")]52neon-unstable-fcma: &neon-unstable-fcma53 FnCall: [unstable, ['feature = "stdarch_neon_fcma"', 'issue = "117222"']]5455aarch64-crc-stable: &aarch64-crc-stable56 FnCall: [stable, ['feature = "stdarch_aarch64_crc32"', 'since = "1.80.0"']]5758# #[unstable(feature = "stdarch_neon_f16", issue = "136306")]59neon-unstable-f16: &neon-unstable-f1660 FnCall: [unstable, ['feature = "stdarch_neon_f16"', 'issue = "136306"']]6162# #[unstable(feature = "stdarch_neon_feat_lut", issue = "138050")]63neon-unstable-feat-lut: &neon-unstable-feat-lut64 FnCall: [unstable, ['feature = "stdarch_neon_feat_lut"', 'issue = "138050"']]6566aarch64-stable-jscvt: &aarch64-stable-jscvt67 FnCall: [stable, ['feature = "stdarch_aarch64_jscvt"', 'since = "1.95.0"']]6869# #[unstable(feature = "stdarch_neon_feat_lrcpc3", issue = "none")]70neon-unstable-feat-lrcpc3: &neon-unstable-feat-lrcpc371 FnCall: [unstable, ['feature = "stdarch_neon_feat_lrcpc3"', 'issue = "none"']]7273# #[cfg(target_has_atomic = "64")]74cfg-target-has-atomic-64: &cfg-target-has-atomic-6475 FnCall: [cfg, ['target_has_atomic = "64"']]7677# #[unstable(feature = "stdarch_neon_fp8", issue = "none")]78neon-unstable-fp8: &neon-unstable-fp879 FnCall: [unstable, ['feature = "stdarch_neon_fp8"', 'issue = "none"']]8081# #[cfg(target_endian = "little")]82little-endian: &little-endian83 FnCall: [cfg, ['target_endian = "little"']]8485# #[cfg(target_endian = "big")]86big-endian: &big-endian87 FnCall: [cfg, ['target_endian = "big"']]8889intrinsics:90 - name: "vaddd_{type}"91 doc: Add92 arguments: ["a: {type}", "b: {type}"]93 return_type: "{type}"94 attr: [*neon-stable]95 assert_instr: [nop]96 safety: safe97 types:98 - i6499 - u64100 compose:101 - MethodCall:102 - a103 - wrapping_add104 - - b105106 - name: "veor3{neon_type.no}"107 doc: Three-way exclusive OR108 arguments: ["a: {neon_type}", "b: {neon_type}", "c: {neon_type}"]109 return_type: "{neon_type}"110 attr:111 - FnCall: [target_feature, ['enable = "neon,sha3"']]112 - FnCall: [stable, ['feature = "stdarch_neon_sha3"', 'since = "1.79.0"']]113 assert_instr: [eor3]114 safety: safe115 types:116 - int8x16_t117 - int16x8_t118 - int32x4_t119 - int64x2_t120 compose:121 - LLVMLink:122 name: "llvm.aarch64.crypto.eor3s.{neon_type}"123 links:124 - link: "llvm.aarch64.crypto.eor3s.{neon_type}"125 arch: aarch64,arm64ec126127 - name: "veor3{neon_type.no}"128 doc: Three-way exclusive OR129 arguments: ["a: {neon_type}", "b: {neon_type}", "c: {neon_type}"]130 return_type: "{neon_type}"131 attr:132 - FnCall: [target_feature, ['enable = "neon,sha3"']]133 - FnCall: [stable, ['feature = "stdarch_neon_sha3"', 'since = "1.79.0"']]134 assert_instr: [eor3]135 safety: safe136 types:137 - uint8x16_t138 - uint16x8_t139 - uint32x4_t140 - uint64x2_t141 compose:142 - LLVMLink:143 name: "llvm.aarch64.crypto.eor3u.{neon_type}"144 links:145 - link: "llvm.aarch64.crypto.eor3u.{neon_type}"146 arch: aarch64,arm64ec147148 - name: "vabd{neon_type.no}"149 doc: Absolute difference between the arguments of Floating150 arguments: ["a: {neon_type}", "b: {neon_type}"]151 return_type: "{neon_type}"152 attr: [*neon-stable]153 assert_instr: [fabd]154 safety: safe155 types:156 - float64x1_t157 - float64x2_t158 compose:159 - LLVMLink:160 name: "fabd.{neon_type}"161 links:162 - link: "llvm.aarch64.neon.fabd.{neon_type}"163 arch: aarch64,arm64ec164165 - name: "vabd{type[0]}"166 doc: "Floating-point absolute difference"167 arguments: ["a: {type[1]}", "b: {type[1]}"]168 return_type: "{type[1]}"169 attr: [*neon-stable]170 assert_instr: [fabd]171 safety: safe172 types:173 - ['s_f32', 'f32']174 - ['d_f64', 'f64']175 compose:176 - FnCall:177 - simd_extract!178 - - FnCall:179 - "vabd_{type[1]}"180 - - FnCall: ["vdup_n_{type[1]}", [a]]181 - FnCall: ["vdup_n_{type[1]}", [b]]182 - 0183184 - name: "vabd{type[0]}"185 doc: "Floating-point absolute difference"186 arguments: ["a: {type[1]}", "b: {type[1]}"]187 return_type: "{type[1]}"188 attr:189 - *neon-fp16190 - *neon-unstable-f16191 - *target-not-arm64ec192 assert_instr: [fabd]193 safety: safe194 types:195 - ['h_f16', 'f16']196 compose:197 - FnCall:198 - simd_extract!199 - - FnCall:200 - "vabd_{type[1]}"201 - - FnCall: ["vdup_n_{type[1]}", [a]]202 - FnCall: ["vdup_n_{type[1]}", [b]]203 - 0204205 - name: "vabdl_high{neon_type[0].noq}"206 doc: Signed Absolute difference Long207 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]208 return_type: "{neon_type[1]}"209 attr: [*neon-stable]210 assert_instr: [sabdl2]211 safety: safe212 types:213 - [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]214 compose:215 - Let:216 - c217 - "{neon_type[2]}"218 - FnCall:219 - simd_shuffle!220 - - a221 - a222 - [8, 9, 10, 11, 12, 13, 14, 15]223 - Let:224 - d225 - "{neon_type[2]}"226 - FnCall:227 - simd_shuffle!228 - - b229 - b230 - [8, 9, 10, 11, 12, 13, 14, 15]231 - Let:232 - e233 - "{neon_type[3]}"234 - FnCall:235 - simd_cast236 - - FnCall:237 - "vabd_{neon_type[0]}"238 - - c239 - d240 - FnCall:241 - simd_cast242 - - e243244 - name: "vabdl_high{neon_type[0].noq}"245 doc: Signed Absolute difference Long246 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]247 return_type: "{neon_type[1]}"248 attr:249 - FnCall:250 - stable251 - - 'feature = "neon_intrinsics"'252 - 'since = "1.59.0"'253 assert_instr: [sabdl2]254 safety: safe255 types:256 - [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]257 compose:258 - Let:259 - c260 - "{neon_type[2]}"261 - FnCall:262 - simd_shuffle!263 - - a264 - a265 - [4, 5, 6, 7]266 - Let:267 - d268 - "{neon_type[2]}"269 - FnCall:270 - simd_shuffle!271 - - b272 - b273 - [4, 5, 6, 7]274 - Let:275 - e276 - "{neon_type[3]}"277 - FnCall:278 - simd_cast279 - - FnCall:280 - "vabd_{neon_type[0]}"281 - - c282 - d283 - FnCall:284 - simd_cast285 - - e286287 - name: "vabdl_high{neon_type[0].noq}"288 doc: Signed Absolute difference Long289 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]290 return_type: "{neon_type[1]}"291 attr:292 - FnCall:293 - stable294 - - 'feature = "neon_intrinsics"'295 - 'since = "1.59.0"'296 assert_instr: [sabdl2]297 safety: safe298 types:299 - [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]300 compose:301 - Let:302 - c303 - "{neon_type[2]}"304 - FnCall:305 - simd_shuffle!306 - - a307 - a308 - [2, 3]309 - Let:310 - d311 - "{neon_type[2]}"312 - FnCall:313 - simd_shuffle!314 - - b315 - b316 - [2, 3]317 - Let:318 - e319 - "{neon_type[3]}"320 - FnCall:321 - simd_cast322 - - FnCall:323 - "vabd_{neon_type[0]}"324 - - c325 - d326 - FnCall:327 - simd_cast328 - - e329330 - name: "vceq{neon_type[0].no}"331 doc: "Compare bitwise Equal (vector)"332 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]333 return_type: "{neon_type[1]}"334 attr:335 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmeq]]}]]336 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]337 safety: safe338 types:339 - [uint64x1_t, uint64x1_t]340 - [uint64x2_t, uint64x2_t]341 - [int64x1_t, uint64x1_t]342 - [int64x2_t, uint64x2_t]343 - [poly64x1_t, uint64x1_t]344 - [poly64x2_t, uint64x2_t]345 compose:346 - FnCall: [simd_eq, [a, b]]347348 - name: "vceq{neon_type[0].no}"349 doc: "Floating-point compare equal"350 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]351 return_type: "{neon_type[1]}"352 attr:353 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmeq]]}]]354 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]355 safety: safe356 types:357 - [float64x1_t, uint64x1_t]358 - [float64x2_t, uint64x2_t]359 compose:360 - FnCall: [simd_eq, [a, b]]361362 - name: "vceq{type[0]}"363 doc: "Floating-point compare equal"364 arguments: ["a: {type[1]}", "b: {type[1]}"]365 return_type: "{type[2]}"366 attr:367 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]368 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]369 safety: safe370 types:371 - ["s_f32", "f32", "u32"]372 - ["d_f64", "f64", "u64"]373 compose:374 - FnCall:375 - simd_extract!376 - - FnCall:377 - "vceq_{type[1]}"378 - - FnCall: ["vdup_n_{type[1]}", [a]]379 - FnCall: ["vdup_n_{type[1]}", [b]]380 - '0'381382383 - name: "vceq{type[0]}"384 doc: "Floating-point compare equal"385 arguments: ["a: {type[1]}", "b: {type[1]}"]386 return_type: "{type[2]}"387 attr:388 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]389 - *neon-fp16390 - *neon-unstable-f16391 - *target-not-arm64ec392 safety: safe393 types:394 - ["h_f16", "f16", "u16"]395 compose:396 - FnCall:397 - simd_extract!398 - - FnCall:399 - "vceq_{type[1]}"400 - - FnCall: ["vdup_n_{type[1]}", [a]]401 - FnCall: ["vdup_n_{type[1]}", [b]]402 - '0'403404 - name: "vceqd_{type[0]}"405 doc: "Compare bitwise equal"406 arguments: ["a: {type[0]}", "b: {type[0]}"]407 return_type: "{type[1]}"408 attr:409 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmp]]}]]410 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]411 safety: safe412 types:413 - ["i64", "u64", "s64"]414 - ["u64", "u64", "u64"]415 compose:416 - FnCall:417 - transmute418 - - FnCall:419 - "vceq_{type[2]}"420 - - FnCall: [transmute, [a]]421 - FnCall: [transmute, [b]]422423 - name: "vtst{neon_type[0].no}"424 doc: "Signed compare bitwise Test bits nonzero"425 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]426 return_type: "{neon_type[1]}"427 attr:428 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmtst]]}]]429 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]430 safety: safe431 types:432 - [int64x1_t, uint64x1_t, 'i64x1', 'i64x1::new(0)']433 - [int64x2_t, uint64x2_t, 'i64x2', 'i64x2::new(0, 0)']434 - [poly64x1_t, uint64x1_t, 'i64x1', 'i64x1::new(0)']435 - [poly64x2_t, uint64x2_t, 'i64x2', 'i64x2::new(0, 0)']436 compose:437 - Let: [c, "{neon_type[0]}", {FnCall: [simd_and, [a, b]]}]438 - Let: [d, "{type[2]}", "{type[3]}"]439 - FnCall: [simd_ne, [c, {FnCall: [transmute, [d]]}]]440441 - name: "vtstd_{type[0]}"442 doc: "Compare bitwise test bits nonzero"443 arguments: ["a: {type[0]}", "b: {type[0]}"]444 return_type: "{type[1]}"445 attr:446 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [tst]]}]]447 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]448 safety: safe449 types:450 - ["i64", "u64", "s64"]451 - ["u64", "u64", "u64"]452 compose:453 - FnCall:454 - transmute455 - - FnCall:456 - "vtst_{type[2]}"457 - - FnCall: [transmute, [a]]458 - FnCall: [transmute, [b]]459460 - name: "vuqadd{type[0]}"461 doc: "Signed saturating accumulate of unsigned value"462 arguments: ["a: {type[1]}", "b: {type[2]}"]463 return_type: "{type[1]}"464 attr:465 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [suqadd]]}]]466 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]467 safety: safe468 types:469 - ["s_s32", "i32", "u32"]470 - ["d_s64", "i64", "u64"]471 compose:472 - LLVMLink:473 name: "vuqadd{type[0]}"474 links:475 - link: "llvm.aarch64.neon.suqadd.{type[1]}"476 arch: aarch64,arm64ec477478 - name: "vuqadd{type[0]}"479 doc: "Signed saturating accumulate of unsigned value"480 arguments: ["a: {type[1]}", "b: {type[2]}"]481 return_type: "{type[1]}"482 attr:483 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [suqadd]]}]]484 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]485 safety: safe486 types:487 - ["b_s8", "i8", "u8", "s8"]488 - ["h_s16", "i16", "u16", "s16"]489 compose:490 - FnCall:491 - simd_extract!492 - - FnCall:493 - "vuqadd_{type[3]}"494 - - FnCall: ["vdup_n_{type[3]}", [a]]495 - FnCall: ["vdup_n_{type[2]}", [b]]496 - '0'497498 - name: "vabs{neon_type.no}"499 doc: "Floating-point absolute value"500 arguments: ["a: {neon_type}"]501 return_type: "{neon_type}"502 attr:503 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fabs]]}]]504 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]505 safety: safe506 types:507 - float64x1_t508 - float64x2_t509 compose:510 - FnCall: [simd_fabs, [a]]511512 - name: "vcgt{neon_type[0].no}"513 doc: "Compare signed greater than"514 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]515 return_type: "{neon_type[1]}"516 attr:517 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmgt]]}]]518 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]519 safety: safe520 types:521 - [int64x1_t, uint64x1_t]522 - [int64x2_t, uint64x2_t]523 compose:524 - FnCall: [simd_gt, [a, b]]525526 - name: "vcgt{neon_type.no}"527 doc: "Compare unsigned greater than"528 arguments: ["a: {neon_type}", "b: {neon_type}"]529 return_type: "{neon_type}"530 attr:531 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmhi]]}]]532 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]533 safety: safe534 types:535 - uint64x1_t536 - uint64x2_t537 compose:538 - FnCall: [simd_gt, [a, b]]539540 - name: "vcgt{neon_type[0].no}"541 doc: "Floating-point compare greater than"542 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]543 return_type: "{neon_type[1]}"544 attr:545 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmgt]]}]]546 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]547 safety: safe548 types:549 - [float64x1_t, uint64x1_t]550 - [float64x2_t, uint64x2_t]551 compose:552 - FnCall: [simd_gt, [a, b]]553554 - name: "vcgt{type[0]}"555 doc: "Floating-point compare greater than"556 arguments: ["a: {type[1]}", "b: {type[1]}"]557 return_type: "{type[2]}"558 attr:559 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]560 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]561 safety: safe562 types:563 - ["s_f32", "f32", "u32"]564 - ["d_f64", "f64", "u64"]565 compose:566 - FnCall:567 - 'simd_extract!'568 - - FnCall:569 - "vcgt_{type[1]}"570 - - FnCall: ["vdup_n_{type[1]}", [a]]571 - FnCall: ["vdup_n_{type[1]}", [b]]572 - '0'573574575 - name: "vcgt{type[0]}"576 doc: "Floating-point compare greater than"577 arguments: ["a: {type[1]}", "b: {type[1]}"]578 return_type: "{type[2]}"579 attr:580 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]581 - *neon-fp16582 - *neon-unstable-f16583 - *target-not-arm64ec584 safety: safe585 types:586 - ["h_f16", "f16", "u16"]587 compose:588 - FnCall:589 - 'simd_extract!'590 - - FnCall:591 - "vcgt_{type[1]}"592 - - FnCall: ["vdup_n_{type[1]}", [a]]593 - FnCall: ["vdup_n_{type[1]}", [b]]594 - '0'595596 - name: "vclt{neon_type[0].no}"597 doc: "Compare signed less than"598 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]599 return_type: "{neon_type[1]}"600 attr:601 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmgt]]}]]602 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]603 safety: safe604 types:605 - [int64x1_t, uint64x1_t]606 - [int64x2_t, uint64x2_t]607 compose:608 - FnCall: [simd_lt, [a, b]]609610 - name: "vcle{neon_type[0].no}"611 doc: "Compare signed less than or equal"612 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]613 return_type: "{neon_type[1]}"614 attr:615 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmge]]}]]616 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]617 safety: safe618 types:619 - [int64x1_t, uint64x1_t]620 - [int64x2_t, uint64x2_t]621 compose:622 - FnCall: [simd_le, [a, b]]623624 - name: "vcle{neon_type[0].no}"625 doc: "Floating-point compare less than or equal"626 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]627 return_type: "{neon_type[1]}"628 attr:629 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmge]]}]]630 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]631 safety: safe632 types:633 - [float64x1_t, uint64x1_t]634 - [float64x2_t, uint64x2_t]635 compose:636 - FnCall: [simd_le, [a, b]]637638 - name: "vcle{type[0]}"639 doc: "Floating-point compare less than or equal"640 arguments: ["a: {type[1]}", "b: {type[1]}"]641 return_type: "{type[2]}"642 attr:643 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]644 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]645 safety: safe646 types:647 - ["s_f32", "f32", "u32"]648 - ["d_f64", "f64", "u64"]649 compose:650 - FnCall:651 - simd_extract!652 - - FnCall:653 - "vcle_{type[1]}"654 - - FnCall: ["vdup_n_{type[1]}", [a]]655 - FnCall: ["vdup_n_{type[1]}", [b]]656 - '0'657658659 - name: "vcle{type[0]}"660 doc: "Floating-point compare less than or equal"661 arguments: ["a: {type[1]}", "b: {type[1]}"]662 return_type: "{type[2]}"663 attr:664 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]665 - *neon-fp16666 - *neon-unstable-f16667 - *target-not-arm64ec668 safety: safe669 types:670 - ["h_f16", "f16", "u16"]671 compose:672 - FnCall:673 - simd_extract!674 - - FnCall:675 - "vcle_{type[1]}"676 - - FnCall: ["vdup_n_{type[1]}", [a]]677 - FnCall: ["vdup_n_{type[1]}", [b]]678 - '0'679680 - name: "vcge{neon_type[0].no}"681 doc: "Compare signed greater than or equal"682 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]683 return_type: "{neon_type[1]}"684 attr:685 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmge]]}]]686 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]687 safety: safe688 types:689 - [int64x1_t, uint64x1_t]690 - [int64x2_t, uint64x2_t]691 compose:692 - FnCall: [simd_ge, [a, b]]693694 - name: "vcgez{neon_type[0].no}"695 doc: "Compare signed greater than or equal to zero"696 arguments: ["a: {neon_type[0]}"]697 return_type: "{neon_type[1]}"698 attr:699 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmge]]}]]700 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]701 safety: safe702 types:703 - [int8x8_t, uint8x8_t, i8x8, 'i8x8::new(0, 0, 0, 0, 0, 0, 0, 0)']704 - [int8x16_t, uint8x16_t, i8x16, 'i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)']705 - [int16x4_t, uint16x4_t, i16x4, 'i16x4::new(0, 0, 0, 0)']706 - [int16x8_t, uint16x8_t, i16x8, 'i16x8::new(0, 0, 0, 0, 0, 0, 0, 0)']707 - [int32x2_t, uint32x2_t, i32x2, 'i32x2::new(0, 0)']708 - [int32x4_t, uint32x4_t, i32x4, 'i32x4::new(0, 0, 0, 0)']709 - [int64x1_t, uint64x1_t, i64x1, 'i64x1::new(0)']710 - [int64x2_t, uint64x2_t, i64x2, 'i64x2::new(0, 0)']711 compose:712 - Let: [b, "{type[2]}", "{type[3]}"]713 - FnCall: [simd_ge, [a, {FnCall: [transmute, [b]]}]]714715 - name: "vcgezd_s64"716 doc: "Compare signed greater than or equal to zero"717 arguments: ["a: {type[0]}"]718 return_type: "{type[1]}"719 attr:720 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [nop]]}]]721 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]722 safety: safe723 types:724 - ["i64", "u64"]725 compose:726 - FnCall:727 - transmute728 - - FnCall:729 - vcgez_s64730 - - FnCall: [transmute, [a]]731732 - name: "vclez{neon_type[0].no}"733 doc: "Compare signed less than or equal to zero"734 arguments: ["a: {neon_type[0]}"]735 return_type: "{neon_type[1]}"736 attr:737 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmle]]}]]738 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]739 safety: safe740 types:741 - [int8x8_t, uint8x8_t, i8x8, 'i8x8::new(0, 0, 0, 0, 0, 0, 0, 0)']742 - [int8x16_t, uint8x16_t, i8x16, 'i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)']743 - [int16x4_t, uint16x4_t, i16x4, 'i16x4::new(0, 0, 0, 0)']744 - [int16x8_t, uint16x8_t, i16x8, 'i16x8::new(0, 0, 0, 0, 0, 0, 0, 0)']745 - [int32x2_t, uint32x2_t, i32x2, 'i32x2::new(0, 0)']746 - [int32x4_t, uint32x4_t, i32x4, 'i32x4::new(0, 0, 0, 0)']747 - [int64x1_t, uint64x1_t, i64x1, 'i64x1::new(0)']748 - [int64x2_t, uint64x2_t, i64x2, 'i64x2::new(0, 0)']749 compose:750 - Let: [b, "{type[2]}", "{type[3]}"]751 - FnCall:752 - simd_le753 - - a754 - FnCall: [transmute, [b]]755756 - name: "vclez{neon_type[0].no}"757 doc: "Floating-point compare less than or equal to zero"758 arguments: ["a: {neon_type[0]}"]759 return_type: "{neon_type[1]}"760 attr:761 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmle]]}]]762 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]763 safety: safe764 types:765 - [float32x2_t, uint32x2_t, f32x2, 'f32x2::new(0.0, 0.0)']766 - [float32x4_t, uint32x4_t, f32x4, 'f32x4::new(0.0, 0.0, 0.0, 0.0)']767 - [float64x1_t, uint64x1_t, f64, '0.0']768 - [float64x2_t, uint64x2_t, f64x2, 'f64x2::new(0.0, 0.0)']769 compose:770 - Let: [b, "{type[2]}", "{type[3]}"]771 - FnCall:772 - simd_le773 - - a774 - FnCall: [transmute, [b]]775776 - name: "vclez{type[0]}"777 doc: "Floating-point compare less than or equal to zero"778 arguments: ["a: {type[1]}"]779 return_type: "{type[2]}"780 attr:781 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]782 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]783 safety: safe784 types:785 - ["s_f32", "f32", "u32"]786 - ["d_f64", "f64", "u64"]787 compose:788 - FnCall:789 - simd_extract!790 - - FnCall:791 - "vclez_{type[1]}"792 - - FnCall: ["vdup_n_{type[1]}", [a]]793 - '0'794795 - name: "vclez{type[0]}"796 doc: "Floating-point compare less than or equal to zero"797 arguments: ["a: {type[1]}"]798 return_type: "{type[2]}"799 attr:800 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]801 - *neon-fp16802 - *neon-unstable-f16803 - *target-not-arm64ec804 safety: safe805 types:806 - ["h_f16", "f16", "u16"]807 compose:808 - FnCall:809 - simd_extract!810 - - FnCall:811 - "vclez_{type[1]}"812 - - FnCall: ["vdup_n_{type[1]}", [a]]813 - '0'814815 - name: "vcltz{neon_type[0].no}"816 doc: "Compare signed less than zero"817 arguments: ["a: {neon_type[0]}"]818 return_type: "{neon_type[1]}"819 attr:820 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [cmlt]]}]]821 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]822 safety: safe823 types:824 - [int8x8_t, uint8x8_t, i8x8, 'i8x8::new(0, 0, 0, 0, 0, 0, 0, 0)']825 - [int8x16_t, uint8x16_t, i8x16, 'i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)']826 - [int16x4_t, uint16x4_t, i16x4, 'i16x4::new(0, 0, 0, 0)']827 - [int16x8_t, uint16x8_t, i16x8, 'i16x8::new(0, 0, 0, 0, 0, 0, 0, 0)']828 - [int32x2_t, uint32x2_t, i32x2, 'i32x2::new(0, 0)']829 - [int32x4_t, uint32x4_t, i32x4, 'i32x4::new(0, 0, 0, 0)']830 - [int64x1_t, uint64x1_t, i64x1, 'i64x1::new(0)']831 - [int64x2_t, uint64x2_t, i64x2, 'i64x2::new(0, 0)']832 compose:833 - Let: [b, "{type[2]}", "{type[3]}"]834 - FnCall:835 - simd_lt836 - - a837 - FnCall: [transmute, [b]]838839 - name: "vcltz{neon_type[0].no}"840 doc: "Floating-point compare less than zero"841 arguments: ["a: {neon_type[0]}"]842 return_type: "{neon_type[1]}"843 attr:844 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmlt]]}]]845 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]846 safety: safe847 types:848 - [float32x2_t, uint32x2_t, f32x2, 'f32x2::new(0.0, 0.0)']849 - [float32x4_t, uint32x4_t, f32x4, 'f32x4::new(0.0, 0.0, 0.0, 0.0)']850 - [float64x1_t, uint64x1_t, f64, '0.0']851 - [float64x2_t, uint64x2_t, f64x2, 'f64x2::new(0.0, 0.0)']852 compose:853 - Let: [b, "{type[2]}", "{type[3]}"]854 - FnCall:855 - simd_lt856 - - a857 - FnCall: [transmute, [b]]858859 - name: "vcltz{type[0]}"860 doc: "Floating-point compare less than zero"861 arguments: ["a: {type[1]}"]862 return_type: "{type[2]}"863 attr:864 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]865 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]866 safety: safe867 types:868 - ["s_f32", "f32", "u32"]869 - ["d_f64", "f64", "u64"]870 compose:871 - FnCall:872 - simd_extract!873 - - FnCall:874 - "vcltz_{type[1]}"875 - - FnCall: ["vdup_n_{type[1]}", [a]]876 - '0'877878 - name: "vcltz{type[0]}"879 doc: "Floating-point compare less than zero"880 arguments: ["a: {type[1]}"]881 return_type: "{type[2]}"882 attr:883 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcmp]]}]]884 - *neon-fp16885 - *neon-unstable-f16886 - *target-not-arm64ec887 safety: safe888 types:889 - ["h_f16", "f16", "u16"]890 compose:891 - FnCall:892 - simd_extract!893 - - FnCall:894 - "vcltz_{type[1]}"895 - - FnCall: ["vdup_n_{type[1]}", [a]]896 - '0'897898 - name: "vcltzd_s64"899 doc: "Compare less than zero"900 arguments: ["a: {type[0]}"]901 return_type: "{type[1]}"902 attr:903 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [asr]]}]]904 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]905 safety: safe906 types:907 - ["i64", "u64"]908 compose:909 - FnCall:910 - transmute911 - - FnCall:912 - vcltz_s64913 - - FnCall: [transmute, [a]]914915 - name: "vcagt{neon_type[0].no}"916 doc: "Floating-point absolute compare greater than"917 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]918 return_type: "{neon_type[1]}"919 attr:920 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]921 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]922 safety: safe923 types:924 - [float64x1_t, uint64x1_t]925 - [float64x2_t, uint64x2_t]926 compose:927 - LLVMLink:928 name: "vcagt{neon_type[0].no}"929 links:930 - link: "llvm.aarch64.neon.facgt.{neon_type[1]}.{neon_type[0]}"931 arch: aarch64,arm64ec932933 - name: "vcagt{type[0]}"934 doc: "Floating-point absolute compare greater than"935 arguments: ["a: {type[1]}", "b: {type[1]}"]936 return_type: "{type[2]}"937 attr:938 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]939 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]940 safety: safe941 types:942 - ["s_f32", "f32", "u32", i32]943 - ["d_f64", "f64", "u64", i64]944 compose:945 - LLVMLink:946 name: "vcagt{type[0]}"947 links:948 - link: "llvm.aarch64.neon.facgt.{type[3]}.{type[1]}"949 arch: aarch64,arm64ec950951 - name: "vcagt{type[0]}"952 doc: "Floating-point absolute compare greater than"953 arguments: ["a: {type[1]}", "b: {type[1]}"]954 return_type: "{type[2]}"955 attr:956 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]957 - *neon-fp16958 - *neon-unstable-f16959 - *target-not-arm64ec960 safety: safe961 types:962 - ["h_f16", "f16", "u16", i32]963 compose:964 - LLVMLink:965 name: "vcagt{type[0]}"966 return_type: "{type[3]}"967 links:968 - link: "llvm.aarch64.neon.facgt.{type[3]}.{type[1]}"969 arch: aarch64,arm64ec970 - 'unsafe {{ _vcagth_f16(a, b) as u16 }}'971972 - name: "vcage{neon_type[0].no}"973 doc: "Floating-point absolute compare greater than or equal"974 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]975 return_type: "{neon_type[1]}"976 attr:977 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]978 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]979 safety: safe980 types:981 - [float64x1_t, uint64x1_t]982 - [float64x2_t, uint64x2_t]983 compose:984 - LLVMLink:985 name: "vcage{neon_type[0].no}"986 links:987 - link: "llvm.aarch64.neon.facge.{neon_type[1]}.{neon_type[0]}"988 arch: aarch64,arm64ec989990 - name: "vcage{type[0]}"991 doc: "Floating-point absolute compare greater than or equal"992 arguments: ["a: {type[1]}", "b: {type[1]}"]993 return_type: "{type[2]}"994 attr:995 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]996 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]997 safety: safe998 types:999 - ["s_f32", "f32", "u32", i32]1000 - ["d_f64", "f64", "u64", i64]1001 compose:1002 - LLVMLink:1003 name: "vcage{type[0]}"1004 links:1005 - link: "llvm.aarch64.neon.facge.{type[3]}.{type[1]}"1006 arch: aarch64,arm64ec100710081009 - name: "vcage{type[0]}"1010 doc: "Floating-point absolute compare greater than or equal"1011 arguments: ["a: {type[1]}", "b: {type[1]}"]1012 return_type: "{type[2]}"1013 attr:1014 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]1015 - *neon-fp161016 - *neon-unstable-f161017 - *target-not-arm64ec1018 safety: safe1019 types:1020 - ["h_f16", "f16", "u16", i32]1021 compose:1022 - LLVMLink:1023 name: "vcage{type[0]}"1024 return_type: "{type[3]}"1025 links:1026 - link: "llvm.aarch64.neon.facge.{type[3]}.{type[1]}"1027 arch: aarch64,arm64ec1028 - "unsafe {{ _vcageh_f16(a, b) as u16 }}"10291030 - name: "vcalt{neon_type[0].no}"1031 doc: "Floating-point absolute compare less than"1032 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1033 return_type: "{neon_type[1]}"1034 attr:1035 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]1036 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1037 safety: safe1038 types:1039 - [float64x1_t, uint64x1_t]1040 - [float64x2_t, uint64x2_t]1041 compose:1042 - FnCall: ["vcagt{neon_type[0].no}", [b, a]]10431044 - name: "vcalt{type[0]}"1045 doc: "Floating-point absolute compare less than"1046 arguments: ["a: {type[1]}", "b: {type[1]}"]1047 return_type: "{type[2]}"1048 attr:1049 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]1050 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1051 safety: safe1052 types:1053 - ["s_f32", "f32", "u32"]1054 - ["d_f64", "f64", "u64"]1055 compose:1056 - FnCall: ["vcagt{type[0]}", [b, a]]10571058 - name: "vcalt{type[0]}"1059 doc: "Floating-point absolute compare less than"1060 arguments: ["a: {type[1]}", "b: {type[1]}"]1061 return_type: "{type[2]}"1062 attr:1063 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facgt]]}]]1064 - *neon-fp161065 - *neon-unstable-f161066 - *target-not-arm64ec1067 safety: safe1068 types:1069 - ["h_f16", "f16", "u16"]1070 compose:1071 - FnCall: ["vcagt{type[0]}", [b, a]]10721073 - name: "vcale{neon_type[0].no}"1074 doc: "Floating-point absolute compare less than or equal"1075 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1076 return_type: "{neon_type[1]}"1077 attr:1078 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]1079 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1080 safety: safe1081 types:1082 - [float64x1_t, uint64x1_t]1083 - [float64x2_t, uint64x2_t]1084 compose:1085 - FnCall: ["vcage{neon_type[0].no}", [b, a]]10861087 - name: "vcale{type[0]}"1088 doc: "Floating-point absolute compare less than or equal"1089 arguments: ["a: {type[1]}", "b: {type[1]}"]1090 return_type: "{type[2]}"1091 attr:1092 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]1093 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1094 safety: safe1095 types:1096 - ["s_f32", "f32", "u32"]1097 - ["d_f64", "f64", "u64"]1098 compose:1099 - FnCall: ["vcage{type[0]}", [b, a]]11001101 - name: "vcale{type[0]}"1102 doc: "Floating-point absolute compare less than or equal"1103 arguments: ["a: {type[1]}", "b: {type[1]}"]1104 return_type: "{type[2]}"1105 attr:1106 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [facge]]}]]1107 - *neon-fp161108 - *neon-unstable-f161109 - *target-not-arm64ec1110 safety: safe1111 types:1112 - ["h_f16", "f16", "u16"]1113 compose:1114 - FnCall: ["vcage{type[0]}", [b, a]]11151116 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1117 doc: "Fixed-point convert to floating-point"1118 arguments: ["a: {neon_type[0]}"]1119 return_type: "{neon_type[1]}"1120 attr:1121 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf]]}]]1122 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1123 safety: safe1124 types:1125 - [int64x1_t, float64x1_t]1126 - [int64x2_t, float64x2_t]1127 compose:1128 - FnCall: [simd_cast, [a]]11291130 - name: "vcvt{type[0]}_{type[3]}"1131 doc: "Fixed-point convert to floating-point"1132 arguments: ["a: {type[1]}"]1133 return_type: "{type[2]}"1134 attr:1135 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf]]}]]1136 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1137 safety: safe1138 types:1139 - ["s_f32", "i32", "f32", s32]1140 - ["d_f64", "i64", "f64", s64]1141 compose:1142 - Identifier: ["a as {type[2]}", Symbol]11431144 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1145 doc: "Fixed-point convert to floating-point"1146 arguments: ["a: {neon_type[0]}"]1147 return_type: "{neon_type[1]}"1148 attr:1149 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf]]}]]1150 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1151 safety: safe1152 types:1153 - [uint64x1_t, float64x1_t]1154 - [uint64x2_t, float64x2_t]1155 compose:1156 - FnCall: [simd_cast, [a]]11571158 - name: "vcvt{type[2]}_{type[0]}"1159 doc: "Fixed-point convert to floating-point"1160 arguments: ["a: {type[0]}"]1161 return_type: "{type[1]}"1162 attr:1163 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf]]}]]1164 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1165 safety: safe1166 types:1167 - ["u32", "f32", "s_f32"]1168 - ["u64", "f64", "d_f64"]1169 compose:1170 - Identifier: ["a as {type[1]}", Symbol]11711172 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1173 doc: "Fixed-point convert to floating-point"1174 arguments: ["a: {neon_type[0]}"]1175 return_type: "{neon_type[1]}"1176 attr:1177 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf, 'N = 2']]}]]1178 - FnCall: [rustc_legacy_const_generics, ['1']]1179 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1180 static_defs: ['const N: i32']1181 safety: safe1182 types:1183 - [int64x1_t, float64x1_t]1184 - [int64x2_t, float64x2_t]1185 compose:1186 - FnCall: [static_assert!, ['N >= 1 && N <= 64']]1187 - LLVMLink:1188 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1189 arguments:1190 - "a: {neon_type[0]}"1191 - "n: i32"1192 links:1193 - link: "llvm.aarch64.neon.vcvtfxs2fp.{neon_type[1]}.{neon_type[0]}"1194 arch: aarch64,arm64ec1195 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", [a, N], [], true]119611971198 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1199 doc: "Fixed-point convert to floating-point"1200 arguments: ["a: {type[0]}"]1201 return_type: "{type[1]}"1202 attr:1203 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf, 'N = 2']]}]]1204 - FnCall: [rustc_legacy_const_generics, ['1']]1205 - *neon-fp161206 - *neon-unstable-f161207 - *target-not-arm64ec1208 static_defs: ['const N: i32']1209 safety: safe1210 types:1211 - [i32, f16, 'h']1212 - [i64, f16, 'h']1213 compose:1214 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1215 - LLVMLink:1216 name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1217 arguments:1218 - "a: {type[0]}"1219 - "n: i32"1220 links:1221 - link: "llvm.aarch64.neon.vcvtfxs2fp.{type[1]}.{type[0]}"1222 arch: aarch64,arm64ec1223 - FnCall: ["_vcvt{type[2]}_n_{type[1]}_{type[0]}", [a, N], [], true]122412251226 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1227 doc: "Floating-point convert to fixed-point, rounding toward zero"1228 arguments: ["a: {type[0]}"]1229 return_type: "{type[4]}"1230 attr:1231 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs, 'N = 2']]}]]1232 - FnCall: [rustc_legacy_const_generics, ['1']]1233 - *neon-fp161234 - *neon-unstable-f161235 - *target-not-arm64ec1236 static_defs: ['const N: i32']1237 safety: safe1238 types:1239 - [f16, s16, 'h', i32, i16]1240 compose:1241 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1242 - "vcvt{type[2]}_n_{type[3]}_{type[0]}::<N>(a) as i16"12431244 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1245 doc: "Fixed-point convert to floating-point"1246 arguments: ["a: {type[0]}"]1247 return_type: "{type[1]}"1248 attr:1249 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf, 'N = 2']]}]]1250 - FnCall: [rustc_legacy_const_generics, ['1']]1251 - *neon-fp161252 - *neon-unstable-f161253 - *target-not-arm64ec1254 static_defs: ['const N: i32']1255 safety: safe1256 types:1257 - [u32, f16, 'h']1258 - [u64, f16, 'h']1259 compose:1260 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1261 - LLVMLink:1262 name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1263 arguments:1264 - "a: {type[0]}"1265 - "n: i32"1266 links:1267 - link: "llvm.aarch64.neon.vcvtfxu2fp.{type[1]}.{type[0]}"1268 arch: aarch64,arm64ec1269 - FnCall: ["_vcvt{type[2]}_n_{type[1]}_{type[0]}", [a, N], [], true]127012711272 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1273 doc: "Fixed-point convert to floating-point"1274 arguments: ["a: {type[0]}"]1275 return_type: "{type[1]}"1276 attr:1277 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf, 'N = 2']]}]]1278 - FnCall: [rustc_legacy_const_generics, ['1']]1279 - *neon-fp161280 - *neon-unstable-f161281 - *target-not-arm64ec1282 static_defs: ['const N: i32']1283 safety: safe1284 types:1285 - [i16, f16, 'h', 'i32', 'as i32']1286 compose:1287 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1288 - "vcvt{type[2]}_n_{type[1]}_{type[3]}::<N>(a {type[4]})"128912901291 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1292 doc: "Fixed-point convert to floating-point"1293 arguments: ["a: {type[0]}"]1294 return_type: "{type[1]}"1295 attr:1296 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf, 'N = 2']]}]]1297 - FnCall: [rustc_legacy_const_generics, ['1']]1298 - *neon-fp161299 - *neon-unstable-f161300 - *target-not-arm64ec1301 static_defs: ['const N: i32']1302 safety: safe1303 types:1304 - [u16, f16, 'h', u32]1305 compose:1306 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1307 - "vcvt{type[2]}_n_{type[1]}_{type[3]}::<N>(a as {type[3]})"130813091310 - name: "vcvt{type[2]}"1311 doc: "Fixed-point convert to floating-point"1312 arguments: ["a: {type[0]}"]1313 return_type: "{type[1]}"1314 attr:1315 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf, 'N = 2']]}]]1316 - FnCall: [rustc_legacy_const_generics, ['1']]1317 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1318 static_defs: ['const N: i32']1319 safety: safe1320 types:1321 - ["i32", "f32", 's_n_f32_s32', 'N >= 1 && N <= 32']1322 - ["i64", "f64", 'd_n_f64_s64', 'N >= 1 && N <= 64']1323 compose:1324 - FnCall: [static_assert!, ['N >= 1 && N <= 64']]1325 - LLVMLink:1326 name: "vcvt{type[2]}"1327 arguments:1328 - "a: {type[0]}"1329 - "n: i32"1330 links:1331 - link: "llvm.aarch64.neon.vcvtfxs2fp.{type[1]}.{type[0]}"1332 arch: aarch64,arm64ec1333 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]133413351336 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1337 doc: "Fixed-point convert to floating-point"1338 arguments: ["a: {neon_type[0]}"]1339 return_type: "{neon_type[1]}"1340 attr:1341 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf, 'N = 2']]}]]1342 - FnCall: [rustc_legacy_const_generics, ['1']]1343 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1344 static_defs: ['const N: i32']1345 safety: safe1346 types:1347 - [uint64x1_t, float64x1_t]1348 - [uint64x2_t, float64x2_t]1349 compose:1350 - FnCall: [static_assert!, ['N >= 1 && N <= 64']]1351 - LLVMLink:1352 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1353 arguments:1354 - "a: {neon_type[0]}"1355 - "n: i32"1356 links:1357 - link: "llvm.aarch64.neon.vcvtfxu2fp.{neon_type[1]}.{neon_type[0]}"1358 arch: aarch64,arm64ec1359 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", ["a", N], [], true]13601361 - name: "vcvt{type[2]}"1362 doc: "Fixed-point convert to floating-point"1363 arguments: ["a: {type[0]}"]1364 return_type: "{type[1]}"1365 attr:1366 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf, 'N = 2']]}]]1367 - FnCall: [rustc_legacy_const_generics, ['1']]1368 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1369 static_defs: ['const N: i32']1370 safety: safe1371 types:1372 - ["u32", "f32", 's_n_f32_u32', 'N >= 1 && N <= 32']1373 - ["u64", "f64", 'd_n_f64_u64', 'N >= 1 && N <= 64']1374 compose:1375 - FnCall: [static_assert!, ["{type[3]}"]]1376 - LLVMLink:1377 name: "vcvt{type[2]}"1378 arguments:1379 - "a: {type[0]}"1380 - "n: i32"1381 links:1382 - link: "llvm.aarch64.neon.vcvtfxu2fp.{type[1]}.{type[0]}"1383 arch: aarch64,arm64ec1384 - FnCall: ["_vcvt{type[2]}", ["a", N], [], true]13851386 - name: "vcvt{type[2]}"1387 doc: "Fixed-point convert to floating-point"1388 arguments: ["a: {type[0]}"]1389 return_type: "{type[1]}"1390 attr:1391 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs]]}]]1392 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1393 safety: safe1394 types:1395 - ["f32", "i32", "s_s32_f32", "32"]1396 - ["f64", "i64", "d_s64_f64", "64"]1397 compose:1398 - Identifier: ["a as i{type[3]}", Symbol]13991400 - name: "vcvt{type[2]}"1401 doc: "Fixed-point convert to floating-point"1402 arguments: ["a: {type[0]}"]1403 return_type: "{type[1]}"1404 attr:1405 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu]]}]]1406 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1407 safety: safe1408 types:1409 - ["f32", "u32", "s_u32_f32"]1410 - ["f64", "u64", "d_u64_f64"]1411 compose:1412 - Identifier: ["a as {type[1]}", Symbol]141314141415 - name: "vcvt{type[2]}"1416 doc: "Fixed-point convert to floating-point"1417 arguments: ["a: {type[3]}"]1418 return_type: "{type[1]}"1419 attr:1420 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf]]}]]1421 - *neon-fp161422 - *neon-unstable-f161423 - *target-not-arm64ec1424 safety: safe1425 types:1426 - ["s16", "f16", "h_f16_s16", i16]1427 - ["s32", "f16", "h_f16_s32", i32]1428 - ["s64", "f16", "h_f16_s64", i64]1429 compose:1430 - Identifier: ["a as {type[1]}", Symbol]14311432 - name: "vcvt{type[2]}_{type[1]}_{type[0]}"1433 doc: "Floating-point convert to signed fixed-point"1434 arguments: ["a: {type[0]}"]1435 return_type: "{type[3]}"1436 attr:1437 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs]]}]]1438 - *neon-fp161439 - *neon-unstable-f161440 - *target-not-arm64ec1441 safety: safe1442 types:1443 - ["f16", "s16", "h", i16, 'a as i16']1444 - ["f16", "s32", "h", i32, 'a as i32']1445 - ["f16", "s64", "h", i64, 'a as i64']1446 compose:1447 - Identifier: ["{type[4]}", Symbol]14481449 - name: "vcvt{type[2]}_{type[1]}_{type[0]}"1450 doc: "Floating-point convert to unsigned fixed-point"1451 arguments: ["a: {type[0]}"]1452 return_type: "{type[1]}"1453 attr:1454 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu]]}]]1455 - *neon-fp161456 - *neon-unstable-f161457 - *target-not-arm64ec1458 safety: safe1459 types:1460 - ["f16", "u16", "h", 'a as u16']1461 - ["f16", "u32", "h", 'a as u32']1462 - ["f16", "u64", "h", 'a as u64']1463 compose:1464 - Identifier: ["{type[3]}", Symbol]146514661467 - name: "vcvt{type[2]}"1468 doc: "Unsigned fixed-point convert to floating-point"1469 arguments: ["a: {type[0]}"]1470 return_type: "{type[1]}"1471 attr:1472 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf]]}]]1473 - *neon-fp161474 - *neon-unstable-f161475 - *target-not-arm64ec1476 safety: safe1477 types:1478 - ["u16", "f16", "h_f16_u16"]1479 - ["u32", "f16", "h_f16_u32"]1480 - ["u64", "f16", "h_f16_u64"]1481 compose:1482 - Identifier: ["a as {type[1]}", Symbol]148314841485 - name: "vcvt_f64_f32"1486 doc: "Floating-point convert to higher precision long"1487 arguments: ["a: {neon_type[0]}"]1488 return_type: "{neon_type[1]}"1489 attr:1490 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl]]}]]1491 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1492 safety: safe1493 types:1494 - [float32x2_t, float64x2_t]1495 compose:1496 - FnCall: [simd_cast, [a]]14971498 - name: "vcvt_high_f64_f32"1499 doc: "Floating-point convert to higher precision long"1500 arguments: ["a: {neon_type[0]}"]1501 return_type: "{neon_type[1]}"1502 attr:1503 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl2]]}]]1504 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1505 safety: safe1506 types:1507 - [float32x4_t, float64x2_t]1508 compose:1509 - Let:1510 - b1511 - float32x2_t1512 - FnCall:1513 - simd_shuffle!1514 - - a1515 - a1516 - '[2, 3]'1517 - FnCall: [simd_cast, [b]]15181519 - name: "vcvt_high_f16_f32"1520 doc: "Floating-point convert to lower precision"1521 arguments: ["a: {neon_type[1]}", "b: {neon_type[2]}"]1522 return_type: "{neon_type[0]}"1523 attr:1524 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn2]]}]]1525 - *neon-stable-fp161526 - *target-not-arm64ec1527 safety: safe1528 types:1529 - [float16x8_t, float16x4_t, float32x4_t]1530 compose:1531 - FnCall:1532 - vcombine_f161533 - - a1534 - FnCall: [vcvt_f16_f32, [b]]15351536 - name: "vcvt_high_f32_f16"1537 doc: "Floating-point convert to higher precision"1538 arguments: ["a: {neon_type[1]}"]1539 return_type: "{neon_type[0]}"1540 attr:1541 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl2]]}]]1542 - *neon-stable-fp161543 - *target-not-arm64ec1544 safety: safe1545 types:1546 - [float32x4_t, float16x8_t]1547 compose:1548 - FnCall:1549 - vcvt_f32_f161550 - - FnCall: [vget_high_f16, [a]]155115521553 - name: "vcvt_f32_f64"1554 doc: "Floating-point convert"1555 arguments: ["a: {neon_type[0]}"]1556 return_type: "{neon_type[1]}"1557 attr:1558 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn]]}]]1559 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1560 safety: safe1561 types:1562 - [float64x2_t, float32x2_t]1563 compose:1564 - FnCall: [simd_cast, [a]]15651566 - name: "vcvt_high_f32_f64"1567 doc: "Floating-point convert to lower precision narrow"1568 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]1569 return_type: "{neon_type[2]}"1570 attr:1571 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn2]]}]]1572 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1573 safety: safe1574 types:1575 - [float32x2_t, float64x2_t, float32x4_t]1576 compose:1577 - FnCall:1578 - simd_shuffle!1579 - - a1580 - FnCall: [simd_cast, [b]]1581 - '[0, 1, 2, 3]'15821583 - name: "vcvtx_f32_f64"1584 doc: "Floating-point convert to lower precision narrow, rounding to odd"1585 arguments: ["a: {neon_type[0]}"]1586 return_type: "{neon_type[1]}"1587 attr:1588 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn]]}]]1589 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1590 safety: safe1591 types:1592 - [float64x2_t, float32x2_t]1593 compose:1594 - LLVMLink:1595 name: "vcvtx_f32_f64"1596 links:1597 - link: "llvm.aarch64.neon.fcvtxn.v2f32.v2f64"1598 arch: aarch64,arm64ec15991600 - name: "vcvtxd_f32_f64"1601 doc: "Floating-point convert to lower precision narrow, rounding to odd"1602 arguments: ["a: {type[0]}"]1603 return_type: "{type[1]}"1604 attr:1605 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn]]}]]1606 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1607 safety: safe1608 types:1609 - ["f64", "f32"]1610 compose:1611 - FnCall:1612 - simd_extract!1613 - - FnCall:1614 - vcvtx_f32_f641615 - - FnCall: [vdupq_n_f64, [a]]1616 - '0'16171618 - name: "vcvtx_high_f32_f64"1619 doc: "Floating-point convert to lower precision narrow, rounding to odd"1620 arguments: ["a: {type[0]}", "b: {neon_type[1]}"]1621 return_type: "{type[2]}"1622 attr:1623 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn2]]}]]1624 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1625 safety: safe1626 types:1627 - [float32x2_t, float64x2_t, float32x4_t]1628 compose:1629 - FnCall:1630 - simd_shuffle!1631 - - a1632 - FnCall: [vcvtx_f32_f64, [b]]1633 - '[0, 1, 2, 3]'16341635 - name: "vcvt{type[2]}"1636 doc: "Floating-point convert to fixed-point, rounding toward zero"1637 arguments: ["a: {type[0]}"]1638 return_type: "{type[1]}"1639 attr:1640 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs, 'N = 2']]}]]1641 - FnCall: [rustc_legacy_const_generics, ['1']]1642 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1643 static_defs: ['const N: i32']1644 safety: safe1645 types:1646 - [float64x1_t, int64x1_t, _n_s64_f64, '64']1647 - [float64x2_t, int64x2_t, q_n_s64_f64, '64']1648 compose:1649 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1650 - LLVMLink:1651 name: "vcvt{type[2]}"1652 arguments: ["a: {type[0]}", "n: i32"]1653 links:1654 - link: "llvm.aarch64.neon.vcvtfp2fxs.{type[1]}.{type[0]}"1655 arch: aarch64,arm64ec1656 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]16571658 - name: "vcvt{type[2]}"1659 doc: "Floating-point convert to fixed-point, rounding toward zero"1660 arguments: ["a: {type[0]}"]1661 return_type: "{type[1]}"1662 attr:1663 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs, 'N = 2']]}]]1664 - FnCall: [rustc_legacy_const_generics, ['1']]1665 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1666 static_defs: ['const N: i32']1667 safety: safe1668 types:1669 - ["f32", "i32", s_n_s32_f32, '32']1670 - ["f64", "i64", d_n_s64_f64, '64']1671 compose:1672 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1673 - LLVMLink:1674 name: "vcvt{type[2]}"1675 arguments: ["a: {type[0]}", "n: i32"]1676 links:1677 - link: "llvm.aarch64.neon.vcvtfp2fxs.{type[1]}.{type[0]}"1678 arch: aarch64,arm64ec1679 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]168016811682 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1683 doc: "Floating-point convert to fixed-point, rounding toward zero"1684 arguments: ["a: {type[0]}"]1685 return_type: "{type[1]}"1686 attr:1687 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs, 'N = 2']]}]]1688 - FnCall: [rustc_legacy_const_generics, ['1']]1689 - *neon-fp161690 - *neon-unstable-f161691 - *target-not-arm64ec1692 static_defs: ['const N: i32']1693 safety: safe1694 types:1695 - ["f16", "i32", 'h', '16']1696 - ["f16", "i64", 'h', '16']1697 compose:1698 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1699 - LLVMLink:1700 name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1701 arguments: ["a: {type[0]}", "n: i32"]1702 links:1703 - link: "llvm.aarch64.neon.vcvtfp2fxs.{type[1]}.{type[0]}"1704 arch: aarch64,arm64ec1705 - FnCall: ["_vcvt{type[2]}_n_{type[1]}_{type[0]}", [a, N], [], true]170617071708 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1709 doc: "Floating-point convert to fixed-point, rounding toward zero"1710 arguments: ["a: {type[0]}"]1711 return_type: "{type[1]}"1712 attr:1713 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu, 'N = 2']]}]]1714 - FnCall: [rustc_legacy_const_generics, ['1']]1715 - *neon-fp161716 - *neon-unstable-f161717 - *target-not-arm64ec1718 static_defs: ['const N: i32']1719 safety: safe1720 types:1721 - [f16, u16, 'h', u32]1722 compose:1723 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1724 - "vcvt{type[2]}_n_{type[3]}_{type[0]}::<N>(a) as {type[1]}"172517261727 - name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1728 doc: "Floating-point convert to fixed-point, rounding toward zero"1729 arguments: ["a: {type[0]}"]1730 return_type: "{type[1]}"1731 attr:1732 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu, 'N = 2']]}]]1733 - FnCall: [rustc_legacy_const_generics, ['1']]1734 - *neon-fp161735 - *neon-unstable-f161736 - *target-not-arm64ec1737 static_defs: ['const N: i32']1738 safety: safe1739 types:1740 - ["f16", "u32", 'h', '16']1741 - ["f16", "u64", 'h', '16']1742 compose:1743 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1744 - LLVMLink:1745 name: "vcvt{type[2]}_n_{type[1]}_{type[0]}"1746 arguments: ["a: {type[0]}", "n: i32"]1747 links:1748 - link: "llvm.aarch64.neon.vcvtfp2fxu.{type[1]}.{type[0]}"1749 arch: aarch64,arm64ec1750 - FnCall: ["_vcvt{type[2]}_n_{type[1]}_{type[0]}", [a, N], [], true]17511752 - name: "vcvt{type[2]}"1753 doc: "Floating-point convert to fixed-point, rounding toward zero"1754 arguments: ["a: {neon_type[0]}"]1755 return_type: "{neon_type[1]}"1756 attr:1757 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu, 'N = 2']]}]]1758 - FnCall: [rustc_legacy_const_generics, ['1']]1759 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1760 static_defs: ['const N: i32']1761 safety: safe1762 types:1763 - [float64x1_t, uint64x1_t, _n_u64_f64, '64']1764 - [float64x2_t, uint64x2_t, q_n_u64_f64, '64']1765 compose:1766 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1767 - LLVMLink:1768 name: "vcvt{type[2]}"1769 arguments: ["a: {type[0]}", "n: i32"]1770 links:1771 - link: "llvm.aarch64.neon.vcvtfp2fxu.{type[1]}.{type[0]}"1772 arch: aarch64,arm64ec1773 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]17741775 - name: "vcvt{type[2]}"1776 doc: "Floating-point convert to fixed-point, rounding toward zero"1777 arguments: ["a: {type[0]}"]1778 return_type: "{type[1]}"1779 attr:1780 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu, 'N = 2']]}]]1781 - FnCall: [rustc_legacy_const_generics, ['1']]1782 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1783 static_defs: ['const N: i32']1784 safety: safe1785 types:1786 - ["f32", "u32", s_n_u32_f32, '32']1787 - ["f64", "u64", d_n_u64_f64, '64']1788 compose:1789 - FnCall: [static_assert!, ['N >= 1 && N <= {type[3]}']]1790 - LLVMLink:1791 name: "vcvt{type[2]}"1792 arguments: ["a: {type[0]}", "n: i32"]1793 links:1794 - link: "llvm.aarch64.neon.vcvtfp2fxu.{type[1]}.{type[0]}"1795 arch: aarch64,arm64ec1796 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]17971798 - name: "vcvta{type[2]}"1799 doc: "Floating-point convert to signed integer, rounding to nearest with ties to away"1800 arguments: ["a: {neon_type[0]}"]1801 return_type: "{neon_type[1]}"1802 attr:1803 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtas]]}]]1804 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1805 safety: safe1806 types:1807 - [float32x2_t, int32x2_t, _s32_f32]1808 - [float32x4_t, int32x4_t, q_s32_f32]1809 - [float64x1_t, int64x1_t, _s64_f64]1810 - [float64x2_t, int64x2_t, q_s64_f64]1811 compose:1812 - LLVMLink:1813 name: "vcvta{type[2]}"1814 links:1815 - link: "llvm.aarch64.neon.fcvtas.{neon_type[1]}.{neon_type[0]}"1816 arch: aarch64,arm64ec181718181819 - name: "vcvta{neon_type[1].no}_{neon_type[0]}"1820 doc: "Floating-point convert to signed integer, rounding to nearest with ties to away"1821 arguments: ["a: {neon_type[0]}"]1822 return_type: "{neon_type[1]}"1823 attr:1824 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtas]]}]]1825 - *neon-fp161826 - *neon-stable-fp161827 - *target-not-arm64ec1828 safety: safe1829 types:1830 - [float16x4_t, int16x4_t]1831 - [float16x8_t, int16x8_t]1832 compose:1833 - LLVMLink:1834 name: "vcvta_{neon_type[1]}_{neon_type[0]}"1835 links:1836 - link: "llvm.aarch64.neon.fcvtas.{neon_type[1]}.{neon_type[0]}"1837 arch: aarch64,arm64ec18381839 - name: "vcvta{type[2]}"1840 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1841 arguments: ["a: {type[0]}"]1842 return_type: "{type[1]}"1843 attr:1844 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtas]]}]]1845 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1846 safety: safe1847 types:1848 - ["f32", "i32", 's_s32_f32']1849 - ["f64", "i64", 'd_s64_f64']1850 compose:1851 - LLVMLink:1852 name: "vcvta{type[2]}"1853 links:1854 - link: "llvm.aarch64.neon.fcvtas.{type[1]}.{type[0]}"1855 arch: aarch64,arm64ec185618571858 - name: "vcvta{type[2]}"1859 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1860 arguments: ["a: {type[0]}"]1861 return_type: "{type[1]}"1862 attr:1863 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtau]]}]]1864 - *neon-fp161865 - *neon-unstable-f161866 - *target-not-arm64ec1867 safety: safe1868 types:1869 - ["f16", "u32", 'h_u32_f16']1870 - ["f16", "u64", 'h_u64_f16']18711872 compose:1873 - LLVMLink:1874 name: "vcvta{type[2]}"1875 links:1876 - link: "llvm.aarch64.neon.fcvtau.{type[1]}.{type[0]}"1877 arch: aarch64,arm64ec187818791880 - name: "vcvta{type[2]}"1881 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1882 arguments: ["a: {type[0]}"]1883 return_type: "{type[1]}"1884 attr:1885 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtas]]}]]1886 - *neon-fp161887 - *neon-unstable-f161888 - *target-not-arm64ec1889 safety: safe1890 types:1891 - ["f16", "i32", 'h_s32_f16']1892 - ["f16", "i64", 'h_s64_f16']1893 compose:1894 - LLVMLink:1895 name: "vcvta{type[2]}"1896 return_type: "{type[1]}"1897 links:1898 - link: "llvm.aarch64.neon.fcvtas.{type[1]}.{type[0]}"1899 arch: aarch64,arm64ec190019011902 - name: "vcvta{type[2]}"1903 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1904 arguments: ["a: {type[0]}"]1905 return_type: "{type[1]}"1906 attr:1907 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtas]]}]]1908 - *neon-fp161909 - *neon-unstable-f161910 - *target-not-arm64ec1911 safety: safe1912 types:1913 - ["f16", "i16", 'h_s16_f16', 's32']1914 compose:1915 - 'vcvtah_{type[3]}_f16(a) as i16'19161917 - name: "vcvta{type[2]}"1918 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1919 arguments: ["a: {type[0]}"]1920 return_type: "{type[1]}"1921 attr:1922 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtau]]}]]1923 - *neon-fp161924 - *neon-unstable-f161925 - *target-not-arm64ec1926 safety: safe1927 types:1928 - ["f16", "u16", 'h_u16_f16', 'u32']1929 compose:1930 - 'vcvtah_{type[3]}_f16(a) as u16'19311932 - name: "vcvta{type[2]}"1933 doc: "Floating-point convert to integer, rounding to nearest with ties to away"1934 arguments: ["a: {type[0]}"]1935 return_type: "{type[1]}"1936 attr:1937 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtau]]}]]1938 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1939 safety: safe1940 types:1941 - ["f32", "u32", 's_u32_f32']1942 - ["f64", "u64", 'd_u64_f64']1943 compose:1944 - LLVMLink:1945 name: "vcvta{type[2]}"1946 links:1947 - link: "llvm.aarch64.neon.fcvtau.{type[1]}.{type[0]}"1948 arch: aarch64,arm64ec19491950 - name: "vcvtn{neon_type[1].no}_{neon_type[0]}"1951 doc: "Floating-point convert to signed integer, rounding to nearest with ties to even"1952 arguments: ["a: {neon_type[0]}"]1953 return_type: "{neon_type[1]}"1954 attr:1955 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtns]]}]]1956 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1957 safety: safe1958 types:1959 - [float32x2_t, int32x2_t]1960 - [float32x4_t, int32x4_t]1961 - [float64x1_t, int64x1_t]1962 - [float64x2_t, int64x2_t]1963 compose:1964 - LLVMLink:1965 name: "vcvtn{neon_type[1].no}_{neon_type[0]}"1966 links:1967 - link: "llvm.aarch64.neon.fcvtns.{neon_type[1]}.{neon_type[0]}"1968 arch: aarch64,arm64ec19691970 - name: "vcvtn{type[2]}"1971 doc: "Floating-point convert to signed integer, rounding to nearest with ties to even"1972 arguments: ["a: {type[0]}"]1973 return_type: "{type[1]}"1974 attr:1975 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtns]]}]]1976 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1977 safety: safe1978 types:1979 - ["f32", "i32", 's_s32_f32']1980 - ["f64", "i64", 'd_s64_f64']1981 compose:1982 - LLVMLink:1983 name: "vcvtn{type[2]}"1984 links:1985 - link: "llvm.aarch64.neon.fcvtns.{type[1]}.{type[0]}"1986 arch: aarch64,arm64ec198719881989 - name: "vcvtn{neon_type[1].no}_{neon_type[0]}"1990 doc: "Floating-point convert to signed integer, rounding to nearest with ties to even"1991 arguments: ["a: {neon_type[0]}"]1992 return_type: "{neon_type[1]}"1993 attr:1994 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtns]]}]]1995 - *neon-fp161996 - *neon-stable-fp161997 - *target-not-arm64ec1998 safety: safe1999 types:2000 - [float16x4_t, int16x4_t]
Findings
✓ No findings reported for this file.