library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml YAML 14,351 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 14,351.
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.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.