brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.3 KiB · ad00e99 Raw
839 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mattr=+sve -force-streaming-compatible  < %s | FileCheck %s3; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE4 5target triple = "aarch64-unknown-linux-gnu"6 7;8; insertelement9;10 11; i812define <4 x i8> @insertelement_v4i8(<4 x i8> %op1) {13; CHECK-LABEL: insertelement_v4i8:14; CHECK:       // %bb.0:15; CHECK-NEXT:    mov w8, #3 // =0x316; CHECK-NEXT:    index z1.h, #0, #117; CHECK-NEXT:    ptrue p0.h18; CHECK-NEXT:    mov z2.h, w819; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z020; CHECK-NEXT:    mov w8, #5 // =0x521; CHECK-NEXT:    cmpeq p0.h, p0/z, z1.h, z2.h22; CHECK-NEXT:    mov z0.h, p0/m, w823; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z024; CHECK-NEXT:    ret25;26; NONEON-NOSVE-LABEL: insertelement_v4i8:27; NONEON-NOSVE:       // %bb.0:28; NONEON-NOSVE-NEXT:    sub sp, sp, #3229; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 3230; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x531; NONEON-NOSVE-NEXT:    str d0, [sp]32; NONEON-NOSVE-NEXT:    strh w8, [sp, #24]33; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #4]34; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]35; NONEON-NOSVE-NEXT:    strh w8, [sp, #20]36; NONEON-NOSVE-NEXT:    ldr w8, [sp]37; NONEON-NOSVE-NEXT:    str d0, [sp, #8]38; NONEON-NOSVE-NEXT:    str w8, [sp, #16]39; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #8]40; NONEON-NOSVE-NEXT:    strh w8, [sp, #22]41; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]42; NONEON-NOSVE-NEXT:    add sp, sp, #3243; NONEON-NOSVE-NEXT:    ret44    %r = insertelement <4 x i8> %op1, i8 5, i64 345    ret <4 x i8> %r46}47 48define <8 x i8> @insertelement_v8i8(<8 x i8> %op1) {49; CHECK-LABEL: insertelement_v8i8:50; CHECK:       // %bb.0:51; CHECK-NEXT:    mov w8, #7 // =0x752; CHECK-NEXT:    index z1.b, #0, #153; CHECK-NEXT:    ptrue p0.b54; CHECK-NEXT:    mov z2.b, w855; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z056; CHECK-NEXT:    mov w8, #5 // =0x557; CHECK-NEXT:    cmpeq p0.b, p0/z, z1.b, z2.b58; CHECK-NEXT:    mov z0.b, p0/m, w859; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z060; CHECK-NEXT:    ret61;62; NONEON-NOSVE-LABEL: insertelement_v8i8:63; NONEON-NOSVE:       // %bb.0:64; NONEON-NOSVE-NEXT:    sub sp, sp, #3265; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 3266; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x567; NONEON-NOSVE-NEXT:    str d0, [sp]68; NONEON-NOSVE-NEXT:    strb w8, [sp, #24]69; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #6]70; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]71; NONEON-NOSVE-NEXT:    strb w8, [sp, #22]72; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #4]73; NONEON-NOSVE-NEXT:    str d0, [sp, #8]74; NONEON-NOSVE-NEXT:    strh w8, [sp, #20]75; NONEON-NOSVE-NEXT:    ldr w8, [sp]76; NONEON-NOSVE-NEXT:    str w8, [sp, #16]77; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #8]78; NONEON-NOSVE-NEXT:    strb w8, [sp, #23]79; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]80; NONEON-NOSVE-NEXT:    add sp, sp, #3281; NONEON-NOSVE-NEXT:    ret82    %r = insertelement <8 x i8> %op1, i8 5, i64 783    ret <8 x i8> %r84}85 86define <16 x i8> @insertelement_v16i8(<16 x i8> %op1) {87; CHECK-LABEL: insertelement_v16i8:88; CHECK:       // %bb.0:89; CHECK-NEXT:    mov w8, #15 // =0xf90; CHECK-NEXT:    index z1.b, #0, #191; CHECK-NEXT:    ptrue p0.b92; CHECK-NEXT:    mov z2.b, w893; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z094; CHECK-NEXT:    mov w8, #5 // =0x595; CHECK-NEXT:    cmpeq p0.b, p0/z, z1.b, z2.b96; CHECK-NEXT:    mov z0.b, p0/m, w897; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z098; CHECK-NEXT:    ret99;100; NONEON-NOSVE-LABEL: insertelement_v16i8:101; NONEON-NOSVE:       // %bb.0:102; NONEON-NOSVE-NEXT:    sub sp, sp, #64103; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64104; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5105; NONEON-NOSVE-NEXT:    str q0, [sp]106; NONEON-NOSVE-NEXT:    strb w8, [sp, #48]107; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #14]108; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]109; NONEON-NOSVE-NEXT:    strb w8, [sp, #46]110; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]111; NONEON-NOSVE-NEXT:    str q0, [sp, #16]112; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]113; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]114; NONEON-NOSVE-NEXT:    str w8, [sp, #40]115; NONEON-NOSVE-NEXT:    ldr x8, [sp]116; NONEON-NOSVE-NEXT:    str x8, [sp, #32]117; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #16]118; NONEON-NOSVE-NEXT:    strb w8, [sp, #47]119; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]120; NONEON-NOSVE-NEXT:    add sp, sp, #64121; NONEON-NOSVE-NEXT:    ret122    %r = insertelement <16 x i8> %op1, i8 5, i64 15123    ret <16 x i8> %r124}125 126define <32 x i8> @insertelement_v32i8(<32 x i8> %op1) {127; CHECK-LABEL: insertelement_v32i8:128; CHECK:       // %bb.0:129; CHECK-NEXT:    mov w8, #15 // =0xf130; CHECK-NEXT:    index z2.b, #0, #1131; CHECK-NEXT:    ptrue p0.b132; CHECK-NEXT:    mov z3.b, w8133; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z1134; CHECK-NEXT:    mov w8, #5 // =0x5135; CHECK-NEXT:    cmpeq p0.b, p0/z, z2.b, z3.b136; CHECK-NEXT:    mov z1.b, p0/m, w8137; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1138; CHECK-NEXT:    ret139;140; NONEON-NOSVE-LABEL: insertelement_v32i8:141; NONEON-NOSVE:       // %bb.0:142; NONEON-NOSVE-NEXT:    sub sp, sp, #64143; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64144; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5145; NONEON-NOSVE-NEXT:    str q1, [sp]146; NONEON-NOSVE-NEXT:    strb w8, [sp, #48]147; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #14]148; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]149; NONEON-NOSVE-NEXT:    strb w8, [sp, #46]150; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]151; NONEON-NOSVE-NEXT:    str q1, [sp, #16]152; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]153; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]154; NONEON-NOSVE-NEXT:    str w8, [sp, #40]155; NONEON-NOSVE-NEXT:    ldr x8, [sp]156; NONEON-NOSVE-NEXT:    str x8, [sp, #32]157; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #16]158; NONEON-NOSVE-NEXT:    strb w8, [sp, #47]159; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]160; NONEON-NOSVE-NEXT:    add sp, sp, #64161; NONEON-NOSVE-NEXT:    ret162    %r = insertelement <32 x i8> %op1, i8 5, i64 31163    ret <32 x i8> %r164}165 166; i16167define <2 x i16> @insertelement_v2i16(<2 x i16> %op1) {168; CHECK-LABEL: insertelement_v2i16:169; CHECK:       // %bb.0:170; CHECK-NEXT:    mov w8, #1 // =0x1171; CHECK-NEXT:    index z1.s, #0, #1172; CHECK-NEXT:    ptrue p0.s173; CHECK-NEXT:    mov z2.s, w8174; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0175; CHECK-NEXT:    mov w8, #5 // =0x5176; CHECK-NEXT:    cmpeq p0.s, p0/z, z1.s, z2.s177; CHECK-NEXT:    mov z0.s, p0/m, w8178; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0179; CHECK-NEXT:    ret180;181; NONEON-NOSVE-LABEL: insertelement_v2i16:182; NONEON-NOSVE:       // %bb.0:183; NONEON-NOSVE-NEXT:    sub sp, sp, #32184; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32185; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5186; NONEON-NOSVE-NEXT:    str d0, [sp]187; NONEON-NOSVE-NEXT:    str w8, [sp, #24]188; NONEON-NOSVE-NEXT:    ldr w9, [sp]189; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]190; NONEON-NOSVE-NEXT:    str d0, [sp, #8]191; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]192; NONEON-NOSVE-NEXT:    stp w9, w8, [sp, #16]193; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]194; NONEON-NOSVE-NEXT:    add sp, sp, #32195; NONEON-NOSVE-NEXT:    ret196    %r = insertelement <2 x i16> %op1, i16 5, i64 1197    ret <2 x i16> %r198}199 200define <4 x i16> @insertelement_v4i16(<4 x i16> %op1) {201; CHECK-LABEL: insertelement_v4i16:202; CHECK:       // %bb.0:203; CHECK-NEXT:    mov w8, #3 // =0x3204; CHECK-NEXT:    index z1.h, #0, #1205; CHECK-NEXT:    ptrue p0.h206; CHECK-NEXT:    mov z2.h, w8207; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0208; CHECK-NEXT:    mov w8, #5 // =0x5209; CHECK-NEXT:    cmpeq p0.h, p0/z, z1.h, z2.h210; CHECK-NEXT:    mov z0.h, p0/m, w8211; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0212; CHECK-NEXT:    ret213;214; NONEON-NOSVE-LABEL: insertelement_v4i16:215; NONEON-NOSVE:       // %bb.0:216; NONEON-NOSVE-NEXT:    sub sp, sp, #32217; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32218; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5219; NONEON-NOSVE-NEXT:    str d0, [sp]220; NONEON-NOSVE-NEXT:    strh w8, [sp, #24]221; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #4]222; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]223; NONEON-NOSVE-NEXT:    strh w8, [sp, #20]224; NONEON-NOSVE-NEXT:    ldr w8, [sp]225; NONEON-NOSVE-NEXT:    str d0, [sp, #8]226; NONEON-NOSVE-NEXT:    str w8, [sp, #16]227; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #8]228; NONEON-NOSVE-NEXT:    strh w8, [sp, #22]229; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]230; NONEON-NOSVE-NEXT:    add sp, sp, #32231; NONEON-NOSVE-NEXT:    ret232    %r = insertelement <4 x i16> %op1, i16 5, i64 3233    ret <4 x i16> %r234}235 236define <8 x i16> @insertelement_v8i16(<8 x i16> %op1) {237; CHECK-LABEL: insertelement_v8i16:238; CHECK:       // %bb.0:239; CHECK-NEXT:    mov w8, #7 // =0x7240; CHECK-NEXT:    index z1.h, #0, #1241; CHECK-NEXT:    ptrue p0.h242; CHECK-NEXT:    mov z2.h, w8243; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0244; CHECK-NEXT:    mov w8, #5 // =0x5245; CHECK-NEXT:    cmpeq p0.h, p0/z, z1.h, z2.h246; CHECK-NEXT:    mov z0.h, p0/m, w8247; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0248; CHECK-NEXT:    ret249;250; NONEON-NOSVE-LABEL: insertelement_v8i16:251; NONEON-NOSVE:       // %bb.0:252; NONEON-NOSVE-NEXT:    sub sp, sp, #64253; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64254; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5255; NONEON-NOSVE-NEXT:    str q0, [sp]256; NONEON-NOSVE-NEXT:    strh w8, [sp, #48]257; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]258; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]259; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]260; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]261; NONEON-NOSVE-NEXT:    str q0, [sp, #16]262; NONEON-NOSVE-NEXT:    str w8, [sp, #40]263; NONEON-NOSVE-NEXT:    ldr x8, [sp]264; NONEON-NOSVE-NEXT:    str x8, [sp, #32]265; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #16]266; NONEON-NOSVE-NEXT:    strh w8, [sp, #46]267; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]268; NONEON-NOSVE-NEXT:    add sp, sp, #64269; NONEON-NOSVE-NEXT:    ret270    %r = insertelement <8 x i16> %op1, i16 5, i64 7271    ret <8 x i16> %r272}273 274define <16 x i16> @insertelement_v16i16(<16 x i16> %op1) {275; CHECK-LABEL: insertelement_v16i16:276; CHECK:       // %bb.0:277; CHECK-NEXT:    mov w8, #7 // =0x7278; CHECK-NEXT:    index z2.h, #0, #1279; CHECK-NEXT:    ptrue p0.h280; CHECK-NEXT:    mov z3.h, w8281; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z1282; CHECK-NEXT:    mov w8, #5 // =0x5283; CHECK-NEXT:    cmpeq p0.h, p0/z, z2.h, z3.h284; CHECK-NEXT:    mov z1.h, p0/m, w8285; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1286; CHECK-NEXT:    ret287;288; NONEON-NOSVE-LABEL: insertelement_v16i16:289; NONEON-NOSVE:       // %bb.0:290; NONEON-NOSVE-NEXT:    sub sp, sp, #64291; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64292; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5293; NONEON-NOSVE-NEXT:    str q1, [sp]294; NONEON-NOSVE-NEXT:    strh w8, [sp, #48]295; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]296; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]297; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]298; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]299; NONEON-NOSVE-NEXT:    str q1, [sp, #16]300; NONEON-NOSVE-NEXT:    str w8, [sp, #40]301; NONEON-NOSVE-NEXT:    ldr x8, [sp]302; NONEON-NOSVE-NEXT:    str x8, [sp, #32]303; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #16]304; NONEON-NOSVE-NEXT:    strh w8, [sp, #46]305; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]306; NONEON-NOSVE-NEXT:    add sp, sp, #64307; NONEON-NOSVE-NEXT:    ret308    %r = insertelement <16 x i16> %op1, i16 5, i64 15309    ret <16 x i16> %r310}311 312;i32313define <2 x i32> @insertelement_v2i32(<2 x i32> %op1) {314; CHECK-LABEL: insertelement_v2i32:315; CHECK:       // %bb.0:316; CHECK-NEXT:    mov w8, #1 // =0x1317; CHECK-NEXT:    index z1.s, #0, #1318; CHECK-NEXT:    ptrue p0.s319; CHECK-NEXT:    mov z2.s, w8320; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0321; CHECK-NEXT:    mov w8, #5 // =0x5322; CHECK-NEXT:    cmpeq p0.s, p0/z, z1.s, z2.s323; CHECK-NEXT:    mov z0.s, p0/m, w8324; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0325; CHECK-NEXT:    ret326;327; NONEON-NOSVE-LABEL: insertelement_v2i32:328; NONEON-NOSVE:       // %bb.0:329; NONEON-NOSVE-NEXT:    sub sp, sp, #32330; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32331; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5332; NONEON-NOSVE-NEXT:    str d0, [sp]333; NONEON-NOSVE-NEXT:    str w8, [sp, #24]334; NONEON-NOSVE-NEXT:    ldr w9, [sp]335; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]336; NONEON-NOSVE-NEXT:    str d0, [sp, #8]337; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]338; NONEON-NOSVE-NEXT:    stp w9, w8, [sp, #16]339; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]340; NONEON-NOSVE-NEXT:    add sp, sp, #32341; NONEON-NOSVE-NEXT:    ret342    %r = insertelement <2 x i32> %op1, i32 5, i64 1343    ret <2 x i32> %r344}345 346define <4 x i32> @insertelement_v4i32(<4 x i32> %op1) {347; CHECK-LABEL: insertelement_v4i32:348; CHECK:       // %bb.0:349; CHECK-NEXT:    mov w8, #3 // =0x3350; CHECK-NEXT:    index z1.s, #0, #1351; CHECK-NEXT:    ptrue p0.s352; CHECK-NEXT:    mov z2.s, w8353; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0354; CHECK-NEXT:    mov w8, #5 // =0x5355; CHECK-NEXT:    cmpeq p0.s, p0/z, z1.s, z2.s356; CHECK-NEXT:    mov z0.s, p0/m, w8357; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0358; CHECK-NEXT:    ret359;360; NONEON-NOSVE-LABEL: insertelement_v4i32:361; NONEON-NOSVE:       // %bb.0:362; NONEON-NOSVE-NEXT:    sub sp, sp, #64363; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64364; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5365; NONEON-NOSVE-NEXT:    str q0, [sp]366; NONEON-NOSVE-NEXT:    str w8, [sp, #48]367; NONEON-NOSVE-NEXT:    ldr x8, [sp]368; NONEON-NOSVE-NEXT:    ldr w9, [sp, #8]369; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]370; NONEON-NOSVE-NEXT:    str x8, [sp, #32]371; NONEON-NOSVE-NEXT:    str q0, [sp, #16]372; NONEON-NOSVE-NEXT:    ldr w8, [sp, #16]373; NONEON-NOSVE-NEXT:    stp w9, w8, [sp, #40]374; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]375; NONEON-NOSVE-NEXT:    add sp, sp, #64376; NONEON-NOSVE-NEXT:    ret377    %r = insertelement <4 x i32> %op1, i32 5, i64 3378    ret <4 x i32> %r379}380 381define <8 x i32> @insertelement_v8i32(ptr %a) {382; CHECK-LABEL: insertelement_v8i32:383; CHECK:       // %bb.0:384; CHECK-NEXT:    mov w8, #3 // =0x3385; CHECK-NEXT:    index z0.s, #0, #1386; CHECK-NEXT:    ptrue p0.s387; CHECK-NEXT:    mov z1.s, w8388; CHECK-NEXT:    mov w8, #5 // =0x5389; CHECK-NEXT:    cmpeq p0.s, p0/z, z0.s, z1.s390; CHECK-NEXT:    ldp q0, q1, [x0]391; CHECK-NEXT:    mov z1.s, p0/m, w8392; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1393; CHECK-NEXT:    ret394;395; NONEON-NOSVE-LABEL: insertelement_v8i32:396; NONEON-NOSVE:       // %bb.0:397; NONEON-NOSVE-NEXT:    sub sp, sp, #64398; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64399; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5400; NONEON-NOSVE-NEXT:    ldp q0, q2, [x0]401; NONEON-NOSVE-NEXT:    str w8, [sp, #48]402; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]403; NONEON-NOSVE-NEXT:    stp q2, q1, [sp]404; NONEON-NOSVE-NEXT:    ldr x8, [sp]405; NONEON-NOSVE-NEXT:    ldr w9, [sp, #8]406; NONEON-NOSVE-NEXT:    str x8, [sp, #32]407; NONEON-NOSVE-NEXT:    ldr w8, [sp, #16]408; NONEON-NOSVE-NEXT:    stp w9, w8, [sp, #40]409; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]410; NONEON-NOSVE-NEXT:    add sp, sp, #64411; NONEON-NOSVE-NEXT:    ret412    %op1 = load <8 x i32>, ptr %a413    %r = insertelement <8 x i32> %op1, i32 5, i64 7414    ret <8 x i32> %r415}416 417;i64418define <1 x i64> @insertelement_v1i64(<1 x i64> %op1) {419; CHECK-LABEL: insertelement_v1i64:420; CHECK:       // %bb.0:421; CHECK-NEXT:    mov z0.d, #5 // =0x5422; CHECK-NEXT:    ret423;424; NONEON-NOSVE-LABEL: insertelement_v1i64:425; NONEON-NOSVE:       // %bb.0:426; NONEON-NOSVE-NEXT:    sub sp, sp, #16427; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 16428; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5429; NONEON-NOSVE-NEXT:    str x8, [sp, #8]430; NONEON-NOSVE-NEXT:    ldr d0, [sp, #8]431; NONEON-NOSVE-NEXT:    add sp, sp, #16432; NONEON-NOSVE-NEXT:    ret433    %r = insertelement <1 x i64> %op1, i64 5, i64 0434    ret <1 x i64> %r435}436 437define <2 x i64> @insertelement_v2i64(<2 x i64> %op1) {438; CHECK-LABEL: insertelement_v2i64:439; CHECK:       // %bb.0:440; CHECK-NEXT:    mov w8, #1 // =0x1441; CHECK-NEXT:    index z1.d, #0, #1442; CHECK-NEXT:    ptrue p0.d443; CHECK-NEXT:    mov z2.d, x8444; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0445; CHECK-NEXT:    mov w8, #5 // =0x5446; CHECK-NEXT:    cmpeq p0.d, p0/z, z1.d, z2.d447; CHECK-NEXT:    mov z0.d, p0/m, x8448; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0449; CHECK-NEXT:    ret450;451; NONEON-NOSVE-LABEL: insertelement_v2i64:452; NONEON-NOSVE:       // %bb.0:453; NONEON-NOSVE-NEXT:    sub sp, sp, #64454; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64455; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5456; NONEON-NOSVE-NEXT:    str q0, [sp]457; NONEON-NOSVE-NEXT:    str x8, [sp, #48]458; NONEON-NOSVE-NEXT:    ldr x9, [sp]459; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]460; NONEON-NOSVE-NEXT:    str q0, [sp, #16]461; NONEON-NOSVE-NEXT:    ldr x8, [sp, #16]462; NONEON-NOSVE-NEXT:    stp x9, x8, [sp, #32]463; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]464; NONEON-NOSVE-NEXT:    add sp, sp, #64465; NONEON-NOSVE-NEXT:    ret466    %r = insertelement <2 x i64> %op1, i64 5, i64 1467    ret <2 x i64> %r468}469 470define <4 x i64> @insertelement_v4i64(ptr %a) {471; CHECK-LABEL: insertelement_v4i64:472; CHECK:       // %bb.0:473; CHECK-NEXT:    mov w8, #1 // =0x1474; CHECK-NEXT:    index z0.d, #0, #1475; CHECK-NEXT:    ptrue p0.d476; CHECK-NEXT:    mov z1.d, x8477; CHECK-NEXT:    mov w8, #5 // =0x5478; CHECK-NEXT:    cmpeq p0.d, p0/z, z0.d, z1.d479; CHECK-NEXT:    ldp q0, q1, [x0]480; CHECK-NEXT:    mov z1.d, p0/m, x8481; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1482; CHECK-NEXT:    ret483;484; NONEON-NOSVE-LABEL: insertelement_v4i64:485; NONEON-NOSVE:       // %bb.0:486; NONEON-NOSVE-NEXT:    sub sp, sp, #64487; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64488; NONEON-NOSVE-NEXT:    mov w8, #5 // =0x5489; NONEON-NOSVE-NEXT:    ldp q0, q2, [x0]490; NONEON-NOSVE-NEXT:    str x8, [sp, #48]491; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]492; NONEON-NOSVE-NEXT:    stp q2, q1, [sp]493; NONEON-NOSVE-NEXT:    ldr x9, [sp]494; NONEON-NOSVE-NEXT:    ldr x8, [sp, #16]495; NONEON-NOSVE-NEXT:    stp x9, x8, [sp, #32]496; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]497; NONEON-NOSVE-NEXT:    add sp, sp, #64498; NONEON-NOSVE-NEXT:    ret499    %op1 = load <4 x i64>, ptr %a500    %r = insertelement <4 x i64> %op1, i64 5, i64 3501    ret <4 x i64> %r502}503 504;f16505define <2 x half> @insertelement_v2f16(<2 x half> %op1) {506; CHECK-LABEL: insertelement_v2f16:507; CHECK:       // %bb.0:508; CHECK-NEXT:    fmov h1, #5.00000000509; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0510; CHECK-NEXT:    zip1 z0.h, z0.h, z1.h511; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0512; CHECK-NEXT:    ret513;514; NONEON-NOSVE-LABEL: insertelement_v2f16:515; NONEON-NOSVE:       // %bb.0:516; NONEON-NOSVE-NEXT:    str d0, [sp, #-16]!517; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 16518; NONEON-NOSVE-NEXT:    adrp x8, .LCPI14_0519; NONEON-NOSVE-NEXT:    ldr h1, [sp]520; NONEON-NOSVE-NEXT:    ldr h0, [x8, :lo12:.LCPI14_0]521; NONEON-NOSVE-NEXT:    str h1, [sp, #8]522; NONEON-NOSVE-NEXT:    str h0, [sp, #10]523; NONEON-NOSVE-NEXT:    ldr d0, [sp, #8]524; NONEON-NOSVE-NEXT:    add sp, sp, #16525; NONEON-NOSVE-NEXT:    ret526    %r = insertelement <2 x half> %op1, half 5.0, i64 1527    ret <2 x half> %r528}529 530define <4 x half> @insertelement_v4f16(<4 x half> %op1) {531; CHECK-LABEL: insertelement_v4f16:532; CHECK:       // %bb.0:533; CHECK-NEXT:    mov w8, #3 // =0x3534; CHECK-NEXT:    index z1.h, #0, #1535; CHECK-NEXT:    ptrue p0.h536; CHECK-NEXT:    mov z2.h, w8537; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0538; CHECK-NEXT:    cmpeq p0.h, p0/z, z1.h, z2.h539; CHECK-NEXT:    fmov h1, #5.00000000540; CHECK-NEXT:    mov z0.h, p0/m, h1541; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0542; CHECK-NEXT:    ret543;544; NONEON-NOSVE-LABEL: insertelement_v4f16:545; NONEON-NOSVE:       // %bb.0:546; NONEON-NOSVE-NEXT:    sub sp, sp, #32547; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32548; NONEON-NOSVE-NEXT:    adrp x8, .LCPI15_0549; NONEON-NOSVE-NEXT:    str d0, [sp]550; NONEON-NOSVE-NEXT:    ldr h1, [x8, :lo12:.LCPI15_0]551; NONEON-NOSVE-NEXT:    ldr w8, [sp]552; NONEON-NOSVE-NEXT:    str h1, [sp, #24]553; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]554; NONEON-NOSVE-NEXT:    str w8, [sp, #16]555; NONEON-NOSVE-NEXT:    str d0, [sp, #8]556; NONEON-NOSVE-NEXT:    ldr h0, [sp, #4]557; NONEON-NOSVE-NEXT:    str h0, [sp, #20]558; NONEON-NOSVE-NEXT:    ldr h0, [sp, #8]559; NONEON-NOSVE-NEXT:    str h0, [sp, #22]560; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]561; NONEON-NOSVE-NEXT:    add sp, sp, #32562; NONEON-NOSVE-NEXT:    ret563    %r = insertelement <4 x half> %op1, half 5.0, i64 3564    ret <4 x half> %r565}566 567define <8 x half> @insertelement_v8f16(<8 x half> %op1) {568; CHECK-LABEL: insertelement_v8f16:569; CHECK:       // %bb.0:570; CHECK-NEXT:    mov w8, #7 // =0x7571; CHECK-NEXT:    index z1.h, #0, #1572; CHECK-NEXT:    ptrue p0.h573; CHECK-NEXT:    mov z2.h, w8574; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0575; CHECK-NEXT:    cmpeq p0.h, p0/z, z1.h, z2.h576; CHECK-NEXT:    fmov h1, #5.00000000577; CHECK-NEXT:    mov z0.h, p0/m, h1578; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0579; CHECK-NEXT:    ret580;581; NONEON-NOSVE-LABEL: insertelement_v8f16:582; NONEON-NOSVE:       // %bb.0:583; NONEON-NOSVE-NEXT:    sub sp, sp, #64584; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64585; NONEON-NOSVE-NEXT:    adrp x8, .LCPI16_0586; NONEON-NOSVE-NEXT:    str q0, [sp]587; NONEON-NOSVE-NEXT:    ldr h1, [x8, :lo12:.LCPI16_0]588; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]589; NONEON-NOSVE-NEXT:    str h1, [sp, #48]590; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]591; NONEON-NOSVE-NEXT:    str w8, [sp, #40]592; NONEON-NOSVE-NEXT:    ldr x8, [sp]593; NONEON-NOSVE-NEXT:    str q0, [sp, #16]594; NONEON-NOSVE-NEXT:    ldr h0, [sp, #12]595; NONEON-NOSVE-NEXT:    str x8, [sp, #32]596; NONEON-NOSVE-NEXT:    str h0, [sp, #44]597; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]598; NONEON-NOSVE-NEXT:    str h0, [sp, #46]599; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]600; NONEON-NOSVE-NEXT:    add sp, sp, #64601; NONEON-NOSVE-NEXT:    ret602    %r = insertelement <8 x half> %op1, half 5.0, i64 7603    ret <8 x half> %r604}605 606define <16 x half> @insertelement_v16f16(ptr %a) {607; CHECK-LABEL: insertelement_v16f16:608; CHECK:       // %bb.0:609; CHECK-NEXT:    mov w8, #7 // =0x7610; CHECK-NEXT:    index z0.h, #0, #1611; CHECK-NEXT:    ptrue p0.h612; CHECK-NEXT:    mov z1.h, w8613; CHECK-NEXT:    fmov h2, #5.00000000614; CHECK-NEXT:    cmpeq p0.h, p0/z, z0.h, z1.h615; CHECK-NEXT:    ldp q0, q1, [x0]616; CHECK-NEXT:    mov z1.h, p0/m, h2617; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1618; CHECK-NEXT:    ret619;620; NONEON-NOSVE-LABEL: insertelement_v16f16:621; NONEON-NOSVE:       // %bb.0:622; NONEON-NOSVE-NEXT:    sub sp, sp, #64623; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64624; NONEON-NOSVE-NEXT:    adrp x8, .LCPI17_0625; NONEON-NOSVE-NEXT:    ldp q0, q2, [x0]626; NONEON-NOSVE-NEXT:    ldr h1, [x8, :lo12:.LCPI17_0]627; NONEON-NOSVE-NEXT:    str h1, [sp, #48]628; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]629; NONEON-NOSVE-NEXT:    stp q2, q1, [sp]630; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]631; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]632; NONEON-NOSVE-NEXT:    str h1, [sp, #44]633; NONEON-NOSVE-NEXT:    ldr h1, [sp, #16]634; NONEON-NOSVE-NEXT:    str w8, [sp, #40]635; NONEON-NOSVE-NEXT:    ldr x8, [sp]636; NONEON-NOSVE-NEXT:    str h1, [sp, #46]637; NONEON-NOSVE-NEXT:    str x8, [sp, #32]638; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]639; NONEON-NOSVE-NEXT:    add sp, sp, #64640; NONEON-NOSVE-NEXT:    ret641    %op1 = load <16 x half>, ptr %a642    %r = insertelement <16 x half> %op1, half 5.0, i64 15643    ret <16 x half> %r644}645 646;f32647define <2 x float> @insertelement_v2f32(<2 x float> %op1) {648; CHECK-LABEL: insertelement_v2f32:649; CHECK:       // %bb.0:650; CHECK-NEXT:    mov w8, #1 // =0x1651; CHECK-NEXT:    index z1.s, #0, #1652; CHECK-NEXT:    ptrue p0.s653; CHECK-NEXT:    mov z2.s, w8654; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0655; CHECK-NEXT:    cmpeq p0.s, p0/z, z1.s, z2.s656; CHECK-NEXT:    fmov s1, #5.00000000657; CHECK-NEXT:    mov z0.s, p0/m, s1658; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0659; CHECK-NEXT:    ret660;661; NONEON-NOSVE-LABEL: insertelement_v2f32:662; NONEON-NOSVE:       // %bb.0:663; NONEON-NOSVE-NEXT:    sub sp, sp, #32664; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32665; NONEON-NOSVE-NEXT:    mov w8, #1084227584 // =0x40a00000666; NONEON-NOSVE-NEXT:    str d0, [sp]667; NONEON-NOSVE-NEXT:    str w8, [sp, #24]668; NONEON-NOSVE-NEXT:    ldr s1, [sp]669; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]670; NONEON-NOSVE-NEXT:    str d0, [sp, #8]671; NONEON-NOSVE-NEXT:    ldr s0, [sp, #8]672; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #16]673; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]674; NONEON-NOSVE-NEXT:    add sp, sp, #32675; NONEON-NOSVE-NEXT:    ret676    %r = insertelement <2 x float> %op1, float 5.0, i64 1677    ret <2 x float> %r678}679 680define <4 x float> @insertelement_v4f32(<4 x float> %op1) {681; CHECK-LABEL: insertelement_v4f32:682; CHECK:       // %bb.0:683; CHECK-NEXT:    mov w8, #3 // =0x3684; CHECK-NEXT:    index z1.s, #0, #1685; CHECK-NEXT:    ptrue p0.s686; CHECK-NEXT:    mov z2.s, w8687; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0688; CHECK-NEXT:    cmpeq p0.s, p0/z, z1.s, z2.s689; CHECK-NEXT:    fmov s1, #5.00000000690; CHECK-NEXT:    mov z0.s, p0/m, s1691; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0692; CHECK-NEXT:    ret693;694; NONEON-NOSVE-LABEL: insertelement_v4f32:695; NONEON-NOSVE:       // %bb.0:696; NONEON-NOSVE-NEXT:    sub sp, sp, #64697; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64698; NONEON-NOSVE-NEXT:    mov w8, #1084227584 // =0x40a00000699; NONEON-NOSVE-NEXT:    str q0, [sp]700; NONEON-NOSVE-NEXT:    str w8, [sp, #48]701; NONEON-NOSVE-NEXT:    ldr s1, [sp, #8]702; NONEON-NOSVE-NEXT:    ldr x8, [sp]703; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]704; NONEON-NOSVE-NEXT:    str x8, [sp, #32]705; NONEON-NOSVE-NEXT:    str q0, [sp, #16]706; NONEON-NOSVE-NEXT:    ldr s0, [sp, #16]707; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #40]708; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]709; NONEON-NOSVE-NEXT:    add sp, sp, #64710; NONEON-NOSVE-NEXT:    ret711    %r = insertelement <4 x float> %op1, float 5.0, i64 3712    ret <4 x float> %r713}714 715define <8 x float> @insertelement_v8f32(ptr %a) {716; CHECK-LABEL: insertelement_v8f32:717; CHECK:       // %bb.0:718; CHECK-NEXT:    mov w8, #3 // =0x3719; CHECK-NEXT:    index z0.s, #0, #1720; CHECK-NEXT:    ptrue p0.s721; CHECK-NEXT:    mov z1.s, w8722; CHECK-NEXT:    fmov s2, #5.00000000723; CHECK-NEXT:    cmpeq p0.s, p0/z, z0.s, z1.s724; CHECK-NEXT:    ldp q0, q1, [x0]725; CHECK-NEXT:    mov z1.s, p0/m, s2726; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1727; CHECK-NEXT:    ret728;729; NONEON-NOSVE-LABEL: insertelement_v8f32:730; NONEON-NOSVE:       // %bb.0:731; NONEON-NOSVE-NEXT:    sub sp, sp, #64732; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64733; NONEON-NOSVE-NEXT:    mov w8, #1084227584 // =0x40a00000734; NONEON-NOSVE-NEXT:    ldr q1, [x0, #16]735; NONEON-NOSVE-NEXT:    str w8, [sp, #48]736; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]737; NONEON-NOSVE-NEXT:    stp q1, q0, [sp]738; NONEON-NOSVE-NEXT:    ldr s1, [sp, #8]739; NONEON-NOSVE-NEXT:    ldr x8, [sp]740; NONEON-NOSVE-NEXT:    ldr s0, [sp, #16]741; NONEON-NOSVE-NEXT:    str x8, [sp, #32]742; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #40]743; NONEON-NOSVE-NEXT:    ldr q0, [x0]744; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]745; NONEON-NOSVE-NEXT:    add sp, sp, #64746; NONEON-NOSVE-NEXT:    ret747    %op1 = load <8 x float>, ptr %a748    %r = insertelement <8 x float> %op1, float 5.0, i64 7749    ret <8 x float> %r750}751 752;f64753define <1 x double> @insertelement_v1f64(<1 x double> %op1) {754; CHECK-LABEL: insertelement_v1f64:755; CHECK:       // %bb.0:756; CHECK-NEXT:    fmov d0, #5.00000000757; CHECK-NEXT:    ret758;759; NONEON-NOSVE-LABEL: insertelement_v1f64:760; NONEON-NOSVE:       // %bb.0:761; NONEON-NOSVE-NEXT:    sub sp, sp, #16762; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 16763; NONEON-NOSVE-NEXT:    mov x8, #4617315517961601024 // =0x4014000000000000764; NONEON-NOSVE-NEXT:    str x8, [sp, #8]765; NONEON-NOSVE-NEXT:    ldr d0, [sp, #8]766; NONEON-NOSVE-NEXT:    add sp, sp, #16767; NONEON-NOSVE-NEXT:    ret768    %r = insertelement <1 x double> %op1, double 5.0, i64 0769    ret <1 x double> %r770}771 772define <2 x double> @insertelement_v2f64(<2 x double> %op1) {773; CHECK-LABEL: insertelement_v2f64:774; CHECK:       // %bb.0:775; CHECK-NEXT:    mov w8, #1 // =0x1776; CHECK-NEXT:    index z1.d, #0, #1777; CHECK-NEXT:    ptrue p0.d778; CHECK-NEXT:    mov z2.d, x8779; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0780; CHECK-NEXT:    cmpeq p0.d, p0/z, z1.d, z2.d781; CHECK-NEXT:    fmov d1, #5.00000000782; CHECK-NEXT:    mov z0.d, p0/m, d1783; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0784; CHECK-NEXT:    ret785;786; NONEON-NOSVE-LABEL: insertelement_v2f64:787; NONEON-NOSVE:       // %bb.0:788; NONEON-NOSVE-NEXT:    sub sp, sp, #64789; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64790; NONEON-NOSVE-NEXT:    mov x8, #4617315517961601024 // =0x4014000000000000791; NONEON-NOSVE-NEXT:    str q0, [sp]792; NONEON-NOSVE-NEXT:    str x8, [sp, #48]793; NONEON-NOSVE-NEXT:    ldr d1, [sp]794; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]795; NONEON-NOSVE-NEXT:    str q0, [sp, #16]796; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]797; NONEON-NOSVE-NEXT:    stp d1, d0, [sp, #32]798; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]799; NONEON-NOSVE-NEXT:    add sp, sp, #64800; NONEON-NOSVE-NEXT:    ret801    %r = insertelement <2 x double> %op1, double 5.0, i64 1802    ret <2 x double> %r803}804 805define <4 x double> @insertelement_v4f64(ptr %a) {806; CHECK-LABEL: insertelement_v4f64:807; CHECK:       // %bb.0:808; CHECK-NEXT:    mov w8, #1 // =0x1809; CHECK-NEXT:    index z0.d, #0, #1810; CHECK-NEXT:    ptrue p0.d811; CHECK-NEXT:    mov z1.d, x8812; CHECK-NEXT:    fmov d2, #5.00000000813; CHECK-NEXT:    cmpeq p0.d, p0/z, z0.d, z1.d814; CHECK-NEXT:    ldp q0, q1, [x0]815; CHECK-NEXT:    mov z1.d, p0/m, d2816; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1817; CHECK-NEXT:    ret818;819; NONEON-NOSVE-LABEL: insertelement_v4f64:820; NONEON-NOSVE:       // %bb.0:821; NONEON-NOSVE-NEXT:    sub sp, sp, #64822; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 64823; NONEON-NOSVE-NEXT:    mov x8, #4617315517961601024 // =0x4014000000000000824; NONEON-NOSVE-NEXT:    ldr q1, [x0, #16]825; NONEON-NOSVE-NEXT:    str x8, [sp, #48]826; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]827; NONEON-NOSVE-NEXT:    stp q1, q0, [sp]828; NONEON-NOSVE-NEXT:    ldr d1, [sp]829; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]830; NONEON-NOSVE-NEXT:    stp d1, d0, [sp, #32]831; NONEON-NOSVE-NEXT:    ldr q0, [x0]832; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]833; NONEON-NOSVE-NEXT:    add sp, sp, #64834; NONEON-NOSVE-NEXT:    ret835    %op1 = load <4 x double>, ptr %a836    %r = insertelement <4 x double> %op1, double 5.0, i64 3837    ret <4 x double> %r838}839