brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.3 KiB · c8fc8d7 Raw
433 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -force-streaming < %s | FileCheck %s4 5;6; ST2B7;8 9define void @st2b_i8(<vscale x 16 x i8> %v0, <vscale x 16 x i8> %v1, <vscale x 16 x i1> %pred, ptr %addr, i64 %offset) {10; CHECK-LABEL: st2b_i8:11; CHECK:       // %bb.0:12; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z113; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z114; CHECK-NEXT:    st2b { z0.b, z1.b }, p0, [x0, x1]15; CHECK-NEXT:    ret16  %1 = getelementptr i8, ptr %addr, i64 %offset17  call void @llvm.aarch64.sve.st2.nxv16i8(<vscale x 16 x i8> %v0,18                                          <vscale x 16 x i8> %v1,19                                          <vscale x 16 x i1> %pred,20                                          ptr %1)21  ret void22}23 24;25; ST2H26;27 28define void @st2h_i16(<vscale x 8 x i16> %v0, <vscale x 8 x i16> %v1, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {29; CHECK-LABEL: st2h_i16:30; CHECK:       // %bb.0:31; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z132; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z133; CHECK-NEXT:    st2h { z0.h, z1.h }, p0, [x0, x1, lsl #1]34; CHECK-NEXT:    ret35  %1 = getelementptr i16, ptr %addr, i64 %offset36  call void @llvm.aarch64.sve.st2.nxv8i16(<vscale x 8 x i16> %v0,37                                          <vscale x 8 x i16> %v1,38                                          <vscale x 8 x i1> %pred,39                                          ptr %1)40  ret void41}42 43define void @st2h_f16(<vscale x 8 x half> %v0, <vscale x 8 x half> %v1, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {44; CHECK-LABEL: st2h_f16:45; CHECK:       // %bb.0:46; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z147; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z148; CHECK-NEXT:    st2h { z0.h, z1.h }, p0, [x0, x1, lsl #1]49; CHECK-NEXT:    ret50  %1 = getelementptr half, ptr %addr, i64 %offset51  call void @llvm.aarch64.sve.st2.nxv8f16(<vscale x 8 x half> %v0,52                                          <vscale x 8 x half> %v1,53                                          <vscale x 8 x i1> %pred,54                                          ptr %1)55  ret void56}57 58;59; ST2W60;61 62define void @st2w_i32(<vscale x 4 x i32> %v0, <vscale x 4 x i32> %v1, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {63; CHECK-LABEL: st2w_i32:64; CHECK:       // %bb.0:65; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z166; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z167; CHECK-NEXT:    st2w { z0.s, z1.s }, p0, [x0, x1, lsl #2]68; CHECK-NEXT:    ret69  %1 = getelementptr i32, ptr %addr, i64 %offset70  call void @llvm.aarch64.sve.st2.nxv4i32(<vscale x 4 x i32> %v0,71                                          <vscale x 4 x i32> %v1,72                                          <vscale x 4 x i1> %pred,73                                          ptr %1)74  ret void75}76 77define void @st2w_f32(<vscale x 4 x float> %v0, <vscale x 4 x float> %v1, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {78; CHECK-LABEL: st2w_f32:79; CHECK:       // %bb.0:80; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z181; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z182; CHECK-NEXT:    st2w { z0.s, z1.s }, p0, [x0, x1, lsl #2]83; CHECK-NEXT:    ret84  %1 = getelementptr float, ptr %addr, i64 %offset85  call void @llvm.aarch64.sve.st2.nxv4f32(<vscale x 4 x float> %v0,86                                          <vscale x 4 x float> %v1,87                                          <vscale x 4 x i1> %pred,88                                          ptr %1)89  ret void90}91 92;93; ST2D94;95 96define void @st2d_i64(<vscale x 2 x i64> %v0, <vscale x 2 x i64> %v1, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {97; CHECK-LABEL: st2d_i64:98; CHECK:       // %bb.0:99; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z1100; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z1101; CHECK-NEXT:    st2d { z0.d, z1.d }, p0, [x0, x1, lsl #3]102; CHECK-NEXT:    ret103  %1 = getelementptr i64, ptr %addr, i64 %offset104  call void @llvm.aarch64.sve.st2.nxv2i64(<vscale x 2 x i64> %v0,105                                          <vscale x 2 x i64> %v1,106                                          <vscale x 2 x i1> %pred,107                                          ptr %1)108  ret void109}110 111define void @st2d_f64(<vscale x 2 x double> %v0, <vscale x 2 x double> %v1, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {112; CHECK-LABEL: st2d_f64:113; CHECK:       // %bb.0:114; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1 def $z0_z1115; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1 def $z0_z1116; CHECK-NEXT:    st2d { z0.d, z1.d }, p0, [x0, x1, lsl #3]117; CHECK-NEXT:    ret118  %1 = getelementptr double, ptr %addr, i64 %offset119  call void @llvm.aarch64.sve.st2.nxv2f64(<vscale x 2 x double> %v0,120                                          <vscale x 2 x double> %v1,121                                          <vscale x 2 x i1> %pred,122                                          ptr %1)123  ret void124}125 126;127; ST3B128;129 130define void @st3b_i8(<vscale x 16 x i8> %v0, <vscale x 16 x i8> %v1, <vscale x 16 x i8> %v2, <vscale x 16 x i1> %pred, ptr %addr, i64 %offset) {131; CHECK-LABEL: st3b_i8:132; CHECK:       // %bb.0:133; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2134; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2135; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2136; CHECK-NEXT:    st3b { z0.b - z2.b }, p0, [x0, x1]137; CHECK-NEXT:    ret138  %1 = getelementptr i8, ptr %addr, i64 %offset139  call void @llvm.aarch64.sve.st3.nxv16i8(<vscale x 16 x i8> %v0,140                                          <vscale x 16 x i8> %v1,141                                          <vscale x 16 x i8> %v2,142                                          <vscale x 16 x i1> %pred,143                                          ptr %1)144  ret void145}146 147;148; ST3H149;150 151define void @st3h_i16(<vscale x 8 x i16> %v0, <vscale x 8 x i16> %v1, <vscale x 8 x i16> %v2, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {152; CHECK-LABEL: st3h_i16:153; CHECK:       // %bb.0:154; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2155; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2156; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2157; CHECK-NEXT:    st3h { z0.h - z2.h }, p0, [x0, x1, lsl #1]158; CHECK-NEXT:    ret159  %1 = getelementptr i16, ptr %addr, i64 %offset160  call void @llvm.aarch64.sve.st3.nxv8i16(<vscale x 8 x i16> %v0,161                                          <vscale x 8 x i16> %v1,162                                          <vscale x 8 x i16> %v2,163                                          <vscale x 8 x i1> %pred,164                                          ptr %1)165  ret void166}167 168define void @st3h_f16(<vscale x 8 x half> %v0, <vscale x 8 x half> %v1, <vscale x 8 x half> %v2, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {169; CHECK-LABEL: st3h_f16:170; CHECK:       // %bb.0:171; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2172; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2173; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2174; CHECK-NEXT:    st3h { z0.h - z2.h }, p0, [x0, x1, lsl #1]175; CHECK-NEXT:    ret176  %1 = getelementptr half, ptr %addr, i64 %offset177  call void @llvm.aarch64.sve.st3.nxv8f16(<vscale x 8 x half> %v0,178                                          <vscale x 8 x half> %v1,179                                          <vscale x 8 x half> %v2,180                                          <vscale x 8 x i1> %pred,181                                          ptr %1)182  ret void183}184 185;186; ST3W187;188 189define void @st3w_i32(<vscale x 4 x i32> %v0, <vscale x 4 x i32> %v1, <vscale x 4 x i32> %v2, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {190; CHECK-LABEL: st3w_i32:191; CHECK:       // %bb.0:192; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2193; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2194; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2195; CHECK-NEXT:    st3w { z0.s - z2.s }, p0, [x0, x1, lsl #2]196; CHECK-NEXT:    ret197  %1 = getelementptr i32, ptr %addr, i64 %offset198  call void @llvm.aarch64.sve.st3.nxv4i32(<vscale x 4 x i32> %v0,199                                          <vscale x 4 x i32> %v1,200                                          <vscale x 4 x i32> %v2,201                                          <vscale x 4 x i1> %pred,202                                          ptr %1)203  ret void204}205 206define void @st3w_f32(<vscale x 4 x float> %v0, <vscale x 4 x float> %v1, <vscale x 4 x float> %v2, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {207; CHECK-LABEL: st3w_f32:208; CHECK:       // %bb.0:209; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2210; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2211; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2212; CHECK-NEXT:    st3w { z0.s - z2.s }, p0, [x0, x1, lsl #2]213; CHECK-NEXT:    ret214  %1 = getelementptr float, ptr %addr, i64 %offset215  call void @llvm.aarch64.sve.st3.nxv4f32(<vscale x 4 x float> %v0,216                                          <vscale x 4 x float> %v1,217                                          <vscale x 4 x float> %v2,218                                          <vscale x 4 x i1> %pred,219                                          ptr %1)220  ret void221}222 223;224; ST3D225;226 227define void @st3d_i64(<vscale x 2 x i64> %v0, <vscale x 2 x i64> %v1, <vscale x 2 x i64> %v2, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {228; CHECK-LABEL: st3d_i64:229; CHECK:       // %bb.0:230; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2231; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2232; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2233; CHECK-NEXT:    st3d { z0.d - z2.d }, p0, [x0, x1, lsl #3]234; CHECK-NEXT:    ret235  %1 = getelementptr i64, ptr %addr, i64 %offset236  call void @llvm.aarch64.sve.st3.nxv2i64(<vscale x 2 x i64> %v0,237                                          <vscale x 2 x i64> %v1,238                                          <vscale x 2 x i64> %v2,239                                          <vscale x 2 x i1> %pred,240                                          ptr %1)241  ret void242}243 244define void @st3d_f64(<vscale x 2 x double> %v0, <vscale x 2 x double> %v1, <vscale x 2 x double> %v2, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {245; CHECK-LABEL: st3d_f64:246; CHECK:       // %bb.0:247; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2 def $z0_z1_z2248; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2 def $z0_z1_z2249; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2 def $z0_z1_z2250; CHECK-NEXT:    st3d { z0.d - z2.d }, p0, [x0, x1, lsl #3]251; CHECK-NEXT:    ret252  %1 = getelementptr double, ptr %addr, i64 %offset253  call void @llvm.aarch64.sve.st3.nxv2f64(<vscale x 2 x double> %v0,254                                          <vscale x 2 x double> %v1,255                                          <vscale x 2 x double> %v2,256                                          <vscale x 2 x i1> %pred,257                                          ptr %1)258  ret void259}260 261;262; ST4B263;264 265define void @st4b_i8(<vscale x 16 x i8> %v0, <vscale x 16 x i8> %v1, <vscale x 16 x i8> %v2, <vscale x 16 x i8> %v3, <vscale x 16 x i1> %pred, ptr %addr, i64 %offset) {266; CHECK-LABEL: st4b_i8:267; CHECK:       // %bb.0:268; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3269; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3270; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3271; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3272; CHECK-NEXT:    st4b { z0.b - z3.b }, p0, [x0, x1]273; CHECK-NEXT:    ret274  %1 = getelementptr i8, ptr %addr, i64 %offset275  call void @llvm.aarch64.sve.st4.nxv16i8(<vscale x 16 x i8> %v0,276                                          <vscale x 16 x i8> %v1,277                                          <vscale x 16 x i8> %v2,278                                          <vscale x 16 x i8> %v3,279                                          <vscale x 16 x i1> %pred,280                                          ptr %1)281  ret void282}283 284;285; ST4H286;287 288define void @st4h_i16(<vscale x 8 x i16> %v0, <vscale x 8 x i16> %v1, <vscale x 8 x i16> %v2, <vscale x 8 x i16> %v3, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {289; CHECK-LABEL: st4h_i16:290; CHECK:       // %bb.0:291; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3292; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3293; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3294; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3295; CHECK-NEXT:    st4h { z0.h - z3.h }, p0, [x0, x1, lsl #1]296; CHECK-NEXT:    ret297  %1 = getelementptr i16, ptr %addr, i64 %offset298  call void @llvm.aarch64.sve.st4.nxv8i16(<vscale x 8 x i16> %v0,299                                          <vscale x 8 x i16> %v1,300                                          <vscale x 8 x i16> %v2,301                                          <vscale x 8 x i16> %v3,302                                          <vscale x 8 x i1> %pred,303                                          ptr %1)304  ret void305}306 307define void @st4h_f16(<vscale x 8 x half> %v0, <vscale x 8 x half> %v1, <vscale x 8 x half> %v2, <vscale x 8 x half> %v3, <vscale x 8 x i1> %pred, ptr %addr, i64 %offset) {308; CHECK-LABEL: st4h_f16:309; CHECK:       // %bb.0:310; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3311; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3312; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3313; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3314; CHECK-NEXT:    st4h { z0.h - z3.h }, p0, [x0, x1, lsl #1]315; CHECK-NEXT:    ret316  %1 = getelementptr half, ptr %addr, i64 %offset317  call void @llvm.aarch64.sve.st4.nxv8f16(<vscale x 8 x half> %v0,318                                          <vscale x 8 x half> %v1,319                                          <vscale x 8 x half> %v2,320                                          <vscale x 8 x half> %v3,321                                          <vscale x 8 x i1> %pred,322                                          ptr %1)323  ret void324}325 326;327; ST4W328;329 330define void @st4w_i32(<vscale x 4 x i32> %v0, <vscale x 4 x i32> %v1, <vscale x 4 x i32> %v2, <vscale x 4 x i32> %v3, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {331; CHECK-LABEL: st4w_i32:332; CHECK:       // %bb.0:333; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3334; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3335; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3336; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3337; CHECK-NEXT:    st4w { z0.s - z3.s }, p0, [x0, x1, lsl #2]338; CHECK-NEXT:    ret339  %1 = getelementptr i32, ptr %addr, i64 %offset340  call void @llvm.aarch64.sve.st4.nxv4i32(<vscale x 4 x i32> %v0,341                                          <vscale x 4 x i32> %v1,342                                          <vscale x 4 x i32> %v2,343                                          <vscale x 4 x i32> %v3,344                                          <vscale x 4 x i1> %pred,345                                          ptr %1)346  ret void347}348 349define void @st4w_f32(<vscale x 4 x float> %v0, <vscale x 4 x float> %v1, <vscale x 4 x float> %v2, <vscale x 4 x float> %v3, <vscale x 4 x i1> %pred, ptr %addr, i64 %offset) {350; CHECK-LABEL: st4w_f32:351; CHECK:       // %bb.0:352; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3353; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3354; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3355; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3356; CHECK-NEXT:    st4w { z0.s - z3.s }, p0, [x0, x1, lsl #2]357; CHECK-NEXT:    ret358  %1 = getelementptr float, ptr %addr, i64 %offset359  call void @llvm.aarch64.sve.st4.nxv4f32(<vscale x 4 x float> %v0,360                                          <vscale x 4 x float> %v1,361                                          <vscale x 4 x float> %v2,362                                          <vscale x 4 x float> %v3,363                                          <vscale x 4 x i1> %pred,364                                          ptr %1)365  ret void366}367 368;369; ST4D370;371 372define void @st4d_i64(<vscale x 2 x i64> %v0, <vscale x 2 x i64> %v1, <vscale x 2 x i64> %v2, <vscale x 2 x i64> %v3, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {373; CHECK-LABEL: st4d_i64:374; CHECK:       // %bb.0:375; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3376; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3377; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3378; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3379; CHECK-NEXT:    st4d { z0.d - z3.d }, p0, [x0, x1, lsl #3]380; CHECK-NEXT:    ret381  %1 = getelementptr i64, ptr %addr, i64 %offset382  call void @llvm.aarch64.sve.st4.nxv2i64(<vscale x 2 x i64> %v0,383                                          <vscale x 2 x i64> %v1,384                                          <vscale x 2 x i64> %v2,385                                          <vscale x 2 x i64> %v3,386                                          <vscale x 2 x i1> %pred,387                                          ptr %1)388  ret void389}390 391define void @st4d_f64(<vscale x 2 x double> %v0, <vscale x 2 x double> %v1, <vscale x 2 x double> %v2, <vscale x 2 x double> %v3, <vscale x 2 x i1> %pred, ptr %addr, i64 %offset) {392; CHECK-LABEL: st4d_f64:393; CHECK:       // %bb.0:394; CHECK-NEXT:    // kill: def $z3 killed $z3 killed $z0_z1_z2_z3 def $z0_z1_z2_z3395; CHECK-NEXT:    // kill: def $z2 killed $z2 killed $z0_z1_z2_z3 def $z0_z1_z2_z3396; CHECK-NEXT:    // kill: def $z1 killed $z1 killed $z0_z1_z2_z3 def $z0_z1_z2_z3397; CHECK-NEXT:    // kill: def $z0 killed $z0 killed $z0_z1_z2_z3 def $z0_z1_z2_z3398; CHECK-NEXT:    st4d { z0.d - z3.d }, p0, [x0, x1, lsl #3]399; CHECK-NEXT:    ret400  %1 = getelementptr double, ptr %addr, i64 %offset401  call void @llvm.aarch64.sve.st4.nxv2f64(<vscale x 2 x double> %v0,402                                          <vscale x 2 x double> %v1,403                                          <vscale x 2 x double> %v2,404                                          <vscale x 2 x double> %v3,405                                          <vscale x 2 x i1> %pred,406                                          ptr %1)407  ret void408}409 410declare void @llvm.aarch64.sve.st2.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, ptr)411declare void @llvm.aarch64.sve.st2.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, ptr)412declare void @llvm.aarch64.sve.st2.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, ptr)413declare void @llvm.aarch64.sve.st2.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, ptr)414declare void @llvm.aarch64.sve.st2.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x i1>, ptr)415declare void @llvm.aarch64.sve.st2.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x i1>, ptr)416declare void @llvm.aarch64.sve.st2.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x i1>, ptr)417 418declare void @llvm.aarch64.sve.st3.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, ptr)419declare void @llvm.aarch64.sve.st3.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, ptr)420declare void @llvm.aarch64.sve.st3.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, ptr)421declare void @llvm.aarch64.sve.st3.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, ptr)422declare void @llvm.aarch64.sve.st3.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x i1>, ptr)423declare void @llvm.aarch64.sve.st3.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x i1>, ptr)424declare void @llvm.aarch64.sve.st3.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x i1>, ptr)425 426declare void @llvm.aarch64.sve.st4.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, ptr)427declare void @llvm.aarch64.sve.st4.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, ptr)428declare void @llvm.aarch64.sve.st4.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, ptr)429declare void @llvm.aarch64.sve.st4.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, ptr)430declare void @llvm.aarch64.sve.st4.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x i1>, ptr)431declare void @llvm.aarch64.sve.st4.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x i1>, ptr)432declare void @llvm.aarch64.sve.st4.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x i1>, ptr)433