brintos

brintos / llvm-project-archived public Read only

0
0
Text · 118.1 KiB · 64762e4 Raw
2832 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 5 6target triple = "aarch64-unknown-linux-gnu"7 8;9; Masked Load10;11 12define <4 x i8> @masked_load_v4i8(ptr %src, <4 x i1> %mask) {13; CHECK-LABEL: masked_load_v4i8:14; CHECK:       // %bb.0:15; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z016; CHECK-NEXT:    ptrue p0.h, vl417; CHECK-NEXT:    lsl z0.h, z0.h, #1518; CHECK-NEXT:    asr z0.h, z0.h, #1519; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #020; CHECK-NEXT:    ld1b { z0.h }, p0/z, [x0]21; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z022; CHECK-NEXT:    ret23;24; NONEON-NOSVE-LABEL: masked_load_v4i8:25; NONEON-NOSVE:       // %bb.0:26; NONEON-NOSVE-NEXT:    sub sp, sp, #12827; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 12828; NONEON-NOSVE-NEXT:    str d0, [sp, #112]29; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #114]30; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #116]31; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #118]32; NONEON-NOSVE-NEXT:    ldrh w11, [sp, #112]33; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #134; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #135; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #136; NONEON-NOSVE-NEXT:    and w8, w8, #0x237; NONEON-NOSVE-NEXT:    and w9, w9, #0x438; NONEON-NOSVE-NEXT:    and w10, w10, #0x839; NONEON-NOSVE-NEXT:    bfxil w8, w11, #0, #140; NONEON-NOSVE-NEXT:    orr w9, w9, w1041; NONEON-NOSVE-NEXT:    orr w8, w8, w942; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB0_243; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load44; NONEON-NOSVE-NEXT:    ldrb w9, [x0]45; NONEON-NOSVE-NEXT:    strh wzr, [sp, #110]46; NONEON-NOSVE-NEXT:    stur wzr, [sp, #106]47; NONEON-NOSVE-NEXT:    strh w9, [sp, #104]48; NONEON-NOSVE-NEXT:    ldr d0, [sp, #104]49; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB0_350; NONEON-NOSVE-NEXT:    b .LBB0_451; NONEON-NOSVE-NEXT:  .LBB0_2:52; NONEON-NOSVE-NEXT:    adrp x9, .LCPI0_053; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI0_0]54; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB0_455; NONEON-NOSVE-NEXT:  .LBB0_3: // %cond.load156; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #1]57; NONEON-NOSVE-NEXT:    str d0, [sp, #80]58; NONEON-NOSVE-NEXT:    strh w9, [sp, #96]59; NONEON-NOSVE-NEXT:    ldr w9, [sp, #84]60; NONEON-NOSVE-NEXT:    ldr d0, [sp, #96]61; NONEON-NOSVE-NEXT:    str w9, [sp, #92]62; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #80]63; NONEON-NOSVE-NEXT:    str d0, [sp, #72]64; NONEON-NOSVE-NEXT:    strh w9, [sp, #88]65; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #72]66; NONEON-NOSVE-NEXT:    strh w9, [sp, #90]67; NONEON-NOSVE-NEXT:    ldr d0, [sp, #88]68; NONEON-NOSVE-NEXT:  .LBB0_4: // %else269; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB0_770; NONEON-NOSVE-NEXT:  // %bb.5: // %else571; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB0_872; NONEON-NOSVE-NEXT:  .LBB0_6: // %else873; NONEON-NOSVE-NEXT:    add sp, sp, #12874; NONEON-NOSVE-NEXT:    ret75; NONEON-NOSVE-NEXT:  .LBB0_7: // %cond.load476; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #2]77; NONEON-NOSVE-NEXT:    str d0, [sp, #48]78; NONEON-NOSVE-NEXT:    strh w9, [sp, #64]79; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #54]80; NONEON-NOSVE-NEXT:    ldr d0, [sp, #64]81; NONEON-NOSVE-NEXT:    strh w9, [sp, #62]82; NONEON-NOSVE-NEXT:    ldr w9, [sp, #48]83; NONEON-NOSVE-NEXT:    str d0, [sp, #40]84; NONEON-NOSVE-NEXT:    str w9, [sp, #56]85; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #40]86; NONEON-NOSVE-NEXT:    strh w9, [sp, #60]87; NONEON-NOSVE-NEXT:    ldr d0, [sp, #56]88; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB0_689; NONEON-NOSVE-NEXT:  .LBB0_8: // %cond.load790; NONEON-NOSVE-NEXT:    ldrb w8, [x0, #3]91; NONEON-NOSVE-NEXT:    str d0, [sp, #8]92; NONEON-NOSVE-NEXT:    strh w8, [sp, #32]93; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]94; NONEON-NOSVE-NEXT:    ldr d0, [sp, #32]95; NONEON-NOSVE-NEXT:    strh w8, [sp, #28]96; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]97; NONEON-NOSVE-NEXT:    str d0, [sp, #16]98; NONEON-NOSVE-NEXT:    str w8, [sp, #24]99; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #16]100; NONEON-NOSVE-NEXT:    strh w8, [sp, #30]101; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]102; NONEON-NOSVE-NEXT:    add sp, sp, #128103; NONEON-NOSVE-NEXT:    ret104  %load = call <4 x i8> @llvm.masked.load.v4i8(ptr %src, i32 8, <4 x i1> %mask, <4 x i8> zeroinitializer)105  ret <4 x i8> %load106}107 108define <8 x i8> @masked_load_v8i8(ptr %src, <8 x i1> %mask) {109; CHECK-LABEL: masked_load_v8i8:110; CHECK:       // %bb.0:111; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0112; CHECK-NEXT:    ptrue p0.b, vl8113; CHECK-NEXT:    lsl z0.b, z0.b, #7114; CHECK-NEXT:    asr z0.b, z0.b, #7115; CHECK-NEXT:    cmpne p0.b, p0/z, z0.b, #0116; CHECK-NEXT:    ld1b { z0.b }, p0/z, [x0]117; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0118; CHECK-NEXT:    ret119;120; NONEON-NOSVE-LABEL: masked_load_v8i8:121; NONEON-NOSVE:       // %bb.0:122; NONEON-NOSVE-NEXT:    sub sp, sp, #272123; NONEON-NOSVE-NEXT:    str x29, [sp, #256] // 8-byte Spill124; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 272125; NONEON-NOSVE-NEXT:    .cfi_offset w29, -16126; NONEON-NOSVE-NEXT:    str d0, [sp, #240]127; NONEON-NOSVE-NEXT:    add x9, sp, #176128; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #242]129; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #243]130; NONEON-NOSVE-NEXT:    ldrb w11, [sp, #241]131; NONEON-NOSVE-NEXT:    ldrb w13, [sp, #244]132; NONEON-NOSVE-NEXT:    ldrb w14, [sp, #245]133; NONEON-NOSVE-NEXT:    ldrb w15, [sp, #246]134; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #1135; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #1136; NONEON-NOSVE-NEXT:    sbfx w11, w11, #0, #1137; NONEON-NOSVE-NEXT:    ldrb w12, [sp, #240]138; NONEON-NOSVE-NEXT:    sbfx w13, w13, #0, #1139; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #1140; NONEON-NOSVE-NEXT:    and w8, w8, #0x4141; NONEON-NOSVE-NEXT:    and w10, w10, #0x8142; NONEON-NOSVE-NEXT:    sbfx w15, w15, #0, #1143; NONEON-NOSVE-NEXT:    orr w8, w8, w10144; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #247]145; NONEON-NOSVE-NEXT:    and w11, w11, #0x2146; NONEON-NOSVE-NEXT:    and w13, w13, #0x10147; NONEON-NOSVE-NEXT:    bfxil w11, w12, #0, #1148; NONEON-NOSVE-NEXT:    and w12, w14, #0x20149; NONEON-NOSVE-NEXT:    orr w8, w8, w13150; NONEON-NOSVE-NEXT:    and w13, w15, #0x40151; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #1152; NONEON-NOSVE-NEXT:    orr w8, w11, w8153; NONEON-NOSVE-NEXT:    orr w11, w12, w13154; NONEON-NOSVE-NEXT:    orr w8, w8, w11155; NONEON-NOSVE-NEXT:    and w10, w10, #0x80156; NONEON-NOSVE-NEXT:    add w10, w8, w10157; NONEON-NOSVE-NEXT:    and w8, w10, #0xff158; NONEON-NOSVE-NEXT:    tbz w10, #0, .LBB1_2159; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load160; NONEON-NOSVE-NEXT:    ldrb w10, [x0]161; NONEON-NOSVE-NEXT:    strb wzr, [sp, #239]162; NONEON-NOSVE-NEXT:    sturh wzr, [x9, #61]163; NONEON-NOSVE-NEXT:    stur wzr, [x9, #57]164; NONEON-NOSVE-NEXT:    strb w10, [sp, #232]165; NONEON-NOSVE-NEXT:    ldr d0, [sp, #232]166; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB1_3167; NONEON-NOSVE-NEXT:    b .LBB1_4168; NONEON-NOSVE-NEXT:  .LBB1_2:169; NONEON-NOSVE-NEXT:    adrp x10, .LCPI1_0170; NONEON-NOSVE-NEXT:    ldr d0, [x10, :lo12:.LCPI1_0]171; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB1_4172; NONEON-NOSVE-NEXT:  .LBB1_3: // %cond.load1173; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #1]174; NONEON-NOSVE-NEXT:    str d0, [sp, #208]175; NONEON-NOSVE-NEXT:    strb w10, [sp, #224]176; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #214]177; NONEON-NOSVE-NEXT:    ldr d0, [sp, #224]178; NONEON-NOSVE-NEXT:    strh w10, [sp, #222]179; NONEON-NOSVE-NEXT:    str d0, [sp, #200]180; NONEON-NOSVE-NEXT:    ldur w10, [x9, #34]181; NONEON-NOSVE-NEXT:    stur w10, [x9, #42]182; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #208]183; NONEON-NOSVE-NEXT:    strb w10, [sp, #216]184; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #200]185; NONEON-NOSVE-NEXT:    strb w10, [sp, #217]186; NONEON-NOSVE-NEXT:    ldr d0, [sp, #216]187; NONEON-NOSVE-NEXT:  .LBB1_4: // %else2188; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB1_12189; NONEON-NOSVE-NEXT:  // %bb.5: // %else5190; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB1_13191; NONEON-NOSVE-NEXT:  .LBB1_6: // %else8192; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB1_14193; NONEON-NOSVE-NEXT:  .LBB1_7: // %else11194; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB1_15195; NONEON-NOSVE-NEXT:  .LBB1_8: // %else14196; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB1_16197; NONEON-NOSVE-NEXT:  .LBB1_9: // %else17198; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB1_11199; NONEON-NOSVE-NEXT:  .LBB1_10: // %cond.load19200; NONEON-NOSVE-NEXT:    ldrb w8, [x0, #7]201; NONEON-NOSVE-NEXT:    str d0, [sp, #8]202; NONEON-NOSVE-NEXT:    strb w8, [sp, #32]203; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #14]204; NONEON-NOSVE-NEXT:    ldr d0, [sp, #32]205; NONEON-NOSVE-NEXT:    strb w8, [sp, #30]206; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]207; NONEON-NOSVE-NEXT:    str d0, [sp, #16]208; NONEON-NOSVE-NEXT:    strh w8, [sp, #28]209; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]210; NONEON-NOSVE-NEXT:    str w8, [sp, #24]211; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #16]212; NONEON-NOSVE-NEXT:    strb w8, [sp, #31]213; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]214; NONEON-NOSVE-NEXT:  .LBB1_11: // %else20215; NONEON-NOSVE-NEXT:    ldr x29, [sp, #256] // 8-byte Reload216; NONEON-NOSVE-NEXT:    add sp, sp, #272217; NONEON-NOSVE-NEXT:    ret218; NONEON-NOSVE-NEXT:  .LBB1_12: // %cond.load4219; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #2]220; NONEON-NOSVE-NEXT:    str d0, [sp, #176]221; NONEON-NOSVE-NEXT:    strb w10, [sp, #192]222; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #183]223; NONEON-NOSVE-NEXT:    ldr d0, [sp, #192]224; NONEON-NOSVE-NEXT:    strb w10, [sp, #191]225; NONEON-NOSVE-NEXT:    str d0, [sp, #168]226; NONEON-NOSVE-NEXT:    ldur w10, [x9, #3]227; NONEON-NOSVE-NEXT:    stur w10, [x9, #11]228; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #176]229; NONEON-NOSVE-NEXT:    strh w9, [sp, #184]230; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #168]231; NONEON-NOSVE-NEXT:    strb w9, [sp, #186]232; NONEON-NOSVE-NEXT:    ldr d0, [sp, #184]233; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB1_6234; NONEON-NOSVE-NEXT:  .LBB1_13: // %cond.load7235; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #3]236; NONEON-NOSVE-NEXT:    str d0, [sp, #144]237; NONEON-NOSVE-NEXT:    strb w9, [sp, #160]238; NONEON-NOSVE-NEXT:    ldr w9, [sp, #148]239; NONEON-NOSVE-NEXT:    ldr d0, [sp, #160]240; NONEON-NOSVE-NEXT:    str w9, [sp, #156]241; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #146]242; NONEON-NOSVE-NEXT:    str d0, [sp, #136]243; NONEON-NOSVE-NEXT:    strb w9, [sp, #154]244; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #144]245; NONEON-NOSVE-NEXT:    strh w9, [sp, #152]246; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #136]247; NONEON-NOSVE-NEXT:    strb w9, [sp, #155]248; NONEON-NOSVE-NEXT:    ldr d0, [sp, #152]249; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB1_7250; NONEON-NOSVE-NEXT:  .LBB1_14: // %cond.load10251; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #4]252; NONEON-NOSVE-NEXT:    str d0, [sp, #112]253; NONEON-NOSVE-NEXT:    strb w9, [sp, #128]254; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #119]255; NONEON-NOSVE-NEXT:    ldr d0, [sp, #128]256; NONEON-NOSVE-NEXT:    strb w9, [sp, #127]257; NONEON-NOSVE-NEXT:    ldurh w9, [sp, #117]258; NONEON-NOSVE-NEXT:    str d0, [sp, #104]259; NONEON-NOSVE-NEXT:    sturh w9, [sp, #125]260; NONEON-NOSVE-NEXT:    ldr w9, [sp, #112]261; NONEON-NOSVE-NEXT:    str w9, [sp, #120]262; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #104]263; NONEON-NOSVE-NEXT:    strb w9, [sp, #124]264; NONEON-NOSVE-NEXT:    ldr d0, [sp, #120]265; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB1_8266; NONEON-NOSVE-NEXT:  .LBB1_15: // %cond.load13267; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #5]268; NONEON-NOSVE-NEXT:    str d0, [sp, #80]269; NONEON-NOSVE-NEXT:    strb w9, [sp, #96]270; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #86]271; NONEON-NOSVE-NEXT:    ldr d0, [sp, #96]272; NONEON-NOSVE-NEXT:    strh w9, [sp, #94]273; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #84]274; NONEON-NOSVE-NEXT:    str d0, [sp, #72]275; NONEON-NOSVE-NEXT:    strb w9, [sp, #92]276; NONEON-NOSVE-NEXT:    ldr w9, [sp, #80]277; NONEON-NOSVE-NEXT:    str w9, [sp, #88]278; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #72]279; NONEON-NOSVE-NEXT:    strb w9, [sp, #93]280; NONEON-NOSVE-NEXT:    ldr d0, [sp, #88]281; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB1_9282; NONEON-NOSVE-NEXT:  .LBB1_16: // %cond.load16283; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #6]284; NONEON-NOSVE-NEXT:    str d0, [sp, #48]285; NONEON-NOSVE-NEXT:    strb w9, [sp, #64]286; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #55]287; NONEON-NOSVE-NEXT:    ldr d0, [sp, #64]288; NONEON-NOSVE-NEXT:    strb w9, [sp, #63]289; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #52]290; NONEON-NOSVE-NEXT:    str d0, [sp, #40]291; NONEON-NOSVE-NEXT:    strh w9, [sp, #60]292; NONEON-NOSVE-NEXT:    ldr w9, [sp, #48]293; NONEON-NOSVE-NEXT:    str w9, [sp, #56]294; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #40]295; NONEON-NOSVE-NEXT:    strb w9, [sp, #62]296; NONEON-NOSVE-NEXT:    ldr d0, [sp, #56]297; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB1_10298; NONEON-NOSVE-NEXT:    b .LBB1_11299  %load = call <8 x i8> @llvm.masked.load.v8i8(ptr %src, i32 8, <8 x i1> %mask, <8 x i8> zeroinitializer)300  ret <8 x i8> %load301}302 303define <16 x i8> @masked_load_v16i8(ptr %src, <16 x i1> %mask) {304; CHECK-LABEL: masked_load_v16i8:305; CHECK:       // %bb.0:306; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0307; CHECK-NEXT:    ptrue p0.b, vl16308; CHECK-NEXT:    lsl z0.b, z0.b, #7309; CHECK-NEXT:    asr z0.b, z0.b, #7310; CHECK-NEXT:    cmpne p0.b, p0/z, z0.b, #0311; CHECK-NEXT:    ld1b { z0.b }, p0/z, [x0]312; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0313; CHECK-NEXT:    ret314;315; NONEON-NOSVE-LABEL: masked_load_v16i8:316; NONEON-NOSVE:       // %bb.0:317; NONEON-NOSVE-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill318; NONEON-NOSVE-NEXT:    sub sp, sp, #992319; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 1008320; NONEON-NOSVE-NEXT:    .cfi_offset w29, -16321; NONEON-NOSVE-NEXT:    str q0, [sp, #976]322; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #978]323; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #979]324; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #977]325; NONEON-NOSVE-NEXT:    ldrb w12, [sp, #980]326; NONEON-NOSVE-NEXT:    ldrb w13, [sp, #981]327; NONEON-NOSVE-NEXT:    ldrb w14, [sp, #982]328; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #1329; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #1330; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #1331; NONEON-NOSVE-NEXT:    ldrb w11, [sp, #976]332; NONEON-NOSVE-NEXT:    sbfx w12, w12, #0, #1333; NONEON-NOSVE-NEXT:    sbfx w13, w13, #0, #1334; NONEON-NOSVE-NEXT:    and w8, w8, #0x4335; NONEON-NOSVE-NEXT:    and w9, w9, #0x8336; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #1337; NONEON-NOSVE-NEXT:    orr w8, w8, w9338; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #983]339; NONEON-NOSVE-NEXT:    and w10, w10, #0x2340; NONEON-NOSVE-NEXT:    and w12, w12, #0x10341; NONEON-NOSVE-NEXT:    bfxil w10, w11, #0, #1342; NONEON-NOSVE-NEXT:    and w11, w13, #0x20343; NONEON-NOSVE-NEXT:    orr w8, w8, w12344; NONEON-NOSVE-NEXT:    and w12, w14, #0x40345; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #1346; NONEON-NOSVE-NEXT:    orr w8, w10, w8347; NONEON-NOSVE-NEXT:    orr w10, w11, w12348; NONEON-NOSVE-NEXT:    orr w8, w8, w10349; NONEON-NOSVE-NEXT:    and w9, w9, #0xffffff80350; NONEON-NOSVE-NEXT:    add w8, w8, w9351; NONEON-NOSVE-NEXT:    add x9, sp, #720352; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB2_2353; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load354; NONEON-NOSVE-NEXT:    ldrb w10, [x0]355; NONEON-NOSVE-NEXT:    strb wzr, [sp, #975]356; NONEON-NOSVE-NEXT:    sturh wzr, [x9, #253]357; NONEON-NOSVE-NEXT:    stur wzr, [x9, #249]358; NONEON-NOSVE-NEXT:    stur xzr, [x9, #241]359; NONEON-NOSVE-NEXT:    strb w10, [sp, #960]360; NONEON-NOSVE-NEXT:    ldr q0, [sp, #960]361; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB2_3362; NONEON-NOSVE-NEXT:    b .LBB2_4363; NONEON-NOSVE-NEXT:  .LBB2_2:364; NONEON-NOSVE-NEXT:    adrp x10, .LCPI2_0365; NONEON-NOSVE-NEXT:    ldr q0, [x10, :lo12:.LCPI2_0]366; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB2_4367; NONEON-NOSVE-NEXT:  .LBB2_3: // %cond.load1368; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #1]369; NONEON-NOSVE-NEXT:    str q0, [sp, #912]370; NONEON-NOSVE-NEXT:    strb w10, [sp, #944]371; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #926]372; NONEON-NOSVE-NEXT:    ldr q0, [sp, #944]373; NONEON-NOSVE-NEXT:    strh w10, [sp, #942]374; NONEON-NOSVE-NEXT:    str q0, [sp, #896]375; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]376; NONEON-NOSVE-NEXT:    ldur x11, [x9, #194]377; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]378; NONEON-NOSVE-NEXT:    stur x11, [x9, #210]379; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #912]380; NONEON-NOSVE-NEXT:    strb w10, [sp, #928]381; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #896]382; NONEON-NOSVE-NEXT:    strb w10, [sp, #929]383; NONEON-NOSVE-NEXT:    ldr q0, [sp, #928]384; NONEON-NOSVE-NEXT:  .LBB2_4: // %else2385; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB2_20386; NONEON-NOSVE-NEXT:  // %bb.5: // %else5387; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB2_21388; NONEON-NOSVE-NEXT:  .LBB2_6: // %else8389; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB2_22390; NONEON-NOSVE-NEXT:  .LBB2_7: // %else11391; NONEON-NOSVE-NEXT:    add x9, sp, #464392; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB2_23393; NONEON-NOSVE-NEXT:  .LBB2_8: // %else14394; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB2_24395; NONEON-NOSVE-NEXT:  .LBB2_9: // %else17396; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB2_25397; NONEON-NOSVE-NEXT:  .LBB2_10: // %else20398; NONEON-NOSVE-NEXT:    tbnz w8, #8, .LBB2_26399; NONEON-NOSVE-NEXT:  .LBB2_11: // %else23400; NONEON-NOSVE-NEXT:    add x9, sp, #208401; NONEON-NOSVE-NEXT:    tbnz w8, #9, .LBB2_27402; NONEON-NOSVE-NEXT:  .LBB2_12: // %else26403; NONEON-NOSVE-NEXT:    tbnz w8, #10, .LBB2_28404; NONEON-NOSVE-NEXT:  .LBB2_13: // %else29405; NONEON-NOSVE-NEXT:    tbnz w8, #11, .LBB2_29406; NONEON-NOSVE-NEXT:  .LBB2_14: // %else32407; NONEON-NOSVE-NEXT:    tbnz w8, #12, .LBB2_30408; NONEON-NOSVE-NEXT:  .LBB2_15: // %else35409; NONEON-NOSVE-NEXT:    tbnz w8, #13, .LBB2_31410; NONEON-NOSVE-NEXT:  .LBB2_16: // %else38411; NONEON-NOSVE-NEXT:    tbnz w8, #14, .LBB2_32412; NONEON-NOSVE-NEXT:  .LBB2_17: // %else41413; NONEON-NOSVE-NEXT:    tbz w8, #15, .LBB2_19414; NONEON-NOSVE-NEXT:  .LBB2_18: // %cond.load43415; NONEON-NOSVE-NEXT:    ldrb w8, [x0, #15]416; NONEON-NOSVE-NEXT:    str q0, [sp]417; NONEON-NOSVE-NEXT:    strb w8, [sp, #48]418; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #14]419; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]420; NONEON-NOSVE-NEXT:    strb w8, [sp, #46]421; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]422; NONEON-NOSVE-NEXT:    str q0, [sp, #16]423; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]424; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]425; NONEON-NOSVE-NEXT:    str w8, [sp, #40]426; NONEON-NOSVE-NEXT:    ldr x8, [sp]427; NONEON-NOSVE-NEXT:    str x8, [sp, #32]428; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #16]429; NONEON-NOSVE-NEXT:    strb w8, [sp, #47]430; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]431; NONEON-NOSVE-NEXT:  .LBB2_19: // %else44432; NONEON-NOSVE-NEXT:    add sp, sp, #992433; NONEON-NOSVE-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload434; NONEON-NOSVE-NEXT:    ret435; NONEON-NOSVE-NEXT:  .LBB2_20: // %cond.load4436; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #2]437; NONEON-NOSVE-NEXT:    str q0, [sp, #848]438; NONEON-NOSVE-NEXT:    strb w10, [sp, #880]439; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #863]440; NONEON-NOSVE-NEXT:    ldr q0, [sp, #880]441; NONEON-NOSVE-NEXT:    strb w10, [sp, #879]442; NONEON-NOSVE-NEXT:    str q0, [sp, #832]443; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]444; NONEON-NOSVE-NEXT:    ldur x11, [x9, #131]445; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]446; NONEON-NOSVE-NEXT:    stur x11, [x9, #147]447; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #848]448; NONEON-NOSVE-NEXT:    strh w10, [sp, #864]449; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #832]450; NONEON-NOSVE-NEXT:    strb w10, [sp, #866]451; NONEON-NOSVE-NEXT:    ldr q0, [sp, #864]452; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB2_6453; NONEON-NOSVE-NEXT:  .LBB2_21: // %cond.load7454; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #3]455; NONEON-NOSVE-NEXT:    str q0, [sp, #784]456; NONEON-NOSVE-NEXT:    strb w10, [sp, #816]457; NONEON-NOSVE-NEXT:    ldr w10, [sp, #796]458; NONEON-NOSVE-NEXT:    ldr q0, [sp, #816]459; NONEON-NOSVE-NEXT:    str w10, [sp, #812]460; NONEON-NOSVE-NEXT:    str q0, [sp, #768]461; NONEON-NOSVE-NEXT:    ldur x10, [x9, #68]462; NONEON-NOSVE-NEXT:    stur x10, [x9, #84]463; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #786]464; NONEON-NOSVE-NEXT:    strb w10, [sp, #802]465; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #784]466; NONEON-NOSVE-NEXT:    strh w10, [sp, #800]467; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #768]468; NONEON-NOSVE-NEXT:    strb w10, [sp, #803]469; NONEON-NOSVE-NEXT:    ldr q0, [sp, #800]470; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB2_7471; NONEON-NOSVE-NEXT:  .LBB2_22: // %cond.load10472; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #4]473; NONEON-NOSVE-NEXT:    str q0, [sp, #720]474; NONEON-NOSVE-NEXT:    strb w10, [sp, #752]475; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #735]476; NONEON-NOSVE-NEXT:    ldr q0, [sp, #752]477; NONEON-NOSVE-NEXT:    strb w10, [sp, #751]478; NONEON-NOSVE-NEXT:    str q0, [sp, #704]479; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]480; NONEON-NOSVE-NEXT:    ldur x11, [x9, #5]481; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]482; NONEON-NOSVE-NEXT:    stur x11, [x9, #21]483; NONEON-NOSVE-NEXT:    ldr w9, [sp, #720]484; NONEON-NOSVE-NEXT:    str w9, [sp, #736]485; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #704]486; NONEON-NOSVE-NEXT:    strb w9, [sp, #740]487; NONEON-NOSVE-NEXT:    ldr q0, [sp, #736]488; NONEON-NOSVE-NEXT:    add x9, sp, #464489; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB2_8490; NONEON-NOSVE-NEXT:  .LBB2_23: // %cond.load13491; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #5]492; NONEON-NOSVE-NEXT:    str q0, [sp, #656]493; NONEON-NOSVE-NEXT:    strb w10, [sp, #688]494; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #670]495; NONEON-NOSVE-NEXT:    ldr q0, [sp, #688]496; NONEON-NOSVE-NEXT:    strh w10, [sp, #686]497; NONEON-NOSVE-NEXT:    str q0, [sp, #640]498; NONEON-NOSVE-NEXT:    ldur x10, [x9, #198]499; NONEON-NOSVE-NEXT:    stur x10, [x9, #214]500; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #660]501; NONEON-NOSVE-NEXT:    strb w10, [sp, #676]502; NONEON-NOSVE-NEXT:    ldr w10, [sp, #656]503; NONEON-NOSVE-NEXT:    str w10, [sp, #672]504; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #640]505; NONEON-NOSVE-NEXT:    strb w10, [sp, #677]506; NONEON-NOSVE-NEXT:    ldr q0, [sp, #672]507; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB2_9508; NONEON-NOSVE-NEXT:  .LBB2_24: // %cond.load16509; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #6]510; NONEON-NOSVE-NEXT:    str q0, [sp, #592]511; NONEON-NOSVE-NEXT:    strb w10, [sp, #624]512; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #607]513; NONEON-NOSVE-NEXT:    ldr q0, [sp, #624]514; NONEON-NOSVE-NEXT:    strb w10, [sp, #623]515; NONEON-NOSVE-NEXT:    str q0, [sp, #576]516; NONEON-NOSVE-NEXT:    ldur x10, [x9, #135]517; NONEON-NOSVE-NEXT:    stur x10, [x9, #151]518; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #596]519; NONEON-NOSVE-NEXT:    strh w10, [sp, #612]520; NONEON-NOSVE-NEXT:    ldr w10, [sp, #592]521; NONEON-NOSVE-NEXT:    str w10, [sp, #608]522; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #576]523; NONEON-NOSVE-NEXT:    strb w10, [sp, #614]524; NONEON-NOSVE-NEXT:    ldr q0, [sp, #608]525; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB2_10526; NONEON-NOSVE-NEXT:  .LBB2_25: // %cond.load19527; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #7]528; NONEON-NOSVE-NEXT:    str q0, [sp, #528]529; NONEON-NOSVE-NEXT:    strb w10, [sp, #560]530; NONEON-NOSVE-NEXT:    ldr x10, [sp, #536]531; NONEON-NOSVE-NEXT:    ldr q0, [sp, #560]532; NONEON-NOSVE-NEXT:    str x10, [sp, #552]533; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #534]534; NONEON-NOSVE-NEXT:    str q0, [sp, #512]535; NONEON-NOSVE-NEXT:    strb w10, [sp, #550]536; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #532]537; NONEON-NOSVE-NEXT:    strh w10, [sp, #548]538; NONEON-NOSVE-NEXT:    ldr w10, [sp, #528]539; NONEON-NOSVE-NEXT:    str w10, [sp, #544]540; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #512]541; NONEON-NOSVE-NEXT:    strb w10, [sp, #551]542; NONEON-NOSVE-NEXT:    ldr q0, [sp, #544]543; NONEON-NOSVE-NEXT:    tbz w8, #8, .LBB2_11544; NONEON-NOSVE-NEXT:  .LBB2_26: // %cond.load22545; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #8]546; NONEON-NOSVE-NEXT:    str q0, [sp, #464]547; NONEON-NOSVE-NEXT:    strb w10, [sp, #496]548; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #479]549; NONEON-NOSVE-NEXT:    ldr q0, [sp, #496]550; NONEON-NOSVE-NEXT:    strb w10, [sp, #495]551; NONEON-NOSVE-NEXT:    str q0, [sp, #448]552; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]553; NONEON-NOSVE-NEXT:    ldur w11, [x9, #9]554; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]555; NONEON-NOSVE-NEXT:    stur w11, [x9, #25]556; NONEON-NOSVE-NEXT:    ldr x9, [sp, #464]557; NONEON-NOSVE-NEXT:    str x9, [sp, #480]558; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #448]559; NONEON-NOSVE-NEXT:    strb w9, [sp, #488]560; NONEON-NOSVE-NEXT:    ldr q0, [sp, #480]561; NONEON-NOSVE-NEXT:    add x9, sp, #208562; NONEON-NOSVE-NEXT:    tbz w8, #9, .LBB2_12563; NONEON-NOSVE-NEXT:  .LBB2_27: // %cond.load25564; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #9]565; NONEON-NOSVE-NEXT:    str q0, [sp, #400]566; NONEON-NOSVE-NEXT:    strb w10, [sp, #432]567; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #414]568; NONEON-NOSVE-NEXT:    ldr q0, [sp, #432]569; NONEON-NOSVE-NEXT:    strh w10, [sp, #430]570; NONEON-NOSVE-NEXT:    str q0, [sp, #384]571; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]572; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]573; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #408]574; NONEON-NOSVE-NEXT:    strb w10, [sp, #424]575; NONEON-NOSVE-NEXT:    ldr x10, [sp, #400]576; NONEON-NOSVE-NEXT:    str x10, [sp, #416]577; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #384]578; NONEON-NOSVE-NEXT:    strb w10, [sp, #425]579; NONEON-NOSVE-NEXT:    ldr q0, [sp, #416]580; NONEON-NOSVE-NEXT:    tbz w8, #10, .LBB2_13581; NONEON-NOSVE-NEXT:  .LBB2_28: // %cond.load28582; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #10]583; NONEON-NOSVE-NEXT:    str q0, [sp, #336]584; NONEON-NOSVE-NEXT:    strb w10, [sp, #368]585; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #351]586; NONEON-NOSVE-NEXT:    ldr q0, [sp, #368]587; NONEON-NOSVE-NEXT:    strb w10, [sp, #367]588; NONEON-NOSVE-NEXT:    str q0, [sp, #320]589; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]590; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]591; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #344]592; NONEON-NOSVE-NEXT:    strh w10, [sp, #360]593; NONEON-NOSVE-NEXT:    ldr x10, [sp, #336]594; NONEON-NOSVE-NEXT:    str x10, [sp, #352]595; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #320]596; NONEON-NOSVE-NEXT:    strb w10, [sp, #362]597; NONEON-NOSVE-NEXT:    ldr q0, [sp, #352]598; NONEON-NOSVE-NEXT:    tbz w8, #11, .LBB2_14599; NONEON-NOSVE-NEXT:  .LBB2_29: // %cond.load31600; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #11]601; NONEON-NOSVE-NEXT:    str q0, [sp, #272]602; NONEON-NOSVE-NEXT:    strb w10, [sp, #304]603; NONEON-NOSVE-NEXT:    ldr w10, [sp, #284]604; NONEON-NOSVE-NEXT:    ldr q0, [sp, #304]605; NONEON-NOSVE-NEXT:    str w10, [sp, #300]606; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #282]607; NONEON-NOSVE-NEXT:    str q0, [sp, #256]608; NONEON-NOSVE-NEXT:    strb w10, [sp, #298]609; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #280]610; NONEON-NOSVE-NEXT:    strh w10, [sp, #296]611; NONEON-NOSVE-NEXT:    ldr x10, [sp, #272]612; NONEON-NOSVE-NEXT:    str x10, [sp, #288]613; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #256]614; NONEON-NOSVE-NEXT:    strb w10, [sp, #299]615; NONEON-NOSVE-NEXT:    ldr q0, [sp, #288]616; NONEON-NOSVE-NEXT:    tbz w8, #12, .LBB2_15617; NONEON-NOSVE-NEXT:  .LBB2_30: // %cond.load34618; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #12]619; NONEON-NOSVE-NEXT:    str q0, [sp, #208]620; NONEON-NOSVE-NEXT:    strb w10, [sp, #240]621; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #223]622; NONEON-NOSVE-NEXT:    ldr q0, [sp, #240]623; NONEON-NOSVE-NEXT:    strb w10, [sp, #239]624; NONEON-NOSVE-NEXT:    str q0, [sp, #192]625; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]626; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]627; NONEON-NOSVE-NEXT:    ldr w9, [sp, #216]628; NONEON-NOSVE-NEXT:    str w9, [sp, #232]629; NONEON-NOSVE-NEXT:    ldr x9, [sp, #208]630; NONEON-NOSVE-NEXT:    str x9, [sp, #224]631; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #192]632; NONEON-NOSVE-NEXT:    strb w9, [sp, #236]633; NONEON-NOSVE-NEXT:    ldr q0, [sp, #224]634; NONEON-NOSVE-NEXT:    tbz w8, #13, .LBB2_16635; NONEON-NOSVE-NEXT:  .LBB2_31: // %cond.load37636; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #13]637; NONEON-NOSVE-NEXT:    str q0, [sp, #144]638; NONEON-NOSVE-NEXT:    strb w9, [sp, #176]639; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #158]640; NONEON-NOSVE-NEXT:    ldr q0, [sp, #176]641; NONEON-NOSVE-NEXT:    strh w9, [sp, #174]642; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #156]643; NONEON-NOSVE-NEXT:    str q0, [sp, #128]644; NONEON-NOSVE-NEXT:    strb w9, [sp, #172]645; NONEON-NOSVE-NEXT:    ldr w9, [sp, #152]646; NONEON-NOSVE-NEXT:    str w9, [sp, #168]647; NONEON-NOSVE-NEXT:    ldr x9, [sp, #144]648; NONEON-NOSVE-NEXT:    str x9, [sp, #160]649; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #128]650; NONEON-NOSVE-NEXT:    strb w9, [sp, #173]651; NONEON-NOSVE-NEXT:    ldr q0, [sp, #160]652; NONEON-NOSVE-NEXT:    tbz w8, #14, .LBB2_17653; NONEON-NOSVE-NEXT:  .LBB2_32: // %cond.load40654; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #14]655; NONEON-NOSVE-NEXT:    str q0, [sp, #80]656; NONEON-NOSVE-NEXT:    strb w9, [sp, #112]657; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #95]658; NONEON-NOSVE-NEXT:    ldr q0, [sp, #112]659; NONEON-NOSVE-NEXT:    strb w9, [sp, #111]660; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #92]661; NONEON-NOSVE-NEXT:    str q0, [sp, #64]662; NONEON-NOSVE-NEXT:    strh w9, [sp, #108]663; NONEON-NOSVE-NEXT:    ldr w9, [sp, #88]664; NONEON-NOSVE-NEXT:    str w9, [sp, #104]665; NONEON-NOSVE-NEXT:    ldr x9, [sp, #80]666; NONEON-NOSVE-NEXT:    str x9, [sp, #96]667; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #64]668; NONEON-NOSVE-NEXT:    strb w9, [sp, #110]669; NONEON-NOSVE-NEXT:    ldr q0, [sp, #96]670; NONEON-NOSVE-NEXT:    tbnz w8, #15, .LBB2_18671; NONEON-NOSVE-NEXT:    b .LBB2_19672  %load = call <16 x i8> @llvm.masked.load.v16i8(ptr %src, i32 8, <16 x i1> %mask, <16 x i8> zeroinitializer)673  ret <16 x i8> %load674}675 676define <32 x i8> @masked_load_v32i8(ptr %src, <32 x i1> %mask) {677; CHECK-LABEL: masked_load_v32i8:678; CHECK:       // %bb.0:679; CHECK-NEXT:    sub sp, sp, #32680; CHECK-NEXT:    .cfi_def_cfa_offset 32681; CHECK-NEXT:    ldr w8, [sp, #224]682; CHECK-NEXT:    ldr w9, [sp, #216]683; CHECK-NEXT:    ptrue p0.b, vl16684; CHECK-NEXT:    strb w7, [sp, #6]685; CHECK-NEXT:    strb w8, [sp, #31]686; CHECK-NEXT:    ldr w8, [sp, #208]687; CHECK-NEXT:    strb w9, [sp, #30]688; CHECK-NEXT:    ldr w9, [sp, #200]689; CHECK-NEXT:    strb w8, [sp, #29]690; CHECK-NEXT:    ldr w8, [sp, #192]691; CHECK-NEXT:    strb w9, [sp, #28]692; CHECK-NEXT:    ldr w9, [sp, #184]693; CHECK-NEXT:    strb w8, [sp, #27]694; CHECK-NEXT:    ldr w8, [sp, #176]695; CHECK-NEXT:    strb w9, [sp, #26]696; CHECK-NEXT:    ldr w9, [sp, #168]697; CHECK-NEXT:    strb w8, [sp, #25]698; CHECK-NEXT:    ldr w8, [sp, #160]699; CHECK-NEXT:    strb w9, [sp, #24]700; CHECK-NEXT:    ldr w9, [sp, #152]701; CHECK-NEXT:    strb w8, [sp, #23]702; CHECK-NEXT:    ldr w8, [sp, #144]703; CHECK-NEXT:    strb w9, [sp, #22]704; CHECK-NEXT:    ldr w9, [sp, #136]705; CHECK-NEXT:    strb w8, [sp, #21]706; CHECK-NEXT:    ldr w8, [sp, #128]707; CHECK-NEXT:    strb w9, [sp, #20]708; CHECK-NEXT:    ldr w9, [sp, #120]709; CHECK-NEXT:    strb w8, [sp, #19]710; CHECK-NEXT:    ldr w8, [sp, #112]711; CHECK-NEXT:    strb w9, [sp, #18]712; CHECK-NEXT:    ldr w9, [sp, #104]713; CHECK-NEXT:    strb w8, [sp, #17]714; CHECK-NEXT:    ldr w8, [sp, #96]715; CHECK-NEXT:    strb w9, [sp, #16]716; CHECK-NEXT:    ldr w9, [sp, #88]717; CHECK-NEXT:    strb w8, [sp, #15]718; CHECK-NEXT:    ldr w8, [sp, #80]719; CHECK-NEXT:    strb w9, [sp, #14]720; CHECK-NEXT:    ldr w9, [sp, #72]721; CHECK-NEXT:    strb w8, [sp, #13]722; CHECK-NEXT:    ldr w8, [sp, #64]723; CHECK-NEXT:    strb w9, [sp, #12]724; CHECK-NEXT:    ldr w9, [sp, #56]725; CHECK-NEXT:    strb w8, [sp, #11]726; CHECK-NEXT:    ldr w8, [sp, #48]727; CHECK-NEXT:    strb w9, [sp, #10]728; CHECK-NEXT:    ldr w9, [sp, #40]729; CHECK-NEXT:    strb w8, [sp, #9]730; CHECK-NEXT:    ldr w8, [sp, #32]731; CHECK-NEXT:    strb w9, [sp, #8]732; CHECK-NEXT:    strb w8, [sp, #7]733; CHECK-NEXT:    mov w8, #16 // =0x10734; CHECK-NEXT:    strb w6, [sp, #5]735; CHECK-NEXT:    strb w5, [sp, #4]736; CHECK-NEXT:    strb w4, [sp, #3]737; CHECK-NEXT:    strb w3, [sp, #2]738; CHECK-NEXT:    strb w2, [sp, #1]739; CHECK-NEXT:    strb w1, [sp]740; CHECK-NEXT:    ldp q1, q0, [sp]741; CHECK-NEXT:    lsl z0.b, z0.b, #7742; CHECK-NEXT:    lsl z1.b, z1.b, #7743; CHECK-NEXT:    asr z0.b, z0.b, #7744; CHECK-NEXT:    asr z1.b, z1.b, #7745; CHECK-NEXT:    cmpne p1.b, p0/z, z0.b, #0746; CHECK-NEXT:    cmpne p0.b, p0/z, z1.b, #0747; CHECK-NEXT:    ld1b { z0.b }, p0/z, [x0]748; CHECK-NEXT:    ld1b { z1.b }, p1/z, [x0, x8]749; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0750; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z1751; CHECK-NEXT:    add sp, sp, #32752; CHECK-NEXT:    ret753;754; NONEON-NOSVE-LABEL: masked_load_v32i8:755; NONEON-NOSVE:       // %bb.0:756; NONEON-NOSVE-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill757; NONEON-NOSVE-NEXT:    sub sp, sp, #2000758; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 2016759; NONEON-NOSVE-NEXT:    .cfi_offset w29, -16760; NONEON-NOSVE-NEXT:    ldr w8, [sp, #2096]761; NONEON-NOSVE-NEXT:    ldr w9, [sp, #2104]762; NONEON-NOSVE-NEXT:    sbfx w15, w7, #0, #1763; NONEON-NOSVE-NEXT:    ldr w10, [sp, #2112]764; NONEON-NOSVE-NEXT:    ldr w11, [sp, #2088]765; NONEON-NOSVE-NEXT:    ldr w12, [sp, #2120]766; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #1767; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #1768; NONEON-NOSVE-NEXT:    ldr w13, [sp, #2136]769; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #1770; NONEON-NOSVE-NEXT:    ldr w14, [sp, #2144]771; NONEON-NOSVE-NEXT:    ldr w16, [sp, #2016]772; NONEON-NOSVE-NEXT:    and w8, w8, #0x2773; NONEON-NOSVE-NEXT:    and w9, w9, #0x4774; NONEON-NOSVE-NEXT:    bfxil w8, w11, #0, #1775; NONEON-NOSVE-NEXT:    sbfx w11, w12, #0, #1776; NONEON-NOSVE-NEXT:    ldr w12, [sp, #2128]777; NONEON-NOSVE-NEXT:    and w10, w10, #0x8778; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #1779; NONEON-NOSVE-NEXT:    orr w9, w9, w10780; NONEON-NOSVE-NEXT:    and w10, w11, #0x10781; NONEON-NOSVE-NEXT:    sbfx w11, w12, #0, #1782; NONEON-NOSVE-NEXT:    orr w9, w9, w10783; NONEON-NOSVE-NEXT:    sbfx w10, w13, #0, #1784; NONEON-NOSVE-NEXT:    sbfx w12, w4, #0, #1785; NONEON-NOSVE-NEXT:    orr w8, w8, w9786; NONEON-NOSVE-NEXT:    and w9, w11, #0x20787; NONEON-NOSVE-NEXT:    sbfx w11, w3, #0, #1788; NONEON-NOSVE-NEXT:    and w10, w10, #0x40789; NONEON-NOSVE-NEXT:    sbfx w13, w5, #0, #1790; NONEON-NOSVE-NEXT:    and w12, w12, #0x8791; NONEON-NOSVE-NEXT:    orr w9, w9, w10792; NONEON-NOSVE-NEXT:    sbfx w10, w2, #0, #1793; NONEON-NOSVE-NEXT:    and w11, w11, #0x4794; NONEON-NOSVE-NEXT:    orr w11, w11, w12795; NONEON-NOSVE-NEXT:    and w12, w13, #0x10796; NONEON-NOSVE-NEXT:    sbfx w13, w6, #0, #1797; NONEON-NOSVE-NEXT:    and w10, w10, #0x2798; NONEON-NOSVE-NEXT:    orr w11, w11, w12799; NONEON-NOSVE-NEXT:    orr w8, w8, w9800; NONEON-NOSVE-NEXT:    bfxil w10, w1, #0, #1801; NONEON-NOSVE-NEXT:    and w12, w13, #0x20802; NONEON-NOSVE-NEXT:    and w13, w15, #0x40803; NONEON-NOSVE-NEXT:    sbfx w15, w16, #0, #1804; NONEON-NOSVE-NEXT:    orr w9, w10, w11805; NONEON-NOSVE-NEXT:    orr w10, w12, w13806; NONEON-NOSVE-NEXT:    and w11, w14, #0xff80807; NONEON-NOSVE-NEXT:    orr w9, w9, w10808; NONEON-NOSVE-NEXT:    and w10, w15, #0xff80809; NONEON-NOSVE-NEXT:    add w11, w8, w11810; NONEON-NOSVE-NEXT:    add w8, w9, w10811; NONEON-NOSVE-NEXT:    adrp x9, .LCPI3_0812; NONEON-NOSVE-NEXT:    bfi w8, w11, #16, #16813; NONEON-NOSVE-NEXT:    ldr q1, [x9, :lo12:.LCPI3_0]814; NONEON-NOSVE-NEXT:    add x9, sp, #1744815; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB3_2816; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load817; NONEON-NOSVE-NEXT:    ldrb w10, [x0]818; NONEON-NOSVE-NEXT:    strb wzr, [sp, #1999]819; NONEON-NOSVE-NEXT:    sturh wzr, [x9, #253]820; NONEON-NOSVE-NEXT:    stur wzr, [x9, #249]821; NONEON-NOSVE-NEXT:    stur xzr, [x9, #241]822; NONEON-NOSVE-NEXT:    strb w10, [sp, #1984]823; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1984]824; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB3_3825; NONEON-NOSVE-NEXT:    b .LBB3_4826; NONEON-NOSVE-NEXT:  .LBB3_2:827; NONEON-NOSVE-NEXT:    str q1, [sp, #-16]!828; NONEON-NOSVE-NEXT:    ldr q0, [sp], #16829; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB3_4830; NONEON-NOSVE-NEXT:  .LBB3_3: // %cond.load1831; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #1]832; NONEON-NOSVE-NEXT:    str q0, [sp, #1936]833; NONEON-NOSVE-NEXT:    strb w10, [sp, #1968]834; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1950]835; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1968]836; NONEON-NOSVE-NEXT:    strh w10, [sp, #1966]837; NONEON-NOSVE-NEXT:    str q0, [sp, #1920]838; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]839; NONEON-NOSVE-NEXT:    ldur x11, [x9, #194]840; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]841; NONEON-NOSVE-NEXT:    stur x11, [x9, #210]842; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1936]843; NONEON-NOSVE-NEXT:    strb w10, [sp, #1952]844; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1920]845; NONEON-NOSVE-NEXT:    strb w10, [sp, #1953]846; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1952]847; NONEON-NOSVE-NEXT:  .LBB3_4: // %else2848; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB3_36849; NONEON-NOSVE-NEXT:  // %bb.5: // %else5850; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB3_37851; NONEON-NOSVE-NEXT:  .LBB3_6: // %else8852; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB3_38853; NONEON-NOSVE-NEXT:  .LBB3_7: // %else11854; NONEON-NOSVE-NEXT:    add x9, sp, #1488855; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB3_39856; NONEON-NOSVE-NEXT:  .LBB3_8: // %else14857; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB3_40858; NONEON-NOSVE-NEXT:  .LBB3_9: // %else17859; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB3_41860; NONEON-NOSVE-NEXT:  .LBB3_10: // %else20861; NONEON-NOSVE-NEXT:    tbnz w8, #8, .LBB3_42862; NONEON-NOSVE-NEXT:  .LBB3_11: // %else23863; NONEON-NOSVE-NEXT:    add x9, sp, #1232864; NONEON-NOSVE-NEXT:    tbnz w8, #9, .LBB3_43865; NONEON-NOSVE-NEXT:  .LBB3_12: // %else26866; NONEON-NOSVE-NEXT:    tbnz w8, #10, .LBB3_44867; NONEON-NOSVE-NEXT:  .LBB3_13: // %else29868; NONEON-NOSVE-NEXT:    tbnz w8, #11, .LBB3_45869; NONEON-NOSVE-NEXT:  .LBB3_14: // %else32870; NONEON-NOSVE-NEXT:    tbnz w8, #12, .LBB3_46871; NONEON-NOSVE-NEXT:  .LBB3_15: // %else35872; NONEON-NOSVE-NEXT:    tbnz w8, #13, .LBB3_47873; NONEON-NOSVE-NEXT:  .LBB3_16: // %else38874; NONEON-NOSVE-NEXT:    tbnz w8, #14, .LBB3_48875; NONEON-NOSVE-NEXT:  .LBB3_17: // %else41876; NONEON-NOSVE-NEXT:    tbnz w8, #15, .LBB3_49877; NONEON-NOSVE-NEXT:  .LBB3_18: // %else44878; NONEON-NOSVE-NEXT:    tbnz w8, #16, .LBB3_50879; NONEON-NOSVE-NEXT:  .LBB3_19: // %else47880; NONEON-NOSVE-NEXT:    add x9, sp, #720881; NONEON-NOSVE-NEXT:    tbnz w8, #17, .LBB3_51882; NONEON-NOSVE-NEXT:  .LBB3_20: // %else50883; NONEON-NOSVE-NEXT:    tbnz w8, #18, .LBB3_52884; NONEON-NOSVE-NEXT:  .LBB3_21: // %else53885; NONEON-NOSVE-NEXT:    tbnz w8, #19, .LBB3_53886; NONEON-NOSVE-NEXT:  .LBB3_22: // %else56887; NONEON-NOSVE-NEXT:    tbnz w8, #20, .LBB3_54888; NONEON-NOSVE-NEXT:  .LBB3_23: // %else59889; NONEON-NOSVE-NEXT:    add x9, sp, #464890; NONEON-NOSVE-NEXT:    tbnz w8, #21, .LBB3_55891; NONEON-NOSVE-NEXT:  .LBB3_24: // %else62892; NONEON-NOSVE-NEXT:    tbnz w8, #22, .LBB3_56893; NONEON-NOSVE-NEXT:  .LBB3_25: // %else65894; NONEON-NOSVE-NEXT:    tbnz w8, #23, .LBB3_57895; NONEON-NOSVE-NEXT:  .LBB3_26: // %else68896; NONEON-NOSVE-NEXT:    tbnz w8, #24, .LBB3_58897; NONEON-NOSVE-NEXT:  .LBB3_27: // %else71898; NONEON-NOSVE-NEXT:    add x9, sp, #208899; NONEON-NOSVE-NEXT:    tbnz w8, #25, .LBB3_59900; NONEON-NOSVE-NEXT:  .LBB3_28: // %else74901; NONEON-NOSVE-NEXT:    tbnz w8, #26, .LBB3_60902; NONEON-NOSVE-NEXT:  .LBB3_29: // %else77903; NONEON-NOSVE-NEXT:    tbnz w8, #27, .LBB3_61904; NONEON-NOSVE-NEXT:  .LBB3_30: // %else80905; NONEON-NOSVE-NEXT:    tbnz w8, #28, .LBB3_62906; NONEON-NOSVE-NEXT:  .LBB3_31: // %else83907; NONEON-NOSVE-NEXT:    tbnz w8, #29, .LBB3_63908; NONEON-NOSVE-NEXT:  .LBB3_32: // %else86909; NONEON-NOSVE-NEXT:    tbnz w8, #30, .LBB3_64910; NONEON-NOSVE-NEXT:  .LBB3_33: // %else89911; NONEON-NOSVE-NEXT:    tbz w8, #31, .LBB3_35912; NONEON-NOSVE-NEXT:  .LBB3_34: // %cond.load91913; NONEON-NOSVE-NEXT:    ldrb w8, [x0, #31]914; NONEON-NOSVE-NEXT:    str q1, [sp]915; NONEON-NOSVE-NEXT:    strb w8, [sp, #48]916; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #14]917; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]918; NONEON-NOSVE-NEXT:    strb w8, [sp, #46]919; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]920; NONEON-NOSVE-NEXT:    str q1, [sp, #16]921; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]922; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]923; NONEON-NOSVE-NEXT:    str w8, [sp, #40]924; NONEON-NOSVE-NEXT:    ldr x8, [sp]925; NONEON-NOSVE-NEXT:    str x8, [sp, #32]926; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #16]927; NONEON-NOSVE-NEXT:    strb w8, [sp, #47]928; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]929; NONEON-NOSVE-NEXT:  .LBB3_35: // %else92930; NONEON-NOSVE-NEXT:    add sp, sp, #2000931; NONEON-NOSVE-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload932; NONEON-NOSVE-NEXT:    ret933; NONEON-NOSVE-NEXT:  .LBB3_36: // %cond.load4934; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #2]935; NONEON-NOSVE-NEXT:    str q0, [sp, #1872]936; NONEON-NOSVE-NEXT:    strb w10, [sp, #1904]937; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1887]938; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1904]939; NONEON-NOSVE-NEXT:    strb w10, [sp, #1903]940; NONEON-NOSVE-NEXT:    str q0, [sp, #1856]941; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]942; NONEON-NOSVE-NEXT:    ldur x11, [x9, #131]943; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]944; NONEON-NOSVE-NEXT:    stur x11, [x9, #147]945; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1872]946; NONEON-NOSVE-NEXT:    strh w10, [sp, #1888]947; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1856]948; NONEON-NOSVE-NEXT:    strb w10, [sp, #1890]949; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1888]950; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB3_6951; NONEON-NOSVE-NEXT:  .LBB3_37: // %cond.load7952; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #3]953; NONEON-NOSVE-NEXT:    str q0, [sp, #1808]954; NONEON-NOSVE-NEXT:    strb w10, [sp, #1840]955; NONEON-NOSVE-NEXT:    ldr w10, [sp, #1820]956; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1840]957; NONEON-NOSVE-NEXT:    str w10, [sp, #1836]958; NONEON-NOSVE-NEXT:    str q0, [sp, #1792]959; NONEON-NOSVE-NEXT:    ldur x10, [x9, #68]960; NONEON-NOSVE-NEXT:    stur x10, [x9, #84]961; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1810]962; NONEON-NOSVE-NEXT:    strb w10, [sp, #1826]963; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1808]964; NONEON-NOSVE-NEXT:    strh w10, [sp, #1824]965; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1792]966; NONEON-NOSVE-NEXT:    strb w10, [sp, #1827]967; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1824]968; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB3_7969; NONEON-NOSVE-NEXT:  .LBB3_38: // %cond.load10970; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #4]971; NONEON-NOSVE-NEXT:    str q0, [sp, #1744]972; NONEON-NOSVE-NEXT:    strb w10, [sp, #1776]973; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1759]974; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1776]975; NONEON-NOSVE-NEXT:    strb w10, [sp, #1775]976; NONEON-NOSVE-NEXT:    str q0, [sp, #1728]977; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]978; NONEON-NOSVE-NEXT:    ldur x11, [x9, #5]979; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]980; NONEON-NOSVE-NEXT:    stur x11, [x9, #21]981; NONEON-NOSVE-NEXT:    ldr w9, [sp, #1744]982; NONEON-NOSVE-NEXT:    str w9, [sp, #1760]983; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1728]984; NONEON-NOSVE-NEXT:    strb w9, [sp, #1764]985; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1760]986; NONEON-NOSVE-NEXT:    add x9, sp, #1488987; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB3_8988; NONEON-NOSVE-NEXT:  .LBB3_39: // %cond.load13989; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #5]990; NONEON-NOSVE-NEXT:    str q0, [sp, #1680]991; NONEON-NOSVE-NEXT:    strb w10, [sp, #1712]992; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1694]993; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1712]994; NONEON-NOSVE-NEXT:    strh w10, [sp, #1710]995; NONEON-NOSVE-NEXT:    str q0, [sp, #1664]996; NONEON-NOSVE-NEXT:    ldur x10, [x9, #198]997; NONEON-NOSVE-NEXT:    stur x10, [x9, #214]998; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1684]999; NONEON-NOSVE-NEXT:    strb w10, [sp, #1700]1000; NONEON-NOSVE-NEXT:    ldr w10, [sp, #1680]1001; NONEON-NOSVE-NEXT:    str w10, [sp, #1696]1002; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1664]1003; NONEON-NOSVE-NEXT:    strb w10, [sp, #1701]1004; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1696]1005; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB3_91006; NONEON-NOSVE-NEXT:  .LBB3_40: // %cond.load161007; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #6]1008; NONEON-NOSVE-NEXT:    str q0, [sp, #1616]1009; NONEON-NOSVE-NEXT:    strb w10, [sp, #1648]1010; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1631]1011; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1648]1012; NONEON-NOSVE-NEXT:    strb w10, [sp, #1647]1013; NONEON-NOSVE-NEXT:    str q0, [sp, #1600]1014; NONEON-NOSVE-NEXT:    ldur x10, [x9, #135]1015; NONEON-NOSVE-NEXT:    stur x10, [x9, #151]1016; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1620]1017; NONEON-NOSVE-NEXT:    strh w10, [sp, #1636]1018; NONEON-NOSVE-NEXT:    ldr w10, [sp, #1616]1019; NONEON-NOSVE-NEXT:    str w10, [sp, #1632]1020; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1600]1021; NONEON-NOSVE-NEXT:    strb w10, [sp, #1638]1022; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1632]1023; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB3_101024; NONEON-NOSVE-NEXT:  .LBB3_41: // %cond.load191025; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #7]1026; NONEON-NOSVE-NEXT:    str q0, [sp, #1552]1027; NONEON-NOSVE-NEXT:    strb w10, [sp, #1584]1028; NONEON-NOSVE-NEXT:    ldr x10, [sp, #1560]1029; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1584]1030; NONEON-NOSVE-NEXT:    str x10, [sp, #1576]1031; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1558]1032; NONEON-NOSVE-NEXT:    str q0, [sp, #1536]1033; NONEON-NOSVE-NEXT:    strb w10, [sp, #1574]1034; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1556]1035; NONEON-NOSVE-NEXT:    strh w10, [sp, #1572]1036; NONEON-NOSVE-NEXT:    ldr w10, [sp, #1552]1037; NONEON-NOSVE-NEXT:    str w10, [sp, #1568]1038; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1536]1039; NONEON-NOSVE-NEXT:    strb w10, [sp, #1575]1040; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1568]1041; NONEON-NOSVE-NEXT:    tbz w8, #8, .LBB3_111042; NONEON-NOSVE-NEXT:  .LBB3_42: // %cond.load221043; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #8]1044; NONEON-NOSVE-NEXT:    str q0, [sp, #1488]1045; NONEON-NOSVE-NEXT:    strb w10, [sp, #1520]1046; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1503]1047; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1520]1048; NONEON-NOSVE-NEXT:    strb w10, [sp, #1519]1049; NONEON-NOSVE-NEXT:    str q0, [sp, #1472]1050; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]1051; NONEON-NOSVE-NEXT:    ldur w11, [x9, #9]1052; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]1053; NONEON-NOSVE-NEXT:    stur w11, [x9, #25]1054; NONEON-NOSVE-NEXT:    ldr x9, [sp, #1488]1055; NONEON-NOSVE-NEXT:    str x9, [sp, #1504]1056; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1472]1057; NONEON-NOSVE-NEXT:    strb w9, [sp, #1512]1058; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1504]1059; NONEON-NOSVE-NEXT:    add x9, sp, #12321060; NONEON-NOSVE-NEXT:    tbz w8, #9, .LBB3_121061; NONEON-NOSVE-NEXT:  .LBB3_43: // %cond.load251062; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #9]1063; NONEON-NOSVE-NEXT:    str q0, [sp, #1424]1064; NONEON-NOSVE-NEXT:    strb w10, [sp, #1456]1065; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1438]1066; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1456]1067; NONEON-NOSVE-NEXT:    strh w10, [sp, #1454]1068; NONEON-NOSVE-NEXT:    str q0, [sp, #1408]1069; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]1070; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]1071; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1432]1072; NONEON-NOSVE-NEXT:    strb w10, [sp, #1448]1073; NONEON-NOSVE-NEXT:    ldr x10, [sp, #1424]1074; NONEON-NOSVE-NEXT:    str x10, [sp, #1440]1075; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1408]1076; NONEON-NOSVE-NEXT:    strb w10, [sp, #1449]1077; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1440]1078; NONEON-NOSVE-NEXT:    tbz w8, #10, .LBB3_131079; NONEON-NOSVE-NEXT:  .LBB3_44: // %cond.load281080; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #10]1081; NONEON-NOSVE-NEXT:    str q0, [sp, #1360]1082; NONEON-NOSVE-NEXT:    strb w10, [sp, #1392]1083; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1375]1084; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1392]1085; NONEON-NOSVE-NEXT:    strb w10, [sp, #1391]1086; NONEON-NOSVE-NEXT:    str q0, [sp, #1344]1087; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]1088; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]1089; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1368]1090; NONEON-NOSVE-NEXT:    strh w10, [sp, #1384]1091; NONEON-NOSVE-NEXT:    ldr x10, [sp, #1360]1092; NONEON-NOSVE-NEXT:    str x10, [sp, #1376]1093; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1344]1094; NONEON-NOSVE-NEXT:    strb w10, [sp, #1386]1095; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1376]1096; NONEON-NOSVE-NEXT:    tbz w8, #11, .LBB3_141097; NONEON-NOSVE-NEXT:  .LBB3_45: // %cond.load311098; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #11]1099; NONEON-NOSVE-NEXT:    str q0, [sp, #1296]1100; NONEON-NOSVE-NEXT:    strb w10, [sp, #1328]1101; NONEON-NOSVE-NEXT:    ldr w10, [sp, #1308]1102; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1328]1103; NONEON-NOSVE-NEXT:    str w10, [sp, #1324]1104; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1306]1105; NONEON-NOSVE-NEXT:    str q0, [sp, #1280]1106; NONEON-NOSVE-NEXT:    strb w10, [sp, #1322]1107; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #1304]1108; NONEON-NOSVE-NEXT:    strh w10, [sp, #1320]1109; NONEON-NOSVE-NEXT:    ldr x10, [sp, #1296]1110; NONEON-NOSVE-NEXT:    str x10, [sp, #1312]1111; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1280]1112; NONEON-NOSVE-NEXT:    strb w10, [sp, #1323]1113; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1312]1114; NONEON-NOSVE-NEXT:    tbz w8, #12, .LBB3_151115; NONEON-NOSVE-NEXT:  .LBB3_46: // %cond.load341116; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #12]1117; NONEON-NOSVE-NEXT:    str q0, [sp, #1232]1118; NONEON-NOSVE-NEXT:    strb w10, [sp, #1264]1119; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #1247]1120; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1264]1121; NONEON-NOSVE-NEXT:    strb w10, [sp, #1263]1122; NONEON-NOSVE-NEXT:    str q0, [sp, #1216]1123; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]1124; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]1125; NONEON-NOSVE-NEXT:    ldr w9, [sp, #1240]1126; NONEON-NOSVE-NEXT:    str w9, [sp, #1256]1127; NONEON-NOSVE-NEXT:    ldr x9, [sp, #1232]1128; NONEON-NOSVE-NEXT:    str x9, [sp, #1248]1129; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1216]1130; NONEON-NOSVE-NEXT:    strb w9, [sp, #1260]1131; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1248]1132; NONEON-NOSVE-NEXT:    tbz w8, #13, .LBB3_161133; NONEON-NOSVE-NEXT:  .LBB3_47: // %cond.load371134; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #13]1135; NONEON-NOSVE-NEXT:    str q0, [sp, #1168]1136; NONEON-NOSVE-NEXT:    strb w9, [sp, #1200]1137; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #1182]1138; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1200]1139; NONEON-NOSVE-NEXT:    strh w9, [sp, #1198]1140; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1180]1141; NONEON-NOSVE-NEXT:    str q0, [sp, #1152]1142; NONEON-NOSVE-NEXT:    strb w9, [sp, #1196]1143; NONEON-NOSVE-NEXT:    ldr w9, [sp, #1176]1144; NONEON-NOSVE-NEXT:    str w9, [sp, #1192]1145; NONEON-NOSVE-NEXT:    ldr x9, [sp, #1168]1146; NONEON-NOSVE-NEXT:    str x9, [sp, #1184]1147; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1152]1148; NONEON-NOSVE-NEXT:    strb w9, [sp, #1197]1149; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1184]1150; NONEON-NOSVE-NEXT:    tbz w8, #14, .LBB3_171151; NONEON-NOSVE-NEXT:  .LBB3_48: // %cond.load401152; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #14]1153; NONEON-NOSVE-NEXT:    str q0, [sp, #1104]1154; NONEON-NOSVE-NEXT:    strb w9, [sp, #1136]1155; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1119]1156; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1136]1157; NONEON-NOSVE-NEXT:    strb w9, [sp, #1135]1158; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #1116]1159; NONEON-NOSVE-NEXT:    str q0, [sp, #1088]1160; NONEON-NOSVE-NEXT:    strh w9, [sp, #1132]1161; NONEON-NOSVE-NEXT:    ldr w9, [sp, #1112]1162; NONEON-NOSVE-NEXT:    str w9, [sp, #1128]1163; NONEON-NOSVE-NEXT:    ldr x9, [sp, #1104]1164; NONEON-NOSVE-NEXT:    str x9, [sp, #1120]1165; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1088]1166; NONEON-NOSVE-NEXT:    strb w9, [sp, #1134]1167; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1120]1168; NONEON-NOSVE-NEXT:    tbz w8, #15, .LBB3_181169; NONEON-NOSVE-NEXT:  .LBB3_49: // %cond.load431170; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #15]1171; NONEON-NOSVE-NEXT:    str q0, [sp, #1024]1172; NONEON-NOSVE-NEXT:    strb w9, [sp, #1072]1173; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1038]1174; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1072]1175; NONEON-NOSVE-NEXT:    strb w9, [sp, #1070]1176; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #1036]1177; NONEON-NOSVE-NEXT:    str q0, [sp, #1040]1178; NONEON-NOSVE-NEXT:    strh w9, [sp, #1068]1179; NONEON-NOSVE-NEXT:    ldr w9, [sp, #1032]1180; NONEON-NOSVE-NEXT:    str w9, [sp, #1064]1181; NONEON-NOSVE-NEXT:    ldr x9, [sp, #1024]1182; NONEON-NOSVE-NEXT:    str x9, [sp, #1056]1183; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #1040]1184; NONEON-NOSVE-NEXT:    strb w9, [sp, #1071]1185; NONEON-NOSVE-NEXT:    ldr q0, [sp, #1056]1186; NONEON-NOSVE-NEXT:    tbz w8, #16, .LBB3_191187; NONEON-NOSVE-NEXT:  .LBB3_50: // %cond.load461188; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #16]1189; NONEON-NOSVE-NEXT:    str q1, [sp, #976]1190; NONEON-NOSVE-NEXT:    add x10, sp, #9761191; NONEON-NOSVE-NEXT:    strb w9, [sp, #1008]1192; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #991]1193; NONEON-NOSVE-NEXT:    ldr q1, [sp, #1008]1194; NONEON-NOSVE-NEXT:    strb w9, [sp, #1007]1195; NONEON-NOSVE-NEXT:    str q1, [sp, #960]1196; NONEON-NOSVE-NEXT:    ldurh w9, [x10, #13]1197; NONEON-NOSVE-NEXT:    ldur w11, [x10, #9]1198; NONEON-NOSVE-NEXT:    sturh w9, [x10, #29]1199; NONEON-NOSVE-NEXT:    ldur x9, [x10, #1]1200; NONEON-NOSVE-NEXT:    stur w11, [x10, #25]1201; NONEON-NOSVE-NEXT:    stur x9, [x10, #17]1202; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #960]1203; NONEON-NOSVE-NEXT:    strb w9, [sp, #992]1204; NONEON-NOSVE-NEXT:    ldr q1, [sp, #992]1205; NONEON-NOSVE-NEXT:    add x9, sp, #7201206; NONEON-NOSVE-NEXT:    tbz w8, #17, .LBB3_201207; NONEON-NOSVE-NEXT:  .LBB3_51: // %cond.load491208; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #17]1209; NONEON-NOSVE-NEXT:    str q1, [sp, #912]1210; NONEON-NOSVE-NEXT:    strb w10, [sp, #944]1211; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #926]1212; NONEON-NOSVE-NEXT:    ldr q1, [sp, #944]1213; NONEON-NOSVE-NEXT:    strh w10, [sp, #942]1214; NONEON-NOSVE-NEXT:    str q1, [sp, #896]1215; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]1216; NONEON-NOSVE-NEXT:    ldur x11, [x9, #194]1217; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]1218; NONEON-NOSVE-NEXT:    stur x11, [x9, #210]1219; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #912]1220; NONEON-NOSVE-NEXT:    strb w10, [sp, #928]1221; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #896]1222; NONEON-NOSVE-NEXT:    strb w10, [sp, #929]1223; NONEON-NOSVE-NEXT:    ldr q1, [sp, #928]1224; NONEON-NOSVE-NEXT:    tbz w8, #18, .LBB3_211225; NONEON-NOSVE-NEXT:  .LBB3_52: // %cond.load521226; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #18]1227; NONEON-NOSVE-NEXT:    str q1, [sp, #848]1228; NONEON-NOSVE-NEXT:    strb w10, [sp, #880]1229; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #863]1230; NONEON-NOSVE-NEXT:    ldr q1, [sp, #880]1231; NONEON-NOSVE-NEXT:    strb w10, [sp, #879]1232; NONEON-NOSVE-NEXT:    str q1, [sp, #832]1233; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]1234; NONEON-NOSVE-NEXT:    ldur x11, [x9, #131]1235; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]1236; NONEON-NOSVE-NEXT:    stur x11, [x9, #147]1237; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #848]1238; NONEON-NOSVE-NEXT:    strh w10, [sp, #864]1239; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #832]1240; NONEON-NOSVE-NEXT:    strb w10, [sp, #866]1241; NONEON-NOSVE-NEXT:    ldr q1, [sp, #864]1242; NONEON-NOSVE-NEXT:    tbz w8, #19, .LBB3_221243; NONEON-NOSVE-NEXT:  .LBB3_53: // %cond.load551244; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #19]1245; NONEON-NOSVE-NEXT:    str q1, [sp, #784]1246; NONEON-NOSVE-NEXT:    strb w10, [sp, #816]1247; NONEON-NOSVE-NEXT:    ldr w10, [sp, #796]1248; NONEON-NOSVE-NEXT:    ldr q1, [sp, #816]1249; NONEON-NOSVE-NEXT:    str w10, [sp, #812]1250; NONEON-NOSVE-NEXT:    str q1, [sp, #768]1251; NONEON-NOSVE-NEXT:    ldur x10, [x9, #68]1252; NONEON-NOSVE-NEXT:    stur x10, [x9, #84]1253; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #786]1254; NONEON-NOSVE-NEXT:    strb w10, [sp, #802]1255; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #784]1256; NONEON-NOSVE-NEXT:    strh w10, [sp, #800]1257; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #768]1258; NONEON-NOSVE-NEXT:    strb w10, [sp, #803]1259; NONEON-NOSVE-NEXT:    ldr q1, [sp, #800]1260; NONEON-NOSVE-NEXT:    tbz w8, #20, .LBB3_231261; NONEON-NOSVE-NEXT:  .LBB3_54: // %cond.load581262; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #20]1263; NONEON-NOSVE-NEXT:    str q1, [sp, #720]1264; NONEON-NOSVE-NEXT:    strb w10, [sp, #752]1265; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #735]1266; NONEON-NOSVE-NEXT:    ldr q1, [sp, #752]1267; NONEON-NOSVE-NEXT:    strb w10, [sp, #751]1268; NONEON-NOSVE-NEXT:    str q1, [sp, #704]1269; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]1270; NONEON-NOSVE-NEXT:    ldur x11, [x9, #5]1271; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]1272; NONEON-NOSVE-NEXT:    stur x11, [x9, #21]1273; NONEON-NOSVE-NEXT:    ldr w9, [sp, #720]1274; NONEON-NOSVE-NEXT:    str w9, [sp, #736]1275; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #704]1276; NONEON-NOSVE-NEXT:    strb w9, [sp, #740]1277; NONEON-NOSVE-NEXT:    ldr q1, [sp, #736]1278; NONEON-NOSVE-NEXT:    add x9, sp, #4641279; NONEON-NOSVE-NEXT:    tbz w8, #21, .LBB3_241280; NONEON-NOSVE-NEXT:  .LBB3_55: // %cond.load611281; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #21]1282; NONEON-NOSVE-NEXT:    str q1, [sp, #656]1283; NONEON-NOSVE-NEXT:    strb w10, [sp, #688]1284; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #670]1285; NONEON-NOSVE-NEXT:    ldr q1, [sp, #688]1286; NONEON-NOSVE-NEXT:    strh w10, [sp, #686]1287; NONEON-NOSVE-NEXT:    str q1, [sp, #640]1288; NONEON-NOSVE-NEXT:    ldur x10, [x9, #198]1289; NONEON-NOSVE-NEXT:    stur x10, [x9, #214]1290; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #660]1291; NONEON-NOSVE-NEXT:    strb w10, [sp, #676]1292; NONEON-NOSVE-NEXT:    ldr w10, [sp, #656]1293; NONEON-NOSVE-NEXT:    str w10, [sp, #672]1294; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #640]1295; NONEON-NOSVE-NEXT:    strb w10, [sp, #677]1296; NONEON-NOSVE-NEXT:    ldr q1, [sp, #672]1297; NONEON-NOSVE-NEXT:    tbz w8, #22, .LBB3_251298; NONEON-NOSVE-NEXT:  .LBB3_56: // %cond.load641299; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #22]1300; NONEON-NOSVE-NEXT:    str q1, [sp, #592]1301; NONEON-NOSVE-NEXT:    strb w10, [sp, #624]1302; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #607]1303; NONEON-NOSVE-NEXT:    ldr q1, [sp, #624]1304; NONEON-NOSVE-NEXT:    strb w10, [sp, #623]1305; NONEON-NOSVE-NEXT:    str q1, [sp, #576]1306; NONEON-NOSVE-NEXT:    ldur x10, [x9, #135]1307; NONEON-NOSVE-NEXT:    stur x10, [x9, #151]1308; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #596]1309; NONEON-NOSVE-NEXT:    strh w10, [sp, #612]1310; NONEON-NOSVE-NEXT:    ldr w10, [sp, #592]1311; NONEON-NOSVE-NEXT:    str w10, [sp, #608]1312; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #576]1313; NONEON-NOSVE-NEXT:    strb w10, [sp, #614]1314; NONEON-NOSVE-NEXT:    ldr q1, [sp, #608]1315; NONEON-NOSVE-NEXT:    tbz w8, #23, .LBB3_261316; NONEON-NOSVE-NEXT:  .LBB3_57: // %cond.load671317; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #23]1318; NONEON-NOSVE-NEXT:    str q1, [sp, #528]1319; NONEON-NOSVE-NEXT:    strb w10, [sp, #560]1320; NONEON-NOSVE-NEXT:    ldr x10, [sp, #536]1321; NONEON-NOSVE-NEXT:    ldr q1, [sp, #560]1322; NONEON-NOSVE-NEXT:    str x10, [sp, #552]1323; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #534]1324; NONEON-NOSVE-NEXT:    str q1, [sp, #512]1325; NONEON-NOSVE-NEXT:    strb w10, [sp, #550]1326; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #532]1327; NONEON-NOSVE-NEXT:    strh w10, [sp, #548]1328; NONEON-NOSVE-NEXT:    ldr w10, [sp, #528]1329; NONEON-NOSVE-NEXT:    str w10, [sp, #544]1330; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #512]1331; NONEON-NOSVE-NEXT:    strb w10, [sp, #551]1332; NONEON-NOSVE-NEXT:    ldr q1, [sp, #544]1333; NONEON-NOSVE-NEXT:    tbz w8, #24, .LBB3_271334; NONEON-NOSVE-NEXT:  .LBB3_58: // %cond.load701335; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #24]1336; NONEON-NOSVE-NEXT:    str q1, [sp, #464]1337; NONEON-NOSVE-NEXT:    strb w10, [sp, #496]1338; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #479]1339; NONEON-NOSVE-NEXT:    ldr q1, [sp, #496]1340; NONEON-NOSVE-NEXT:    strb w10, [sp, #495]1341; NONEON-NOSVE-NEXT:    str q1, [sp, #448]1342; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]1343; NONEON-NOSVE-NEXT:    ldur w11, [x9, #9]1344; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]1345; NONEON-NOSVE-NEXT:    stur w11, [x9, #25]1346; NONEON-NOSVE-NEXT:    ldr x9, [sp, #464]1347; NONEON-NOSVE-NEXT:    str x9, [sp, #480]1348; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #448]1349; NONEON-NOSVE-NEXT:    strb w9, [sp, #488]1350; NONEON-NOSVE-NEXT:    ldr q1, [sp, #480]1351; NONEON-NOSVE-NEXT:    add x9, sp, #2081352; NONEON-NOSVE-NEXT:    tbz w8, #25, .LBB3_281353; NONEON-NOSVE-NEXT:  .LBB3_59: // %cond.load731354; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #25]1355; NONEON-NOSVE-NEXT:    str q1, [sp, #400]1356; NONEON-NOSVE-NEXT:    strb w10, [sp, #432]1357; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #414]1358; NONEON-NOSVE-NEXT:    ldr q1, [sp, #432]1359; NONEON-NOSVE-NEXT:    strh w10, [sp, #430]1360; NONEON-NOSVE-NEXT:    str q1, [sp, #384]1361; NONEON-NOSVE-NEXT:    ldur w10, [x9, #202]1362; NONEON-NOSVE-NEXT:    stur w10, [x9, #218]1363; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #408]1364; NONEON-NOSVE-NEXT:    strb w10, [sp, #424]1365; NONEON-NOSVE-NEXT:    ldr x10, [sp, #400]1366; NONEON-NOSVE-NEXT:    str x10, [sp, #416]1367; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #384]1368; NONEON-NOSVE-NEXT:    strb w10, [sp, #425]1369; NONEON-NOSVE-NEXT:    ldr q1, [sp, #416]1370; NONEON-NOSVE-NEXT:    tbz w8, #26, .LBB3_291371; NONEON-NOSVE-NEXT:  .LBB3_60: // %cond.load761372; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #26]1373; NONEON-NOSVE-NEXT:    str q1, [sp, #336]1374; NONEON-NOSVE-NEXT:    strb w10, [sp, #368]1375; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #351]1376; NONEON-NOSVE-NEXT:    ldr q1, [sp, #368]1377; NONEON-NOSVE-NEXT:    strb w10, [sp, #367]1378; NONEON-NOSVE-NEXT:    str q1, [sp, #320]1379; NONEON-NOSVE-NEXT:    ldur w10, [x9, #139]1380; NONEON-NOSVE-NEXT:    stur w10, [x9, #155]1381; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #344]1382; NONEON-NOSVE-NEXT:    strh w10, [sp, #360]1383; NONEON-NOSVE-NEXT:    ldr x10, [sp, #336]1384; NONEON-NOSVE-NEXT:    str x10, [sp, #352]1385; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #320]1386; NONEON-NOSVE-NEXT:    strb w10, [sp, #362]1387; NONEON-NOSVE-NEXT:    ldr q1, [sp, #352]1388; NONEON-NOSVE-NEXT:    tbz w8, #27, .LBB3_301389; NONEON-NOSVE-NEXT:  .LBB3_61: // %cond.load791390; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #27]1391; NONEON-NOSVE-NEXT:    str q1, [sp, #272]1392; NONEON-NOSVE-NEXT:    strb w10, [sp, #304]1393; NONEON-NOSVE-NEXT:    ldr w10, [sp, #284]1394; NONEON-NOSVE-NEXT:    ldr q1, [sp, #304]1395; NONEON-NOSVE-NEXT:    str w10, [sp, #300]1396; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #282]1397; NONEON-NOSVE-NEXT:    str q1, [sp, #256]1398; NONEON-NOSVE-NEXT:    strb w10, [sp, #298]1399; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #280]1400; NONEON-NOSVE-NEXT:    strh w10, [sp, #296]1401; NONEON-NOSVE-NEXT:    ldr x10, [sp, #272]1402; NONEON-NOSVE-NEXT:    str x10, [sp, #288]1403; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #256]1404; NONEON-NOSVE-NEXT:    strb w10, [sp, #299]1405; NONEON-NOSVE-NEXT:    ldr q1, [sp, #288]1406; NONEON-NOSVE-NEXT:    tbz w8, #28, .LBB3_311407; NONEON-NOSVE-NEXT:  .LBB3_62: // %cond.load821408; NONEON-NOSVE-NEXT:    ldrb w10, [x0, #28]1409; NONEON-NOSVE-NEXT:    str q1, [sp, #208]1410; NONEON-NOSVE-NEXT:    strb w10, [sp, #240]1411; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #223]1412; NONEON-NOSVE-NEXT:    ldr q1, [sp, #240]1413; NONEON-NOSVE-NEXT:    strb w10, [sp, #239]1414; NONEON-NOSVE-NEXT:    str q1, [sp, #192]1415; NONEON-NOSVE-NEXT:    ldurh w10, [x9, #13]1416; NONEON-NOSVE-NEXT:    sturh w10, [x9, #29]1417; NONEON-NOSVE-NEXT:    ldr w9, [sp, #216]1418; NONEON-NOSVE-NEXT:    str w9, [sp, #232]1419; NONEON-NOSVE-NEXT:    ldr x9, [sp, #208]1420; NONEON-NOSVE-NEXT:    str x9, [sp, #224]1421; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #192]1422; NONEON-NOSVE-NEXT:    strb w9, [sp, #236]1423; NONEON-NOSVE-NEXT:    ldr q1, [sp, #224]1424; NONEON-NOSVE-NEXT:    tbz w8, #29, .LBB3_321425; NONEON-NOSVE-NEXT:  .LBB3_63: // %cond.load851426; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #29]1427; NONEON-NOSVE-NEXT:    str q1, [sp, #144]1428; NONEON-NOSVE-NEXT:    strb w9, [sp, #176]1429; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #158]1430; NONEON-NOSVE-NEXT:    ldr q1, [sp, #176]1431; NONEON-NOSVE-NEXT:    strh w9, [sp, #174]1432; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #156]1433; NONEON-NOSVE-NEXT:    str q1, [sp, #128]1434; NONEON-NOSVE-NEXT:    strb w9, [sp, #172]1435; NONEON-NOSVE-NEXT:    ldr w9, [sp, #152]1436; NONEON-NOSVE-NEXT:    str w9, [sp, #168]1437; NONEON-NOSVE-NEXT:    ldr x9, [sp, #144]1438; NONEON-NOSVE-NEXT:    str x9, [sp, #160]1439; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #128]1440; NONEON-NOSVE-NEXT:    strb w9, [sp, #173]1441; NONEON-NOSVE-NEXT:    ldr q1, [sp, #160]1442; NONEON-NOSVE-NEXT:    tbz w8, #30, .LBB3_331443; NONEON-NOSVE-NEXT:  .LBB3_64: // %cond.load881444; NONEON-NOSVE-NEXT:    ldrb w9, [x0, #30]1445; NONEON-NOSVE-NEXT:    str q1, [sp, #80]1446; NONEON-NOSVE-NEXT:    strb w9, [sp, #112]1447; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #95]1448; NONEON-NOSVE-NEXT:    ldr q1, [sp, #112]1449; NONEON-NOSVE-NEXT:    strb w9, [sp, #111]1450; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #92]1451; NONEON-NOSVE-NEXT:    str q1, [sp, #64]1452; NONEON-NOSVE-NEXT:    strh w9, [sp, #108]1453; NONEON-NOSVE-NEXT:    ldr w9, [sp, #88]1454; NONEON-NOSVE-NEXT:    str w9, [sp, #104]1455; NONEON-NOSVE-NEXT:    ldr x9, [sp, #80]1456; NONEON-NOSVE-NEXT:    str x9, [sp, #96]1457; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #64]1458; NONEON-NOSVE-NEXT:    strb w9, [sp, #110]1459; NONEON-NOSVE-NEXT:    ldr q1, [sp, #96]1460; NONEON-NOSVE-NEXT:    tbnz w8, #31, .LBB3_341461; NONEON-NOSVE-NEXT:    b .LBB3_351462  %load = call <32 x i8> @llvm.masked.load.v32i8(ptr %src, i32 8, <32 x i1> %mask, <32 x i8> zeroinitializer)1463  ret <32 x i8> %load1464}1465 1466define <2 x half> @masked_load_v2f16(ptr %src, <2 x i1> %mask) {1467; CHECK-LABEL: masked_load_v2f16:1468; CHECK:       // %bb.0:1469; CHECK-NEXT:    fmov s1, wzr1470; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z01471; CHECK-NEXT:    mov z2.s, z0.s[1]1472; CHECK-NEXT:    ptrue p0.h, vl41473; CHECK-NEXT:    zip1 z0.h, z0.h, z2.h1474; CHECK-NEXT:    zip1 z1.h, z1.h, z1.h1475; CHECK-NEXT:    zip1 z0.s, z0.s, z1.s1476; CHECK-NEXT:    lsl z0.h, z0.h, #151477; CHECK-NEXT:    asr z0.h, z0.h, #151478; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #01479; CHECK-NEXT:    ld1h { z0.h }, p0/z, [x0]1480; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z01481; CHECK-NEXT:    ret1482;1483; NONEON-NOSVE-LABEL: masked_load_v2f16:1484; NONEON-NOSVE:       // %bb.0:1485; NONEON-NOSVE-NEXT:    sub sp, sp, #481486; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 481487; NONEON-NOSVE-NEXT:    str d0, [sp, #32]1488; NONEON-NOSVE-NEXT:    ldr w8, [sp, #36]1489; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #32]1490; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #11491; NONEON-NOSVE-NEXT:    and w8, w8, #0x21492; NONEON-NOSVE-NEXT:    bfxil w8, w9, #0, #11493; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB4_21494; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load1495; NONEON-NOSVE-NEXT:    fmov s0, wzr1496; NONEON-NOSVE-NEXT:    ldr h1, [x0]1497; NONEON-NOSVE-NEXT:    str h1, [sp, #24]1498; NONEON-NOSVE-NEXT:    str h0, [sp, #26]1499; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]1500; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB4_31501; NONEON-NOSVE-NEXT:    b .LBB4_41502; NONEON-NOSVE-NEXT:  .LBB4_2:1503; NONEON-NOSVE-NEXT:    adrp x9, .LCPI4_01504; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI4_0]1505; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB4_41506; NONEON-NOSVE-NEXT:  .LBB4_3: // %cond.load11507; NONEON-NOSVE-NEXT:    ldr h1, [x0, #2]1508; NONEON-NOSVE-NEXT:    str d0, [sp, #8]1509; NONEON-NOSVE-NEXT:    ldr h0, [sp, #8]1510; NONEON-NOSVE-NEXT:    str h1, [sp, #18]1511; NONEON-NOSVE-NEXT:    str h0, [sp, #16]1512; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]1513; NONEON-NOSVE-NEXT:  .LBB4_4: // %else21514; NONEON-NOSVE-NEXT:    add sp, sp, #481515; NONEON-NOSVE-NEXT:    ret1516  %load = call <2 x half> @llvm.masked.load.v2f16(ptr %src, i32 8, <2 x i1> %mask, <2 x half> zeroinitializer)1517  ret <2 x half> %load1518}1519 1520define <4 x half> @masked_load_v4f16(ptr %src, <4 x i1> %mask) {1521; CHECK-LABEL: masked_load_v4f16:1522; CHECK:       // %bb.0:1523; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z01524; CHECK-NEXT:    ptrue p0.h, vl41525; CHECK-NEXT:    lsl z0.h, z0.h, #151526; CHECK-NEXT:    asr z0.h, z0.h, #151527; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #01528; CHECK-NEXT:    ld1h { z0.h }, p0/z, [x0]1529; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z01530; CHECK-NEXT:    ret1531;1532; NONEON-NOSVE-LABEL: masked_load_v4f16:1533; NONEON-NOSVE:       // %bb.0:1534; NONEON-NOSVE-NEXT:    sub sp, sp, #1281535; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 1281536; NONEON-NOSVE-NEXT:    str d0, [sp, #112]1537; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #114]1538; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #116]1539; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #118]1540; NONEON-NOSVE-NEXT:    ldrh w11, [sp, #112]1541; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #11542; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #11543; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #11544; NONEON-NOSVE-NEXT:    and w8, w8, #0x21545; NONEON-NOSVE-NEXT:    and w9, w9, #0x41546; NONEON-NOSVE-NEXT:    and w10, w10, #0x81547; NONEON-NOSVE-NEXT:    bfxil w8, w11, #0, #11548; NONEON-NOSVE-NEXT:    orr w9, w9, w101549; NONEON-NOSVE-NEXT:    orr w8, w8, w91550; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB5_21551; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load1552; NONEON-NOSVE-NEXT:    fmov s0, wzr1553; NONEON-NOSVE-NEXT:    ldr h1, [x0]1554; NONEON-NOSVE-NEXT:    stur wzr, [sp, #106]1555; NONEON-NOSVE-NEXT:    str h1, [sp, #104]1556; NONEON-NOSVE-NEXT:    str h0, [sp, #110]1557; NONEON-NOSVE-NEXT:    ldr d0, [sp, #104]1558; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB5_31559; NONEON-NOSVE-NEXT:    b .LBB5_41560; NONEON-NOSVE-NEXT:  .LBB5_2:1561; NONEON-NOSVE-NEXT:    adrp x9, .LCPI5_01562; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI5_0]1563; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB5_41564; NONEON-NOSVE-NEXT:  .LBB5_3: // %cond.load11565; NONEON-NOSVE-NEXT:    ldr h1, [x0, #2]1566; NONEON-NOSVE-NEXT:    str d0, [sp, #80]1567; NONEON-NOSVE-NEXT:    ldr w9, [sp, #84]1568; NONEON-NOSVE-NEXT:    str h1, [sp, #96]1569; NONEON-NOSVE-NEXT:    ldr d0, [sp, #96]1570; NONEON-NOSVE-NEXT:    str w9, [sp, #92]1571; NONEON-NOSVE-NEXT:    str d0, [sp, #72]1572; NONEON-NOSVE-NEXT:    ldr h0, [sp, #80]1573; NONEON-NOSVE-NEXT:    str h0, [sp, #88]1574; NONEON-NOSVE-NEXT:    ldr h0, [sp, #72]1575; NONEON-NOSVE-NEXT:    str h0, [sp, #90]1576; NONEON-NOSVE-NEXT:    ldr d0, [sp, #88]1577; NONEON-NOSVE-NEXT:  .LBB5_4: // %else21578; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB5_71579; NONEON-NOSVE-NEXT:  // %bb.5: // %else51580; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB5_81581; NONEON-NOSVE-NEXT:  .LBB5_6: // %else81582; NONEON-NOSVE-NEXT:    add sp, sp, #1281583; NONEON-NOSVE-NEXT:    ret1584; NONEON-NOSVE-NEXT:  .LBB5_7: // %cond.load41585; NONEON-NOSVE-NEXT:    ldr h1, [x0, #4]1586; NONEON-NOSVE-NEXT:    str d0, [sp, #48]1587; NONEON-NOSVE-NEXT:    ldr w9, [sp, #48]1588; NONEON-NOSVE-NEXT:    str h1, [sp, #64]1589; NONEON-NOSVE-NEXT:    ldr d0, [sp, #64]1590; NONEON-NOSVE-NEXT:    str w9, [sp, #56]1591; NONEON-NOSVE-NEXT:    str d0, [sp, #40]1592; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1593; NONEON-NOSVE-NEXT:    str h0, [sp, #62]1594; NONEON-NOSVE-NEXT:    ldr h0, [sp, #40]1595; NONEON-NOSVE-NEXT:    str h0, [sp, #60]1596; NONEON-NOSVE-NEXT:    ldr d0, [sp, #56]1597; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB5_61598; NONEON-NOSVE-NEXT:  .LBB5_8: // %cond.load71599; NONEON-NOSVE-NEXT:    ldr h1, [x0, #6]1600; NONEON-NOSVE-NEXT:    str d0, [sp, #8]1601; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]1602; NONEON-NOSVE-NEXT:    str h1, [sp, #32]1603; NONEON-NOSVE-NEXT:    ldr d0, [sp, #32]1604; NONEON-NOSVE-NEXT:    str w8, [sp, #24]1605; NONEON-NOSVE-NEXT:    str d0, [sp, #16]1606; NONEON-NOSVE-NEXT:    ldr h0, [sp, #12]1607; NONEON-NOSVE-NEXT:    str h0, [sp, #28]1608; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1609; NONEON-NOSVE-NEXT:    str h0, [sp, #30]1610; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]1611; NONEON-NOSVE-NEXT:    add sp, sp, #1281612; NONEON-NOSVE-NEXT:    ret1613  %load = call <4 x half> @llvm.masked.load.v4f16(ptr %src, i32 8, <4 x i1> %mask, <4 x half> zeroinitializer)1614  ret <4 x half> %load1615}1616 1617define <8 x half> @masked_load_v8f16(ptr %src, <8 x i1> %mask) {1618; CHECK-LABEL: masked_load_v8f16:1619; CHECK:       // %bb.0:1620; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z01621; CHECK-NEXT:    ptrue p0.h, vl81622; CHECK-NEXT:    uunpklo z0.h, z0.b1623; CHECK-NEXT:    lsl z0.h, z0.h, #151624; CHECK-NEXT:    asr z0.h, z0.h, #151625; CHECK-NEXT:    cmpne p0.h, p0/z, z0.h, #01626; CHECK-NEXT:    ld1h { z0.h }, p0/z, [x0]1627; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z01628; CHECK-NEXT:    ret1629;1630; NONEON-NOSVE-LABEL: masked_load_v8f16:1631; NONEON-NOSVE:       // %bb.0:1632; NONEON-NOSVE-NEXT:    sub sp, sp, #4961633; NONEON-NOSVE-NEXT:    str x29, [sp, #480] // 8-byte Spill1634; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 4961635; NONEON-NOSVE-NEXT:    .cfi_offset w29, -161636; NONEON-NOSVE-NEXT:    str d0, [sp, #464]1637; NONEON-NOSVE-NEXT:    add x9, sp, #2081638; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #466]1639; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #467]1640; NONEON-NOSVE-NEXT:    ldrb w11, [sp, #465]1641; NONEON-NOSVE-NEXT:    ldrb w13, [sp, #468]1642; NONEON-NOSVE-NEXT:    ldrb w14, [sp, #469]1643; NONEON-NOSVE-NEXT:    ldrb w15, [sp, #470]1644; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #11645; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #11646; NONEON-NOSVE-NEXT:    sbfx w11, w11, #0, #11647; NONEON-NOSVE-NEXT:    ldrb w12, [sp, #464]1648; NONEON-NOSVE-NEXT:    sbfx w13, w13, #0, #11649; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #11650; NONEON-NOSVE-NEXT:    and w8, w8, #0x41651; NONEON-NOSVE-NEXT:    and w10, w10, #0x81652; NONEON-NOSVE-NEXT:    sbfx w15, w15, #0, #11653; NONEON-NOSVE-NEXT:    orr w8, w8, w101654; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #471]1655; NONEON-NOSVE-NEXT:    and w11, w11, #0x21656; NONEON-NOSVE-NEXT:    and w13, w13, #0x101657; NONEON-NOSVE-NEXT:    bfxil w11, w12, #0, #11658; NONEON-NOSVE-NEXT:    and w12, w14, #0x201659; NONEON-NOSVE-NEXT:    orr w8, w8, w131660; NONEON-NOSVE-NEXT:    and w13, w15, #0x401661; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #11662; NONEON-NOSVE-NEXT:    orr w8, w11, w81663; NONEON-NOSVE-NEXT:    orr w11, w12, w131664; NONEON-NOSVE-NEXT:    orr w8, w8, w111665; NONEON-NOSVE-NEXT:    and w10, w10, #0x801666; NONEON-NOSVE-NEXT:    add w10, w8, w101667; NONEON-NOSVE-NEXT:    and w8, w10, #0xff1668; NONEON-NOSVE-NEXT:    tbz w10, #0, .LBB6_21669; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load1670; NONEON-NOSVE-NEXT:    fmov s0, wzr1671; NONEON-NOSVE-NEXT:    ldr h1, [x0]1672; NONEON-NOSVE-NEXT:    stur wzr, [x9, #250]1673; NONEON-NOSVE-NEXT:    stur xzr, [x9, #242]1674; NONEON-NOSVE-NEXT:    str h1, [sp, #448]1675; NONEON-NOSVE-NEXT:    str h0, [sp, #462]1676; NONEON-NOSVE-NEXT:    ldr q0, [sp, #448]1677; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB6_31678; NONEON-NOSVE-NEXT:    b .LBB6_41679; NONEON-NOSVE-NEXT:  .LBB6_2:1680; NONEON-NOSVE-NEXT:    adrp x10, .LCPI6_01681; NONEON-NOSVE-NEXT:    ldr q0, [x10, :lo12:.LCPI6_0]1682; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB6_41683; NONEON-NOSVE-NEXT:  .LBB6_3: // %cond.load11684; NONEON-NOSVE-NEXT:    ldr h1, [x0, #2]1685; NONEON-NOSVE-NEXT:    str q0, [sp, #400]1686; NONEON-NOSVE-NEXT:    ldr w10, [sp, #412]1687; NONEON-NOSVE-NEXT:    str h1, [sp, #432]1688; NONEON-NOSVE-NEXT:    ldr q0, [sp, #432]1689; NONEON-NOSVE-NEXT:    str w10, [sp, #428]1690; NONEON-NOSVE-NEXT:    str q0, [sp, #384]1691; NONEON-NOSVE-NEXT:    ldur x10, [x9, #196]1692; NONEON-NOSVE-NEXT:    stur x10, [x9, #212]1693; NONEON-NOSVE-NEXT:    ldr h0, [sp, #400]1694; NONEON-NOSVE-NEXT:    str h0, [sp, #416]1695; NONEON-NOSVE-NEXT:    ldr h0, [sp, #384]1696; NONEON-NOSVE-NEXT:    str h0, [sp, #418]1697; NONEON-NOSVE-NEXT:    ldr q0, [sp, #416]1698; NONEON-NOSVE-NEXT:  .LBB6_4: // %else21699; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB6_121700; NONEON-NOSVE-NEXT:  // %bb.5: // %else51701; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB6_131702; NONEON-NOSVE-NEXT:  .LBB6_6: // %else81703; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB6_141704; NONEON-NOSVE-NEXT:  .LBB6_7: // %else111705; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB6_151706; NONEON-NOSVE-NEXT:  .LBB6_8: // %else141707; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB6_161708; NONEON-NOSVE-NEXT:  .LBB6_9: // %else171709; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB6_111710; NONEON-NOSVE-NEXT:  .LBB6_10: // %cond.load191711; NONEON-NOSVE-NEXT:    ldr h1, [x0, #14]1712; NONEON-NOSVE-NEXT:    str q0, [sp]1713; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]1714; NONEON-NOSVE-NEXT:    str h1, [sp, #48]1715; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]1716; NONEON-NOSVE-NEXT:    str w8, [sp, #40]1717; NONEON-NOSVE-NEXT:    ldr x8, [sp]1718; NONEON-NOSVE-NEXT:    str q0, [sp, #16]1719; NONEON-NOSVE-NEXT:    ldr h0, [sp, #12]1720; NONEON-NOSVE-NEXT:    str x8, [sp, #32]1721; NONEON-NOSVE-NEXT:    str h0, [sp, #44]1722; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1723; NONEON-NOSVE-NEXT:    str h0, [sp, #46]1724; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]1725; NONEON-NOSVE-NEXT:  .LBB6_11: // %else201726; NONEON-NOSVE-NEXT:    ldr x29, [sp, #480] // 8-byte Reload1727; NONEON-NOSVE-NEXT:    add sp, sp, #4961728; NONEON-NOSVE-NEXT:    ret1729; NONEON-NOSVE-NEXT:  .LBB6_12: // %cond.load41730; NONEON-NOSVE-NEXT:    ldr h1, [x0, #4]1731; NONEON-NOSVE-NEXT:    str q0, [sp, #336]1732; NONEON-NOSVE-NEXT:    str h1, [sp, #368]1733; NONEON-NOSVE-NEXT:    ldr q0, [sp, #368]1734; NONEON-NOSVE-NEXT:    str q0, [sp, #320]1735; NONEON-NOSVE-NEXT:    ldr h0, [sp, #350]1736; NONEON-NOSVE-NEXT:    str h0, [sp, #366]1737; NONEON-NOSVE-NEXT:    ldur x10, [x9, #134]1738; NONEON-NOSVE-NEXT:    stur x10, [x9, #150]1739; NONEON-NOSVE-NEXT:    ldr w10, [sp, #336]1740; NONEON-NOSVE-NEXT:    ldr h0, [sp, #320]1741; NONEON-NOSVE-NEXT:    str w10, [sp, #352]1742; NONEON-NOSVE-NEXT:    str h0, [sp, #356]1743; NONEON-NOSVE-NEXT:    ldr q0, [sp, #352]1744; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB6_61745; NONEON-NOSVE-NEXT:  .LBB6_13: // %cond.load71746; NONEON-NOSVE-NEXT:    ldr h1, [x0, #6]1747; NONEON-NOSVE-NEXT:    str q0, [sp, #272]1748; NONEON-NOSVE-NEXT:    ldr x10, [sp, #280]1749; NONEON-NOSVE-NEXT:    str h1, [sp, #304]1750; NONEON-NOSVE-NEXT:    ldr q0, [sp, #304]1751; NONEON-NOSVE-NEXT:    str x10, [sp, #296]1752; NONEON-NOSVE-NEXT:    ldr w10, [sp, #272]1753; NONEON-NOSVE-NEXT:    str q0, [sp, #256]1754; NONEON-NOSVE-NEXT:    ldr h0, [sp, #276]1755; NONEON-NOSVE-NEXT:    str w10, [sp, #288]1756; NONEON-NOSVE-NEXT:    str h0, [sp, #292]1757; NONEON-NOSVE-NEXT:    ldr h0, [sp, #256]1758; NONEON-NOSVE-NEXT:    str h0, [sp, #294]1759; NONEON-NOSVE-NEXT:    ldr q0, [sp, #288]1760; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB6_71761; NONEON-NOSVE-NEXT:  .LBB6_14: // %cond.load101762; NONEON-NOSVE-NEXT:    ldr h1, [x0, #8]1763; NONEON-NOSVE-NEXT:    str q0, [sp, #208]1764; NONEON-NOSVE-NEXT:    str h1, [sp, #240]1765; NONEON-NOSVE-NEXT:    ldr q0, [sp, #240]1766; NONEON-NOSVE-NEXT:    str q0, [sp, #192]1767; NONEON-NOSVE-NEXT:    ldr h0, [sp, #222]1768; NONEON-NOSVE-NEXT:    str h0, [sp, #238]1769; NONEON-NOSVE-NEXT:    ldur w10, [x9, #10]1770; NONEON-NOSVE-NEXT:    stur w10, [x9, #26]1771; NONEON-NOSVE-NEXT:    ldr x9, [sp, #208]1772; NONEON-NOSVE-NEXT:    ldr h0, [sp, #192]1773; NONEON-NOSVE-NEXT:    str x9, [sp, #224]1774; NONEON-NOSVE-NEXT:    str h0, [sp, #232]1775; NONEON-NOSVE-NEXT:    ldr q0, [sp, #224]1776; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB6_81777; NONEON-NOSVE-NEXT:  .LBB6_15: // %cond.load131778; NONEON-NOSVE-NEXT:    ldr h1, [x0, #10]1779; NONEON-NOSVE-NEXT:    str q0, [sp, #144]1780; NONEON-NOSVE-NEXT:    ldr w9, [sp, #156]1781; NONEON-NOSVE-NEXT:    str h1, [sp, #176]1782; NONEON-NOSVE-NEXT:    ldr q0, [sp, #176]1783; NONEON-NOSVE-NEXT:    str w9, [sp, #172]1784; NONEON-NOSVE-NEXT:    ldr x9, [sp, #144]1785; NONEON-NOSVE-NEXT:    str q0, [sp, #128]1786; NONEON-NOSVE-NEXT:    ldr h0, [sp, #152]1787; NONEON-NOSVE-NEXT:    str x9, [sp, #160]1788; NONEON-NOSVE-NEXT:    str h0, [sp, #168]1789; NONEON-NOSVE-NEXT:    ldr h0, [sp, #128]1790; NONEON-NOSVE-NEXT:    str h0, [sp, #170]1791; NONEON-NOSVE-NEXT:    ldr q0, [sp, #160]1792; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB6_91793; NONEON-NOSVE-NEXT:  .LBB6_16: // %cond.load161794; NONEON-NOSVE-NEXT:    ldr h1, [x0, #12]1795; NONEON-NOSVE-NEXT:    str q0, [sp, #80]1796; NONEON-NOSVE-NEXT:    ldr w9, [sp, #88]1797; NONEON-NOSVE-NEXT:    str h1, [sp, #112]1798; NONEON-NOSVE-NEXT:    ldr q0, [sp, #112]1799; NONEON-NOSVE-NEXT:    str w9, [sp, #104]1800; NONEON-NOSVE-NEXT:    ldr x9, [sp, #80]1801; NONEON-NOSVE-NEXT:    str q0, [sp, #64]1802; NONEON-NOSVE-NEXT:    ldr h0, [sp, #94]1803; NONEON-NOSVE-NEXT:    str x9, [sp, #96]1804; NONEON-NOSVE-NEXT:    str h0, [sp, #110]1805; NONEON-NOSVE-NEXT:    ldr h0, [sp, #64]1806; NONEON-NOSVE-NEXT:    str h0, [sp, #108]1807; NONEON-NOSVE-NEXT:    ldr q0, [sp, #96]1808; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB6_101809; NONEON-NOSVE-NEXT:    b .LBB6_111810  %load = call <8 x half> @llvm.masked.load.v8f16(ptr %src, i32 8, <8 x i1> %mask, <8 x half> zeroinitializer)1811  ret <8 x half> %load1812}1813 1814define <16 x half> @masked_load_v16f16(ptr %src, <16 x i1> %mask) {1815; CHECK-LABEL: masked_load_v16f16:1816; CHECK:       // %bb.0:1817; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z01818; CHECK-NEXT:    movprfx z1, z01819; CHECK-NEXT:    ext z1.b, z1.b, z0.b, #81820; CHECK-NEXT:    ptrue p0.h, vl81821; CHECK-NEXT:    mov x8, #8 // =0x81822; CHECK-NEXT:    uunpklo z0.h, z0.b1823; CHECK-NEXT:    uunpklo z1.h, z1.b1824; CHECK-NEXT:    lsl z0.h, z0.h, #151825; CHECK-NEXT:    lsl z1.h, z1.h, #151826; CHECK-NEXT:    asr z0.h, z0.h, #151827; CHECK-NEXT:    asr z1.h, z1.h, #151828; CHECK-NEXT:    cmpne p1.h, p0/z, z0.h, #01829; CHECK-NEXT:    cmpne p0.h, p0/z, z1.h, #01830; CHECK-NEXT:    ld1h { z0.h }, p1/z, [x0]1831; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z01832; CHECK-NEXT:    ld1h { z1.h }, p0/z, [x0, x8, lsl #1]1833; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z11834; CHECK-NEXT:    ret1835;1836; NONEON-NOSVE-LABEL: masked_load_v16f16:1837; NONEON-NOSVE:       // %bb.0:1838; NONEON-NOSVE-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill1839; NONEON-NOSVE-NEXT:    sub sp, sp, #9921840; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 10081841; NONEON-NOSVE-NEXT:    .cfi_offset w29, -161842; NONEON-NOSVE-NEXT:    str q0, [sp, #976]1843; NONEON-NOSVE-NEXT:    adrp x9, .LCPI7_01844; NONEON-NOSVE-NEXT:    ldrb w8, [sp, #978]1845; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #979]1846; NONEON-NOSVE-NEXT:    ldrb w11, [sp, #977]1847; NONEON-NOSVE-NEXT:    ldrb w13, [sp, #980]1848; NONEON-NOSVE-NEXT:    ldrb w14, [sp, #981]1849; NONEON-NOSVE-NEXT:    ldrb w15, [sp, #982]1850; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #11851; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #11852; NONEON-NOSVE-NEXT:    sbfx w11, w11, #0, #11853; NONEON-NOSVE-NEXT:    ldrb w12, [sp, #976]1854; NONEON-NOSVE-NEXT:    sbfx w13, w13, #0, #11855; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #11856; NONEON-NOSVE-NEXT:    and w8, w8, #0x41857; NONEON-NOSVE-NEXT:    and w10, w10, #0x81858; NONEON-NOSVE-NEXT:    sbfx w15, w15, #0, #11859; NONEON-NOSVE-NEXT:    orr w8, w8, w101860; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #983]1861; NONEON-NOSVE-NEXT:    and w11, w11, #0x21862; NONEON-NOSVE-NEXT:    and w13, w13, #0x101863; NONEON-NOSVE-NEXT:    bfxil w11, w12, #0, #11864; NONEON-NOSVE-NEXT:    and w12, w14, #0x201865; NONEON-NOSVE-NEXT:    orr w8, w8, w131866; NONEON-NOSVE-NEXT:    and w13, w15, #0x401867; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #11868; NONEON-NOSVE-NEXT:    orr w8, w11, w81869; NONEON-NOSVE-NEXT:    orr w11, w12, w131870; NONEON-NOSVE-NEXT:    ldr q1, [x9, :lo12:.LCPI7_0]1871; NONEON-NOSVE-NEXT:    orr w8, w8, w111872; NONEON-NOSVE-NEXT:    and w10, w10, #0xffffff801873; NONEON-NOSVE-NEXT:    add x9, sp, #7201874; NONEON-NOSVE-NEXT:    add w8, w8, w101875; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB7_21876; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load1877; NONEON-NOSVE-NEXT:    fmov s0, wzr1878; NONEON-NOSVE-NEXT:    ldr h2, [x0]1879; NONEON-NOSVE-NEXT:    stur wzr, [x9, #250]1880; NONEON-NOSVE-NEXT:    stur xzr, [x9, #242]1881; NONEON-NOSVE-NEXT:    str h2, [sp, #960]1882; NONEON-NOSVE-NEXT:    str h0, [sp, #974]1883; NONEON-NOSVE-NEXT:    ldr q0, [sp, #960]1884; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB7_31885; NONEON-NOSVE-NEXT:    b .LBB7_41886; NONEON-NOSVE-NEXT:  .LBB7_2:1887; NONEON-NOSVE-NEXT:    str q1, [sp, #-16]!1888; NONEON-NOSVE-NEXT:    ldr q0, [sp], #161889; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB7_41890; NONEON-NOSVE-NEXT:  .LBB7_3: // %cond.load11891; NONEON-NOSVE-NEXT:    ldr h2, [x0, #2]1892; NONEON-NOSVE-NEXT:    str q0, [sp, #912]1893; NONEON-NOSVE-NEXT:    ldr w10, [sp, #924]1894; NONEON-NOSVE-NEXT:    str h2, [sp, #944]1895; NONEON-NOSVE-NEXT:    ldr q0, [sp, #944]1896; NONEON-NOSVE-NEXT:    str w10, [sp, #940]1897; NONEON-NOSVE-NEXT:    str q0, [sp, #896]1898; NONEON-NOSVE-NEXT:    ldur x10, [x9, #196]1899; NONEON-NOSVE-NEXT:    stur x10, [x9, #212]1900; NONEON-NOSVE-NEXT:    ldr h0, [sp, #912]1901; NONEON-NOSVE-NEXT:    str h0, [sp, #928]1902; NONEON-NOSVE-NEXT:    ldr h0, [sp, #896]1903; NONEON-NOSVE-NEXT:    str h0, [sp, #930]1904; NONEON-NOSVE-NEXT:    ldr q0, [sp, #928]1905; NONEON-NOSVE-NEXT:  .LBB7_4: // %else21906; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB7_201907; NONEON-NOSVE-NEXT:  // %bb.5: // %else51908; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB7_211909; NONEON-NOSVE-NEXT:  .LBB7_6: // %else81910; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB7_221911; NONEON-NOSVE-NEXT:  .LBB7_7: // %else111912; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB7_231913; NONEON-NOSVE-NEXT:  .LBB7_8: // %else141914; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB7_241915; NONEON-NOSVE-NEXT:  .LBB7_9: // %else171916; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB7_251917; NONEON-NOSVE-NEXT:  .LBB7_10: // %else201918; NONEON-NOSVE-NEXT:    tbnz w8, #8, .LBB7_261919; NONEON-NOSVE-NEXT:  .LBB7_11: // %else231920; NONEON-NOSVE-NEXT:    add x9, sp, #2081921; NONEON-NOSVE-NEXT:    tbnz w8, #9, .LBB7_271922; NONEON-NOSVE-NEXT:  .LBB7_12: // %else261923; NONEON-NOSVE-NEXT:    tbnz w8, #10, .LBB7_281924; NONEON-NOSVE-NEXT:  .LBB7_13: // %else291925; NONEON-NOSVE-NEXT:    tbnz w8, #11, .LBB7_291926; NONEON-NOSVE-NEXT:  .LBB7_14: // %else321927; NONEON-NOSVE-NEXT:    tbnz w8, #12, .LBB7_301928; NONEON-NOSVE-NEXT:  .LBB7_15: // %else351929; NONEON-NOSVE-NEXT:    tbnz w8, #13, .LBB7_311930; NONEON-NOSVE-NEXT:  .LBB7_16: // %else381931; NONEON-NOSVE-NEXT:    tbnz w8, #14, .LBB7_321932; NONEON-NOSVE-NEXT:  .LBB7_17: // %else411933; NONEON-NOSVE-NEXT:    tbz w8, #15, .LBB7_191934; NONEON-NOSVE-NEXT:  .LBB7_18: // %cond.load431935; NONEON-NOSVE-NEXT:    ldr h2, [x0, #30]1936; NONEON-NOSVE-NEXT:    str q1, [sp]1937; NONEON-NOSVE-NEXT:    ldr w8, [sp, #8]1938; NONEON-NOSVE-NEXT:    str h2, [sp, #48]1939; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]1940; NONEON-NOSVE-NEXT:    str w8, [sp, #40]1941; NONEON-NOSVE-NEXT:    ldr x8, [sp]1942; NONEON-NOSVE-NEXT:    str q1, [sp, #16]1943; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1944; NONEON-NOSVE-NEXT:    str x8, [sp, #32]1945; NONEON-NOSVE-NEXT:    str h1, [sp, #44]1946; NONEON-NOSVE-NEXT:    ldr h1, [sp, #16]1947; NONEON-NOSVE-NEXT:    str h1, [sp, #46]1948; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]1949; NONEON-NOSVE-NEXT:  .LBB7_19: // %else441950; NONEON-NOSVE-NEXT:    add sp, sp, #9921951; NONEON-NOSVE-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload1952; NONEON-NOSVE-NEXT:    ret1953; NONEON-NOSVE-NEXT:  .LBB7_20: // %cond.load41954; NONEON-NOSVE-NEXT:    ldr h2, [x0, #4]1955; NONEON-NOSVE-NEXT:    str q0, [sp, #848]1956; NONEON-NOSVE-NEXT:    str h2, [sp, #880]1957; NONEON-NOSVE-NEXT:    ldr q0, [sp, #880]1958; NONEON-NOSVE-NEXT:    str q0, [sp, #832]1959; NONEON-NOSVE-NEXT:    ldr h0, [sp, #862]1960; NONEON-NOSVE-NEXT:    str h0, [sp, #878]1961; NONEON-NOSVE-NEXT:    ldur x10, [x9, #134]1962; NONEON-NOSVE-NEXT:    stur x10, [x9, #150]1963; NONEON-NOSVE-NEXT:    ldr w10, [sp, #848]1964; NONEON-NOSVE-NEXT:    ldr h0, [sp, #832]1965; NONEON-NOSVE-NEXT:    str w10, [sp, #864]1966; NONEON-NOSVE-NEXT:    str h0, [sp, #868]1967; NONEON-NOSVE-NEXT:    ldr q0, [sp, #864]1968; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB7_61969; NONEON-NOSVE-NEXT:  .LBB7_21: // %cond.load71970; NONEON-NOSVE-NEXT:    ldr h2, [x0, #6]1971; NONEON-NOSVE-NEXT:    str q0, [sp, #784]1972; NONEON-NOSVE-NEXT:    ldr x10, [sp, #792]1973; NONEON-NOSVE-NEXT:    str h2, [sp, #816]1974; NONEON-NOSVE-NEXT:    ldr q0, [sp, #816]1975; NONEON-NOSVE-NEXT:    str x10, [sp, #808]1976; NONEON-NOSVE-NEXT:    ldr w10, [sp, #784]1977; NONEON-NOSVE-NEXT:    str q0, [sp, #768]1978; NONEON-NOSVE-NEXT:    ldr h0, [sp, #788]1979; NONEON-NOSVE-NEXT:    str w10, [sp, #800]1980; NONEON-NOSVE-NEXT:    str h0, [sp, #804]1981; NONEON-NOSVE-NEXT:    ldr h0, [sp, #768]1982; NONEON-NOSVE-NEXT:    str h0, [sp, #806]1983; NONEON-NOSVE-NEXT:    ldr q0, [sp, #800]1984; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB7_71985; NONEON-NOSVE-NEXT:  .LBB7_22: // %cond.load101986; NONEON-NOSVE-NEXT:    ldr h2, [x0, #8]1987; NONEON-NOSVE-NEXT:    str q0, [sp, #720]1988; NONEON-NOSVE-NEXT:    str h2, [sp, #752]1989; NONEON-NOSVE-NEXT:    ldr q0, [sp, #752]1990; NONEON-NOSVE-NEXT:    str q0, [sp, #704]1991; NONEON-NOSVE-NEXT:    ldr h0, [sp, #734]1992; NONEON-NOSVE-NEXT:    str h0, [sp, #750]1993; NONEON-NOSVE-NEXT:    ldur w10, [x9, #10]1994; NONEON-NOSVE-NEXT:    stur w10, [x9, #26]1995; NONEON-NOSVE-NEXT:    ldr x9, [sp, #720]1996; NONEON-NOSVE-NEXT:    ldr h0, [sp, #704]1997; NONEON-NOSVE-NEXT:    str x9, [sp, #736]1998; NONEON-NOSVE-NEXT:    str h0, [sp, #744]1999; NONEON-NOSVE-NEXT:    ldr q0, [sp, #736]2000; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB7_82001; NONEON-NOSVE-NEXT:  .LBB7_23: // %cond.load132002; NONEON-NOSVE-NEXT:    ldr h2, [x0, #10]2003; NONEON-NOSVE-NEXT:    str q0, [sp, #656]2004; NONEON-NOSVE-NEXT:    ldr w9, [sp, #668]2005; NONEON-NOSVE-NEXT:    str h2, [sp, #688]2006; NONEON-NOSVE-NEXT:    ldr q0, [sp, #688]2007; NONEON-NOSVE-NEXT:    str w9, [sp, #684]2008; NONEON-NOSVE-NEXT:    ldr x9, [sp, #656]2009; NONEON-NOSVE-NEXT:    str q0, [sp, #640]2010; NONEON-NOSVE-NEXT:    ldr h0, [sp, #664]2011; NONEON-NOSVE-NEXT:    str x9, [sp, #672]2012; NONEON-NOSVE-NEXT:    str h0, [sp, #680]2013; NONEON-NOSVE-NEXT:    ldr h0, [sp, #640]2014; NONEON-NOSVE-NEXT:    str h0, [sp, #682]2015; NONEON-NOSVE-NEXT:    ldr q0, [sp, #672]2016; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB7_92017; NONEON-NOSVE-NEXT:  .LBB7_24: // %cond.load162018; NONEON-NOSVE-NEXT:    ldr h2, [x0, #12]2019; NONEON-NOSVE-NEXT:    str q0, [sp, #592]2020; NONEON-NOSVE-NEXT:    ldr w9, [sp, #600]2021; NONEON-NOSVE-NEXT:    str h2, [sp, #624]2022; NONEON-NOSVE-NEXT:    ldr q0, [sp, #624]2023; NONEON-NOSVE-NEXT:    str w9, [sp, #616]2024; NONEON-NOSVE-NEXT:    ldr x9, [sp, #592]2025; NONEON-NOSVE-NEXT:    str q0, [sp, #576]2026; NONEON-NOSVE-NEXT:    ldr h0, [sp, #606]2027; NONEON-NOSVE-NEXT:    str x9, [sp, #608]2028; NONEON-NOSVE-NEXT:    str h0, [sp, #622]2029; NONEON-NOSVE-NEXT:    ldr h0, [sp, #576]2030; NONEON-NOSVE-NEXT:    str h0, [sp, #620]2031; NONEON-NOSVE-NEXT:    ldr q0, [sp, #608]2032; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB7_102033; NONEON-NOSVE-NEXT:  .LBB7_25: // %cond.load192034; NONEON-NOSVE-NEXT:    ldr h2, [x0, #14]2035; NONEON-NOSVE-NEXT:    str q0, [sp, #512]2036; NONEON-NOSVE-NEXT:    ldr w9, [sp, #520]2037; NONEON-NOSVE-NEXT:    str h2, [sp, #560]2038; NONEON-NOSVE-NEXT:    ldr q0, [sp, #560]2039; NONEON-NOSVE-NEXT:    str w9, [sp, #552]2040; NONEON-NOSVE-NEXT:    ldr x9, [sp, #512]2041; NONEON-NOSVE-NEXT:    str q0, [sp, #528]2042; NONEON-NOSVE-NEXT:    ldr h0, [sp, #524]2043; NONEON-NOSVE-NEXT:    str x9, [sp, #544]2044; NONEON-NOSVE-NEXT:    str h0, [sp, #556]2045; NONEON-NOSVE-NEXT:    ldr h0, [sp, #528]2046; NONEON-NOSVE-NEXT:    str h0, [sp, #558]2047; NONEON-NOSVE-NEXT:    ldr q0, [sp, #544]2048; NONEON-NOSVE-NEXT:    tbz w8, #8, .LBB7_112049; NONEON-NOSVE-NEXT:  .LBB7_26: // %cond.load222050; NONEON-NOSVE-NEXT:    ldr h2, [x0, #16]2051; NONEON-NOSVE-NEXT:    str q1, [sp, #464]2052; NONEON-NOSVE-NEXT:    add x9, sp, #4642053; NONEON-NOSVE-NEXT:    str h2, [sp, #496]2054; NONEON-NOSVE-NEXT:    ldr q1, [sp, #496]2055; NONEON-NOSVE-NEXT:    str q1, [sp, #448]2056; NONEON-NOSVE-NEXT:    ldr h1, [sp, #478]2057; NONEON-NOSVE-NEXT:    str h1, [sp, #494]2058; NONEON-NOSVE-NEXT:    ldur w10, [x9, #10]2059; NONEON-NOSVE-NEXT:    ldur x11, [x9, #2]2060; NONEON-NOSVE-NEXT:    stur w10, [x9, #26]2061; NONEON-NOSVE-NEXT:    stur x11, [x9, #18]2062; NONEON-NOSVE-NEXT:    ldr h1, [sp, #448]2063; NONEON-NOSVE-NEXT:    str h1, [sp, #480]2064; NONEON-NOSVE-NEXT:    ldr q1, [sp, #480]2065; NONEON-NOSVE-NEXT:    add x9, sp, #2082066; NONEON-NOSVE-NEXT:    tbz w8, #9, .LBB7_122067; NONEON-NOSVE-NEXT:  .LBB7_27: // %cond.load252068; NONEON-NOSVE-NEXT:    ldr h2, [x0, #18]2069; NONEON-NOSVE-NEXT:    str q1, [sp, #400]2070; NONEON-NOSVE-NEXT:    ldr w10, [sp, #412]2071; NONEON-NOSVE-NEXT:    str h2, [sp, #432]2072; NONEON-NOSVE-NEXT:    ldr q1, [sp, #432]2073; NONEON-NOSVE-NEXT:    str w10, [sp, #428]2074; NONEON-NOSVE-NEXT:    str q1, [sp, #384]2075; NONEON-NOSVE-NEXT:    ldur x10, [x9, #196]2076; NONEON-NOSVE-NEXT:    stur x10, [x9, #212]2077; NONEON-NOSVE-NEXT:    ldr h1, [sp, #400]2078; NONEON-NOSVE-NEXT:    str h1, [sp, #416]2079; NONEON-NOSVE-NEXT:    ldr h1, [sp, #384]2080; NONEON-NOSVE-NEXT:    str h1, [sp, #418]2081; NONEON-NOSVE-NEXT:    ldr q1, [sp, #416]2082; NONEON-NOSVE-NEXT:    tbz w8, #10, .LBB7_132083; NONEON-NOSVE-NEXT:  .LBB7_28: // %cond.load282084; NONEON-NOSVE-NEXT:    ldr h2, [x0, #20]2085; NONEON-NOSVE-NEXT:    str q1, [sp, #336]2086; NONEON-NOSVE-NEXT:    str h2, [sp, #368]2087; NONEON-NOSVE-NEXT:    ldr q1, [sp, #368]2088; NONEON-NOSVE-NEXT:    str q1, [sp, #320]2089; NONEON-NOSVE-NEXT:    ldr h1, [sp, #350]2090; NONEON-NOSVE-NEXT:    str h1, [sp, #366]2091; NONEON-NOSVE-NEXT:    ldur x10, [x9, #134]2092; NONEON-NOSVE-NEXT:    stur x10, [x9, #150]2093; NONEON-NOSVE-NEXT:    ldr w10, [sp, #336]2094; NONEON-NOSVE-NEXT:    ldr h1, [sp, #320]2095; NONEON-NOSVE-NEXT:    str w10, [sp, #352]2096; NONEON-NOSVE-NEXT:    str h1, [sp, #356]2097; NONEON-NOSVE-NEXT:    ldr q1, [sp, #352]2098; NONEON-NOSVE-NEXT:    tbz w8, #11, .LBB7_142099; NONEON-NOSVE-NEXT:  .LBB7_29: // %cond.load312100; NONEON-NOSVE-NEXT:    ldr h2, [x0, #22]2101; NONEON-NOSVE-NEXT:    str q1, [sp, #272]2102; NONEON-NOSVE-NEXT:    ldr x10, [sp, #280]2103; NONEON-NOSVE-NEXT:    str h2, [sp, #304]2104; NONEON-NOSVE-NEXT:    ldr q1, [sp, #304]2105; NONEON-NOSVE-NEXT:    str x10, [sp, #296]2106; NONEON-NOSVE-NEXT:    ldr w10, [sp, #272]2107; NONEON-NOSVE-NEXT:    str q1, [sp, #256]2108; NONEON-NOSVE-NEXT:    ldr h1, [sp, #276]2109; NONEON-NOSVE-NEXT:    str w10, [sp, #288]2110; NONEON-NOSVE-NEXT:    str h1, [sp, #292]2111; NONEON-NOSVE-NEXT:    ldr h1, [sp, #256]2112; NONEON-NOSVE-NEXT:    str h1, [sp, #294]2113; NONEON-NOSVE-NEXT:    ldr q1, [sp, #288]2114; NONEON-NOSVE-NEXT:    tbz w8, #12, .LBB7_152115; NONEON-NOSVE-NEXT:  .LBB7_30: // %cond.load342116; NONEON-NOSVE-NEXT:    ldr h2, [x0, #24]2117; NONEON-NOSVE-NEXT:    str q1, [sp, #208]2118; NONEON-NOSVE-NEXT:    str h2, [sp, #240]2119; NONEON-NOSVE-NEXT:    ldr q1, [sp, #240]2120; NONEON-NOSVE-NEXT:    str q1, [sp, #192]2121; NONEON-NOSVE-NEXT:    ldr h1, [sp, #222]2122; NONEON-NOSVE-NEXT:    str h1, [sp, #238]2123; NONEON-NOSVE-NEXT:    ldur w10, [x9, #10]2124; NONEON-NOSVE-NEXT:    stur w10, [x9, #26]2125; NONEON-NOSVE-NEXT:    ldr x9, [sp, #208]2126; NONEON-NOSVE-NEXT:    ldr h1, [sp, #192]2127; NONEON-NOSVE-NEXT:    str x9, [sp, #224]2128; NONEON-NOSVE-NEXT:    str h1, [sp, #232]2129; NONEON-NOSVE-NEXT:    ldr q1, [sp, #224]2130; NONEON-NOSVE-NEXT:    tbz w8, #13, .LBB7_162131; NONEON-NOSVE-NEXT:  .LBB7_31: // %cond.load372132; NONEON-NOSVE-NEXT:    ldr h2, [x0, #26]2133; NONEON-NOSVE-NEXT:    str q1, [sp, #144]2134; NONEON-NOSVE-NEXT:    ldr w9, [sp, #156]2135; NONEON-NOSVE-NEXT:    str h2, [sp, #176]2136; NONEON-NOSVE-NEXT:    ldr q1, [sp, #176]2137; NONEON-NOSVE-NEXT:    str w9, [sp, #172]2138; NONEON-NOSVE-NEXT:    ldr x9, [sp, #144]2139; NONEON-NOSVE-NEXT:    str q1, [sp, #128]2140; NONEON-NOSVE-NEXT:    ldr h1, [sp, #152]2141; NONEON-NOSVE-NEXT:    str x9, [sp, #160]2142; NONEON-NOSVE-NEXT:    str h1, [sp, #168]2143; NONEON-NOSVE-NEXT:    ldr h1, [sp, #128]2144; NONEON-NOSVE-NEXT:    str h1, [sp, #170]2145; NONEON-NOSVE-NEXT:    ldr q1, [sp, #160]2146; NONEON-NOSVE-NEXT:    tbz w8, #14, .LBB7_172147; NONEON-NOSVE-NEXT:  .LBB7_32: // %cond.load402148; NONEON-NOSVE-NEXT:    ldr h2, [x0, #28]2149; NONEON-NOSVE-NEXT:    str q1, [sp, #80]2150; NONEON-NOSVE-NEXT:    ldr w9, [sp, #88]2151; NONEON-NOSVE-NEXT:    str h2, [sp, #112]2152; NONEON-NOSVE-NEXT:    ldr q1, [sp, #112]2153; NONEON-NOSVE-NEXT:    str w9, [sp, #104]2154; NONEON-NOSVE-NEXT:    ldr x9, [sp, #80]2155; NONEON-NOSVE-NEXT:    str q1, [sp, #64]2156; NONEON-NOSVE-NEXT:    ldr h1, [sp, #94]2157; NONEON-NOSVE-NEXT:    str x9, [sp, #96]2158; NONEON-NOSVE-NEXT:    str h1, [sp, #110]2159; NONEON-NOSVE-NEXT:    ldr h1, [sp, #64]2160; NONEON-NOSVE-NEXT:    str h1, [sp, #108]2161; NONEON-NOSVE-NEXT:    ldr q1, [sp, #96]2162; NONEON-NOSVE-NEXT:    tbnz w8, #15, .LBB7_182163; NONEON-NOSVE-NEXT:    b .LBB7_192164  %load = call <16 x half> @llvm.masked.load.v16f16(ptr %src, i32 8, <16 x i1> %mask, <16 x half> zeroinitializer)2165  ret <16 x half> %load2166}2167 2168define <2 x float> @masked_load_v2f32(ptr %src, <2 x i1> %mask) {2169; CHECK-LABEL: masked_load_v2f32:2170; CHECK:       // %bb.0:2171; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z02172; CHECK-NEXT:    ptrue p0.s, vl22173; CHECK-NEXT:    lsl z0.s, z0.s, #312174; CHECK-NEXT:    asr z0.s, z0.s, #312175; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #02176; CHECK-NEXT:    ld1w { z0.s }, p0/z, [x0]2177; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z02178; CHECK-NEXT:    ret2179;2180; NONEON-NOSVE-LABEL: masked_load_v2f32:2181; NONEON-NOSVE:       // %bb.0:2182; NONEON-NOSVE-NEXT:    sub sp, sp, #642183; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 642184; NONEON-NOSVE-NEXT:    str d0, [sp, #48]2185; NONEON-NOSVE-NEXT:    ldr w8, [sp, #52]2186; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #48]2187; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #12188; NONEON-NOSVE-NEXT:    and w8, w8, #0x22189; NONEON-NOSVE-NEXT:    bfxil w8, w9, #0, #12190; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB8_22191; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2192; NONEON-NOSVE-NEXT:    ldr s0, [x0]2193; NONEON-NOSVE-NEXT:    str wzr, [sp, #44]2194; NONEON-NOSVE-NEXT:    str s0, [sp, #40]2195; NONEON-NOSVE-NEXT:    ldr d0, [sp, #40]2196; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB8_32197; NONEON-NOSVE-NEXT:    b .LBB8_42198; NONEON-NOSVE-NEXT:  .LBB8_2:2199; NONEON-NOSVE-NEXT:    adrp x9, .LCPI8_02200; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI8_0]2201; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB8_42202; NONEON-NOSVE-NEXT:  .LBB8_3: // %cond.load12203; NONEON-NOSVE-NEXT:    ldr s1, [x0, #4]2204; NONEON-NOSVE-NEXT:    str d0, [sp, #8]2205; NONEON-NOSVE-NEXT:    str s1, [sp, #32]2206; NONEON-NOSVE-NEXT:    ldr s1, [sp, #8]2207; NONEON-NOSVE-NEXT:    ldr d0, [sp, #32]2208; NONEON-NOSVE-NEXT:    str d0, [sp, #16]2209; NONEON-NOSVE-NEXT:    ldr s0, [sp, #16]2210; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #24]2211; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]2212; NONEON-NOSVE-NEXT:  .LBB8_4: // %else22213; NONEON-NOSVE-NEXT:    add sp, sp, #642214; NONEON-NOSVE-NEXT:    ret2215  %load = call <2 x float> @llvm.masked.load.v2f32(ptr %src, i32 8, <2 x i1> %mask, <2 x float> zeroinitializer)2216  ret <2 x float> %load2217}2218 2219define <4 x float> @masked_load_v4f32(ptr %src, <4 x i1> %mask) {2220; CHECK-LABEL: masked_load_v4f32:2221; CHECK:       // %bb.0:2222; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z02223; CHECK-NEXT:    ptrue p0.s, vl42224; CHECK-NEXT:    uunpklo z0.s, z0.h2225; CHECK-NEXT:    lsl z0.s, z0.s, #312226; CHECK-NEXT:    asr z0.s, z0.s, #312227; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #02228; CHECK-NEXT:    ld1w { z0.s }, p0/z, [x0]2229; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02230; CHECK-NEXT:    ret2231;2232; NONEON-NOSVE-LABEL: masked_load_v4f32:2233; NONEON-NOSVE:       // %bb.0:2234; NONEON-NOSVE-NEXT:    sub sp, sp, #2242235; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 2242236; NONEON-NOSVE-NEXT:    str d0, [sp, #208]2237; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #210]2238; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #212]2239; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #214]2240; NONEON-NOSVE-NEXT:    ldrh w11, [sp, #208]2241; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #12242; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #12243; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #12244; NONEON-NOSVE-NEXT:    and w8, w8, #0x22245; NONEON-NOSVE-NEXT:    and w9, w9, #0x42246; NONEON-NOSVE-NEXT:    and w10, w10, #0x82247; NONEON-NOSVE-NEXT:    bfxil w8, w11, #0, #12248; NONEON-NOSVE-NEXT:    orr w9, w9, w102249; NONEON-NOSVE-NEXT:    orr w8, w8, w92250; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB9_22251; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2252; NONEON-NOSVE-NEXT:    ldr s0, [x0]2253; NONEON-NOSVE-NEXT:    str wzr, [sp, #204]2254; NONEON-NOSVE-NEXT:    stur xzr, [sp, #196]2255; NONEON-NOSVE-NEXT:    str s0, [sp, #192]2256; NONEON-NOSVE-NEXT:    ldr q0, [sp, #192]2257; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB9_32258; NONEON-NOSVE-NEXT:    b .LBB9_42259; NONEON-NOSVE-NEXT:  .LBB9_2:2260; NONEON-NOSVE-NEXT:    adrp x9, .LCPI9_02261; NONEON-NOSVE-NEXT:    ldr q0, [x9, :lo12:.LCPI9_0]2262; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB9_42263; NONEON-NOSVE-NEXT:  .LBB9_3: // %cond.load12264; NONEON-NOSVE-NEXT:    ldr s1, [x0, #4]2265; NONEON-NOSVE-NEXT:    str q0, [sp, #144]2266; NONEON-NOSVE-NEXT:    str s1, [sp, #176]2267; NONEON-NOSVE-NEXT:    ldr q0, [sp, #176]2268; NONEON-NOSVE-NEXT:    str q0, [sp, #128]2269; NONEON-NOSVE-NEXT:    ldp s0, s1, [sp, #152]2270; NONEON-NOSVE-NEXT:    stp s0, s1, [sp, #168]2271; NONEON-NOSVE-NEXT:    ldr s1, [sp, #144]2272; NONEON-NOSVE-NEXT:    ldr s0, [sp, #128]2273; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #160]2274; NONEON-NOSVE-NEXT:    ldr q0, [sp, #160]2275; NONEON-NOSVE-NEXT:  .LBB9_4: // %else22276; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB9_72277; NONEON-NOSVE-NEXT:  // %bb.5: // %else52278; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB9_82279; NONEON-NOSVE-NEXT:  .LBB9_6: // %else82280; NONEON-NOSVE-NEXT:    add sp, sp, #2242281; NONEON-NOSVE-NEXT:    ret2282; NONEON-NOSVE-NEXT:  .LBB9_7: // %cond.load42283; NONEON-NOSVE-NEXT:    ldr s1, [x0, #8]2284; NONEON-NOSVE-NEXT:    str q0, [sp, #80]2285; NONEON-NOSVE-NEXT:    str s1, [sp, #112]2286; NONEON-NOSVE-NEXT:    ldr s1, [sp, #92]2287; NONEON-NOSVE-NEXT:    ldr q0, [sp, #112]2288; NONEON-NOSVE-NEXT:    str q0, [sp, #64]2289; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #80]2290; NONEON-NOSVE-NEXT:    stp s0, s2, [sp, #96]2291; NONEON-NOSVE-NEXT:    ldr s0, [sp, #64]2292; NONEON-NOSVE-NEXT:    stp s0, s1, [sp, #104]2293; NONEON-NOSVE-NEXT:    ldr q0, [sp, #96]2294; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB9_62295; NONEON-NOSVE-NEXT:  .LBB9_8: // %cond.load72296; NONEON-NOSVE-NEXT:    ldr s1, [x0, #12]2297; NONEON-NOSVE-NEXT:    str q0, [sp]2298; NONEON-NOSVE-NEXT:    ldr x8, [sp]2299; NONEON-NOSVE-NEXT:    str s1, [sp, #48]2300; NONEON-NOSVE-NEXT:    ldr s1, [sp, #8]2301; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]2302; NONEON-NOSVE-NEXT:    str x8, [sp, #32]2303; NONEON-NOSVE-NEXT:    str q0, [sp, #16]2304; NONEON-NOSVE-NEXT:    ldr s0, [sp, #16]2305; NONEON-NOSVE-NEXT:    stp s1, s0, [sp, #40]2306; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]2307; NONEON-NOSVE-NEXT:    add sp, sp, #2242308; NONEON-NOSVE-NEXT:    ret2309  %load = call <4 x float> @llvm.masked.load.v4f32(ptr %src, i32 8, <4 x i1> %mask, <4 x float> zeroinitializer)2310  ret <4 x float> %load2311}2312 2313define <8 x float> @masked_load_v8f32(ptr %src, <8 x i1> %mask) {2314; CHECK-LABEL: masked_load_v8f32:2315; CHECK:       // %bb.0:2316; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z02317; CHECK-NEXT:    mov z1.b, z0.b[3]2318; CHECK-NEXT:    mov z2.b, z0.b[2]2319; CHECK-NEXT:    mov x8, #4 // =0x42320; CHECK-NEXT:    mov z3.b, z0.b[1]2321; CHECK-NEXT:    mov z4.b, z0.b[7]2322; CHECK-NEXT:    mov z5.b, z0.b[6]2323; CHECK-NEXT:    mov z6.b, z0.b[5]2324; CHECK-NEXT:    mov z7.b, z0.b[4]2325; CHECK-NEXT:    ptrue p0.s, vl42326; CHECK-NEXT:    zip1 z1.h, z2.h, z1.h2327; CHECK-NEXT:    zip1 z0.h, z0.h, z3.h2328; CHECK-NEXT:    zip1 z2.h, z5.h, z4.h2329; CHECK-NEXT:    zip1 z3.h, z7.h, z6.h2330; CHECK-NEXT:    zip1 z0.s, z0.s, z1.s2331; CHECK-NEXT:    zip1 z1.s, z3.s, z2.s2332; CHECK-NEXT:    uunpklo z0.s, z0.h2333; CHECK-NEXT:    uunpklo z1.s, z1.h2334; CHECK-NEXT:    lsl z0.s, z0.s, #312335; CHECK-NEXT:    lsl z1.s, z1.s, #312336; CHECK-NEXT:    asr z0.s, z0.s, #312337; CHECK-NEXT:    asr z1.s, z1.s, #312338; CHECK-NEXT:    cmpne p1.s, p0/z, z0.s, #02339; CHECK-NEXT:    cmpne p0.s, p0/z, z1.s, #02340; CHECK-NEXT:    ld1w { z0.s }, p1/z, [x0]2341; CHECK-NEXT:    ld1w { z1.s }, p0/z, [x0, x8, lsl #2]2342; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02343; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z12344; CHECK-NEXT:    ret2345;2346; NONEON-NOSVE-LABEL: masked_load_v8f32:2347; NONEON-NOSVE:       // %bb.0:2348; NONEON-NOSVE-NEXT:    sub sp, sp, #4962349; NONEON-NOSVE-NEXT:    str x29, [sp, #480] // 8-byte Spill2350; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 4962351; NONEON-NOSVE-NEXT:    .cfi_offset w29, -162352; NONEON-NOSVE-NEXT:    str d0, [sp, #464]2353; NONEON-NOSVE-NEXT:    adrp x8, .LCPI10_02354; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #466]2355; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #467]2356; NONEON-NOSVE-NEXT:    ldrb w11, [sp, #465]2357; NONEON-NOSVE-NEXT:    ldrb w13, [sp, #468]2358; NONEON-NOSVE-NEXT:    ldrb w14, [sp, #469]2359; NONEON-NOSVE-NEXT:    ldrb w15, [sp, #470]2360; NONEON-NOSVE-NEXT:    sbfx w9, w9, #0, #12361; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #12362; NONEON-NOSVE-NEXT:    sbfx w11, w11, #0, #12363; NONEON-NOSVE-NEXT:    ldrb w12, [sp, #464]2364; NONEON-NOSVE-NEXT:    sbfx w13, w13, #0, #12365; NONEON-NOSVE-NEXT:    sbfx w14, w14, #0, #12366; NONEON-NOSVE-NEXT:    and w9, w9, #0x42367; NONEON-NOSVE-NEXT:    and w10, w10, #0x82368; NONEON-NOSVE-NEXT:    sbfx w15, w15, #0, #12369; NONEON-NOSVE-NEXT:    orr w9, w9, w102370; NONEON-NOSVE-NEXT:    ldrb w10, [sp, #471]2371; NONEON-NOSVE-NEXT:    and w11, w11, #0x22372; NONEON-NOSVE-NEXT:    and w13, w13, #0x102373; NONEON-NOSVE-NEXT:    bfxil w11, w12, #0, #12374; NONEON-NOSVE-NEXT:    and w12, w14, #0x202375; NONEON-NOSVE-NEXT:    orr w9, w9, w132376; NONEON-NOSVE-NEXT:    and w13, w15, #0x402377; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #12378; NONEON-NOSVE-NEXT:    orr w9, w11, w92379; NONEON-NOSVE-NEXT:    orr w11, w12, w132380; NONEON-NOSVE-NEXT:    ldr q1, [x8, :lo12:.LCPI10_0]2381; NONEON-NOSVE-NEXT:    orr w9, w9, w112382; NONEON-NOSVE-NEXT:    and w10, w10, #0x802383; NONEON-NOSVE-NEXT:    add w10, w9, w102384; NONEON-NOSVE-NEXT:    add x9, sp, #2082385; NONEON-NOSVE-NEXT:    and w8, w10, #0xff2386; NONEON-NOSVE-NEXT:    tbz w10, #0, .LBB10_22387; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2388; NONEON-NOSVE-NEXT:    ldr s0, [x0]2389; NONEON-NOSVE-NEXT:    str wzr, [sp, #460]2390; NONEON-NOSVE-NEXT:    stur xzr, [x9, #244]2391; NONEON-NOSVE-NEXT:    str s0, [sp, #448]2392; NONEON-NOSVE-NEXT:    ldr q0, [sp, #448]2393; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB10_32394; NONEON-NOSVE-NEXT:    b .LBB10_42395; NONEON-NOSVE-NEXT:  .LBB10_2:2396; NONEON-NOSVE-NEXT:    str q1, [sp, #-16]!2397; NONEON-NOSVE-NEXT:    ldr q0, [sp], #162398; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB10_42399; NONEON-NOSVE-NEXT:  .LBB10_3: // %cond.load12400; NONEON-NOSVE-NEXT:    ldr s2, [x0, #4]2401; NONEON-NOSVE-NEXT:    str q0, [sp, #400]2402; NONEON-NOSVE-NEXT:    str s2, [sp, #432]2403; NONEON-NOSVE-NEXT:    ldr q0, [sp, #432]2404; NONEON-NOSVE-NEXT:    str q0, [sp, #384]2405; NONEON-NOSVE-NEXT:    ldr s0, [sp, #412]2406; NONEON-NOSVE-NEXT:    str s0, [sp, #428]2407; NONEON-NOSVE-NEXT:    ldr s0, [sp, #408]2408; NONEON-NOSVE-NEXT:    str s0, [sp, #424]2409; NONEON-NOSVE-NEXT:    ldr s0, [sp, #400]2410; NONEON-NOSVE-NEXT:    str s0, [sp, #416]2411; NONEON-NOSVE-NEXT:    ldr s0, [sp, #384]2412; NONEON-NOSVE-NEXT:    str s0, [sp, #420]2413; NONEON-NOSVE-NEXT:    ldr q0, [sp, #416]2414; NONEON-NOSVE-NEXT:  .LBB10_4: // %else22415; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB10_122416; NONEON-NOSVE-NEXT:  // %bb.5: // %else52417; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB10_132418; NONEON-NOSVE-NEXT:  .LBB10_6: // %else82419; NONEON-NOSVE-NEXT:    tbnz w8, #4, .LBB10_142420; NONEON-NOSVE-NEXT:  .LBB10_7: // %else112421; NONEON-NOSVE-NEXT:    tbnz w8, #5, .LBB10_152422; NONEON-NOSVE-NEXT:  .LBB10_8: // %else142423; NONEON-NOSVE-NEXT:    tbnz w8, #6, .LBB10_162424; NONEON-NOSVE-NEXT:  .LBB10_9: // %else172425; NONEON-NOSVE-NEXT:    tbz w8, #7, .LBB10_112426; NONEON-NOSVE-NEXT:  .LBB10_10: // %cond.load192427; NONEON-NOSVE-NEXT:    ldr s2, [x0, #28]2428; NONEON-NOSVE-NEXT:    str q1, [sp]2429; NONEON-NOSVE-NEXT:    ldr x8, [sp]2430; NONEON-NOSVE-NEXT:    str s2, [sp, #48]2431; NONEON-NOSVE-NEXT:    ldr s2, [sp, #8]2432; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]2433; NONEON-NOSVE-NEXT:    str x8, [sp, #32]2434; NONEON-NOSVE-NEXT:    str q1, [sp, #16]2435; NONEON-NOSVE-NEXT:    ldr s1, [sp, #16]2436; NONEON-NOSVE-NEXT:    stp s2, s1, [sp, #40]2437; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]2438; NONEON-NOSVE-NEXT:  .LBB10_11: // %else202439; NONEON-NOSVE-NEXT:    ldr x29, [sp, #480] // 8-byte Reload2440; NONEON-NOSVE-NEXT:    add sp, sp, #4962441; NONEON-NOSVE-NEXT:    ret2442; NONEON-NOSVE-NEXT:  .LBB10_12: // %cond.load42443; NONEON-NOSVE-NEXT:    ldr s2, [x0, #8]2444; NONEON-NOSVE-NEXT:    str q0, [sp, #336]2445; NONEON-NOSVE-NEXT:    str s2, [sp, #368]2446; NONEON-NOSVE-NEXT:    ldr q0, [sp, #368]2447; NONEON-NOSVE-NEXT:    str q0, [sp, #320]2448; NONEON-NOSVE-NEXT:    ldr s0, [sp, #348]2449; NONEON-NOSVE-NEXT:    str s0, [sp, #364]2450; NONEON-NOSVE-NEXT:    ldr s0, [sp, #340]2451; NONEON-NOSVE-NEXT:    str s0, [sp, #356]2452; NONEON-NOSVE-NEXT:    ldr s0, [sp, #336]2453; NONEON-NOSVE-NEXT:    str s0, [sp, #352]2454; NONEON-NOSVE-NEXT:    ldr s0, [sp, #320]2455; NONEON-NOSVE-NEXT:    str s0, [sp, #360]2456; NONEON-NOSVE-NEXT:    ldr q0, [sp, #352]2457; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB10_62458; NONEON-NOSVE-NEXT:  .LBB10_13: // %cond.load72459; NONEON-NOSVE-NEXT:    ldr s2, [x0, #12]2460; NONEON-NOSVE-NEXT:    str q0, [sp, #256]2461; NONEON-NOSVE-NEXT:    ldr x10, [sp, #256]2462; NONEON-NOSVE-NEXT:    str s2, [sp, #304]2463; NONEON-NOSVE-NEXT:    ldr q0, [sp, #304]2464; NONEON-NOSVE-NEXT:    str x10, [sp, #288]2465; NONEON-NOSVE-NEXT:    str q0, [sp, #272]2466; NONEON-NOSVE-NEXT:    ldr s0, [sp, #264]2467; NONEON-NOSVE-NEXT:    str s0, [sp, #296]2468; NONEON-NOSVE-NEXT:    ldr s0, [sp, #272]2469; NONEON-NOSVE-NEXT:    str s0, [sp, #300]2470; NONEON-NOSVE-NEXT:    ldr q0, [sp, #288]2471; NONEON-NOSVE-NEXT:    tbz w8, #4, .LBB10_72472; NONEON-NOSVE-NEXT:  .LBB10_14: // %cond.load102473; NONEON-NOSVE-NEXT:    ldr s2, [x0, #16]2474; NONEON-NOSVE-NEXT:    str q1, [sp, #208]2475; NONEON-NOSVE-NEXT:    str s2, [sp, #240]2476; NONEON-NOSVE-NEXT:    ldr q1, [sp, #240]2477; NONEON-NOSVE-NEXT:    str q1, [sp, #192]2478; NONEON-NOSVE-NEXT:    ldr s1, [sp, #220]2479; NONEON-NOSVE-NEXT:    str s1, [sp, #236]2480; NONEON-NOSVE-NEXT:    ldur x10, [x9, #4]2481; NONEON-NOSVE-NEXT:    stur x10, [x9, #20]2482; NONEON-NOSVE-NEXT:    ldr s1, [sp, #192]2483; NONEON-NOSVE-NEXT:    str s1, [sp, #224]2484; NONEON-NOSVE-NEXT:    ldr q1, [sp, #224]2485; NONEON-NOSVE-NEXT:    tbz w8, #5, .LBB10_82486; NONEON-NOSVE-NEXT:  .LBB10_15: // %cond.load132487; NONEON-NOSVE-NEXT:    ldr s2, [x0, #20]2488; NONEON-NOSVE-NEXT:    str q1, [sp, #144]2489; NONEON-NOSVE-NEXT:    str s2, [sp, #176]2490; NONEON-NOSVE-NEXT:    ldr q1, [sp, #176]2491; NONEON-NOSVE-NEXT:    str q1, [sp, #128]2492; NONEON-NOSVE-NEXT:    ldp s1, s2, [sp, #152]2493; NONEON-NOSVE-NEXT:    stp s1, s2, [sp, #168]2494; NONEON-NOSVE-NEXT:    ldr s2, [sp, #144]2495; NONEON-NOSVE-NEXT:    ldr s1, [sp, #128]2496; NONEON-NOSVE-NEXT:    stp s2, s1, [sp, #160]2497; NONEON-NOSVE-NEXT:    ldr q1, [sp, #160]2498; NONEON-NOSVE-NEXT:    tbz w8, #6, .LBB10_92499; NONEON-NOSVE-NEXT:  .LBB10_16: // %cond.load162500; NONEON-NOSVE-NEXT:    ldr s2, [x0, #24]2501; NONEON-NOSVE-NEXT:    str q1, [sp, #80]2502; NONEON-NOSVE-NEXT:    str s2, [sp, #112]2503; NONEON-NOSVE-NEXT:    ldr s2, [sp, #92]2504; NONEON-NOSVE-NEXT:    ldr q1, [sp, #112]2505; NONEON-NOSVE-NEXT:    str q1, [sp, #64]2506; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #80]2507; NONEON-NOSVE-NEXT:    stp s1, s3, [sp, #96]2508; NONEON-NOSVE-NEXT:    ldr s1, [sp, #64]2509; NONEON-NOSVE-NEXT:    stp s1, s2, [sp, #104]2510; NONEON-NOSVE-NEXT:    ldr q1, [sp, #96]2511; NONEON-NOSVE-NEXT:    tbnz w8, #7, .LBB10_102512; NONEON-NOSVE-NEXT:    b .LBB10_112513  %load = call <8 x float> @llvm.masked.load.v8f32(ptr %src, i32 8, <8 x i1> %mask, <8 x float> zeroinitializer)2514  ret <8 x float> %load2515}2516 2517define <2 x double> @masked_load_v2f64(ptr %src, <2 x i1> %mask) {2518; CHECK-LABEL: masked_load_v2f64:2519; CHECK:       // %bb.0:2520; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z02521; CHECK-NEXT:    ptrue p0.d, vl22522; CHECK-NEXT:    uunpklo z0.d, z0.s2523; CHECK-NEXT:    lsl z0.d, z0.d, #632524; CHECK-NEXT:    asr z0.d, z0.d, #632525; CHECK-NEXT:    cmpne p0.d, p0/z, z0.d, #02526; CHECK-NEXT:    ld1d { z0.d }, p0/z, [x0]2527; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02528; CHECK-NEXT:    ret2529;2530; NONEON-NOSVE-LABEL: masked_load_v2f64:2531; NONEON-NOSVE:       // %bb.0:2532; NONEON-NOSVE-NEXT:    sub sp, sp, #962533; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962534; NONEON-NOSVE-NEXT:    str d0, [sp, #80]2535; NONEON-NOSVE-NEXT:    ldr w8, [sp, #84]2536; NONEON-NOSVE-NEXT:    ldrb w9, [sp, #80]2537; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #12538; NONEON-NOSVE-NEXT:    and w8, w8, #0x22539; NONEON-NOSVE-NEXT:    bfxil w8, w9, #0, #12540; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB11_22541; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2542; NONEON-NOSVE-NEXT:    ldr d0, [x0]2543; NONEON-NOSVE-NEXT:    str xzr, [sp, #72]2544; NONEON-NOSVE-NEXT:    str d0, [sp, #64]2545; NONEON-NOSVE-NEXT:    ldr q0, [sp, #64]2546; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB11_32547; NONEON-NOSVE-NEXT:    b .LBB11_42548; NONEON-NOSVE-NEXT:  .LBB11_2:2549; NONEON-NOSVE-NEXT:    adrp x9, .LCPI11_02550; NONEON-NOSVE-NEXT:    ldr q0, [x9, :lo12:.LCPI11_0]2551; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB11_42552; NONEON-NOSVE-NEXT:  .LBB11_3: // %cond.load12553; NONEON-NOSVE-NEXT:    ldr d1, [x0, #8]2554; NONEON-NOSVE-NEXT:    str q0, [sp]2555; NONEON-NOSVE-NEXT:    str d1, [sp, #48]2556; NONEON-NOSVE-NEXT:    ldr d1, [sp]2557; NONEON-NOSVE-NEXT:    ldr q0, [sp, #48]2558; NONEON-NOSVE-NEXT:    str q0, [sp, #16]2559; NONEON-NOSVE-NEXT:    ldr d0, [sp, #16]2560; NONEON-NOSVE-NEXT:    stp d1, d0, [sp, #32]2561; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]2562; NONEON-NOSVE-NEXT:  .LBB11_4: // %else22563; NONEON-NOSVE-NEXT:    add sp, sp, #962564; NONEON-NOSVE-NEXT:    ret2565  %load = call <2 x double> @llvm.masked.load.v2f64(ptr %src, i32 8, <2 x i1> %mask, <2 x double> zeroinitializer)2566  ret <2 x double> %load2567}2568 2569define <4 x double> @masked_load_v4f64(ptr %src, <4 x i1> %mask) {2570; CHECK-LABEL: masked_load_v4f64:2571; CHECK:       // %bb.0:2572; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z02573; CHECK-NEXT:    ptrue p0.d, vl22574; CHECK-NEXT:    mov x8, #2 // =0x22575; CHECK-NEXT:    uunpklo z0.s, z0.h2576; CHECK-NEXT:    movprfx z1, z02577; CHECK-NEXT:    ext z1.b, z1.b, z0.b, #82578; CHECK-NEXT:    uunpklo z0.d, z0.s2579; CHECK-NEXT:    uunpklo z1.d, z1.s2580; CHECK-NEXT:    lsl z0.d, z0.d, #632581; CHECK-NEXT:    lsl z1.d, z1.d, #632582; CHECK-NEXT:    asr z0.d, z0.d, #632583; CHECK-NEXT:    asr z1.d, z1.d, #632584; CHECK-NEXT:    cmpne p1.d, p0/z, z0.d, #02585; CHECK-NEXT:    cmpne p0.d, p0/z, z1.d, #02586; CHECK-NEXT:    ld1d { z0.d }, p1/z, [x0]2587; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02588; CHECK-NEXT:    ld1d { z1.d }, p0/z, [x0, x8, lsl #3]2589; CHECK-NEXT:    // kill: def $q1 killed $q1 killed $z12590; CHECK-NEXT:    ret2591;2592; NONEON-NOSVE-LABEL: masked_load_v4f64:2593; NONEON-NOSVE:       // %bb.0:2594; NONEON-NOSVE-NEXT:    sub sp, sp, #2242595; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 2242596; NONEON-NOSVE-NEXT:    str d0, [sp, #208]2597; NONEON-NOSVE-NEXT:    adrp x9, .LCPI12_02598; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #210]2599; NONEON-NOSVE-NEXT:    ldrh w10, [sp, #212]2600; NONEON-NOSVE-NEXT:    ldrh w11, [sp, #214]2601; NONEON-NOSVE-NEXT:    ldrh w12, [sp, #208]2602; NONEON-NOSVE-NEXT:    ldr q1, [x9, :lo12:.LCPI12_0]2603; NONEON-NOSVE-NEXT:    sbfx w8, w8, #0, #12604; NONEON-NOSVE-NEXT:    sbfx w10, w10, #0, #12605; NONEON-NOSVE-NEXT:    sbfx w11, w11, #0, #12606; NONEON-NOSVE-NEXT:    and w8, w8, #0x22607; NONEON-NOSVE-NEXT:    and w10, w10, #0x42608; NONEON-NOSVE-NEXT:    and w11, w11, #0x82609; NONEON-NOSVE-NEXT:    bfxil w8, w12, #0, #12610; NONEON-NOSVE-NEXT:    orr w10, w10, w112611; NONEON-NOSVE-NEXT:    orr w8, w8, w102612; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB12_22613; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2614; NONEON-NOSVE-NEXT:    ldr d0, [x0]2615; NONEON-NOSVE-NEXT:    str xzr, [sp, #200]2616; NONEON-NOSVE-NEXT:    str d0, [sp, #192]2617; NONEON-NOSVE-NEXT:    ldr q0, [sp, #192]2618; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB12_32619; NONEON-NOSVE-NEXT:    b .LBB12_42620; NONEON-NOSVE-NEXT:  .LBB12_2:2621; NONEON-NOSVE-NEXT:    str q1, [sp, #-16]!2622; NONEON-NOSVE-NEXT:    ldr q0, [sp], #162623; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB12_42624; NONEON-NOSVE-NEXT:  .LBB12_3: // %cond.load12625; NONEON-NOSVE-NEXT:    ldr d2, [x0, #8]2626; NONEON-NOSVE-NEXT:    str q0, [sp, #128]2627; NONEON-NOSVE-NEXT:    str d2, [sp, #176]2628; NONEON-NOSVE-NEXT:    ldr d2, [sp, #128]2629; NONEON-NOSVE-NEXT:    ldr q0, [sp, #176]2630; NONEON-NOSVE-NEXT:    str q0, [sp, #144]2631; NONEON-NOSVE-NEXT:    ldr d0, [sp, #144]2632; NONEON-NOSVE-NEXT:    stp d2, d0, [sp, #160]2633; NONEON-NOSVE-NEXT:    ldr q0, [sp, #160]2634; NONEON-NOSVE-NEXT:  .LBB12_4: // %else22635; NONEON-NOSVE-NEXT:    tbnz w8, #2, .LBB12_72636; NONEON-NOSVE-NEXT:  // %bb.5: // %else52637; NONEON-NOSVE-NEXT:    tbnz w8, #3, .LBB12_82638; NONEON-NOSVE-NEXT:  .LBB12_6: // %else82639; NONEON-NOSVE-NEXT:    add sp, sp, #2242640; NONEON-NOSVE-NEXT:    ret2641; NONEON-NOSVE-NEXT:  .LBB12_7: // %cond.load42642; NONEON-NOSVE-NEXT:    ldr d2, [x0, #16]2643; NONEON-NOSVE-NEXT:    str q1, [sp, #80]2644; NONEON-NOSVE-NEXT:    str d2, [sp, #112]2645; NONEON-NOSVE-NEXT:    ldr d2, [sp, #88]2646; NONEON-NOSVE-NEXT:    ldr q1, [sp, #112]2647; NONEON-NOSVE-NEXT:    str q1, [sp, #64]2648; NONEON-NOSVE-NEXT:    ldr d1, [sp, #64]2649; NONEON-NOSVE-NEXT:    stp d1, d2, [sp, #96]2650; NONEON-NOSVE-NEXT:    ldr q1, [sp, #96]2651; NONEON-NOSVE-NEXT:    tbz w8, #3, .LBB12_62652; NONEON-NOSVE-NEXT:  .LBB12_8: // %cond.load72653; NONEON-NOSVE-NEXT:    ldr d2, [x0, #24]2654; NONEON-NOSVE-NEXT:    str q1, [sp]2655; NONEON-NOSVE-NEXT:    str d2, [sp, #48]2656; NONEON-NOSVE-NEXT:    ldr d2, [sp]2657; NONEON-NOSVE-NEXT:    ldr q1, [sp, #48]2658; NONEON-NOSVE-NEXT:    str q1, [sp, #16]2659; NONEON-NOSVE-NEXT:    ldr d1, [sp, #16]2660; NONEON-NOSVE-NEXT:    stp d2, d1, [sp, #32]2661; NONEON-NOSVE-NEXT:    ldr q1, [sp, #32]2662; NONEON-NOSVE-NEXT:    add sp, sp, #2242663; NONEON-NOSVE-NEXT:    ret2664  %load = call <4 x double> @llvm.masked.load.v4f64(ptr %src, i32 8, <4 x i1> %mask, <4 x double> zeroinitializer)2665  ret <4 x double> %load2666}2667 2668define <3 x i32> @masked_load_zext_v3i32(ptr %load_ptr, <3 x i1> %pm) {2669; CHECK-LABEL: masked_load_zext_v3i32:2670; CHECK:       // %bb.0:2671; CHECK-NEXT:    fmov s0, w22672; CHECK-NEXT:    fmov s1, w12673; CHECK-NEXT:    adrp x8, .LCPI13_02674; CHECK-NEXT:    ptrue p0.s, vl42675; CHECK-NEXT:    zip1 z0.h, z1.h, z0.h2676; CHECK-NEXT:    fmov s1, w32677; CHECK-NEXT:    zip1 z0.s, z0.s, z1.s2678; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI13_0]2679; CHECK-NEXT:    and z0.d, z0.d, z1.d2680; CHECK-NEXT:    lsl z0.h, z0.h, #152681; CHECK-NEXT:    asr z0.h, z0.h, #152682; CHECK-NEXT:    sunpklo z0.s, z0.h2683; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #02684; CHECK-NEXT:    ld1h { z0.s }, p0/z, [x0]2685; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02686; CHECK-NEXT:    ret2687;2688; NONEON-NOSVE-LABEL: masked_load_zext_v3i32:2689; NONEON-NOSVE:       // %bb.0:2690; NONEON-NOSVE-NEXT:    sub sp, sp, #802691; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 802692; NONEON-NOSVE-NEXT:    and w8, w1, #0x12693; NONEON-NOSVE-NEXT:    bfi w8, w2, #1, #12694; NONEON-NOSVE-NEXT:    bfi w8, w3, #2, #12695; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB13_22696; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2697; NONEON-NOSVE-NEXT:    ldrh w9, [x0]2698; NONEON-NOSVE-NEXT:    stur wzr, [sp, #66]2699; NONEON-NOSVE-NEXT:    strh w9, [sp, #64]2700; NONEON-NOSVE-NEXT:    ldr d0, [sp, #64]2701; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB13_32702; NONEON-NOSVE-NEXT:    b .LBB13_42703; NONEON-NOSVE-NEXT:  .LBB13_2:2704; NONEON-NOSVE-NEXT:    adrp x9, .LCPI13_02705; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI13_0]2706; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB13_42707; NONEON-NOSVE-NEXT:  .LBB13_3: // %cond.load12708; NONEON-NOSVE-NEXT:    ldrh w9, [x0, #2]2709; NONEON-NOSVE-NEXT:    str d0, [sp, #48]2710; NONEON-NOSVE-NEXT:    strh w9, [sp, #58]2711; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #52]2712; NONEON-NOSVE-NEXT:    strh w9, [sp, #60]2713; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #48]2714; NONEON-NOSVE-NEXT:    strh w9, [sp, #56]2715; NONEON-NOSVE-NEXT:    ldr d0, [sp, #56]2716; NONEON-NOSVE-NEXT:  .LBB13_4: // %else22717; NONEON-NOSVE-NEXT:    tbz w8, #2, .LBB13_62718; NONEON-NOSVE-NEXT:  // %bb.5: // %cond.load42719; NONEON-NOSVE-NEXT:    ldrh w8, [x0, #4]2720; NONEON-NOSVE-NEXT:    str d0, [sp, #32]2721; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]2722; NONEON-NOSVE-NEXT:    ldr w8, [sp, #32]2723; NONEON-NOSVE-NEXT:    str w8, [sp, #40]2724; NONEON-NOSVE-NEXT:    ldr d0, [sp, #40]2725; NONEON-NOSVE-NEXT:  .LBB13_6: // %else52726; NONEON-NOSVE-NEXT:    str d0, [sp, #8]2727; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #14]2728; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #12]2729; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #24]2730; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #10]2731; NONEON-NOSVE-NEXT:    ldrh w8, [sp, #8]2732; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #16]2733; NONEON-NOSVE-NEXT:    ldr q0, [sp, #16]2734; NONEON-NOSVE-NEXT:    add sp, sp, #802735; NONEON-NOSVE-NEXT:    ret2736  %load_value = tail call <3 x i16> @llvm.masked.load.v3i16.p0(ptr %load_ptr, i32 4, <3 x i1> %pm, <3 x i16> zeroinitializer)2737  %extend = zext <3 x i16> %load_value to <3 x i32>2738  ret <3 x i32> %extend;2739}2740 2741define <3 x i32> @masked_load_sext_v3i32(ptr %load_ptr, <3 x i1> %pm) {2742; CHECK-LABEL: masked_load_sext_v3i32:2743; CHECK:       // %bb.0:2744; CHECK-NEXT:    fmov s0, w22745; CHECK-NEXT:    fmov s1, w12746; CHECK-NEXT:    adrp x8, .LCPI14_02747; CHECK-NEXT:    ptrue p0.s, vl42748; CHECK-NEXT:    zip1 z0.h, z1.h, z0.h2749; CHECK-NEXT:    fmov s1, w32750; CHECK-NEXT:    zip1 z0.s, z0.s, z1.s2751; CHECK-NEXT:    ldr d1, [x8, :lo12:.LCPI14_0]2752; CHECK-NEXT:    and z0.d, z0.d, z1.d2753; CHECK-NEXT:    lsl z0.h, z0.h, #152754; CHECK-NEXT:    asr z0.h, z0.h, #152755; CHECK-NEXT:    sunpklo z0.s, z0.h2756; CHECK-NEXT:    cmpne p0.s, p0/z, z0.s, #02757; CHECK-NEXT:    ld1sh { z0.s }, p0/z, [x0]2758; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z02759; CHECK-NEXT:    ret2760;2761; NONEON-NOSVE-LABEL: masked_load_sext_v3i32:2762; NONEON-NOSVE:       // %bb.0:2763; NONEON-NOSVE-NEXT:    sub sp, sp, #802764; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 802765; NONEON-NOSVE-NEXT:    and w8, w1, #0x12766; NONEON-NOSVE-NEXT:    bfi w8, w2, #1, #12767; NONEON-NOSVE-NEXT:    bfi w8, w3, #2, #12768; NONEON-NOSVE-NEXT:    tbz w8, #0, .LBB14_22769; NONEON-NOSVE-NEXT:  // %bb.1: // %cond.load2770; NONEON-NOSVE-NEXT:    ldrh w9, [x0]2771; NONEON-NOSVE-NEXT:    stur wzr, [sp, #66]2772; NONEON-NOSVE-NEXT:    strh w9, [sp, #64]2773; NONEON-NOSVE-NEXT:    ldr d0, [sp, #64]2774; NONEON-NOSVE-NEXT:    tbnz w8, #1, .LBB14_32775; NONEON-NOSVE-NEXT:    b .LBB14_42776; NONEON-NOSVE-NEXT:  .LBB14_2:2777; NONEON-NOSVE-NEXT:    adrp x9, .LCPI14_02778; NONEON-NOSVE-NEXT:    ldr d0, [x9, :lo12:.LCPI14_0]2779; NONEON-NOSVE-NEXT:    tbz w8, #1, .LBB14_42780; NONEON-NOSVE-NEXT:  .LBB14_3: // %cond.load12781; NONEON-NOSVE-NEXT:    ldrh w9, [x0, #2]2782; NONEON-NOSVE-NEXT:    str d0, [sp, #48]2783; NONEON-NOSVE-NEXT:    strh w9, [sp, #58]2784; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #52]2785; NONEON-NOSVE-NEXT:    strh w9, [sp, #60]2786; NONEON-NOSVE-NEXT:    ldrh w9, [sp, #48]2787; NONEON-NOSVE-NEXT:    strh w9, [sp, #56]2788; NONEON-NOSVE-NEXT:    ldr d0, [sp, #56]2789; NONEON-NOSVE-NEXT:  .LBB14_4: // %else22790; NONEON-NOSVE-NEXT:    tbz w8, #2, .LBB14_62791; NONEON-NOSVE-NEXT:  // %bb.5: // %cond.load42792; NONEON-NOSVE-NEXT:    ldrh w8, [x0, #4]2793; NONEON-NOSVE-NEXT:    str d0, [sp, #32]2794; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]2795; NONEON-NOSVE-NEXT:    ldr w8, [sp, #32]2796; NONEON-NOSVE-NEXT:    str w8, [sp, #40]2797; NONEON-NOSVE-NEXT:    ldr d0, [sp, #40]2798; NONEON-NOSVE-NEXT:  .LBB14_6: // %else52799; NONEON-NOSVE-NEXT:    str d0, [sp, #8]2800; NONEON-NOSVE-NEXT:    ldrsh w9, [sp, #14]2801; NONEON-NOSVE-NEXT:    ldrsh w8, [sp, #12]2802; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #24]2803; NONEON-NOSVE-NEXT:    ldrsh w9, [sp, #10]2804; NONEON-NOSVE-NEXT:    ldrsh w8, [sp, #8]2805; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #16]2806; NONEON-NOSVE-NEXT:    ldr q0, [sp, #16]2807; NONEON-NOSVE-NEXT:    add sp, sp, #802808; NONEON-NOSVE-NEXT:    ret2809  %load_value = tail call <3 x i16> @llvm.masked.load.v3i16.p0(ptr %load_ptr, i32 4, <3 x i1> %pm, <3 x i16> zeroinitializer)2810  %extend = sext <3 x i16> %load_value to <3 x i32>2811  ret <3 x i32> %extend;2812}2813 2814declare <4 x i8> @llvm.masked.load.v4i8(ptr, i32, <4 x i1>, <4 x i8>)2815declare <8 x i8> @llvm.masked.load.v8i8(ptr, i32, <8 x i1>, <8 x i8>)2816declare <16 x i8> @llvm.masked.load.v16i8(ptr, i32, <16 x i1>, <16 x i8>)2817declare <32 x i8> @llvm.masked.load.v32i8(ptr, i32, <32 x i1>, <32 x i8>)2818 2819declare <2 x half> @llvm.masked.load.v2f16(ptr, i32, <2 x i1>, <2 x half>)2820declare <4 x half> @llvm.masked.load.v4f16(ptr, i32, <4 x i1>, <4 x half>)2821declare <8 x half> @llvm.masked.load.v8f16(ptr, i32, <8 x i1>, <8 x half>)2822declare <16 x half> @llvm.masked.load.v16f16(ptr, i32, <16 x i1>, <16 x half>)2823 2824declare <2 x float> @llvm.masked.load.v2f32(ptr, i32, <2 x i1>, <2 x float>)2825declare <4 x float> @llvm.masked.load.v4f32(ptr, i32, <4 x i1>, <4 x float>)2826declare <8 x float> @llvm.masked.load.v8f32(ptr, i32, <8 x i1>, <8 x float>)2827 2828declare <2 x double> @llvm.masked.load.v2f64(ptr, i32, <2 x i1>, <2 x double>)2829declare <4 x double> @llvm.masked.load.v4f64(ptr, i32, <4 x i1>, <4 x double>)2830 2831declare <3 x i16> @llvm.masked.load.v3i16.p0(ptr, i32, <3 x i1>, <3 x i16>)2832