library/stdarch/crates/stdarch-gen-arm/spec/sve/aarch64.spec.yml YAML 5,202 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 5,202.
1arch_cfgs:2  - arch_name: aarch643    target_feature: [sve]4    llvm_prefix: llvm.aarch64.sve56uses_neon_types: true7auto_llvm_sign_conversion: true8generate_load_store_tests: true910# `#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]`11sve-unstable: &sve-unstable12  FnCall: [unstable, ['feature = "stdarch_aarch64_sve"', 'issue= "145052"']]1314intrinsics:15  - name: svacge[{_n}_{type}]16    attr: [*sve-unstable]17    doc: Absolute compare greater than or equal to18    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]19    return_type: "{predicate}"20    types: [f32, f64]21    assert_instr: [facge]22    n_variant_op: op223    compose:24      - LLVMLink: { name: "facge.{sve_type}" }2526  - name: svacgt[{_n}_{type}]27    attr: [*sve-unstable]28    doc: Absolute compare greater than29    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]30    return_type: "{predicate}"31    types: [f32, f64]32    assert_instr: [facgt]33    n_variant_op: op234    compose:35      - LLVMLink: { name: "facgt.{sve_type}" }3637  - name: svacle[{_n}_{type}]38    attr: [*sve-unstable]39    doc: Absolute compare less than or equal to40    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]41    return_type: "{predicate}"42    types: [f32, f64]43    assert_instr: [facge]44    n_variant_op: op245    compose:46      - FnCall: ["svacge_{type}", [$pg, $op2, $op1]]4748  - name: svaclt[{_n}_{type}]49    attr: [*sve-unstable]50    doc: Absolute compare less than51    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]52    return_type: "{predicate}"53    types: [f32, f64]54    assert_instr: [facgt]55    n_variant_op: op256    compose:57      - FnCall: ["svacgt_{type}", [$pg, $op2, $op1]]5859  - name: svcadd[_{type}]{_mxz}60    attr: [*sve-unstable]61    doc: Complex add with rotate62    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]63    return_type: "{sve_type}"64    types: [f32, f64]65    static_defs: ["const IMM_ROTATION: i32"]66    constraints: [{ variable: IMM_ROTATION, any_values: [90, 270] }]67    assert_instr: [[fcadd, "IMM_ROTATION = 90"]]68    zeroing_method: { select: op1 }69    compose:70      - LLVMLink:71          name: fcadd.{sve_type}72          arguments:73            - "pg: {predicate}"74            - "op1: {sve_type}"75            - "op2: {sve_type}"76            - "imm_rotation: i32"77      - FnCall: ["{llvm_link}", [$pg, $op1, $op2, $IMM_ROTATION]]7879  - name: svcmla[_{type}]{_mxz}80    attr: [*sve-unstable]81    doc: Complex multiply-add with rotate82    arguments:83      - "pg: {predicate}"84      - "op1: {sve_type}"85      - "op2: {sve_type}"86      - "op3: {sve_type}"87    return_type: "{sve_type}"88    types: [f32, f64]89    static_defs: ["const IMM_ROTATION: i32"]90    constraints: [{ variable: IMM_ROTATION, any_values: [0, 90, 180, 270] }]91    assert_instr: [[fcmla, "IMM_ROTATION = 90"]]92    zeroing_method: { select: op1 }93    compose:94      - LLVMLink:95          name: fcmla.{sve_type}96          arguments:97            - "pg: {predicate}"98            - "op1: {sve_type}"99            - "op2: {sve_type}"100            - "op3: {sve_type}"101            - "imm_rotation: i32"102      - FnCall: ["{llvm_link}", [$pg, $op1, $op2, $op3, $IMM_ROTATION]]103104  - name: svcmla_lane[_{type}]105    attr: [*sve-unstable]106    doc: Complex multiply-add with rotate107    arguments: ["op1: {sve_type}", "op2: {sve_type}", "op3: {sve_type}"]108    return_type: "{sve_type}"109    types: [f32]110    static_defs: ["const IMM_INDEX: i32", "const IMM_ROTATION: i32"]111    constraints:112      - variable: IMM_INDEX113        range: { match_size: "{type}", default: [0, 1], halfword: [0, 3] }114      - { variable: IMM_ROTATION, any_values: [0, 90, 180, 270] }115    assert_instr: [[fcmla, "IMM_INDEX = 0, IMM_ROTATION = 90"]]116    compose:117      - LLVMLink:118          name: fcmla.lane.x.{sve_type}119          arguments:120            - "op1: {sve_type}"121            - "op2: {sve_type}"122            - "op3: {sve_type}"123            - "imm_index: i32"124            - "imm_rotation: i32"125      - FnCall: ["{llvm_link}", [$op1, $op2, $op3, $IMM_INDEX, $IMM_ROTATION]]126127  - name: svadd[{_n}_{type}]{_mxz}128    attr: [*sve-unstable]129    doc: Add130    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]131    return_type: "{sve_type}"132    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]133    zeroing_method: { select: op1 }134    assert_instr: ["{type_kind.f}add"]135    n_variant_op: op2136    compose:137      - LLVMLink: { name: "{type_kind.f}add.{sve_type}" }138139  - name: svqsub[{_n}_{type}]140    attr: [*sve-unstable]141    doc: Saturating subtract142    arguments: ["op1: {sve_type}", "op2: {sve_type}"]143    return_type: "{sve_type}"144    types: [i8, i16, i32, i64, u8, u16, u32, u64]145    assert_instr: ["{type_kind.su}qsub"]146    n_variant_op: op2147    compose:148      - LLVMLink: { name: "{type_kind.su}qsub.x.{sve_type}" }149150  - name: svcnt[_{type[0]}]{_mxz}151    attr: [*sve-unstable]152    doc: Count nonzero bits153    arguments:154      ["inactive: {sve_type[1]}", "pg: {predicate[0]}", "op: {sve_type[0]}"]155    return_type: "{sve_type[1]}"156    types:157      - [f32, u32]158      - [f64, u64]159      - [i8, u8]160      - [i16, u16]161      - [i32, u32]162      - [i64, u64]163      - [u8, u8]164      - [u16, u16]165      - [u32, u32]166      - [u64, u64]167    zeroing_method: { drop: inactive }168    assert_instr: [cnt]169    compose:170      - LLVMLink: { name: "cnt.{sve_type[0]}" }171172  - name: svcls[_{type[0]}]{_mxz}173    attr: [*sve-unstable]174    doc: Count leading sign bits175    arguments:176      ["inactive: {sve_type[1]}", "pg: {predicate[0]}", "op: {sve_type[0]}"]177    return_type: "{sve_type[1]}"178    types: [[i8, u8], [i16, u16], [i32, u32], [i64, u64]]179    zeroing_method: { drop: inactive }180    assert_instr: [cls]181    compose:182      - LLVMLink: { name: "cls.{sve_type[0]}" }183184  - name: svclz[_{type[0]}]{_mxz}185    attr: [*sve-unstable]186    doc: Count leading zero bits187    arguments:188      ["inactive: {sve_type[1]}", "pg: {predicate[0]}", "op: {sve_type[0]}"]189    return_type: "{sve_type[1]}"190    types:191      - [i8, u8]192      - [i16, u16]193      - [i32, u32]194      - [i64, u64]195      - [u8, u8]196      - [u16, u16]197      - [u32, u32]198      - [u64, u64]199    zeroing_method: { drop: inactive }200    assert_instr: [clz]201    compose:202      - LLVMLink: { name: "clz.{sve_type[0]}" }203204  - name: svext{size_literal[1]}[_{type[0]}]{_mxz}205    attr: [*sve-unstable]206    substitutions:207      sign_or_zero:208        match_kind: "{type[0]}"209        default: Sign210        unsigned: Zero211      kind_literal: { match_kind: "{type[0]}", default: s, unsigned: u }212    doc: "{sign_or_zero}-extend the low {size[1]} bits"213    arguments:214      ["inactive: {sve_type[0]}", "pg: {predicate[0]}", "op: {sve_type[0]}"]215    return_type: "{sve_type[0]}"216    types:217      - [[i16, i32, i64, u16, u32, u64], i8]218      - [[i32, i64, u32, u64], i16]219      - [[i64, u64], i32]220    zeroing_method: { drop: inactive }221    assert_instr: ["{type_kind[0].su}xt{size_literal[1]}"]222    compose:223      - LLVMLink:224          name: "{type_kind[0].su}xt{size_literal[1]}.{sve_type[0]}"225226  - name: svsqrt[_{type}]{_mxz}227    attr: [*sve-unstable]228    doc: Square root229    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {sve_type}"]230    return_type: "{sve_type}"231    types: [f32, f64]232    zeroing_method: { drop: inactive }233    assert_instr: [fsqrt]234    compose:235      - LLVMLink: { name: "fsqrt.{sve_type}" }236237  - name: svcmpeq[{_n}_{type}]238    attr: [*sve-unstable]239    doc: Compare equal to240    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]241    return_type: "{predicate}"242    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]243    assert_instr: [{ float: fcmeq, default: cmpeq }]244    n_variant_op: op2245    compose:246      - LLVMLink: { name: "{type_kind.f}cmpeq.{sve_type}" }247248  - name: svcmpeq_wide[{_n}_{type[0]}]249    attr: [*sve-unstable]250    doc: Compare equal to251    arguments:252      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]253    return_type: "{predicate[0]}"254    types:255      - [[i8, i16, i32], i64]256    assert_instr: [cmpeq]257    n_variant_op: op2258    compose:259      - LLVMLink: { name: "cmpeq.wide.{sve_type[0]}" }260261  - name: svcmpge[{_n}_{type}]262    attr: [*sve-unstable]263    doc: Compare greater than or equal to264    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]265    return_type: "{predicate}"266    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]267    assert_instr: [{ float: fcmge, default: cmpge, unsigned: cmphs }]268    n_variant_op: op2269    compose:270      - MatchKind:271          - "{type}"272          - default:273              LLVMLink: { name: "{type_kind.f}cmpge.{sve_type}" }274            unsigned:275              LLVMLink: { name: "cmphs.{sve_type}" }276277  - name: svcmpge_wide[{_n}_{type[0]}]278    attr: [*sve-unstable]279    doc: Compare greater than or equal to280    arguments:281      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]282    return_type: "{predicate[0]}"283    n_variant_op: op2284    types:285      - [[i8, i16, i32], i64]286      - [[u8, u16, u32], u64]287    assert_instr: [{ default: cmpge, unsigned: cmphs }]288    compose:289      - MatchKind:290          - "{type[0]}"291          - default:292              LLVMLink: { name: "cmpge.wide.{sve_type[0]}" }293            unsigned:294              LLVMLink: { name: "cmphs.wide.{sve_type[0]}" }295296  - name: svcmpgt[{_n}_{type}]297    attr: [*sve-unstable]298    doc: Compare greater than299    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]300    return_type: "{predicate}"301    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]302    assert_instr: [{ float: fcmgt, default: cmpgt, unsigned: cmphi }]303    n_variant_op: op2304    compose:305      - MatchKind:306          - "{type}"307          - default:308              LLVMLink: { name: "{type_kind.f}cmpgt.{sve_type}" }309            unsigned:310              LLVMLink: { name: "cmphi.{sve_type}" }311312  - name: svcmpgt_wide[{_n}_{type[0]}]313    attr: [*sve-unstable]314    doc: Compare greater than315    arguments:316      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]317    return_type: "{predicate[0]}"318    types:319      - [[i8, i16, i32], i64]320      - [[u8, u16, u32], u64]321    assert_instr: [{ default: cmpgt, unsigned: cmphi }]322    n_variant_op: op2323    compose:324      - MatchKind:325          - "{type[0]}"326          - default:327              LLVMLink: { name: "cmpgt.wide.{sve_type[0]}" }328            unsigned:329              LLVMLink: { name: "cmphi.wide.{sve_type[0]}" }330331  - name: svcmple[{_n}_{type}]332    attr: [*sve-unstable]333    doc: Compare less than or equal to334    arguments: ["pg: svbool_t", "op1: {sve_type}", "op2: {sve_type}"]335    return_type: "svbool_t"336    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]337    assert_instr: [{ float: fcmge, default: cmpge, unsigned: cmphs }]338    n_variant_op: op2339    compose:340      - FnCall: ["svcmpge_{type}", [$pg, $op2, $op1]]341342  - name: svcmple_wide[{_n}_{type[0]}]343    attr: [*sve-unstable]344    doc: Compare less than or equal to345    arguments:346      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]347    return_type: "{predicate[0]}"348    types:349      - [[i8, i16, i32], i64]350      - [[u8, u16, u32], u64]351    assert_instr: [{ default: cmple, unsigned: cmpls }]352    n_variant_op: op2353    compose:354      - MatchKind:355          - "{type[0]}"356          - default:357              LLVMLink: { name: "cmple.wide.{sve_type[0]}" }358            unsigned:359              LLVMLink: { name: "cmpls.wide.{sve_type[0]}" }360361  - name: svcmplt[{_n}_{type}]362    attr: [*sve-unstable]363    doc: Compare less than364    arguments: ["pg: svbool_t", "op1: {sve_type}", "op2: {sve_type}"]365    return_type: "svbool_t"366    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]367    assert_instr: [{ float: fcmgt, default: cmpgt, unsigned: cmphi }]368    n_variant_op: op2369    compose:370      - FnCall: ["svcmpgt_{type}", [$pg, $op2, $op1]]371372  - name: svcmplt_wide[{_n}_{type[0]}]373    attr: [*sve-unstable]374    doc: Compare less than375    arguments:376      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]377    return_type: "{predicate[0]}"378    types:379      - [[i8, i16, i32], i64]380      - [[u8, u16, u32], u64]381    assert_instr: [{ default: cmplt, unsigned: cmplo }]382    n_variant_op: op2383    compose:384      - MatchKind:385          - "{type[0]}"386          - default:387              LLVMLink: { name: "cmplt.wide.{sve_type[0]}" }388            unsigned:389              LLVMLink: { name: "cmplo.wide.{sve_type[0]}" }390391  - name: svcmpne[{_n}_{type}]392    attr: [*sve-unstable]393    doc: Compare not equal to394    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]395    return_type: "{predicate}"396    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]397    assert_instr: [{ float: fcmne, default: cmpne }]398    n_variant_op: op2399    compose:400      - LLVMLink: { name: "{type_kind.f}cmpne.{sve_type}" }401402  - name: svcmpne_wide[{_n}_{type[0]}]403    attr: [*sve-unstable]404    doc: Compare not equal to405    arguments:406      ["pg: {predicate[0]}", "op1: {sve_type[0]}", "op2: {sve_type[1]}"]407    return_type: "{predicate[0]}"408    types: [[[i8, i16, i32], i64]]409    assert_instr: [cmpne]410    n_variant_op: op2411    compose:412      - LLVMLink: { name: "cmpne.wide.{sve_type[0]}" }413414  - name: svcmpuo[{_n}_{type}]415    attr: [*sve-unstable]416    doc: Compare unordered with417    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]418    return_type: "{predicate}"419    types: [f32, f64]420    assert_instr: [fcmuo]421    n_variant_op: op2422    compose:423      - LLVMLink: { name: "fcmpuo.{sve_type}" }424425  - name: svcnt{size_literal}426    attr: [*sve-unstable]427    doc: Count the number of {size}-bit elements in a vector428    arguments: []429    return_type: u64430    types: [i8, i16, i32, i64]431    assert_instr:432      - default: { byte: rdvl, halfword: cnth, default: cntw, doubleword: cntd }433    compose:434      - FnCall: ["svcnt{size_literal}_pat", [], ["{{ svpattern::SV_ALL }}"]]435436  - name: svcnt{size_literal}_pat437    attr: [*sve-unstable]438    doc: Count the number of {size}-bit elements in a vector439    arguments: []440    static_defs: ["const PATTERN: svpattern"]441    return_type: u64442    assert_instr:443      - [rdvl, "PATTERN = {{ svpattern::SV_ALL }}"]444      - ["cnt{size_literal}", "PATTERN = {{ svpattern::SV_MUL4 }}"]445    types: [i8]446    compose:447      - LLVMLink:448          name: cnt{size_literal}449          arguments: ["pattern: svpattern"]450      - FnCall: ["{llvm_link}", [$PATTERN]]451452  - name: svcnt{size_literal}_pat453    attr: [*sve-unstable]454    doc: Count the number of {size}-bit elements in a vector455    arguments: []456    static_defs: ["const PATTERN: svpattern"]457    return_type: u64458    assert_instr: [["cnt{size_literal}", "PATTERN = {{ svpattern::SV_ALL }}"]]459    types: [i16, i32, i64]460    compose:461      - LLVMLink:462          name: cnt{size_literal}463          arguments: ["pattern: svpattern"]464      - FnCall: ["{llvm_link}", [$PATTERN]]465466  - name: svlen[_{type}]467    attr: [*sve-unstable]468    doc: Count the number of elements in a full vector469    arguments: ["_op: {sve_type}"]470    return_type: "u64"471    types: [i8, u8, i16, u16, i32, u32, f32, i64, u64, f64]472    assert_instr: [{ default: { default: "cnt{size_literal}", byte: rdvl } }]473    compose:474      - FnCall: ["svcnt{size_literal}", []]475476  - name: svdup[_n]_{type}477    attr: [*sve-unstable]478    doc: Broadcast a scalar value479    arguments: ["op: {type}"]480    return_type: "{sve_type}"481    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]482    assert_instr: [mov]483    compose:484      - LLVMLink: { name: "dup.x.{sve_type}" }485486  - name: svdup[_n]_{type}{_mxz}487    attr: [*sve-unstable]488    doc: Broadcast a scalar value489    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {type}"]490    return_type: "{sve_type}"491    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]492    zeroing_method: { drop: inactive }493    assert_instr: [mov]494    compose:495      - LLVMLink: { name: "dup.{sve_type}" }496497  - name: svdup[_n]_{type}498    attr: [*sve-unstable]499    doc: Broadcast a scalar value500    arguments: ["op: bool"]501    return_type: "{predicate}"502    types: [b8, b16, b32, b64]503    assert_instr: [sbfx, whilelo]504    compose:505      - LLVMLink: { name: "dup.x.{sve_type}" }506507  - name: svdup_lane[_{type[0]}]508    attr: [*sve-unstable]509    doc: Broadcast a scalar value510    arguments: ["data: {sve_type[0]}", "index: {type[1]}"]511    return_type: "{sve_type[0]}"512    types:513      - [f32, u32]514      - [f64, u64]515      - [i8, u8]516      - [i16, u16]517      - [i32, u32]518      - [i64, u64]519      - [u8, u8]520      - [u16, u16]521      - [u32, u32]522      - [u64, u64]523    assert_instr: [tbl]524    compose:525      - FnCall:526          - svtbl_{type[0]}527          - - $data528            - FnCall: ["svdup_n_{type[1]}", [$index]]529530  - name: svdupq_lane[_{type}]531    attr: [*sve-unstable]532    doc: Broadcast a quadword of scalars533    arguments: ["data: {sve_type}", "index: u64"]534    return_type: "{sve_type}"535    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]536    assert_instr: [tbl]537    compose:538      - LLVMLink: { name: "dupq.lane.{sve_type}" }539540  - name: svdupq[_n]_{type}541    attr: [*sve-unstable]542    doc: Broadcast a quadword of scalars543    arguments:544      - "x0: {type}"545      - "x1: {type}"546      - "x2: {type}"547      - "x3: {type}"548      - "x4: {type}"549      - "x5: {type}"550      - "x6: {type}"551      - "x7: {type}"552      - "x8: {type}"553      - "x9: {type}"554      - "x10: {type}"555      - "x11: {type}"556      - "x12: {type}"557      - "x13: {type}"558      - "x14: {type}"559      - "x15: {type}"560    return_type: "{sve_type}"561    types: [i8, u8]562    assert_instr: []563    compose:564      - LLVMLink:565          name: llvm.experimental.vector.insert.{sve_type}.{neon_type}566          arguments: ["op0: {sve_type}", "op1: {neon_type}", "idx: i64"]567      - Let:568          - op569          - FnCall:570              - "{llvm_link}"571              - - FnCall: ["svundef_{type}", [], [], true]572                - FnCall:573                    - "crate::mem::transmute"574                    - - - $x0575                        - $x1576                        - $x2577                        - $x3578                        - $x4579                        - $x5580                        - $x6581                        - $x7582                        - $x8583                        - $x9584                        - $x10585                        - $x11586                        - $x12587                        - $x13588                        - $x14589                        - $x15590                - 0591      - FnCall: ["svdupq_lane_{type}", [$op, 0]]592593  - name: svdupq[_n]_{type}594    attr: [*sve-unstable]595    doc: Broadcast a quadword of scalars596    types: [b8]597    arguments:598      - "x0: bool"599      - "x1: bool"600      - "x2: bool"601      - "x3: bool"602      - "x4: bool"603      - "x5: bool"604      - "x6: bool"605      - "x7: bool"606      - "x8: bool"607      - "x9: bool"608      - "x10: bool"609      - "x11: bool"610      - "x12: bool"611      - "x13: bool"612      - "x14: bool"613      - "x15: bool"614    return_type: "svbool_t"615    assert_instr: []616    compose:617      - Let:618          - op1619          - FnCall:620              - svdupq_n_s8621              - - CastAs: [$x0, i8]622                - CastAs: [$x1, i8]623                - CastAs: [$x2, i8]624                - CastAs: [$x3, i8]625                - CastAs: [$x4, i8]626                - CastAs: [$x5, i8]627                - CastAs: [$x6, i8]628                - CastAs: [$x7, i8]629                - CastAs: [$x8, i8]630                - CastAs: [$x9, i8]631                - CastAs: [$x10, i8]632                - CastAs: [$x11, i8]633                - CastAs: [$x12, i8]634                - CastAs: [$x13, i8]635                - CastAs: [$x14, i8]636                - CastAs: [$x15, i8]637      - FnCall:638          - svcmpne_wide_s8639          - - FnCall: [svptrue_b8, []]640            - $op1641            - FnCall: [svdup_n_s64, [0]]642643  - name: svdupq[_n]_{type}644    attr: [*sve-unstable]645    doc: Broadcast a quadword of scalars646    arguments:647      - "x0: {type}"648      - "x1: {type}"649      - "x2: {type}"650      - "x3: {type}"651      - "x4: {type}"652      - "x5: {type}"653      - "x6: {type}"654      - "x7: {type}"655    return_type: "{sve_type}"656    types: [i16, u16]657    assert_instr: []658    compose:659      - LLVMLink:660          name: llvm.experimental.vector.insert.{sve_type}.{neon_type}661          arguments: ["op0: {sve_type}", "op1: {neon_type}", "idx: i64"]662      - Let:663          - op664          - FnCall:665              - "{llvm_link}"666              - - FnCall: ["svundef_{type}", [], [], true]667                - FnCall:668                    - "crate::mem::transmute"669                    - - [$x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7]670                - 0671      - FnCall: ["svdupq_lane_{type}", [$op, 0]]672673  - name: svdupq[_n]_{type}674    attr: [*sve-unstable]675    doc: Broadcast a quadword of scalars676    types: [b16]677    arguments:678      - "x0: bool"679      - "x1: bool"680      - "x2: bool"681      - "x3: bool"682      - "x4: bool"683      - "x5: bool"684      - "x6: bool"685      - "x7: bool"686    return_type: svbool_t687    assert_instr: []688    compose:689      - Let:690          - op1691          - FnCall:692              - svdupq_n_s16693              - - CastAs: [$x0, i16]694                - CastAs: [$x1, i16]695                - CastAs: [$x2, i16]696                - CastAs: [$x3, i16]697                - CastAs: [$x4, i16]698                - CastAs: [$x5, i16]699                - CastAs: [$x6, i16]700                - CastAs: [$x7, i16]701      - FnCall:702          - svcmpne_wide_s16703          - - FnCall: [svptrue_b16, []]704            - $op1705            - FnCall: [svdup_n_s64, [0]]706707  - name: svdupq[_n]_{type}708    attr: [*sve-unstable]709    doc: Broadcast a quadword of scalars710    arguments: ["x0: {type}", "x1: {type}", "x2: {type}", "x3: {type}"]711    return_type: "{sve_type}"712    types: [f32, i32, u32]713    assert_instr: []714    compose:715      - LLVMLink:716          name: llvm.experimental.vector.insert.{sve_type}.{neon_type}717          arguments: ["op0: {sve_type}", "op1: {neon_type}", "idx: i64"]718      - Let:719          - op720          - FnCall:721              - "{llvm_link}"722              - - FnCall: ["svundef_{type}", [], [], true]723                - FnCall: ["crate::mem::transmute", [[$x0, $x1, $x2, $x3]]]724                - 0725      - FnCall: ["svdupq_lane_{type}", [$op, 0]]726727  - name: svdupq[_n]_{type}728    attr: [*sve-unstable]729    doc: Broadcast a quadword of scalars730    types: [b32]731    arguments: ["x0: bool", "x1: bool", "x2: bool", "x3: bool"]732    return_type: "svbool_t"733    assert_instr: []734    compose:735      - Let:736          - op1737          - FnCall:738              - svdupq_n_s32739              - - CastAs: [$x0, i32]740                - CastAs: [$x1, i32]741                - CastAs: [$x2, i32]742                - CastAs: [$x3, i32]743      - FnCall:744          - svcmpne_wide_s32745          - - FnCall: [svptrue_b32, []]746            - $op1747            - FnCall: [svdup_n_s64, [0]]748749  - name: svdupq[_n]_{type}750    attr: [*sve-unstable]751    doc: Broadcast a quadword of scalars752    arguments: ["x0: {type}", "x1: {type}"]753    return_type: "{sve_type}"754    types: [f64, i64, u64]755    assert_instr: []756    compose:757      - LLVMLink:758          name: llvm.experimental.vector.insert.{sve_type}.{neon_type}759          arguments: ["op0: {sve_type}", "op1: {neon_type}", "idx: i64"]760      - Let:761          - op762          - FnCall:763              - "{llvm_link}"764              - - FnCall: ["svundef_{type}", [], [], true]765                - FnCall: ["crate::mem::transmute", [[$x0, $x1]]]766                - 0767      - FnCall: ["svdupq_lane_{type}", [$op, 0]]768769  - name: svdupq[_n]_{type}770    attr: [*sve-unstable]771    doc: Broadcast a quadword of scalars772    types: [b64]773    arguments: ["x0: bool", "x1: bool"]774    return_type: "svbool_t"775    assert_instr: []776    compose:777      - Let:778          - op1779          - FnCall: [svdupq_n_s64, [CastAs: [$x0, i64], CastAs: [$x1, i64]]]780      - FnCall:781          - svcmpne_s64782          - - FnCall: [svptrue_b64, []]783            - $op1784            - FnCall: [svdup_n_s64, [0]]785786  - name: svcreate2[_{type}]787    attr: [*sve-unstable]788    doc: Create a tuple of two vectors789    arguments: ["x0: {sve_type}", "x1: {sve_type}"]790    return_type: "{sve_type_x2}"791    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]792    assert_instr: []793    compose:794      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_create2", [$x0, $x1], [], true]795796  - name: svcreate3[_{type}]797    attr: [*sve-unstable]798    doc: Create a tuple of three vectors799    arguments: ["x0: {sve_type}", "x1: {sve_type}", "x2: {sve_type}"]800    return_type: "{sve_type_x3}"801    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]802    assert_instr: []803    compose:804      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_create3", [$x0, $x1, $x2], [], true]805806  - name: svcreate4[_{type}]807    attr: [*sve-unstable]808    doc: Create a tuple of four vectors809    arguments:810      ["x0: {sve_type}", "x1: {sve_type}", "x2: {sve_type}", "x3: {sve_type}"]811    return_type: "{sve_type_x4}"812    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]813    assert_instr: []814    compose:815      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_create4", [$x0, $x1, $x2, $x3], [], true]816817  - name: svundef_{type}818    attr: [*sve-unstable]819    safety:820      unsafe: [uninitialized]821    doc: Create an uninitialized vector822    arguments: []823    return_type: "{sve_type}"824    types: [i8, i16, i32, i64, u8, u16, u32, u64]825    assert_instr: []826    compose:827      - FnCall: ["svdup_n_{type}", ["0"]]828829  - name: svundef_{type}830    attr: [*sve-unstable]831    safety:832      unsafe: [uninitialized]833    doc: Create an uninitialized vector834    arguments: []835    return_type: "{sve_type}"836    types: [f32, f64]837    assert_instr: []838    compose:839      - FnCall: ["svdup_n_{type}", ["0{type}"]]840841  - name: svundef2_{type}842    attr: [*sve-unstable]843    safety:844      unsafe: [uninitialized]845    doc: Create an uninitialized tuple of two vectors846    arguments: []847    return_type: "{sve_type_x2}"848    types: [i8, i16, i32, i64, u8, u16, u32, u64]849    assert_instr: []850    compose:851      - FnCall:852        - "svcreate2_{type}"853        - - FnCall: ["svdup_n_{type}", ["0"]]854          - FnCall: ["svdup_n_{type}", ["0"]]855856  - name: svundef2_{type}857    attr: [*sve-unstable]858    safety:859      unsafe: [uninitialized]860    doc: Create an uninitialized tuple of two vectors861    arguments: []862    return_type: "{sve_type_x2}"863    types: [f32, f64]864    assert_instr: []865    compose:866      - FnCall:867        - "svcreate2_{type}"868        - - FnCall: ["svdup_n_{type}", ["0{type}"]]869          - FnCall: ["svdup_n_{type}", ["0{type}"]]870871  - name: svundef3_{type}872    attr: [*sve-unstable]873    safety:874      unsafe: [uninitialized]875    doc: Create an uninitialized tuple of three vectors876    arguments: []877    return_type: "{sve_type_x3}"878    types: [i8, i16, i32, i64, u8, u16, u32, u64]879    assert_instr: []880    compose:881      - FnCall:882        - "svcreate3_{type}"883        - - FnCall: ["svdup_n_{type}", ["0"]]884          - FnCall: ["svdup_n_{type}", ["0"]]885          - FnCall: ["svdup_n_{type}", ["0"]]886887  - name: svundef3_{type}888    attr: [*sve-unstable]889    safety:890      unsafe: [uninitialized]891    doc: Create an uninitialized tuple of three vectors892    arguments: []893    return_type: "{sve_type_x3}"894    types: [f32, f64]895    assert_instr: []896    compose:897      - FnCall:898        - "svcreate3_{type}"899        - - FnCall: ["svdup_n_{type}", ["0{type}"]]900          - FnCall: ["svdup_n_{type}", ["0{type}"]]901          - FnCall: ["svdup_n_{type}", ["0{type}"]]902903  - name: svundef4_{type}904    attr: [*sve-unstable]905    safety:906      unsafe: [uninitialized]907    doc: Create an uninitialized tuple of four vectors908    arguments: []909    return_type: "{sve_type_x4}"910    types: [i8, i16, i32, i64, u8, u16, u32, u64]911    assert_instr: []912    compose:913      - FnCall:914        - "svcreate4_{type}"915        - - FnCall: ["svdup_n_{type}", ["0"]]916          - FnCall: ["svdup_n_{type}", ["0"]]917          - FnCall: ["svdup_n_{type}", ["0"]]918          - FnCall: ["svdup_n_{type}", ["0"]]919920  - name: svundef4_{type}921    attr: [*sve-unstable]922    safety:923      unsafe: [uninitialized]924    doc: Create an uninitialized tuple of four vectors925    arguments: []926    return_type: "{sve_type_x4}"927    types: [f32, f64]928    assert_instr: []929    compose:930      - FnCall:931        - "svcreate4_{type}"932        - - FnCall: ["svdup_n_{type}", ["0{type}"]]933          - FnCall: ["svdup_n_{type}", ["0{type}"]]934          - FnCall: ["svdup_n_{type}", ["0{type}"]]935          - FnCall: ["svdup_n_{type}", ["0{type}"]]936937  - name: svindex_{type}938    attr: [*sve-unstable]939    doc: Create linear series940    arguments: ["base: {type}", "step: {type}"]941    return_type: "{sve_type}"942    types: [i8, i16, i32, i64, u8, u16, u32, u64]943    assert_instr: [index]944    compose:945      - LLVMLink: { name: "index.{sve_type}" }946947  - name: svget2[_{type}]948    attr: [*sve-unstable]949    doc: Extract one vector from a tuple of two vectors950    arguments: ["tuple: {sve_type_x2}"]951    static_defs: ["const IMM_INDEX: i32"]952    constraints: [{ variable: IMM_INDEX, range: [0, 1] }]953    return_type: "{sve_type}"954    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]955    assert_instr: []956    compose:957      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_get", [$tuple], ["_", "_", "{{IMM_INDEX}}"], true]958959  - name: svget3[_{type}]960    attr: [*sve-unstable]961    doc: Extract one vector from a tuple of three vectors962    arguments: ["tuple: {sve_type_x3}"]963    static_defs: ["const IMM_INDEX: i32"]964    constraints: [{ variable: IMM_INDEX, range: [0, 2] }]965    return_type: "{sve_type}"966    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]967    assert_instr: []968    compose:969      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_get", [$tuple], ["_", "_", "{{IMM_INDEX}}"], true]970971  - name: svget4[_{type}]972    attr: [*sve-unstable]973    doc: Extract one vector from a tuple of four vectors974    arguments: ["tuple: {sve_type_x4}"]975    static_defs: ["const IMM_INDEX: i32"]976    constraints: [{ variable: IMM_INDEX, range: [0, 3] }]977    return_type: "{sve_type}"978    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]979    assert_instr: []980    compose:981      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_get", [$tuple], ["_", "_", "{{IMM_INDEX}}"], true]982983  - name: svset2[_{type}]984    attr: [*sve-unstable]985    doc: Change one vector in a tuple of two vectors986    arguments: ["tuple: {sve_type_x2}", "x: {sve_type}"]987    static_defs: ["const IMM_INDEX: i32"]988    constraints: [{ variable: IMM_INDEX, range: [0, 1] }]989    return_type: "{sve_type_x2}"990    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]991    assert_instr: []992    compose:993      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_set", [$tuple, $x], ["_", "_", "{{IMM_INDEX}}"], true]994995  - name: svset3[_{type}]996    attr: [*sve-unstable]997    doc: Change one vector in a tuple of three vectors998    arguments: ["tuple: {sve_type_x3}", "x: {sve_type}"]999    static_defs: ["const IMM_INDEX: i32"]1000    constraints: [{ variable: IMM_INDEX, range: [0, 2] }]1001    return_type: "{sve_type_x3}"1002    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1003    assert_instr: []1004    compose:1005      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_set", [$tuple, $x], ["_", "_", "{{IMM_INDEX}}"], true]10061007  - name: svset4[_{type}]1008    attr: [*sve-unstable]1009    doc: Change one vector in a tuple of four vectors1010    arguments: ["tuple: {sve_type_x4}", "x: {sve_type}"]1011    static_defs: ["const IMM_INDEX: i32"]1012    constraints: [{ variable: IMM_INDEX, range: [0, 3] }]1013    return_type: "{sve_type_x4}"1014    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1015    assert_instr: []1016    compose:1017      - FnCall: ["crate::intrinsics::simd::scalable::sve_tuple_set", [$tuple, $x], ["_", "_", "{{IMM_INDEX}}"], true]10181019  - name: svzip1[_{type}]1020    attr: [*sve-unstable]1021    doc: Interleave elements from low halves of two inputs1022    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1023    return_type: "{sve_type}"1024    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1025    assert_instr: [zip1]1026    compose:1027      - LLVMLink: { name: "zip1.{sve_type}" }10281029  - name: svzip1_{type}1030    attr: [*sve-unstable]1031    doc: Interleave elements from low halves of two inputs1032    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1033    return_type: "{sve_type}"1034    types: [b8, b16, b32, b64]1035    assert_instr: [zip1]1036    compose:1037      - LLVMLink: { name: "zip1.{sve_type}" }10381039  - name: svzip1q[_{type}]1040    attr: [*sve-unstable]1041    doc: Interleave quadwords from low halves of two inputs1042    target_features: [f64mm]1043    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1044    return_type: "{sve_type}"1045    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1046    assert_instr: [zip1]1047    compose:1048      - LLVMLink: { name: "zip1q.{sve_type}" }10491050  - name: svzip2[_{type}]1051    attr: [*sve-unstable]1052    doc: Interleave elements from high halves of two inputs1053    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1054    return_type: "{sve_type}"1055    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1056    assert_instr: [zip2]1057    compose:1058      - LLVMLink: { name: "zip2.{sve_type}" }10591060  - name: svzip2_{type}1061    attr: [*sve-unstable]1062    doc: Interleave elements from high halves of two inputs1063    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1064    return_type: "{sve_type}"1065    types: [b8, b16, b32, b64]1066    assert_instr: [zip2]1067    compose:1068      - LLVMLink: { name: "zip2.{sve_type}" }10691070  - name: svzip2q[_{type}]1071    attr: [*sve-unstable]1072    doc: Interleave quadwords from high halves of two inputs1073    target_features: [f64mm]1074    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1075    return_type: "{sve_type}"1076    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1077    assert_instr: [zip2]1078    compose:1079      - LLVMLink: { name: "zip2q.{sve_type}" }10801081  - name: svuzp1[_{type}]1082    attr: [*sve-unstable]1083    doc: Concatenate even elements from two inputs1084    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1085    return_type: "{sve_type}"1086    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1087    assert_instr: [uzp1]1088    compose:1089      - LLVMLink: { name: "uzp1.{sve_type}" }10901091  - name: svuzp1_{type}1092    attr: [*sve-unstable]1093    doc: Concatenate even elements from two inputs1094    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1095    return_type: "{sve_type}"1096    types: [b8, b16, b32, b64]1097    assert_instr: [uzp1]1098    compose:1099      - LLVMLink: { name: "uzp1.{sve_type}" }11001101  - name: svuzp1q[_{type}]1102    attr: [*sve-unstable]1103    doc: Concatenate even quadwords from two inputs1104    target_features: [f64mm]1105    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1106    return_type: "{sve_type}"1107    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1108    assert_instr: [uzp1]1109    compose:1110      - LLVMLink: { name: "uzp1q.{sve_type}" }11111112  - name: svuzp2[_{type}]1113    attr: [*sve-unstable]1114    doc: Concatenate odd elements from two inputs1115    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1116    return_type: "{sve_type}"1117    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1118    assert_instr: [uzp2]1119    compose:1120      - LLVMLink: { name: "uzp2.{sve_type}" }11211122  - name: svuzp2_{type}1123    attr: [*sve-unstable]1124    doc: Concatenate odd elements from two inputs1125    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1126    return_type: "{sve_type}"1127    types: [b8, b16, b32, b64]1128    assert_instr: [uzp2]1129    compose:1130      - LLVMLink: { name: "uzp2.{sve_type}" }11311132  - name: svuzp2q[_{type}]1133    attr: [*sve-unstable]1134    doc: Concatenate odd quadwords from two inputs1135    target_features: [f64mm]1136    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1137    return_type: "{sve_type}"1138    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1139    assert_instr: [uzp2]1140    compose:1141      - LLVMLink: { name: "uzp2q.{sve_type}" }11421143  - name: svtrn1[_{type}]1144    attr: [*sve-unstable]1145    doc: Interleave even elements from two inputs1146    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1147    return_type: "{sve_type}"1148    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1149    assert_instr: [trn1]1150    compose:1151      - LLVMLink: { name: "trn1.{sve_type}" }11521153  - name: svtrn1_{type}1154    attr: [*sve-unstable]1155    doc: Interleave even elements from two inputs1156    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1157    return_type: "{sve_type}"1158    types: [b8, b16, b32, b64]1159    assert_instr: [trn1]1160    compose:1161      - LLVMLink: { name: "trn1.{sve_type}" }11621163  - name: svtrn1q[_{type}]1164    attr: [*sve-unstable]1165    doc: Interleave even quadwords from two inputs1166    target_features: [f64mm]1167    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1168    return_type: "{sve_type}"1169    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1170    assert_instr: [trn1]1171    compose:1172      - LLVMLink: { name: "trn1q.{sve_type}" }11731174  - name: svtrn2[_{type}]1175    attr: [*sve-unstable]1176    doc: Interleave odd elements from two inputs1177    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1178    return_type: "{sve_type}"1179    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1180    assert_instr: [trn2]1181    compose:1182      - LLVMLink: { name: "trn2.{sve_type}" }11831184  - name: svtrn2_{type}1185    attr: [*sve-unstable]1186    doc: Interleave odd elements from two inputs1187    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1188    return_type: "{sve_type}"1189    types: [b8, b16, b32, b64]1190    assert_instr: [trn2]1191    compose:1192      - LLVMLink: { name: "trn2.{sve_type}" }11931194  - name: svtrn2q[_{type}]1195    attr: [*sve-unstable]1196    doc: Interleave odd quadwords from two inputs1197    target_features: [f64mm]1198    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1199    return_type: "{sve_type}"1200    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1201    assert_instr: [trn2]1202    compose:1203      - LLVMLink: { name: "trn2q.{sve_type}" }12041205  - name: svrev[_{type}]1206    attr: [*sve-unstable]1207    doc: Reverse all elements1208    arguments: ["op: {sve_type}"]1209    return_type: "{sve_type}"1210    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1211    assert_instr: [rev]1212    compose:1213      - LLVMLink: { name: "rev.{sve_type}" }12141215  - name: svrev_{type}1216    attr: [*sve-unstable]1217    doc: Reverse all elements1218    arguments: ["op: {sve_type}"]1219    return_type: "{sve_type}"1220    types: [b8, b16, b32, b64]1221    assert_instr: [rev]1222    compose:1223      - LLVMLink: { name: "rev.{sve_type}" }12241225  - name: svrevb[_{type}]{_mxz}1226    attr: [*sve-unstable]1227    doc: Reverse bytes within elements1228    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {sve_type}"]1229    return_type: "{sve_type}"1230    types: [i16, i32, i64, u16, u32, u64]1231    zeroing_method: { drop: "inactive" }1232    assert_instr: [revb]1233    compose:1234      - LLVMLink: { name: "revb.{sve_type}" }12351236  - name: svrevh[_{type}]{_mxz}1237    attr: [*sve-unstable]1238    doc: Reverse halfwords within elements1239    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {sve_type}"]1240    return_type: "{sve_type}"1241    types: [i32, i64, u32, u64]1242    zeroing_method: { drop: "inactive" }1243    assert_instr: [revh]1244    compose:1245      - LLVMLink: { name: "revh.{sve_type}" }12461247  - name: svrevw[_{type}]{_mxz}1248    attr: [*sve-unstable]1249    doc: Reverse words within elements1250    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {sve_type}"]1251    return_type: "{sve_type}"1252    types: [i64, u64]1253    zeroing_method: { drop: "inactive" }1254    assert_instr: [revw]1255    compose:1256      - LLVMLink: { name: "revw.{sve_type}" }12571258  - name: svrbit[_{type}]{_mxz}1259    attr: [*sve-unstable]1260    doc: Reverse bits1261    arguments: ["inactive: {sve_type}", "pg: {predicate}", "op: {sve_type}"]1262    return_type: "{sve_type}"1263    types: [i8, i16, i32, i64, u8, u16, u32, u64]1264    zeroing_method: { drop: "inactive" }1265    assert_instr: [rbit]1266    compose:1267      - LLVMLink: { name: "rbit.{sve_type}" }12681269  - name: svext[_{type}]1270    attr: [*sve-unstable]1271    doc: Extract vector from pair of vectors1272    arguments: ["op1: {sve_type}", "op2: {sve_type}"]1273    return_type: "{sve_type}"1274    static_defs: ["const IMM3: i32"]1275    constraints: [{ variable: IMM3, sve_max_elems_type: "{type}" }]1276    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1277    assert_instr: [[ext, "IMM3 = 1"]]1278    compose:1279      - LLVMLink:1280          name: ext.{sve_type}1281          arguments: ["op1: {sve_type}", "op2: {sve_type}", "imm3: i32"]1282      - FnCall: ["{llvm_link}", [$op1, $op2, $IMM3]]12831284  - name: svsplice[_{type}]1285    attr: [*sve-unstable]1286    doc: Splice two vectors under predicate control1287    arguments: ["pg: {predicate}", "op1: {sve_type}", "op2: {sve_type}"]1288    return_type: "{sve_type}"1289    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1290    assert_instr: [splice]1291    compose:1292      - LLVMLink: { name: "splice.{sve_type}" }12931294  - name: svinsr[_n_{type}]1295    attr: [*sve-unstable]1296    doc: Insert scalar in shifted vector1297    arguments: ["op1: {sve_type}", "op2: {type}"]1298    return_type: "{sve_type}"1299    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1300    assert_instr: [insr]1301    compose:1302      - LLVMLink: { name: "insr.{sve_type}" }13031304  - name: svld1[_{type}]1305    attr: [*sve-unstable]1306    doc: Unextended load1307    safety:1308      unsafe:1309        - pointer_offset: predicated1310        - dereference: predicated1311    arguments: ["pg: {predicate}", "base: *{type}"]1312    return_type: "{sve_type}"1313    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1314    assert_instr: ["ld1{size_literal}"]1315    test: { load: 0 }1316    compose:1317      - LLVMLink: { name: "ld1.{sve_type}" }13181319  - name: svld1_vnum[_{type}]1320    attr: [*sve-unstable]1321    doc: Unextended load1322    safety:1323      unsafe:1324        - pointer_offset_vnum: predicated1325        - dereference: predicated1326    arguments: ["pg: {predicate}", "base: *{type}", "vnum: i64"]1327    return_type: "{sve_type}"1328    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1329    assert_instr: ["ld1{size_literal}"]1330    test: { load: 0 }1331    compose:1332      - FnCall:1333          - "svld1_{type}"1334          - - $pg1335            - MethodCall:1336                - $base1337                - offset1338                - - Multiply:1339                      - CastAs: [{ FnCall: ["svcnt{size_literal}", []] }, isize]1340                      - CastAs: [$vnum, isize]13411342  - name: svld1_gather_[{type[0]}]index[_{type[1]}]1343    attr: [*sve-unstable]1344    doc: Unextended load1345    safety:1346      unsafe:1347        - pointer_offset: predicated1348        - dereference: predicated1349    arguments:1350      ["pg: {predicate[0]}", "base: *{type[1]}", "indices: {sve_type[0]}"]1351    return_type: "{sve_type[1]}"1352    types:1353      - [[i32, u32], [f32, i32, u32]]1354      - [[i64, u64], [f64, i64, u64]]1355    assert_instr: ["ld1{size_literal[0]}"]1356    test: { load: 1 }1357    compose:1358      - MatchSize:1359          - "{type[0]}"1360          - default:1361              LLVMLink:1362                name: "ld1.gather.{type_kind[0].su}xtw.index.{sve_type[1]}"1363            doubleword:1364              LLVMLink:1365                name: "ld1.gather.index.{sve_type[1]}"13661367  - name: svld1_gather_[{type[0]}]offset[_{type[1]}]1368    attr: [*sve-unstable]1369    doc: Unextended load1370    safety:1371      unsafe:1372        - pointer_offset: predicated1373        - dereference: predicated1374    arguments:1375      ["pg: {predicate[0]}", "base: *{type[1]}", "offsets: {sve_type[0]}"]1376    return_type: "{sve_type[1]}"1377    types:1378      - [[i32, u32], [f32, i32, u32]]1379      - [[i64, u64], [f64, i64, u64]]1380    assert_instr: ["ld1{size_literal[0]}"]1381    test: { load: 1 }1382    compose:1383      - MatchSize:1384          - "{type[0]}"1385          - default:1386              LLVMLink:1387                name: "ld1.gather.{type_kind[0].su}xtw.{sve_type[1]}"1388            doubleword:1389              LLVMLink:1390                name: "ld1.gather.{sve_type[1]}"13911392  - name: svld1_gather[_{type[0]}base]_offset_{type[1]}1393    attr: [*sve-unstable]1394    doc: Unextended load1395    safety:1396      unsafe:1397        - pointer_offset: predicated1398        - dereference: predicated1399        - no_provenance: bases1400    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "offset: i64"]1401    return_type: "{sve_type[1]}"1402    types:1403      - [u32, [f32, i32, u32]]1404      - [u64, [f64, i64, u64]]1405    assert_instr: ["ld1{size_literal[0]}"]1406    test: { load: 1 }1407    compose:1408      - LLVMLink:1409          name: "ld1.gather.scalar.offset.{sve_type[1]}.{sve_type[0]}"14101411  - name: svld1_gather[_{type[0]}base]_{type[1]}1412    attr: [*sve-unstable]1413    doc: Unextended load1414    safety:1415      unsafe:1416        - pointer_offset: predicated1417        - dereference: predicated1418        - no_provenance: bases1419    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}"]1420    return_type: "{sve_type[1]}"1421    types:1422      - [u32, [f32, i32, u32]]1423      - [u64, [f64, i64, u64]]1424    assert_instr: ["ld1{size_literal[0]}"]1425    test: { load: 1 }1426    compose:1427      - FnCall:1428          - "svld1_gather_{type[0]}base_offset_{type[1]}"1429          - - $pg1430            - $bases1431            - 014321433  - name: svld1_gather[_{type[0]}base]_index_{type[1]}1434    attr: [*sve-unstable]1435    doc: Unextended load1436    safety:1437      unsafe:1438        - pointer_offset: predicated1439        - dereference: predicated1440        - no_provenance: bases1441    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "index: i64"]1442    return_type: "{sve_type[1]}"1443    types:1444      - [u32, [f32, i32, u32]]1445      - [u64, [f64, i64, u64]]1446    assert_instr: ["ld1{size_literal[0]}"]1447    test: { load: 1 }1448    compose:1449      - FnCall:1450          - "svld1_gather_{type[0]}base_offset_{type[1]}"1451          - - $pg1452            - $bases1453            - MethodCall: [$index, unchecked_shl, ["{size_in_bytes_log2[0]}"]]14541455  - name: svld1s{size_literal[2]}_gather_[{type[0]}]index_{type[1]}1456    attr: [*sve-unstable]1457    doc: Load {size[2]}-bit data and sign-extend1458    safety:1459      unsafe:1460        - pointer_offset: predicated1461        - dereference: predicated1462    arguments:1463      ["pg: {predicate[0]}", "base: *{type[2]}", "indices: {sve_type[0]}"]1464    return_type: "{sve_type[1]}"1465    types:1466      - [[i32, u32], [i32, u32], i16]1467      - [[i64, u64], [i64, u64], [i16, i32]]1468    assert_instr: ["ld1s{size_literal[2]}"]1469    test: { load: 2 }1470    compose:1471      - MatchSize:1472          - "{type[0]}"1473          - default:1474              LLVMLink:1475                name: "ld1.gather.{type_kind[0].su}xtw.index.{sve_type[1] as {type[2]}}"1476                return_type: "{sve_type[1] as {type[2]}}"1477            doubleword:1478              LLVMLink:1479                name: "ld1.gather.index.{sve_type[1] as {type[2]}}"1480                return_type: "{sve_type[1] as {type[2]}}"1481      - FnCall:1482          - crate::intrinsics::simd::simd_cast1483          - - FnCall: ["{llvm_link}", [$pg, $base, $indices]]14841485  - name: svld1u{size_literal[2]}_gather_[{type[0]}]index_{type[1]}1486    attr: [*sve-unstable]1487    doc: Load {size[2]}-bit data and zero-extend1488    safety:1489      unsafe:1490        - pointer_offset: predicated1491        - dereference: predicated1492    arguments:1493      ["pg: {predicate[0]}", "base: *{type[2]}", "indices: {sve_type[0]}"]1494    return_type: "{sve_type[1]}"1495    types:1496      - [[i32, u32], [u32, i32], u16]1497      - [[i64, u64], [u64, i64], [u16, u32]]1498    assert_instr: ["ld1{size_literal[2]}"]1499    test: { load: 2 }1500    compose:1501      - MatchSize:1502          - "{type[0]}"1503          - default:1504              LLVMLink:1505                name: "ld1.gather.{type_kind[0].su}xtw.index.{sve_type[1] as {type[2]}}"1506                return_type: "{sve_type[1] as {type[2]}}"1507            doubleword:1508              LLVMLink:1509                name: "ld1.gather.index.{sve_type[1] as {type[2]}}"1510                return_type: "{sve_type[1] as {type[2]}}"1511      - FnCall:1512          - crate::intrinsics::simd::simd_cast1513          - - FnCall: ["{llvm_link}", [$pg, $base, $indices]]1514          - - Type: "{sve_type[1] as {type[2]}}"1515            - _15161517  - name: svld1s{size_literal[2]}_gather_[{type[0]}]offset_{type[1]}1518    attr: [*sve-unstable]1519    doc: Load {size[2]}-bit data and sign-extend1520    safety:1521      unsafe:1522        - pointer_offset: predicated1523        - dereference: predicated1524    arguments:1525      ["pg: {predicate[0]}", "base: *{type[2]}", "offsets: {sve_type[0]}"]1526    return_type: "{sve_type[1]}"1527    types:1528      - [[i32, u32], [i32, u32], [i8, i16]]1529      - [[i64, u64], [i64, u64], [i8, i16, i32]]1530    assert_instr: ["ld1s{size_literal[2]}"]1531    test: { load: 2 }1532    compose:1533      - MatchSize:1534          - "{type[0]}"1535          - default:1536              LLVMLink:1537                name: "ld1.gather.{type_kind[0].su}xtw.{sve_type[1] as {type[2]}}"1538                return_type: "{sve_type[1] as {type[2]}}"1539            doubleword:1540              LLVMLink:1541                name: "ld1.gather.{sve_type[1] as {type[2]}}"1542                return_type: "{sve_type[1] as {type[2]}}"1543      - FnCall:1544          - crate::intrinsics::simd::simd_cast1545          - - FnCall: ["{llvm_link}", [$pg, $base, $offsets]]15461547  - name: svld1u{size_literal[2]}_gather_[{type[0]}]offset_{type[1]}1548    attr: [*sve-unstable]1549    doc: Load {size[2]}-bit data and zero-extend1550    safety:1551      unsafe:1552        - pointer_offset: predicated1553        - dereference: predicated1554    arguments:1555      ["pg: {predicate[0]}", "base: *{type[2]}", "offsets: {sve_type[0]}"]1556    return_type: "{sve_type[1]}"1557    types:1558      - [[i32, u32], [u32, i32], [u8, u16]]1559      - [[i64, u64], [u64, i64], [u8, u16, u32]]1560    assert_instr: ["ld1{size_literal[2]}"]1561    test: { load: 2 }1562    compose:1563      - MatchSize:1564          - "{type[0]}"1565          - default:1566              LLVMLink:1567                name: "ld1.gather.{type_kind[0].su}xtw.{sve_type[1] as {type[2]}}"1568                return_type: "{sve_type[1] as {type[2]}}"1569            doubleword:1570              LLVMLink:1571                name: "ld1.gather.{sve_type[1] as {type[2]}}"1572                return_type: "{sve_type[1] as {type[2]}}"1573      - FnCall:1574          - crate::intrinsics::simd::simd_cast1575          - - FnCall: ["{llvm_link}", [$pg, $base, $offsets]]1576          - - Type: "{sve_type[1] as {type[2]}}"1577            - _15781579  - name: svld1s{size_literal[2]}_gather[_{type[0]}base]_offset_{type[1]}1580    attr: [*sve-unstable]1581    doc: Load {size[2]}-bit data and sign-extend1582    safety:1583      unsafe:1584        - pointer_offset: predicated1585        - dereference: predicated1586        - no_provenance: bases1587    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "offset: i64"]1588    return_type: "{sve_type[1]}"1589    types:1590      - [u32, [i32, u32], [i8, i16]]1591      - [u64, [i64, u64], [i8, i16, i32]]1592    assert_instr: ["ld1s{size_literal[2]}"]1593    test: { load: 2 }1594    compose:1595      - LLVMLink:1596          name: "ld1.gather.scalar.offset.{sve_type[1] as {type[2]}}.{sve_type[0]}"1597          return_type: "{sve_type[1] as {type[2]}}"1598      - FnCall:1599          - crate::intrinsics::simd::simd_cast1600          - - FnCall: ["{llvm_link}", [$pg, $bases, $offset]]16011602  - name: svld1u{size_literal[2]}_gather[_{type[0]}base]_offset_{type[1]}1603    attr: [*sve-unstable]1604    doc: Load {size[2]}-bit data and zero-extend1605    safety:1606      unsafe:1607        - pointer_offset: predicated1608        - dereference: predicated1609        - no_provenance: bases1610    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "offset: i64"]1611    return_type: "{sve_type[1]}"1612    types:1613      - [u32, [u32, i32], [u8, u16]]1614      - [u64, [u64, i64], [u8, u16, u32]]1615    assert_instr: ["ld1{size_literal[2]}"]1616    test: { load: 2 }1617    compose:1618      - LLVMLink:1619          name: "ld1.gather.scalar.offset.{sve_type[1] as {type[2]}}.{sve_type[0]}"1620          return_type: "{sve_type[1] as {type[2]}}"1621      - FnCall:1622          - crate::intrinsics::simd::simd_cast1623          - - FnCall: ["{llvm_link}", [$pg, $bases, $offset]]1624          - - Type: "{sve_type[1] as {type[2]}}"1625            - _16261627  - name: svld1s{size_literal[2]}_gather[_{type[0]}base]_{type[1]}1628    attr: [*sve-unstable]1629    doc: Load {size[2]}-bit data and sign-extend1630    safety:1631      unsafe:1632        - pointer_offset: predicated1633        - dereference: predicated1634        - no_provenance: bases1635    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}"]1636    return_type: "{sve_type[1]}"1637    types:1638      - [u32, [i32, u32], [i8, i16]]1639      - [u64, [i64, u64], [i8, i16, i32]]1640    assert_instr: ["ld1s{size_literal[2]}"]1641    test: { load: 2 }1642    compose:1643      - FnCall:1644          - "svld1s{size_literal[2]}_gather_{type[0]}base_offset_{type[1]}"1645          - - $pg1646            - $bases1647            - 016481649  - name: svld1u{size_literal[2]}_gather[_{type[0]}base]_{type[1]}1650    attr: [*sve-unstable]1651    doc: Load {size[2]}-bit data and zero-extend1652    safety:1653      unsafe:1654        - pointer_offset: predicated1655        - dereference: predicated1656        - no_provenance: bases1657    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}"]1658    return_type: "{sve_type[1]}"1659    types:1660      - [u32, [i32, u32], [u8, u16]]1661      - [u64, [i64, u64], [u8, u16, u32]]1662    assert_instr: ["ld1{size_literal[2]}"]1663    test: { load: 2 }1664    compose:1665      - FnCall:1666          - "svld1u{size_literal[2]}_gather_{type[0]}base_offset_{type[1]}"1667          - - $pg1668            - $bases1669            - 016701671  - name: svld1s{size_literal[2]}_gather[_{type[0]}base]_index_{type[1]}1672    attr: [*sve-unstable]1673    doc: Load {size[2]}-bit data and sign-extend1674    safety:1675      unsafe:1676        - pointer_offset: predicated1677        - dereference: predicated1678        - no_provenance: bases1679    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "index: i64"]1680    return_type: "{sve_type[1]}"1681    types:1682      - [u32, [i32, u32], i16]1683      - [u64, [i64, u64], [i16, i32]]1684    assert_instr: ["ld1s{size_literal[2]}"]1685    test: { load: 2 }1686    compose:1687      - FnCall:1688          - "svld1s{size_literal[2]}_gather_{type[0]}base_offset_{type[1]}"1689          - - $pg1690            - $bases1691            - MethodCall: [$index, unchecked_shl, ["{size_in_bytes_log2[2]}"]]16921693  - name: svld1u{size_literal[2]}_gather[_{type[0]}base]_index_{type[1]}1694    attr: [*sve-unstable]1695    doc: Load {size[2]}-bit data and zero-extend1696    safety:1697      unsafe:1698        - pointer_offset: predicated1699        - dereference: predicated1700        - no_provenance: bases1701    arguments: ["pg: {predicate[0]}", "bases: {sve_type[0]}", "index: i64"]1702    return_type: "{sve_type[1]}"1703    types:1704      - [u32, [i32, u32], u16]1705      - [u64, [i64, u64], [u16, u32]]1706    assert_instr: ["ld1{size_literal[2]}"]1707    test: { load: 2 }1708    compose:1709      - FnCall:1710          - "svld1u{size_literal[2]}_gather_{type[0]}base_offset_{type[1]}"1711          - - $pg1712            - $bases1713            - MethodCall: [$index, unchecked_shl, ["{size_in_bytes_log2[2]}"]]17141715  - name: svldnt1[_{type}]1716    attr: [*sve-unstable]1717    doc: Unextended load, non-temporal1718    safety:1719      unsafe:1720        - pointer_offset: predicated1721        - dereference: predicated1722        - non_temporal1723    arguments: ["pg: {predicate}", "base: *{type}"]1724    return_type: "{sve_type}"1725    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1726    assert_instr: ["ldnt1{size_literal}"]1727    test: { load: 0 }1728    compose:1729      - LLVMLink: { name: "ldnt1.{sve_type}" }17301731  - name: svldnt1_vnum[_{type}]1732    attr: [*sve-unstable]1733    doc: Unextended load, non-temporal1734    safety:1735      unsafe:1736        - pointer_offset_vnum: predicated1737        - dereference: predicated1738        - non_temporal1739    arguments: ["pg: {predicate}", "base: *{type}", "vnum: i64"]1740    return_type: "{sve_type}"1741    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1742    assert_instr: ["ldnt1{size_literal}"]1743    test: { load: 0 }1744    compose:1745      - FnCall:1746          - "svldnt1_{type}"1747          - - $pg1748            - MethodCall:1749                - $base1750                - offset1751                - - Multiply:1752                      - CastAs: [{ FnCall: ["svcnt{size_literal}", []] }, isize]1753                      - CastAs: [$vnum, isize]17541755  - name: svld1s{size_literal[1]}_{type[0]}1756    attr: [*sve-unstable]1757    doc: Load {size[1]}-bit data and sign-extend1758    safety:1759      unsafe:1760        - pointer_offset: predicated1761        - dereference: predicated1762    arguments: ["pg: {predicate[0]}", "base: *{type[1]}"]1763    return_type: "{sve_type[0]}"1764    types:1765      - [[i16, i32, i64, u16, u32, u64], i8]1766      - [[i32, i64, u32, u64], i16]1767      - [[i64, u64], i32]1768    assert_instr: ["ld1s{size_literal[1]}"]1769    test: { load: 1 }1770    compose:1771      - LLVMLink:1772          name: "ld1.{sve_type[0] as {type[1]}}"1773          arguments: ["pg: {predicate[0]}", "base: *{type[1]}"]1774          return_type: "{sve_type[0] as {type[1]}}"1775      - FnCall:1776          - "crate::intrinsics::simd::simd_cast"1777          - - FnCall: ["{llvm_link}", [$pg, $base]]17781779  - name: svld1u{size_literal[1]}_{type[0]}1780    attr: [*sve-unstable]1781    doc: Load {size[1]}-bit data and zero-extend1782    safety:1783      unsafe:1784        - pointer_offset: predicated1785        - dereference: predicated1786    arguments: ["pg: {predicate[0]}", "base: *{type[1]}"]1787    return_type: "{sve_type[0]}"1788    types:1789      - [[i16, i32, i64, u16, u32, u64], u8]1790      - [[i32, i64, u32, u64], u16]1791      - [[i64, u64], u32]1792    assert_instr: ["ld1{size_literal[1]}"]1793    test: { load: 1 }1794    compose:1795      - LLVMLink:1796          name: "ld1.{sve_type[0] as {type[1]}}"1797          arguments: ["pg: {predicate[0]}", "base: *{type[1]}"]1798          return_type: "{sve_type[0] as {type[1]}}"1799      - FnCall:1800          - "crate::intrinsics::simd::simd_cast"1801          - - FnCall: ["{llvm_link}", [$pg, $base]]1802          - [Type: "{sve_type[0] as {type[1]}}", _]18031804  - name: svld1s{size_literal[1]}_vnum_{type[0]}1805    attr: [*sve-unstable]1806    doc: Load {size[1]}-bit data and sign-extend1807    safety:1808      unsafe:1809        - pointer_offset_vnum: predicated1810        - dereference: predicated1811    arguments: ["pg: {predicate[0]}", "base: *{type[1]}", "vnum: i64"]1812    return_type: "{sve_type[0]}"1813    types:1814      - [[i16, i32, i64, u16, u32, u64], i8]1815      - [[i32, i64, u32, u64], i16]1816      - [[i64, u64], i32]1817    assert_instr: ["ld1s{size_literal[1]}"]1818    test: { load: 1 }1819    compose:1820      - FnCall:1821          - "svld1s{size_literal[1]}_{type[0]}"1822          - - $pg1823            - MethodCall:1824                - $base1825                - offset1826                - - Multiply:1827                      - CastAs:1828                          [{ FnCall: ["svcnt{size_literal[0]}", []] }, isize]1829                      - CastAs: [$vnum, isize]18301831  - name: svld1u{size_literal[1]}_vnum_{type[0]}1832    attr: [*sve-unstable]1833    doc: Load {size[1]}-bit data and zero-extend1834    safety:1835      unsafe:1836        - pointer_offset_vnum: predicated1837        - dereference: predicated1838    arguments: ["pg: {predicate[0]}", "base: *{type[1]}", "vnum: i64"]1839    return_type: "{sve_type[0]}"1840    types:1841      - [[i16, i32, i64, u16, u32, u64], u8]1842      - [[i32, i64, u32, u64], u16]1843      - [[i64, u64], u32]1844    assert_instr: ["ld1{size_literal[1]}"]1845    test: { load: 1 }1846    compose:1847      - FnCall:1848          - "svld1u{size_literal[1]}_{type[0]}"1849          - - $pg1850            - MethodCall:1851                - $base1852                - offset1853                - - Multiply:1854                      - CastAs:1855                          [{ FnCall: ["svcnt{size_literal[0]}", []] }, isize]1856                      - CastAs: [$vnum, isize]18571858  - name: svld2[_{type}]1859    attr: [*sve-unstable]1860    doc: Load two-element tuples into two vectors1861    safety:1862      unsafe:1863        - pointer_offset: predicated1864        - dereference: predicated1865    arguments: ["pg: {predicate}", "base: *{type}"]1866    return_type: "{sve_type_x2}"1867    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1868    assert_instr: ["ld2{size_literal}"]1869    test: { load: 0 }1870    compose:1871      - LLVMLink: { name: "ld2.sret.{sve_type}" }18721873  - name: svld2_vnum[_{type}]1874    attr: [*sve-unstable]1875    doc: Load two-element tuples into two vectors1876    safety:1877      unsafe:1878        - pointer_offset: predicated1879        - dereference: predicated1880    arguments: ["pg: {predicate}", "base: *{type}", "vnum: i64"]1881    return_type: "{sve_type_x2}"1882    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1883    assert_instr: ["ld2{size_literal}"]1884    test: { load: 0 }1885    compose:1886      - FnCall:1887          - "svld2_{type}"1888          - - $pg1889            - MethodCall:1890                - $base1891                - offset1892                - - Multiply:1893                      - CastAs: [{ FnCall: ["svcnt{size_literal}", []] }, isize]1894                      - CastAs: [$vnum, isize]18951896  - name: svld3[_{type}]1897    attr: [*sve-unstable]1898    doc: Load three-element tuples into three vectors1899    safety:1900      unsafe:1901        - pointer_offset: predicated1902        - dereference: predicated1903    arguments: ["pg: {predicate}", "base: *{type}"]1904    return_type: "{sve_type_x3}"1905    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1906    assert_instr: ["ld3{size_literal}"]1907    test: { load: 0 }1908    compose:1909      - LLVMLink: { name: "ld3.sret.{sve_type}" }19101911  - name: svld3_vnum[_{type}]1912    attr: [*sve-unstable]1913    doc: Load three-element tuples into three vectors1914    safety:1915      unsafe:1916        - pointer_offset: predicated1917        - dereference: predicated1918    arguments: ["pg: {predicate}", "base: *{type}", "vnum: i64"]1919    return_type: "{sve_type_x3}"1920    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1921    assert_instr: ["ld3{size_literal}"]1922    test: { load: 0 }1923    compose:1924      - FnCall:1925          - "svld3_{type}"1926          - - $pg1927            - MethodCall:1928                - $base1929                - offset1930                - - Multiply:1931                      - CastAs: [{ FnCall: ["svcnt{size_literal}", []] }, isize]1932                      - CastAs: [$vnum, isize]19331934  - name: svld4[_{type}]1935    attr: [*sve-unstable]1936    doc: Load four-element tuples into four vectors1937    safety:1938      unsafe:1939        - pointer_offset: predicated1940        - dereference: predicated1941    arguments: ["pg: {predicate}", "base: *{type}"]1942    return_type: "{sve_type_x4}"1943    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1944    assert_instr: ["ld4{size_literal}"]1945    test: { load: 0 }1946    compose:1947      - LLVMLink: { name: "ld4.sret.{sve_type}" }19481949  - name: svld4_vnum[_{type}]1950    attr: [*sve-unstable]1951    doc: Load four-element tuples into four vectors1952    safety:1953      unsafe:1954        - pointer_offset_vnum: predicated1955        - dereference: predicated1956    arguments: ["pg: {predicate}", "base: *{type}", "vnum: i64"]1957    return_type: "{sve_type_x4}"1958    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1959    assert_instr: ["ld4{size_literal}"]1960    test: { load: 0 }1961    compose:1962      - FnCall:1963          - "svld4_{type}"1964          - - $pg1965            - MethodCall:1966                - $base1967                - offset1968                - - Multiply:1969                      - CastAs: [{ FnCall: ["svcnt{size_literal}", []] }, isize]1970                      - CastAs: [$vnum, isize]19711972  - name: svld1rq[_{type}]1973    attr: [*sve-unstable]1974    doc: Load and replicate 128 bits of data1975    safety:1976      unsafe:1977        - pointer_offset: predicated1978        - dereference: predicated1979    arguments: ["pg: {predicate}", "base: *{type}"]1980    return_type: "{sve_type}"1981    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1982    assert_instr: ["ld1rq{size_literal}"]1983    test: { load: 0 }1984    compose:1985      - LLVMLink: { name: "ld1rq.{sve_type}" }19861987  - name: svld1ro[_{type}]1988    attr: [*sve-unstable]1989    doc: Load and replicate 256 bits of data1990    safety:1991      unsafe:1992        - pointer_offset: predicated1993        - dereference: predicated1994    target_features: [f64mm]1995    arguments: ["pg: {predicate}", "base: *{type}"]1996    return_type: "{sve_type}"1997    types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]1998    assert_instr: ["ld1ro{size_literal}"]1999    test: { load: 0 }2000    compose:

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.