1arch_cfgs:2 - arch_name: aarch643 target_feature: [neon]4 llvm_prefix: llvm.aarch64.neon5# Generate big endian shuffles6auto_big_endian: true78# Repeatedly used anchors 9# #[stable(feature = "neon_intrinsics", since = "1.59.0")]10neon-stable: &neon-stable11 FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1213# #[stable(feature = "stdarch_neon_fp16", since = "1.94.0")]14neon-stable-fp16: &neon-stable-fp1615 FnCall: [stable, ['feature = "stdarch_neon_fp16"', 'since = "1.94.0"']]1617# #[cfg_attr(target_arch = "arm", unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800"))]18neon-cfg-arm-unstable: &neon-cfg-arm-unstable19 FnCall: ['cfg_attr', ['target_arch = "arm"', {FnCall: ['unstable', ['feature = "stdarch_arm_neon_intrinsics"', 'issue = "111800"']]}]]2021# #[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]22neon-arm-unstable: &neon-arm-unstable23 FnCall: ['unstable', ['feature = "stdarch_arm_neon_intrinsics"', 'issue = "111800"']]2425# #[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]26neon-v7: &neon-v727 FnCall: [cfg_attr, ['target_arch = "arm"', { FnCall: [target_feature, [ 'enable = "v7"']]} ]]2829# #[target_feature(enable = "neon,v7")]30enable-v7: &enable-v731 FnCall: [target_feature, ['enable = "neon,v7"']]3233# #[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]34neon-v8: &neon-v835 FnCall: [cfg_attr, ['target_arch = "arm"', { FnCall: [target_feature, [ 'enable = "v8"']]} ]]3637target-is-arm: &target-is-arm38 FnCall: [cfg, ['target_arch = "arm"']]3940# #[cfg(not(target_arch = "arm"))]41target-not-arm: &target-not-arm42 FnCall: [cfg, [{ FnCall: [not, ['target_arch = "arm"']]}]]4344# #[cfg(not(target_arch = "arm64ec"))]45target-not-arm64ec: &target-not-arm64ec46 FnCall: [cfg, [{ FnCall: [not, ['target_arch = "arm64ec"']]}]]4748not-arm: ¬-arm49 FnCall: [not, ['target_arch = "arm"']]5051neon-target-aarch64-arm64ec: &neon-target-aarch64-arm64ec52 FnCall: [all, [test, {FnCall: [any, ['target_arch = "aarch64"', 'target_arch = "arm64ec"']]}]]5354# #[cfg_attr(not(target_arch = "arm"), stable(feature = "neon_intrinsics", since = "1.59.0"))]55neon-not-arm-stable: &neon-not-arm-stable56 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, {FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]}]]5758# #[cfg_attr(not(target_arch = "arm"), stable(feature = "stdarch_neon_fp16", since = "1.94.0"))]59neon-not-arm-stable-fp16: &neon-not-arm-stable-fp1660 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, {FnCall: [stable, ['feature = "stdarch_neon_fp16"', 'since = "1.94.0"']]}]]6162# #[cfg_attr(all(test, not(target_env = "msvc"))]63msvc-disabled: &msvc-disabled64 FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]6566# all(test, target_arch = "arm")67test-is-arm: &test-is-arm68 FnCall: [all, [test, 'target_arch = "arm"']]6970# #[target_feature(enable = "neon,aes")]71neon-aes: &neon-aes72 FnCall: [target_feature, ['enable = "neon,aes"']]7374# #[target_feature(enable = "neon,i8mm")]75neon-i8mm: &neon-i8mm76 FnCall: [target_feature, ['enable = "neon,i8mm"']]7778# #[target_feature(enable = "neon,fp16")]79neon-fp16: &neon-fp1680 FnCall: [target_feature, ['enable = "neon,fp16"']]8182# #[cfg_attr[target_arch = "arm", target_feature(enable = "neon,fp16")]83arm-fp16: &arm-fp1684 FnCall: [cfg_attr, ['target_arch = "arm"', {FnCall: [target_feature, ['enable = "fp16"']]}]]8586enable-fcma: &enable-fcma87 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']]}, { FnCall: [target_feature, ['enable = "fcma"']] }]]8889#[cfg_attr(not(target_arch = "arm"), unstable(feature = "stdarch_neon_i8mm", issue = "117223"))]90neon-unstable-i8mm: &neon-unstable-i8mm91 FnCall: [cfg_attr, [{ FnCall: [not, ['target_arch = "arm"']] }, { FnCall: [unstable, ['feature = "stdarch_neon_i8mm"', 'issue = "117223"']] } ]]9293# #[unstable(feature = "stdarch_neon_fcma", issue = "117222")]94neon-unstable-fcma: &neon-unstable-fcma95 FnCall: [unstable, ['feature = "stdarch_neon_fcma"', 'issue = "117222"']]9697arm-crc-unstable: &arm-crc-unstable98 FnCall: [cfg_attr, ['target_arch = "arm"', {FnCall: [unstable, ['feature = "stdarch_aarch32_crc32"', 'issue = "125085"']]}]]99100aarch64-crc-stable: &aarch64-crc-stable101 FnCall: [cfg_attr, [{FnCall: [not, ['target_arch = "arm"']]}, {FnCall: [stable, ['feature = "stdarch_aarch64_crc32"', 'since = "1.80.0"']]}]]102103# #[unstable(feature = "stdarch_neon_f16", issue = "136306")]104neon-unstable-f16: &neon-unstable-f16105 FnCall: [unstable, ['feature = "stdarch_neon_f16"', 'issue = "136306"']]106107intrinsics:108 - name: "vand{neon_type.no}"109 doc: Vector bitwise and110 arguments: ["a: {neon_type}", "b: {neon_type}"]111 return_type: "{neon_type}"112 attr:113 - *neon-v7114 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vand]]}]]115 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [and]]}]]116 - *neon-not-arm-stable117 - *neon-cfg-arm-unstable118 safety: safe119 types:120 - int8x8_t121 - int8x16_t122 - int16x4_t123 - int16x8_t124 - int32x2_t125 - int32x4_t126 - uint8x8_t127 - uint8x16_t128 - uint16x4_t129 - uint16x8_t130 - uint32x2_t131 - uint32x4_t132 - int64x1_t133 - int64x2_t134 - uint64x1_t135 - uint64x2_t136 compose:137 - FnCall:138 - simd_and139 - - a140 - b141142 - name: "vorr{neon_type.no}"143 doc: "Vector bitwise or (immediate, inclusive)"144 arguments: ["a: {neon_type}", "b: {neon_type}"]145 return_type: "{neon_type}"146 attr:147 - *neon-v7148 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vorr]]}]]149 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [orr]]}]]150 - *neon-not-arm-stable151 - *neon-cfg-arm-unstable152 safety: safe153 types:154 - int8x8_t155 - int8x16_t156 - int16x4_t157 - int16x8_t158 - int32x2_t159 - int32x4_t160 - uint8x8_t161 - uint8x16_t162 - uint16x4_t163 - uint16x8_t164 - uint32x2_t165 - uint32x4_t166 - int64x1_t167 - int64x2_t168 - uint64x1_t169 - uint64x2_t170 compose:171 - FnCall:172 - simd_or173 - - a174 - b175176 - name: "veor{neon_type.no}"177 doc: Vector bitwise exclusive or (vector)178 arguments: ["a: {neon_type}", "b: {neon_type}"]179 return_type: "{neon_type}"180 attr:181 - *neon-v7182 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [veor]]}]]183 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [eor]]}]]184 - *neon-not-arm-stable185 - *neon-cfg-arm-unstable186 safety: safe187 types:188 - int8x8_t189 - int8x16_t190 - int16x4_t191 - int16x8_t192 - int32x2_t193 - int32x4_t194 - uint8x8_t195 - uint8x16_t196 - uint16x4_t197 - uint16x8_t198 - uint32x2_t199 - uint32x4_t200 - int64x1_t201 - int64x2_t202 - uint64x1_t203 - uint64x2_t204 compose:205 - FnCall:206 - simd_xor207 - - a208 - b209210 - name: "vabd{neon_type.no}"211 doc: Absolute difference between the arguments212 arguments: ["a: {neon_type}", "b: {neon_type}"]213 return_type: "{neon_type}"214 attr:215 - *neon-v7216 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vabd.{neon_type}"']]}]]217 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [sabd]]}]]218 - *neon-not-arm-stable219 - *neon-cfg-arm-unstable220 safety: safe221 types:222 - int8x8_t223 - int8x16_t224 - int16x4_t225 - int16x8_t226 - int32x2_t227 - int32x4_t228 compose:229 - LLVMLink:230 name: "sabd.{neon_type}"231 links:232 - link: "llvm.aarch64.neon.sabd.{neon_type}"233 arch: aarch64,arm64ec234 - link: "llvm.arm.neon.vabds.{neon_type}"235 arch: arm236237 - name: "vabd{neon_type.no}"238 doc: Absolute difference between the arguments239 arguments: ["a: {neon_type}", "b: {neon_type}"]240 return_type: "{neon_type}"241 attr:242 - *neon-v7243 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vabd.{neon_type}"']]}]]244 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uabd]]}]]245 - *neon-not-arm-stable246 - *neon-cfg-arm-unstable247 safety: safe248 types:249 - uint8x8_t250 - uint8x16_t251 - uint16x4_t252 - uint16x8_t253 - uint32x2_t254 - uint32x4_t255 compose:256 - LLVMLink:257 name: "uabd.{neon_type}"258 links:259 - link: "llvm.aarch64.neon.uabd.{neon_type}"260 arch: aarch64,arm64ec261 - link: "llvm.arm.neon.vabdu.{neon_type}"262 arch: arm263264 - name: "vabd{neon_type.no}"265 doc: Absolute difference between the arguments of Floating266 arguments: ["a: {neon_type}", "b: {neon_type}"]267 return_type: "{neon_type}"268 attr:269 - *neon-v7270 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vabd.f32"']]}]]271 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fabd]]}]]272 - *neon-not-arm-stable273 - *neon-cfg-arm-unstable274 safety: safe275 types:276 - float32x2_t277 - float32x4_t278 compose:279 - LLVMLink:280 name: "fabd.{neon_type}"281 links:282 - link: "llvm.arm.neon.vabds.{neon_type}"283 arch: arm284 - link: "llvm.aarch64.neon.fabd.{neon_type}"285 arch: aarch64,arm64ec286287 - name: "vabd{neon_type.no}"288 doc: Absolute difference between the arguments of Floating289 arguments: ["a: {neon_type}", "b: {neon_type}"]290 return_type: "{neon_type}"291 attr:292 - *neon-v8293 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vabd.f16"']]}]]294 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fabd]]}]]295 - *neon-fp16296 - *neon-not-arm-stable-fp16297 - *neon-cfg-arm-unstable298 - *target-not-arm64ec299 safety: safe300 types:301 - float16x4_t302 - float16x8_t303 compose:304 - LLVMLink:305 name: "fabd.{neon_type}"306 links:307 - link: "llvm.arm.neon.vabds.{neon_type}"308 arch: arm309 - link: "llvm.aarch64.neon.fabd.{neon_type}"310 arch: aarch64,arm64ec311312 - name: "vabdl{neon_type[0].noq}"313 doc: Signed Absolute difference Long314 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]315 return_type: "{neon_type[1]}"316 attr:317 - *neon-v7318 - FnCall:319 - cfg_attr320 - - FnCall:321 - all322 - - test323 - 'target_arch = "arm"'324 - FnCall:325 - assert_instr326 - - '"vabdl.{neon_type[0]}"'327 - FnCall:328 - cfg_attr329 - - FnCall:330 - all331 - - test332 - FnCall:333 - any334 - - 'target_arch = "aarch64"'335 - 'target_arch = "arm64ec"'336 - FnCall:337 - assert_instr338 - - sabdl339 - *neon-not-arm-stable340 - *neon-cfg-arm-unstable341 safety: safe342 types:343 - [int8x8_t, int16x8_t, uint8x8_t]344 - [int16x4_t, int32x4_t, uint16x4_t]345 - [int32x2_t, int64x2_t, uint32x2_t]346 compose:347 - Let:348 - c349 - "{neon_type[2]}"350 - FnCall:351 - simd_cast352 - - FnCall:353 - "vabd_{neon_type[0]}"354 - - a355 - b356 - FnCall:357 - simd_cast358 - - c359360 - name: "vceq{neon_type[0].no}"361 doc: "Compare bitwise Equal (vector)"362 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]363 return_type: "{neon_type[1]}"364 attr:365 - *neon-v7366 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vceq{type[2]}"']]}]]367 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmeq]]}]]368 - *neon-not-arm-stable369 - *neon-cfg-arm-unstable370 safety: safe371 types:372 - [uint8x8_t, uint8x8_t, ".i8"]373 - [uint8x16_t, uint8x16_t, ".i8"]374 - [int8x8_t, uint8x8_t, ".i8"]375 - [int8x16_t, uint8x16_t, ".i8"]376 - [poly8x8_t, uint8x8_t, ".i8"]377 - [poly8x16_t, uint8x16_t, ".i8"]378 - [uint16x4_t, uint16x4_t, ".i16"]379 - [uint16x8_t, uint16x8_t, ".i16"]380 - [int16x4_t, uint16x4_t, ".i16"]381 - [int16x8_t, uint16x8_t, ".i16"]382 - [uint32x2_t, uint32x2_t, ".i32"]383 - [uint32x4_t, uint32x4_t, ".i32"]384 - [int32x2_t, uint32x2_t, ".i32"]385 - [int32x4_t, uint32x4_t, ".i32"]386 compose:387 - FnCall: [simd_eq, [a, b]]388389 - name: "vceq{neon_type[0].no}"390 doc: "Floating-point compare equal"391 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]392 return_type: "{neon_type[1]}"393 attr:394 - *neon-v7395 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vceq.f32"']]}]]396 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmeq]]}]]397 - *neon-not-arm-stable398 - *neon-cfg-arm-unstable399 safety: safe400 types:401 - [float32x2_t, uint32x2_t]402 - [float32x4_t, uint32x4_t]403 compose:404 - FnCall: [simd_eq, [a, b]]405406407 - name: "vceq{neon_type[0].no}"408 doc: "Floating-point compare equal"409 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]410 return_type: "{neon_type[1]}"411 attr:412 - *neon-v8413 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vceq.f16"']]}]]414 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmeq]]}]]415 - *neon-fp16416 - *neon-not-arm-stable-fp16417 - *neon-cfg-arm-unstable418 - *target-not-arm64ec419 safety: safe420 types:421 - [float16x4_t, uint16x4_t]422 - [float16x8_t, uint16x8_t]423 compose:424 - FnCall: [simd_eq, [a, b]]425426 - name: "vtst{neon_type[0].no}"427 doc: "Signed compare bitwise Test bits nonzero"428 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]429 return_type: "{neon_type[1]}"430 attr:431 - *neon-v7432 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtst]]}]]433 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmtst]]}]]434 - *neon-not-arm-stable435 - *neon-cfg-arm-unstable436 safety: safe437 types:438 - [int8x8_t, uint8x8_t, i8x8, 'i8x8::new(0, 0, 0, 0, 0, 0, 0, 0)']439 - [int8x16_t, uint8x16_t, i8x16, 'i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)']440 - [int16x4_t, uint16x4_t, i16x4, 'i16x4::new(0, 0, 0, 0)']441 - [int16x8_t, uint16x8_t, i16x8, 'i16x8::new(0, 0, 0, 0, 0, 0, 0, 0)']442 - [int32x2_t, uint32x2_t, i32x2, 'i32x2::new(0, 0)']443 - [int32x4_t, uint32x4_t, i32x4, 'i32x4::new(0, 0, 0, 0)']444 - [poly8x8_t, uint8x8_t, i8x8, 'i8x8::new(0, 0, 0, 0, 0, 0, 0, 0)']445 - [poly8x16_t, uint8x16_t, i8x16, 'i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)']446 - [poly16x4_t, uint16x4_t, i16x4, 'i16x4::new(0, 0, 0, 0)']447 - [poly16x8_t, uint16x8_t, i16x8, 'i16x8::new(0, 0, 0, 0, 0, 0, 0, 0)']448 compose:449 - Let: [c, "{neon_type[0]}", {FnCall: [simd_and, [a, b]]}]450 - Let: [d, "{type[2]}", "{type[3]}"]451 - FnCall: [simd_ne, [c, {FnCall: [transmute, [d]]}]]452453 - name: "vabs{neon_type.no}"454 doc: "Floating-point absolute value"455 arguments: ["a: {neon_type}"]456 return_type: "{neon_type}"457 attr:458 - *neon-v7459 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vabs]]}]]460 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fabs]]}]]461 - *neon-not-arm-stable462 - *neon-cfg-arm-unstable463 safety: safe464 types:465 - float32x2_t466 - float32x4_t467 compose:468 - FnCall: [simd_fabs, [a]]469470 - name: "vabs{neon_type.no}"471 doc: "Floating-point absolute value"472 arguments: ["a: {neon_type}"]473 return_type: "{neon_type}"474 attr:475 - *neon-v8476 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vabs]]}]]477 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fabs]]}]]478 - *neon-fp16479 - *neon-not-arm-stable-fp16480 - *neon-cfg-arm-unstable481 - *target-not-arm64ec482 safety: safe483 types:484 - float16x4_t485 - float16x8_t486 compose:487 - FnCall: [simd_fabs, [a]]488489 - name: "vabs{type[0]}"490 doc: "Floating-point absolute value"491 arguments: ["a: {type[1]}"]492 return_type: "{type[1]}"493 attr:494 - *neon-v8495 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vabs]]}]]496 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fabs]]}]]497 - *neon-fp16498 - *neon-unstable-f16499 - *target-not-arm64ec500 safety: safe501 types:502 - ['h_f16', 'f16']503 compose:504 - FnCall:505 - simd_extract!506 - - FnCall:507 - "vabs_{type[1]}"508 - - FnCall: ["vdup_n_{type[1]}", [a]]509 - 0510511 - name: "vcgt{neon_type[0].no}"512 doc: "Compare signed greater than"513 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]514 return_type: "{neon_type[1]}"515 attr:516 - *neon-v7517 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.{type[2]}"']]}]]518 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmgt]]}]]519 - *neon-not-arm-stable520 - *neon-cfg-arm-unstable521 safety: safe522 types:523 - [int8x8_t, uint8x8_t, "s8"]524 - [int8x16_t, uint8x16_t, "s8"]525 - [int16x4_t, uint16x4_t, s16]526 - [int16x8_t, uint16x8_t, s16]527 - [int32x2_t, uint32x2_t, "s32"]528 - [int32x4_t, uint32x4_t, "s32"]529 compose:530 - FnCall: [simd_gt, [a, b]]531532 - name: "vcgt{neon_type.no}"533 doc: "Compare unsigned greater than"534 arguments: ["a: {neon_type}", "b: {neon_type}"]535 return_type: "{neon_type}"536 attr:537 - *neon-v7538 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.{neon_type}"']]}]]539 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmhi]]}]]540 - *neon-not-arm-stable541 - *neon-cfg-arm-unstable542 safety: safe543 types:544 - uint8x8_t545 - uint8x16_t546 - uint16x4_t547 - uint16x8_t548 - uint32x2_t549 - uint32x4_t550 compose:551 - FnCall: [simd_gt, [a, b]]552553 - name: "vcgt{neon_type[0].no}"554 doc: "Floating-point compare greater than"555 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]556 return_type: "{neon_type[1]}"557 attr:558 - *neon-v7559 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.f32"']]}]]560 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmgt]]}]]561 - *neon-not-arm-stable562 - *neon-cfg-arm-unstable563 safety: safe564 types:565 - [float32x2_t, uint32x2_t]566 - [float32x4_t, uint32x4_t]567 compose:568 - FnCall: [simd_gt, [a, b]]569570571 - name: "vcgt{neon_type[0].no}"572 doc: "Floating-point compare greater than"573 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]574 return_type: "{neon_type[1]}"575 attr:576 - *neon-v8577 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.f16"']]}]]578 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmgt]]}]]579 - *neon-fp16580 - *neon-not-arm-stable-fp16581 - *neon-cfg-arm-unstable582 - *target-not-arm64ec583 safety: safe584 types:585 - [float16x4_t, uint16x4_t]586 - [float16x8_t, uint16x8_t]587 compose:588 - FnCall: [simd_gt, [a, b]]589590591 - name: "vcgtz{neon_type[0].no}"592 doc: "Floating-point compare greater than zero"593 arguments: ["a: {neon_type[0]}"]594 return_type: "{neon_type[1]}"595 attr:596 - *neon-v8597 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.f16"']]}]]598 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmgt]]}]]599 - *neon-fp16600 - *neon-not-arm-stable-fp16601 - *neon-cfg-arm-unstable602 - *target-not-arm64ec603 safety: safe604 types:605 - [float16x4_t, uint16x4_t, f16x4, 'f16x4::new(0.0, 0.0, 0.0, 0.0)']606 - [float16x8_t, uint16x8_t, f16x8, 'f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)']607 compose:608 - Let: [b, "{type[2]}", "{type[3]}"]609 - FnCall: [simd_gt, [a, {FnCall: [transmute, [b]]}]]610611 - name: "vclt{neon_type[0].no}"612 doc: "Compare signed less than"613 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]614 return_type: "{neon_type[1]}"615 attr:616 - *neon-v7617 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcgt.{neon_type[0]}"']]}]]618 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmgt]]}]]619 - *neon-not-arm-stable620 - *neon-cfg-arm-unstable621 safety: safe622 types:623 - [int8x8_t, uint8x8_t]624 - [int8x16_t, uint8x16_t]625 - [int16x4_t, uint16x4_t]626 - [int16x8_t, uint16x8_t]627 - [int32x2_t, uint32x2_t]628 - [int32x4_t, uint32x4_t]629 compose:630 - FnCall: [simd_lt, [a, b]]631632 - name: "vcle{neon_type[0].no}"633 doc: "Compare signed less than or equal"634 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]635 return_type: "{neon_type[1]}"636 attr:637 - *neon-v7638 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcge.{neon_type[0]}"']]}]]639 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmge]]}]]640 - *neon-not-arm-stable641 - *neon-cfg-arm-unstable642 safety: safe643 types:644 - [int8x8_t, uint8x8_t]645 - [int8x16_t, uint8x16_t]646 - [int16x4_t, uint16x4_t]647 - [int16x8_t, uint16x8_t]648 - [int32x2_t, uint32x2_t]649 - [int32x4_t, uint32x4_t]650 compose:651 - FnCall: [simd_le, [a, b]]652653 - name: "vcle{neon_type[0].no}"654 doc: "Floating-point compare less than or equal"655 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]656 return_type: "{neon_type[1]}"657 attr:658 - *neon-v7659 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcge.f32"']]}]]660 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmge]]}]]661 - *neon-not-arm-stable662 - *neon-cfg-arm-unstable663 safety: safe664 types:665 - [float32x2_t, uint32x2_t]666 - [float32x4_t, uint32x4_t]667 compose:668 - FnCall: [simd_le, [a, b]]669670671 - name: "vcle{neon_type[0].no}"672 doc: "Floating-point compare less than or equal"673 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]674 return_type: "{neon_type[1]}"675 attr:676 - *neon-v8677 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcge.f16"']]}]]678 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmge]]}]]679 - *neon-fp16680 - *neon-not-arm-stable-fp16681 - *neon-cfg-arm-unstable682 - *target-not-arm64ec683 safety: safe684 types:685 - [float16x4_t, uint16x4_t]686 - [float16x8_t, uint16x8_t]687 compose:688 - FnCall: [simd_le, [a, b]]689690 - name: "vclez{neon_type[0].no}"691 doc: "Floating-point compare less than or equal to zero"692 arguments: ["a: {neon_type[0]}"]693 return_type: "{neon_type[1]}"694 attr:695 - *neon-v8696 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcle.f16"']]}]]697 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcmle]]}]]698 - *neon-fp16699 - *neon-not-arm-stable-fp16700 - *neon-cfg-arm-unstable701 - *target-not-arm64ec702 safety: safe703 types:704 - [float16x4_t, uint16x4_t, f16x4, 'f16x4::new(0.0, 0.0, 0.0, 0.0)']705 - [float16x8_t, uint16x8_t, f16x8, 'f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)']706 compose:707 - Let: [b, "{type[2]}", "{type[3]}"]708 - FnCall:709 - simd_le710 - - a711 - FnCall: [transmute, [b]]712713 - name: "vcge{neon_type[0].no}"714 doc: "Compare signed greater than or equal"715 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]716 return_type: "{neon_type[1]}"717 attr:718 - *neon-v7719 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcge.{neon_type[0]}"']]}]]720 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cmge]]}]]721 - *neon-not-arm-stable722 - *neon-cfg-arm-unstable723 safety: safe724 types:725 - [int8x8_t, uint8x8_t]726 - [int8x16_t, uint8x16_t]727 - [int16x4_t, uint16x4_t]728 - [int16x8_t, uint16x8_t]729 - [int32x2_t, uint32x2_t]730 - [int32x4_t, uint32x4_t]731 compose:732 - FnCall: [simd_ge, [a, b]]733734 - name: "vcls{neon_type.no}"735 doc: "Count leading sign bits"736 arguments: ["a: {neon_type}"]737 return_type: "{neon_type}"738 attr:739 - *neon-v7740 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcls.{neon_type}"']]}]]741 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cls]]}]]742 - *neon-not-arm-stable743 - *neon-cfg-arm-unstable744 safety: safe745 types:746 - int8x8_t747 - int8x16_t748 - int16x4_t749 - int16x8_t750 - int32x2_t751 - int32x4_t752 compose:753 - LLVMLink:754 name: "vcls{neon_type.no}"755 links:756 - link: "llvm.arm.neon.vcls.{neon_type}"757 arch: arm758 - link: "llvm.aarch64.neon.cls.{neon_type}"759 arch: aarch64,arm64ec760761 - name: "vcls{neon_type[0].no}"762 doc: "Count leading sign bits"763 arguments: ["a: {neon_type[0]}"]764 return_type: "{neon_type[1]}"765 attr:766 - *neon-v7767 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vcls]]}]]768 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [cls]]}]]769 - *neon-not-arm-stable770 - *neon-cfg-arm-unstable771 safety: safe772 types:773 - [uint8x8_t, int8x8_t]774 - [uint8x16_t, int8x16_t]775 - [uint16x4_t, int16x4_t]776 - [uint16x8_t, int16x8_t]777 - [uint32x2_t, int32x2_t]778 - [uint32x4_t, int32x4_t]779 compose:780 - FnCall:781 - "vcls{neon_type[1].no}"782 - - FnCall: [transmute, [a]]783784 - name: "vclz{neon_type[0].no}"785 doc: "Count leading zero bits"786 arguments: ["a: {neon_type[0]}"]787 return_type: "{neon_type[0]}"788 attr:789 - *neon-v7790 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vclz.i8"']]}]]791 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [clz]]}]]792 - *neon-not-arm-stable793 - *neon-cfg-arm-unstable794 safety: safe795 types:796 - [uint8x8_t, int8x8_t]797 - [uint8x16_t, int8x16_t]798 compose:799 - FnCall:800 - transmute801 - - FnCall:802 - "vclz{neon_type[1].no}"803 - - FnCall: [transmute, [a]]804805 - name: "vclz{neon_type[0].no}"806 doc: "Count leading zero bits"807 arguments: ["a: {neon_type[0]}"]808 return_type: "{neon_type[0]}"809 attr:810 - *neon-v7811 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vclz{type[1]}"']]}]]812 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [clz]]}]]813 - *neon-not-arm-stable814 - *neon-cfg-arm-unstable815 safety: safe816 types:817 - [int8x8_t, '.i8']818 - [int8x16_t, '.i8']819 - [int16x4_t, '.i16']820 - [int16x8_t, '.i16']821 - [int32x2_t, '.i32']822 - [int32x4_t, '.i32']823 compose:824 - FnCall: [simd_ctlz, [a]]825826 - name: "vclz{neon_type[0].no}"827 doc: "Count leading zero bits"828 arguments: ["a: {neon_type[0]}"]829 return_type: "{neon_type[0]}"830 attr:831 - *neon-v7832 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vclz{type[1]}"']]}]]833 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [clz]]}]]834 - *neon-not-arm-stable835 - *neon-cfg-arm-unstable836 safety: safe837 types:838 - [uint32x2_t, '.i32', int32x2_t]839 - [uint32x4_t, '.i32', int32x4_t]840 - [uint16x4_t, '.i16', int16x4_t]841 - [uint16x8_t, '.i16', int16x8_t]842 compose:843 - FnCall:844 - transmute845 - - FnCall:846 - "vclz{neon_type[2].no}"847 - - FnCall: [transmute, [a]]848849 - name: "vcagt{neon_type[0].no}"850 doc: "Floating-point absolute compare greater than"851 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]852 return_type: "{neon_type[1]}"853 attr:854 - *neon-v7855 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacgt.f32"']]}]]856 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facgt]]}]]857 - *neon-not-arm-stable858 - *neon-cfg-arm-unstable859 safety: safe860 types:861 - [float32x2_t, uint32x2_t]862 - [float32x4_t, uint32x4_t]863 compose:864 - LLVMLink:865 name: "vcagt{neon_type[0].no}"866 links:867 - link: "llvm.arm.neon.vacgt.{neon_type[1]}.{neon_type[0]}"868 arch: arm869 - link: "llvm.aarch64.neon.facgt.{neon_type[1]}.{neon_type[0]}"870 arch: aarch64,arm64ec871872873 - name: "vcagt{neon_type[0].no}"874 doc: "Floating-point absolute compare greater than"875 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]876 return_type: "{neon_type[1]}"877 attr:878 - *neon-v8879 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacgt.f16"']]}]]880 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facgt]]}]]881 - *neon-fp16882 - *neon-not-arm-stable-fp16883 - *neon-cfg-arm-unstable884 - *target-not-arm64ec885 safety: safe886 types:887 - [float16x4_t, uint16x4_t]888 - [float16x8_t, uint16x8_t]889 compose:890 - LLVMLink:891 name: "vcagt{neon_type[0].no}"892 links:893 - link: "llvm.arm.neon.vacgt.{neon_type[1]}.{neon_type[0]}"894 arch: arm895 - link: "llvm.aarch64.neon.facgt.{neon_type[1]}.{neon_type[0]}"896 arch: aarch64,arm64ec897898 - name: "vcage{neon_type[0].no}"899 doc: "Floating-point absolute compare greater than or equal"900 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]901 return_type: "{neon_type[1]}"902 attr:903 - *neon-v7904 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacge.f32"']]}]]905 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facge]]}]]906 - *neon-not-arm-stable907 - *neon-cfg-arm-unstable908 safety: safe909 types:910 - [float32x2_t, uint32x2_t]911 - [float32x4_t, uint32x4_t]912 compose:913 - LLVMLink:914 name: "vcage{neon_type[0].no}"915 links:916 - link: "llvm.arm.neon.vacge.{neon_type[1]}.{neon_type[0]}"917 arch: arm918 - link: "llvm.aarch64.neon.facge.{neon_type[1]}.{neon_type[0]}"919 arch: aarch64,arm64ec920921 - name: "vcage{neon_type[0].no}"922 doc: "Floating-point absolute compare greater than or equal"923 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]924 return_type: "{neon_type[1]}"925 attr:926 - *neon-v8927 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacge.f16"']]}]]928 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facge]]}]]929 - *neon-fp16930 - *neon-not-arm-stable-fp16931 - *neon-cfg-arm-unstable932 - *target-not-arm64ec933 safety: safe934 types:935 - [float16x4_t, uint16x4_t]936 - [float16x8_t, uint16x8_t]937 compose:938 - LLVMLink:939 name: "vcage{neon_type[0].no}"940 links:941 - link: "llvm.arm.neon.vacge.{neon_type[1]}.{neon_type[0]}"942 arch: arm943 - link: "llvm.aarch64.neon.facge.{neon_type[1]}.{neon_type[0]}"944 arch: aarch64,arm64ec945946 - name: "vcalt{neon_type[0].no}"947 doc: "Floating-point absolute compare less than"948 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]949 return_type: "{neon_type[1]}"950 attr:951 - *neon-v7952 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacgt.f32"']]}]]953 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facgt]]}]]954 - *neon-not-arm-stable955 - *neon-cfg-arm-unstable956 safety: safe957 types:958 - [float32x2_t, uint32x2_t]959 - [float32x4_t, uint32x4_t]960 compose:961 - FnCall: ["vcagt{neon_type[0].no}", [b, a]]962963 - name: "vcalt{neon_type[0].no}"964 doc: "Floating-point absolute compare less than"965 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]966 return_type: "{neon_type[1]}"967 attr:968 - *neon-v8969 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacgt.f16"']]}]]970 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facgt]]}]]971 - *neon-fp16972 - *neon-not-arm-stable-fp16973 - *neon-cfg-arm-unstable974 - *target-not-arm64ec975 safety: safe976 types:977 - [float16x4_t, uint16x4_t]978 - [float16x8_t, uint16x8_t]979 compose:980 - FnCall: ["vcagt{neon_type[0].no}", [b, a]]981982 - name: "vcale{neon_type[0].no}"983 doc: "Floating-point absolute compare less than or equal"984 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]985 return_type: "{neon_type[1]}"986 attr:987 - *neon-v7988 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacge.f32"']]}]]989 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facge]]}]]990 - *neon-not-arm-stable991 - *neon-cfg-arm-unstable992 safety: safe993 types:994 - [float32x2_t, uint32x2_t]995 - [float32x4_t, uint32x4_t]996 compose:997 - FnCall: ["vcage{neon_type[0].no}", [b, a]]9989991000 - name: "vcale{neon_type[0].no}"1001 doc: "Floating-point absolute compare less than or equal"1002 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1003 return_type: "{neon_type[1]}"1004 attr:1005 - *neon-v81006 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vacge.f16"']]}]]1007 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [facge]]}]]1008 - *neon-fp161009 - *neon-not-arm-stable-fp161010 - *neon-cfg-arm-unstable1011 - *target-not-arm64ec1012 safety: safe1013 types:1014 - [float16x4_t, uint16x4_t]1015 - [float16x8_t, uint16x8_t]1016 compose:1017 - FnCall: ["vcage{neon_type[0].no}", [b, a]]10181019 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1020 doc: "Fixed-point convert to floating-point"1021 arguments: ["a: {neon_type[0]}"]1022 return_type: "{neon_type[1]}"1023 attr:1024 - *neon-v71025 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vcvt]]}]]1026 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [scvtf]]}]]1027 - *neon-not-arm-stable1028 - *neon-cfg-arm-unstable1029 safety: safe1030 types:1031 - [int32x2_t, float32x2_t]1032 - [int32x4_t, float32x4_t]1033 compose:1034 - FnCall: [simd_cast, [a]]10351036 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1037 doc: "Fixed-point convert to floating-point"1038 arguments: ["a: {neon_type[0]}"]1039 return_type: "{neon_type[1]}"1040 attr:1041 - *neon-v71042 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vcvt]]}]]1043 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [scvtf]]}]]1044 - *neon-fp161045 - *neon-not-arm-stable-fp161046 - *neon-cfg-arm-unstable1047 - *target-not-arm64ec1048 safety: safe1049 types:1050 - [int16x4_t, float16x4_t]1051 - [int16x8_t, float16x8_t]1052 compose:1053 - FnCall: [simd_cast, [a]]10541055 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1056 doc: "Fixed-point convert to floating-point"1057 arguments: ["a: {neon_type[0]}"]1058 return_type: "{neon_type[1]}"1059 attr:1060 - *neon-v71061 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vcvt]]}]]1062 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ucvtf]]}]]1063 - *neon-not-arm-stable1064 - *neon-cfg-arm-unstable1065 safety: safe1066 types:1067 - [uint32x2_t, float32x2_t]1068 - [uint32x4_t, float32x4_t]1069 compose:1070 - FnCall: [simd_cast, [a]]10711072 - name: "vcvt{neon_type[1].no}_{neon_type[0]}"1073 doc: "Fixed-point convert to floating-point"1074 arguments: ["a: {neon_type[0]}"]1075 return_type: "{neon_type[1]}"1076 attr:1077 - *neon-v71078 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vcvt]]}]]1079 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ucvtf]]}]]1080 - *neon-fp161081 - *neon-not-arm-stable-fp161082 - *neon-cfg-arm-unstable1083 - *target-not-arm64ec1084 safety: safe1085 types:1086 - [uint16x4_t, float16x4_t]1087 - [uint16x8_t, float16x8_t]1088 compose:1089 - FnCall: [simd_cast, [a]]10901091 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1092 doc: "Fixed-point convert to floating-point"1093 arguments: ["a: {neon_type[0]}"]1094 return_type: "{neon_type[1]}"1095 attr:1096 - *target-is-arm1097 - *enable-v71098 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [vcvt, 'N = 2']]}]]1099 - FnCall: [rustc_legacy_const_generics, ['1']]1100 - *neon-arm-unstable1101 static_defs: ['const N: i32']1102 safety: safe1103 types:1104 - [uint32x2_t, float32x2_t]1105 - [uint32x4_t, float32x4_t]1106 compose:1107 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1108 - LLVMLink:1109 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1110 arguments:1111 - "a: {neon_type[0]}"1112 - "n: i32"1113 links:1114 - link: "llvm.arm.neon.vcvtfxu2fp.{neon_type[1]}.{neon_type[0]}"1115 arch: arm1116 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", ["a", N], [], true]11171118 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1119 doc: "Fixed-point convert to floating-point"1120 arguments: ["a: {neon_type[0]}"]1121 return_type: "{neon_type[1]}"1122 attr:1123 - FnCall: [cfg, [{FnCall: [not, ['target_arch = "arm"']]}]]1124 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [ucvtf, 'N = 2']]}]]1125 - FnCall: [rustc_legacy_const_generics, ['1']]1126 - *neon-stable1127 static_defs: ['const N: i32']1128 safety: safe1129 types:1130 - [uint32x2_t, float32x2_t]1131 - [uint32x4_t, float32x4_t]1132 compose:1133 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1134 - LLVMLink:1135 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1136 arguments:1137 - "a: {neon_type[0]}"1138 - "n: i32"1139 links:1140 - link: "llvm.aarch64.neon.vcvtfxu2fp.{neon_type[1]}.{neon_type[0]}"1141 arch: aarch64,arm64ec1142 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", ["a", N], [], true]11431144 - name: "vcvt{neon_type[1].N}_{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 - *neon-v81150 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcvt"', 'N = 1']]}]]1151 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ucvtf, 'N = 1']]}]]1152 - FnCall: [rustc_legacy_const_generics, ['1']]1153 - *neon-fp161154 - *neon-not-arm-stable-fp161155 - *neon-cfg-arm-unstable1156 - *target-not-arm64ec1157 static_defs: ['const N: i32']1158 safety: safe1159 types:1160 - [uint16x4_t, float16x4_t]1161 - [uint16x8_t, float16x8_t]1162 compose:1163 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1164 - LLVMLink:1165 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1166 arguments:1167 - "a: {neon_type[0]}"1168 - "n: i32"1169 links:1170 - link: "llvm.arm.neon.vcvtfxu2fp.{neon_type[1]}.{neon_type[0]}"1171 arch: arm1172 - link: "llvm.aarch64.neon.vcvtfxu2fp.{neon_type[1]}.{neon_type[0]}"1173 arch: aarch64,arm64ec1174 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", ["a", N], [], true]117511761177 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1178 doc: "Floating-point convert to signed fixed-point"1179 arguments: ["a: {neon_type[0]}"]1180 return_type: "{neon_type[1]}"1181 attr:1182 - *neon-v81183 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcvt"', 'N = 1']]}]]1184 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcvtzs, 'N = 1']]}]]1185 - FnCall: [rustc_legacy_const_generics, ['1']]1186 - *neon-fp161187 - *neon-not-arm-stable-fp161188 - *neon-cfg-arm-unstable1189 - *target-not-arm64ec1190 static_defs: ['const N: i32']1191 safety: safe1192 types:1193 - [float16x4_t, int16x4_t]1194 - [float16x8_t, int16x8_t]1195 compose:1196 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1197 - LLVMLink:1198 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1199 arguments:1200 - "a: {neon_type[0]}"1201 - "n: i32"1202 links:1203 - link: "llvm.arm.neon.vcvtfp2fxs.{neon_type[1]}.{neon_type[0]}"1204 arch: arm1205 - link: "llvm.aarch64.neon.vcvtfp2fxs.{neon_type[1]}.{neon_type[0]}"1206 arch: aarch64,arm64ec1207 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", [a, N], [], true]120812091210 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1211 doc: "Fixed-point convert to unsigned fixed-point, rounding toward zero"1212 arguments: ["a: {neon_type[0]}"]1213 return_type: "{neon_type[1]}"1214 attr:1215 - *neon-v81216 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcvt"', 'N = 1']]}]]1217 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fcvtzu, 'N = 1']]}]]1218 - FnCall: [rustc_legacy_const_generics, ['1']]1219 - *neon-fp161220 - *neon-not-arm-stable-fp161221 - *neon-cfg-arm-unstable1222 - *target-not-arm64ec1223 static_defs: ['const N: i32']1224 safety: safe1225 types:1226 - [float16x4_t, uint16x4_t]1227 - [float16x8_t, uint16x8_t]1228 compose:1229 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1230 - LLVMLink:1231 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1232 arguments:1233 - "a: {neon_type[0]}"1234 - "n: i32"1235 links:1236 - link: "llvm.arm.neon.vcvtfp2fxu.{neon_type[1]}.{neon_type[0]}"1237 arch: arm1238 - link: "llvm.aarch64.neon.vcvtfp2fxu.{neon_type[1]}.{neon_type[0]}"1239 arch: aarch64,arm64ec1240 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", ["a", N], [], true]12411242 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1243 doc: "Fixed-point convert to floating-point"1244 arguments: ["a: {neon_type[0]}"]1245 return_type: "{neon_type[1]}"1246 attr:1247 - *target-is-arm1248 - *enable-v71249 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [vcvt, 'N = 2']]}]]1250 - FnCall: [rustc_legacy_const_generics, ['1']]1251 - *neon-arm-unstable1252 static_defs: ['const N: i32']1253 safety: safe1254 types:1255 - [int32x2_t, float32x2_t]1256 - [int32x4_t, float32x4_t]1257 compose:1258 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1259 - LLVMLink:1260 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1261 arguments:1262 - "a: {neon_type[0]}"1263 - "n: i32"1264 links:1265 - link: "llvm.arm.neon.vcvtfxs2fp.{neon_type[1]}.{neon_type[0]}"1266 arch: arm1267 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", [a, N], [], true]126812691270 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1271 doc: "Fixed-point convert to floating-point"1272 arguments: ["a: {neon_type[0]}"]1273 return_type: "{neon_type[1]}"1274 attr:1275 - *neon-v81276 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vcvt"', 'N = 1']]}]]1277 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [scvtf, 'N = 1']]}]]1278 - FnCall: [rustc_legacy_const_generics, ['1']]1279 - *neon-fp161280 - *neon-not-arm-stable-fp161281 - *neon-cfg-arm-unstable1282 - *target-not-arm64ec1283 static_defs: ['const N: i32']1284 safety: safe1285 types:1286 - [int16x4_t, float16x4_t]1287 - [int16x8_t, float16x8_t]1288 compose:1289 - FnCall: [static_assert!, ['N >= 1 && N <= 16']]1290 - LLVMLink:1291 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1292 arguments:1293 - "a: {neon_type[0]}"1294 - "n: i32"1295 links:1296 - link: "llvm.arm.neon.vcvtfxs2fp.{neon_type[1]}.{neon_type[0]}"1297 arch: arm1298 - link: "llvm.aarch64.neon.vcvtfxs2fp.{neon_type[1]}.{neon_type[0]}"1299 arch: aarch64,arm64ec1300 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", [a, N], [], true]13011302 - name: "vcvt{neon_type[1].N}_{neon_type[0]}"1303 doc: "Fixed-point convert to floating-point"1304 arguments: ["a: {neon_type[0]}"]1305 return_type: "{neon_type[1]}"1306 attr:1307 - FnCall: [cfg, [{FnCall: [not, ['target_arch = "arm"']]}]]1308 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [scvtf, 'N = 2']]}]]1309 - FnCall: [rustc_legacy_const_generics, ['1']]1310 - *neon-stable1311 static_defs: ['const N: i32']1312 safety: safe1313 types:1314 - [int32x2_t, float32x2_t]1315 - [int32x4_t, float32x4_t]1316 compose:1317 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1318 - LLVMLink:1319 name: "vcvt{neon_type[1].N}_{neon_type[0]}"1320 arguments:1321 - "a: {neon_type[0]}"1322 - "n: i32"1323 links:1324 - link: "llvm.aarch64.neon.vcvtfxs2fp.{neon_type[1]}.{neon_type[0]}"1325 arch: aarch64,arm64ec1326 - FnCall: ["_vcvt{neon_type[1].N}_{neon_type[0]}", [a, N], [], true]13271328 - name: "vcvt{type[2]}"1329 doc: "Floating-point convert to fixed-point, rounding toward zero"1330 arguments: ["a: {neon_type[0]}"]1331 return_type: "{neon_type[1]}"1332 attr:1333 - *target-is-arm1334 - *enable-v71335 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [vcvt, 'N = 2']]}]]1336 - FnCall: [rustc_legacy_const_generics, ['1']]1337 - *neon-arm-unstable1338 static_defs: ['const N: i32']1339 safety: safe1340 types:1341 - [float32x2_t, int32x2_t, _n_s32_f32]1342 - [float32x4_t, int32x4_t, q_n_s32_f32]1343 compose:1344 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1345 - LLVMLink:1346 name: "vcvt{type[2]}"1347 arguments: ["a: {type[0]}", "n: i32"]1348 links:1349 - link: "llvm.arm.neon.vcvtfp2fxs.{neon_type[1]}.{neon_type[0]}"1350 arch: arm1351 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]13521353 - name: "vcvt{type[2]}"1354 doc: "Floating-point convert to fixed-point, rounding toward zero"1355 arguments: ["a: {neon_type[0]}"]1356 return_type: "{neon_type[1]}"1357 attr:1358 - *target-is-arm1359 - *enable-v71360 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [vcvt, 'N = 2']]}]]1361 - FnCall: [rustc_legacy_const_generics, ['1']]1362 - *neon-arm-unstable1363 static_defs: ['const N: i32']1364 safety: safe1365 types:1366 - [float32x2_t, uint32x2_t, _n_u32_f32]1367 - [float32x4_t, uint32x4_t, q_n_u32_f32]1368 compose:1369 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1370 - LLVMLink:1371 name: "vcvt{type[2]}"1372 arguments: ["a: {type[0]}", "n: i32"]1373 links:1374 - link: "llvm.arm.neon.vcvtfp2fxu.{neon_type[1]}.{neon_type[0]}"1375 arch: arm1376 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]13771378 - name: "vcvt{type[2]}"1379 doc: "Floating-point convert to fixed-point, rounding toward zero"1380 arguments: ["a: {neon_type[0]}"]1381 return_type: "{neon_type[1]}"1382 attr:1383 - FnCall: [cfg, [{FnCall: [not, ['target_arch = "arm"']]}]]1384 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzs, 'N = 2']]}]]1385 - FnCall: [rustc_legacy_const_generics, ['1']]1386 - *neon-stable1387 static_defs: ['const N: i32']1388 safety: safe1389 types:1390 - [float32x2_t, int32x2_t, _n_s32_f32]1391 - [float32x4_t, int32x4_t, q_n_s32_f32]1392 compose:1393 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1394 - LLVMLink:1395 name: "vcvt{type[2]}"1396 arguments: ["a: {type[0]}", "n: i32"]1397 links:1398 - link: "llvm.aarch64.neon.vcvtfp2fxs.{neon_type[1]}.{neon_type[0]}"1399 arch: aarch64,arm64ec1400 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]14011402 - name: "vcvt{type[2]}"1403 doc: "Floating-point convert to fixed-point, rounding toward zero"1404 arguments: ["a: {neon_type[0]}"]1405 return_type: "{neon_type[1]}"1406 attr:1407 - FnCall: [cfg, [{FnCall: [not, ['target_arch = "arm"']]}]]1408 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtzu, 'N = 2']]}]]1409 - FnCall: [rustc_legacy_const_generics, ['1']]1410 - *neon-stable1411 static_defs: ['const N: i32']1412 safety: safe1413 types:1414 - [float32x2_t, uint32x2_t, _n_u32_f32]1415 - [float32x4_t, uint32x4_t, q_n_u32_f32]1416 compose:1417 - FnCall: [static_assert!, ['N >= 1 && N <= 32']]1418 - LLVMLink:1419 name: "vcvt{type[2]}"1420 arguments:1421 - "a: {neon_type[0]}"1422 - "n: i32"1423 links:1424 - link: "llvm.aarch64.neon.vcvtfp2fxu.{neon_type[1]}.{neon_type[0]}"1425 arch: aarch64,arm64ec1426 - FnCall: ["_vcvt{type[2]}", [a, N], [], true]14271428 - name: "vdup{type[0]}"1429 doc: "Set all vector lanes to the same value"1430 arguments: ["a: {neon_type[1]}"]1431 return_type: "{neon_type[2]}"1432 attr:1433 - *neon-v71434 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.8"', 'N = 4']]}]]1435 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 4']]}]]1436 - FnCall: [rustc_legacy_const_generics, ['1']]1437 - *neon-not-arm-stable1438 - *neon-cfg-arm-unstable1439 static_defs: ['const N: i32']1440 safety: safe1441 types:1442 - [_lane_s8, int8x8_t, int8x8_t, '3', '[N as u32; 8]']1443 - [q_lane_s8, int8x8_t, int8x16_t, '3', '[N as u32; 16]']1444 - [_lane_u8, uint8x8_t, uint8x8_t, '3', '[N as u32; 8]']1445 - [q_lane_u8, uint8x8_t, uint8x16_t, '3', '[N as u32; 16]']1446 - [_lane_p8, poly8x8_t, poly8x8_t, '3', '[N as u32; 8]']1447 - [q_lane_p8, poly8x8_t, poly8x16_t, '3', '[N as u32; 16]']1448 compose:1449 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1450 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]14511452 - name: "vdup{type[0]}"1453 doc: "Set all vector lanes to the same value"1454 arguments: ["a: {neon_type[1]}"]1455 return_type: "{neon_type[2]}"1456 attr:1457 - *neon-v71458 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.8"', 'N = 8']]}]]1459 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 8']]}]]1460 - FnCall: [rustc_legacy_const_generics, ['1']]1461 - *neon-not-arm-stable1462 - *neon-cfg-arm-unstable1463 static_defs: ['const N: i32']1464 safety: safe1465 types:1466 - [q_laneq_s8, int8x16_t, int8x16_t, '4', '[N as u32; 16]']1467 - [_laneq_s8, int8x16_t, int8x8_t, '4', '[N as u32; 8]']1468 - [q_laneq_u8, uint8x16_t, uint8x16_t, '4', '[N as u32; 16]']1469 - [_laneq_u8, uint8x16_t, uint8x8_t, '4', '[N as u32; 8]']1470 - [q_laneq_p8, poly8x16_t, poly8x16_t, '4', '[N as u32; 16]']1471 - [_laneq_p8, poly8x16_t, poly8x8_t, '4', '[N as u32; 8]']1472 compose:1473 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1474 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]14751476 - name: "vdup{type[0]}"1477 doc: "Set all vector lanes to the same value"1478 arguments: ["a: {neon_type[1]}"]1479 return_type: "{neon_type[2]}"1480 attr:1481 - *neon-v71482 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.16"', 'N = 2']]}]]1483 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 2']]}]]1484 - FnCall: [rustc_legacy_const_generics, ['1']]1485 - *neon-not-arm-stable1486 - *neon-cfg-arm-unstable1487 static_defs: ['const N: i32']1488 safety: safe1489 types:1490 - [_lane_s16, int16x4_t, int16x4_t, '2', '[N as u32; 4]']1491 - [q_lane_s16, int16x4_t, int16x8_t, '2', '[N as u32; 8]']1492 - [_lane_u16, uint16x4_t, uint16x4_t, '2', '[N as u32; 4]']1493 - [q_lane_u16, uint16x4_t, uint16x8_t, '2', '[N as u32; 8]']1494 - [_lane_p16, poly16x4_t, poly16x4_t, '2', '[N as u32; 4]']1495 - [q_lane_p16, poly16x4_t, poly16x8_t, '2', '[N as u32; 8]']1496 compose:1497 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1498 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]14991500 - name: "vdup{type[0]}"1501 doc: "Set all vector lanes to the same value"1502 arguments: ["a: {neon_type[1]}"]1503 return_type: "{neon_type[2]}"1504 attr:1505 - *neon-v71506 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.16"', 'N = 4']]}]]1507 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 4']]}]]1508 - FnCall: [rustc_legacy_const_generics, ['1']]1509 - *neon-not-arm-stable1510 - *neon-cfg-arm-unstable1511 static_defs: ['const N: i32']1512 safety: safe1513 types:1514 - [q_laneq_s16, int16x8_t, int16x8_t, '3', '[N as u32; 8]']1515 - [_laneq_s16, int16x8_t, int16x4_t, '3', '[N as u32; 4]']1516 - [q_laneq_u16, uint16x8_t, uint16x8_t, '3', '[N as u32; 8]']1517 - [_laneq_u16, uint16x8_t, uint16x4_t, '3', '[N as u32; 4]']1518 - [q_laneq_p16, poly16x8_t, poly16x8_t, '3', '[N as u32; 8]']1519 - [_laneq_p16, poly16x8_t, poly16x4_t, '3', '[N as u32; 4]']1520 compose:1521 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1522 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]152315241525 - name: "vdup{type[0]}"1526 doc: "Set all vector lanes to the same value"1527 arguments: ["a: {neon_type[1]}"]1528 return_type: "{neon_type[2]}"1529 attr:1530 - *neon-v71531 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.16"', 'N = 4']]}]]1532 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 4']]}]]1533 - FnCall: [rustc_legacy_const_generics, ['1']]1534 - *arm-fp161535 - *neon-not-arm-stable-fp161536 - *neon-cfg-arm-unstable1537 - *target-not-arm64ec1538 static_defs: ['const N: i32']1539 safety: safe1540 types:1541 - [q_laneq_f16, float16x8_t, float16x8_t, '3', '[N as u32; 8]']1542 - [_laneq_f16, float16x8_t, float16x4_t, '3', '[N as u32; 4]']1543 compose:1544 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1545 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]15461547 - name: "vdup{type[3]}{neon_type[0]}"1548 doc: "Create a new vector with all lanes set to a value"1549 arguments: ["a: {type[1]}"]1550 return_type: "{neon_type[0]}"1551 attr:1552 - *neon-v71553 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.16"']]}]]1554 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup]]}]]1555 - *arm-fp161556 - *neon-unstable-f161557 - *target-not-arm64ec1558 safety: safe1559 types:1560 - [float16x4_t, f16, 'float16x4', '_n_']1561 - [float16x8_t, f16, 'float16x8', 'q_n_']1562 compose:1563 - "{type[2]}_t::splat(a)"15641565 - name: "vdup{type[0]}"1566 doc: "Set all vector lanes to the same value"1567 arguments: ["a: {neon_type[1]}"]1568 return_type: "{neon_type[2]}"1569 attr:1570 - *neon-v71571 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.16"', 'N = 2']]}]]1572 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 2']]}]]1573 - FnCall: [rustc_legacy_const_generics, ['1']]1574 - *arm-fp161575 - *neon-not-arm-stable-fp161576 - *neon-cfg-arm-unstable1577 - *target-not-arm64ec1578 static_defs: ['const N: i32']1579 safety: safe1580 types:1581 - [_lane_f16, float16x4_t, float16x4_t, '2', '[N as u32; 4]']1582 - [q_lane_f16, float16x4_t, float16x8_t, '2', '[N as u32; 8]']1583 compose:1584 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1585 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]158615871588 - name: "vdup{type[0]}"1589 doc: "Set all vector lanes to the same value"1590 arguments: ["a: {neon_type[1]}"]1591 return_type: "{neon_type[2]}"1592 attr:1593 - *neon-v71594 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.32"', 'N = 1']]}]]1595 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 1']]}]]1596 - FnCall: [rustc_legacy_const_generics, ['1']]1597 - *neon-not-arm-stable1598 - *neon-cfg-arm-unstable1599 static_defs: ['const N: i32']1600 safety: safe1601 types:1602 - [_lane_s32, int32x2_t, int32x2_t, '1', '[N as u32, N as u32]']1603 - [q_lane_s32, int32x2_t, int32x4_t, '1', '[N as u32, N as u32, N as u32, N as u32]']1604 - [_lane_u32, uint32x2_t, uint32x2_t, '1', '[N as u32, N as u32]']1605 - [q_lane_u32, uint32x2_t, uint32x4_t, '1', '[N as u32, N as u32, N as u32, N as u32]']1606 - [_lane_f32, float32x2_t, float32x2_t, '1', '[N as u32, N as u32]']1607 - [q_lane_f32, float32x2_t, float32x4_t, '1', '[N as u32, N as u32, N as u32, N as u32]']1608 compose:1609 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1610 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]16111612 - name: "vdup{type[0]}"1613 doc: "Set all vector lanes to the same value"1614 arguments: ["a: {neon_type[1]}"]1615 return_type: "{neon_type[2]}"1616 attr:1617 - *neon-v71618 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vdup.32"', 'N = 2']]}]]1619 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 2']]}]]1620 - FnCall: [rustc_legacy_const_generics, ['1']]1621 - *neon-not-arm-stable1622 - *neon-cfg-arm-unstable1623 static_defs: ['const N: i32']1624 safety: safe1625 types:1626 - [q_laneq_s32, int32x4_t, int32x4_t, '2', '[N as u32, N as u32, N as u32, N as u32]']1627 - [_laneq_s32, int32x4_t, int32x2_t, '2', '[N as u32, N as u32]']1628 - [q_laneq_u32, uint32x4_t, uint32x4_t, '2', '[N as u32, N as u32, N as u32, N as u32]']1629 - [_laneq_u32, uint32x4_t, uint32x2_t, '2', '[N as u32, N as u32]']1630 - [q_laneq_f32, float32x4_t, float32x4_t, '2', '[N as u32, N as u32, N as u32, N as u32]']1631 - [_laneq_f32, float32x4_t, float32x2_t, '2', '[N as u32, N as u32]']1632 compose:1633 - FnCall: [static_assert_uimm_bits!, [N, "{type[3]}"]]1634 - FnCall: [simd_shuffle!, [a, a, "{type[4]}"]]16351636 - name: "vdup{type[0]}"1637 doc: "Set all vector lanes to the same value"1638 arguments: ["a: {neon_type[1]}"]1639 return_type: "{neon_type[1]}"1640 attr:1641 - *neon-v71642 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vmov, 'N = 1']]}]]1643 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 1']]}]]1644 - FnCall: [rustc_legacy_const_generics, ['1']]1645 - *neon-not-arm-stable1646 - *neon-cfg-arm-unstable1647 static_defs: ['const N: i32']1648 safety: safe1649 types:1650 - [q_laneq_s64, int64x2_t, '1', '[N as u32, N as u32]']1651 - [q_laneq_u64, uint64x2_t, '1', '[N as u32, N as u32]']1652 compose:1653 - FnCall: [static_assert_uimm_bits!, [N, "{type[2]}"]]1654 - FnCall: [simd_shuffle!, [a, a, "{type[3]}"]]16551656 - name: "vdup{type[0]}"1657 doc: "Set all vector lanes to the same value"1658 arguments: ["a: {neon_type[1]}"]1659 return_type: "{neon_type[2]}"1660 attr:1661 - *neon-v71662 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vmov, 'N = 0']]}]]1663 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [dup, 'N = 0']]}]]1664 - FnCall: [rustc_legacy_const_generics, ['1']]1665 - *neon-not-arm-stable1666 - *neon-cfg-arm-unstable1667 static_defs: ['const N: i32']1668 safety: safe1669 types:1670 - [q_lane_s64, int64x1_t, int64x2_t]1671 - [q_lane_u64, uint64x1_t, uint64x2_t]1672 compose:1673 - FnCall: [static_assert!, ['N == 0']]1674 - FnCall: [simd_shuffle!, [a, a, '[N as u32, N as u32]']]16751676 - name: "vdup{type[0]}"1677 doc: "Set all vector lanes to the same value"1678 arguments: ["a: {neon_type[1]}"]1679 return_type: "{neon_type[1]}"1680 attr:1681 - *neon-v71682 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [nop, 'N = 0']]}]]1683 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [nop, 'N = 0']]}]]1684 - FnCall: [rustc_legacy_const_generics, ['1']]1685 - *neon-not-arm-stable1686 - *neon-cfg-arm-unstable1687 static_defs: ['const N: i32']1688 safety: safe1689 types:1690 - [_lane_s64, int64x1_t]1691 - [_lane_u64, uint64x1_t]1692 compose:1693 - FnCall: [static_assert!, ['N == 0']]1694 - Identifier: [a, Symbol]16951696 - name: "vdup{type[0]}"1697 doc: "Set all vector lanes to the same value"1698 arguments: ["a: {neon_type[1]}"]1699 return_type: "{neon_type[2]}"1700 attr:1701 - *neon-v71702 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vmov, 'N = 1']]}]]1703 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [nop, 'N = 1']]}]]1704 - FnCall: [rustc_legacy_const_generics, ['1']]1705 - *neon-not-arm-stable1706 - *neon-cfg-arm-unstable1707 static_defs: ['const N: i32']1708 safety: safe1709 types:1710 - [_laneq_s64, int64x2_t, int64x1_t, '::<i64, _>']1711 - [_laneq_u64, uint64x2_t, uint64x1_t, '::<u64, _>']1712 compose:1713 - FnCall: [static_assert_uimm_bits!, [N, 1]]1714 - FnCall:1715 - "transmute{type[3]}"1716 - - FnCall: [simd_extract!, [a, 'N as u32']]17171718 - name: "vext{neon_type[0].no}"1719 doc: "Extract vector from pair of vectors"1720 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1721 return_type: "{neon_type[0]}"1722 attr:1723 - *neon-v71724 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 7']]}]]1725 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 7']]}]]1726 - FnCall: [rustc_legacy_const_generics, ['2']]1727 - *neon-not-arm-stable1728 - *neon-cfg-arm-unstable1729 static_defs: ['const N: i32']1730 safety: safe1731 types:1732 - [int8x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1733 - [int16x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1734 - [uint8x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1735 - [uint16x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1736 - [poly8x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1737 - [poly16x8_t, ' static_assert_uimm_bits!(N, 3);', 'unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1738 compose:1739 - Identifier: ["{type[1]}", Symbol]1740 - Identifier: ["{type[2]}", Symbol]17411742 - name: "vext{neon_type[0].no}"1743 doc: "Extract vector from pair of vectors"1744 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1745 return_type: "{neon_type[0]}"1746 attr:1747 - *neon-v71748 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 15']]}]]1749 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 15']]}]]1750 - FnCall: [rustc_legacy_const_generics, ['2']]1751 - *neon-not-arm-stable1752 - *neon-cfg-arm-unstable1753 static_defs: ['const N: i32']1754 safety: safe1755 types:1756 - [int8x16_t, ' static_assert_uimm_bits!(N, 4);', 'unsafe { match N & 0b1111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]), 8 => simd_shuffle!(a, b, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]), 9 => simd_shuffle!(a, b, [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]), 10 => simd_shuffle!(a, b, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]), 11 => simd_shuffle!(a, b, [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]), 12 => simd_shuffle!(a, b, [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]), 13 => simd_shuffle!(a, b, [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]), 14 => simd_shuffle!(a, b, [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), 15 => simd_shuffle!(a, b, [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]), _ => unreachable_unchecked(), } }']1757 - [uint8x16_t, ' static_assert_uimm_bits!(N, 4);', 'unsafe { match N & 0b1111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]), 8 => simd_shuffle!(a, b, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]), 9 => simd_shuffle!(a, b, [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]), 10 => simd_shuffle!(a, b, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]), 11 => simd_shuffle!(a, b, [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]), 12 => simd_shuffle!(a, b, [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]), 13 => simd_shuffle!(a, b, [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]), 14 => simd_shuffle!(a, b, [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), 15 => simd_shuffle!(a, b, [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]), _ => unreachable_unchecked(), } }']1758 - [poly8x16_t, ' static_assert_uimm_bits!(N, 4);', 'unsafe { match N & 0b1111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]), 8 => simd_shuffle!(a, b, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]), 9 => simd_shuffle!(a, b, [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]), 10 => simd_shuffle!(a, b, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]), 11 => simd_shuffle!(a, b, [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]), 12 => simd_shuffle!(a, b, [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]), 13 => simd_shuffle!(a, b, [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]), 14 => simd_shuffle!(a, b, [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), 15 => simd_shuffle!(a, b, [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]), _ => unreachable_unchecked(), } }']1759 compose:1760 - Identifier: ["{type[1]}", Symbol]1761 - Identifier: ["{type[2]}", Symbol]17621763 - name: "vext{neon_type[0].no}"1764 doc: "Extract vector from pair of vectors"1765 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1766 return_type: "{neon_type[0]}"1767 attr:1768 - *neon-v71769 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 3']]}]]1770 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 3']]}]]1771 - FnCall: [rustc_legacy_const_generics, ['2']]1772 - *neon-not-arm-stable1773 - *neon-cfg-arm-unstable1774 static_defs: ['const N: i32']1775 safety: safe1776 types:1777 - [int16x4_t, 'static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1778 - [int32x4_t, ' static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1779 - [uint16x4_t, ' static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1780 - [uint32x4_t, ' static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1781 - [poly16x4_t, ' static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1782 - [float32x4_t, ' static_assert_uimm_bits!(N, 2);', 'unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1783 compose:1784 - Identifier: ["{type[1]}", Symbol]1785 - Identifier: ["{type[2]}", Symbol]178617871788 - name: "vext{neon_type[0].no}"1789 doc: "Extract vector from pair of vectors"1790 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1791 return_type: "{neon_type[0]}"1792 attr:1793 - *neon-v71794 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 3']]}]]1795 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 3']]}]]1796 - FnCall: [rustc_legacy_const_generics, ['2']]1797 - *neon-fp161798 - *neon-not-arm-stable-fp161799 - *neon-cfg-arm-unstable1800 - *target-not-arm64ec1801 static_defs: ['const N: i32']1802 safety: safe1803 types:1804 - [float16x4_t, ' static_assert_uimm_bits!(N, 2); unsafe { match N & 0b11 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6]), _ => unreachable_unchecked(), } }']1805 compose:1806 - Identifier: ["{type[1]}", Symbol]18071808 - name: "vext{neon_type[0].no}"1809 doc: "Extract vector from pair of vectors"1810 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1811 return_type: "{neon_type[0]}"1812 attr:1813 - *neon-v71814 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 7']]}]]1815 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 7']]}]]1816 - FnCall: [rustc_legacy_const_generics, ['2']]1817 - *neon-fp161818 - *neon-not-arm-stable-fp161819 - *neon-cfg-arm-unstable1820 - *target-not-arm64ec1821 static_defs: ['const N: i32']1822 safety: safe1823 types:1824 - [float16x8_t, ' static_assert_uimm_bits!(N, 3); unsafe { match N & 0b111 { 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]), 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]), 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]), 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]), 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]), 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]), 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]), 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]), _ => unreachable_unchecked(), } }']1825 compose:1826 - Identifier: ["{type[1]}", Symbol]1827182818291830 - name: "vext{neon_type[0].no}"1831 doc: "Extract vector from pair of vectors"1832 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1833 return_type: "{neon_type[0]}"1834 attr:1835 - *neon-v71836 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vext.8"', 'N = 1']]}]]1837 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 1']]}]]1838 - FnCall: [rustc_legacy_const_generics, ['2']]1839 - *neon-not-arm-stable1840 - *neon-cfg-arm-unstable1841 static_defs: ['const N: i32']1842 safety: safe1843 types:1844 - [int32x2_t, ' static_assert_uimm_bits!(N, 1);', 'unsafe { match N & 0b1 { 0 => simd_shuffle!(a, b, [0, 1]), 1 => simd_shuffle!(a, b, [1, 2]), _ => unreachable_unchecked(), } }']1845 - [uint32x2_t, ' static_assert_uimm_bits!(N, 1);', 'unsafe { match N & 0b1 { 0 => simd_shuffle!(a, b, [0, 1]), 1 => simd_shuffle!(a, b, [1, 2]), _ => unreachable_unchecked(), } }']1846 - [float32x2_t, ' static_assert_uimm_bits!(N, 1);', 'unsafe { match N & 0b1 { 0 => simd_shuffle!(a, b, [0, 1]), 1 => simd_shuffle!(a, b, [1, 2]), _ => unreachable_unchecked(), } }']1847 compose:1848 - Identifier: ["{type[1]}", Symbol]1849 - Identifier: ["{type[2]}", Symbol]18501851 - name: "vext{neon_type[0].no}"1852 doc: "Extract vector from pair of vectors"1853 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]1854 return_type: "{neon_type[0]}"1855 attr:1856 - *neon-v71857 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vmov, 'N = 1']]}]]1858 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [ext, 'N = 1']]}]]1859 - FnCall: [rustc_legacy_const_generics, ['2']]1860 - *neon-not-arm-stable1861 - *neon-cfg-arm-unstable1862 static_defs: ['const N: i32']1863 safety: safe1864 types:1865 - [int64x2_t, 'static_assert_uimm_bits!(N, 1);', 'unsafe { match N & 0b1 { 0 => simd_shuffle!(a, b, [0, 1]), 1 => simd_shuffle!(a, b, [1, 2]), _ => unreachable_unchecked(), } }']1866 - [uint64x2_t, 'static_assert_uimm_bits!(N, 1);', 'unsafe { match N & 0b1 { 0 => simd_shuffle!(a, b, [0, 1]), 1 => simd_shuffle!(a, b, [1, 2]), _ => unreachable_unchecked(), } }']1867 compose:1868 - Identifier: ["{type[1]}", Symbol]1869 - Identifier: ["{type[2]}", Symbol]18701871 - name: "vmla{neon_type[0].no}"1872 doc: "Multiply-add to accumulator"1873 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}", "c: {neon_type[0]}"]1874 return_type: "{neon_type[0]}"1875 attr:1876 - *neon-v71877 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmla{type[1]}"']]}]]1878 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [mla]]}]]1879 - *neon-not-arm-stable1880 - *neon-cfg-arm-unstable1881 safety: safe1882 types:1883 - [int8x8_t, ".i8"]1884 - [int8x16_t, ".i8"]1885 - [uint8x8_t, ".i8"]1886 - [uint8x16_t, ".i8"]1887 - [int16x4_t, ".i16"]1888 - [int16x8_t, ".i16"]1889 - [uint16x4_t, ".i16"]1890 - [uint16x8_t, ".i16"]1891 - [int32x2_t, ".i32"]1892 - [int32x4_t, ".i32"]1893 - [uint32x2_t, ".i32"]1894 - [uint32x4_t, ".i32"]1895 compose:1896 - FnCall: [simd_add, [a, {FnCall: [simd_mul, [b, c]]}]]18971898 - name: "vmla{neon_type.no}"1899 doc: "Floating-point multiply-add to accumulator"1900 arguments: ["a: {neon_type}", "b: {neon_type}", "c: {neon_type}"]1901 return_type: "{neon_type}"1902 attr:1903 - *neon-v71904 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmla.f32"']]}]]1905 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [fmul]]}]]1906 - *neon-not-arm-stable1907 - *neon-cfg-arm-unstable1908 safety: safe1909 types:1910 - float32x2_t1911 - float32x4_t1912 compose:1913 - FnCall: [simd_add, [a, {FnCall: [simd_mul, [b, c]]}]]19141915 - name: "vmlal{neon_type[1].no}"1916 doc: "Signed multiply-add long"1917 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}", "c: {neon_type[1]}"]1918 return_type: "{neon_type[0]}"1919 attr:1920 - *neon-v71921 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmlal.{type[2]}"']]}]]1922 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [smlal]]}]]1923 - *neon-not-arm-stable1924 - *neon-cfg-arm-unstable1925 safety: safe1926 types:1927 - [int16x8_t, int8x8_t, "s8"]1928 - [int32x4_t, int16x4_t, "s16"]1929 - [int64x2_t, int32x2_t, "s32"]1930 compose:1931 - FnCall: [simd_add, [a, {FnCall: ["vmull_{type[2]}", [b, c]]}]]19321933 - name: "vmlal_n_{type[4]}"1934 doc: "Vector widening multiply accumulate with scalar"1935 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}", "c: {type[2]}"]1936 return_type: "{neon_type[0]}"1937 attr:1938 - *neon-v71939 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmlal.{type[4]}"']]}]]1940 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [smlal]]}]]1941 - *neon-not-arm-stable1942 - *neon-cfg-arm-unstable1943 safety: safe1944 types:1945 - [int32x4_t, int16x4_t, "i16", int32x4_t, 's16']1946 - [int64x2_t, int32x2_t, "i32", int64x2_t, 's32']1947 compose:1948 - FnCall:1949 - "vmlal{neon_type[1].noq}"1950 - - a1951 - b1952 - FnCall: ["vdup_n_{neon_type[1]}", [c]]19531954 - name: "vmlal_n_{type[2]}"1955 doc: "Vector widening multiply accumulate with scalar"1956 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}", "c: {type[2]}"]1957 return_type: "{neon_type[0]}"1958 attr:1959 - *neon-v71960 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmlal.{type[2]}"']]}]]1961 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [umlal]]}]]1962 - *neon-not-arm-stable1963 - *neon-cfg-arm-unstable1964 safety: safe1965 types:1966 - [uint32x4_t, uint16x4_t, "u16", uint32x4_t]1967 - [uint64x2_t, uint32x2_t, "u32", uint64x2_t]1968 compose:1969 - FnCall:1970 - "vmlal{neon_type[1].noq}"1971 - - a1972 - b1973 - FnCall: ["vdup_n_{neon_type[1]}", [c]]19741975 - name: "vmlal_lane{neon_type[2].no}"1976 doc: "Vector widening multiply accumulate with scalar"1977 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}", "c: {neon_type[2]}"]1978 return_type: "{neon_type[0]}"1979 attr:1980 - *neon-v71981 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vmlal.{neon_type[1]}"', 'LANE = 1']]}]]1982 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [smlal, 'LANE = 1']]}]]1983 - FnCall: [rustc_legacy_const_generics, ['3']]1984 - *neon-not-arm-stable1985 - *neon-cfg-arm-unstable1986 static_defs: ['const LANE: i32']1987 safety: safe1988 types:1989 - [int32x4_t, int16x4_t, int16x4_t, '2', '[LANE as u32, LANE as u32, LANE as u32, LANE as u32]']1990 - [int32x4_t, int16x4_t, int16x8_t, '3', '[LANE as u32, LANE as u32, LANE as u32, LANE as u32]']1991 - [int64x2_t, int32x2_t, int32x2_t, '1', '[LANE as u32, LANE as u32]']1992 - [int64x2_t, int32x2_t, int32x4_t, '2', '[LANE as u32, LANE as u32]']1993 compose:1994 - FnCall: [static_assert_uimm_bits!, [LANE, "{type[3]}"]]1995 - FnCall:1996 - "vmlal_{neon_type[1]}"1997 - - a1998 - b1999 - FnCall: [simd_shuffle!, [c, c, '{type[4]}']]
Findings
✓ No findings reported for this file.