1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s 2 3;;; Test vector store intrinsic instructions 4;;; 5;;; Note: 6;;; We test VST*rrvl, VST*rrvml, VST*irvl, and VST*irvml instructions. 7 8; Function Attrs: nounwind 9define void @vst_vssl(ptr %0, i64 %1) { 10; CHECK-LABEL: vst_vssl: 11; CHECK: # %bb.0: 12; CHECK-NEXT: lea %s2, 256 13; CHECK-NEXT: lvl %s2 14; CHECK-NEXT: vld %v0, %s1, %s0 15; CHECK-NEXT: vst %v0, %s1, %s0 16; CHECK-NEXT: b.l.t (, %s10) 17 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 18 tail call void @llvm.ve.vl.vst.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 19 ret void 20} 21 22; Function Attrs: nounwind readonly 23declare <256 x double> @llvm.ve.vl.vld.vssl(i64, ptr, i32) 24 25; Function Attrs: nounwind writeonly 26declare void @llvm.ve.vl.vst.vssl(<256 x double>, i64, ptr, i32) 27 28; Function Attrs: nounwind 29define void @vst_vssml(ptr %0, i64 %1) { 30; CHECK-LABEL: vst_vssml: 31; CHECK: # %bb.0: 32; CHECK-NEXT: lea %s2, 256 33; CHECK-NEXT: lvl %s2 34; CHECK-NEXT: vld %v0, %s1, %s0 35; CHECK-NEXT: vst %v0, %s1, %s0, %vm1 36; CHECK-NEXT: b.l.t (, %s10) 37 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 38 tail call void @llvm.ve.vl.vst.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 39 ret void 40} 41 42; Function Attrs: nounwind writeonly 43declare void @llvm.ve.vl.vst.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 44 45; Function Attrs: nounwind 46define void @vst_vssl_imm(ptr %0) { 47; CHECK-LABEL: vst_vssl_imm: 48; CHECK: # %bb.0: 49; CHECK-NEXT: lea %s1, 256 50; CHECK-NEXT: lvl %s1 51; CHECK-NEXT: vld %v0, 8, %s0 52; CHECK-NEXT: vst %v0, 8, %s0 53; CHECK-NEXT: b.l.t (, %s10) 54 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 55 tail call void @llvm.ve.vl.vst.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 56 ret void 57} 58 59; Function Attrs: nounwind 60define void @vst_vssml_imm(ptr %0) { 61; CHECK-LABEL: vst_vssml_imm: 62; CHECK: # %bb.0: 63; CHECK-NEXT: lea %s1, 256 64; CHECK-NEXT: lvl %s1 65; CHECK-NEXT: vld %v0, 8, %s0 66; CHECK-NEXT: vst %v0, 8, %s0, %vm1 67; CHECK-NEXT: b.l.t (, %s10) 68 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 69 tail call void @llvm.ve.vl.vst.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 70 ret void 71} 72 73; Function Attrs: nounwind 74define void @vstnc_vssl(ptr %0, i64 %1) { 75; CHECK-LABEL: vstnc_vssl: 76; CHECK: # %bb.0: 77; CHECK-NEXT: lea %s2, 256 78; CHECK-NEXT: lvl %s2 79; CHECK-NEXT: vld %v0, %s1, %s0 80; CHECK-NEXT: vst.nc %v0, %s1, %s0 81; CHECK-NEXT: b.l.t (, %s10) 82 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 83 tail call void @llvm.ve.vl.vstnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 84 ret void 85} 86 87; Function Attrs: nounwind writeonly 88declare void @llvm.ve.vl.vstnc.vssl(<256 x double>, i64, ptr, i32) 89 90; Function Attrs: nounwind 91define void @vstnc_vssml(ptr %0, i64 %1) { 92; CHECK-LABEL: vstnc_vssml: 93; CHECK: # %bb.0: 94; CHECK-NEXT: lea %s2, 256 95; CHECK-NEXT: lvl %s2 96; CHECK-NEXT: vld %v0, %s1, %s0 97; CHECK-NEXT: vst.nc %v0, %s1, %s0, %vm1 98; CHECK-NEXT: b.l.t (, %s10) 99 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 100 tail call void @llvm.ve.vl.vstnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 101 ret void 102} 103 104; Function Attrs: nounwind writeonly 105declare void @llvm.ve.vl.vstnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 106 107; Function Attrs: nounwind 108define void @vstnc_vssl_imm(ptr %0) { 109; CHECK-LABEL: vstnc_vssl_imm: 110; CHECK: # %bb.0: 111; CHECK-NEXT: lea %s1, 256 112; CHECK-NEXT: lvl %s1 113; CHECK-NEXT: vld %v0, 8, %s0 114; CHECK-NEXT: vst.nc %v0, 8, %s0 115; CHECK-NEXT: b.l.t (, %s10) 116 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 117 tail call void @llvm.ve.vl.vstnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 118 ret void 119} 120 121; Function Attrs: nounwind 122define void @vstnc_vssml_imm(ptr %0) { 123; CHECK-LABEL: vstnc_vssml_imm: 124; CHECK: # %bb.0: 125; CHECK-NEXT: lea %s1, 256 126; CHECK-NEXT: lvl %s1 127; CHECK-NEXT: vld %v0, 8, %s0 128; CHECK-NEXT: vst.nc %v0, 8, %s0, %vm1 129; CHECK-NEXT: b.l.t (, %s10) 130 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 131 tail call void @llvm.ve.vl.vstnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 132 ret void 133} 134 135; Function Attrs: nounwind 136define void @vstot_vssl(ptr %0, i64 %1) { 137; CHECK-LABEL: vstot_vssl: 138; CHECK: # %bb.0: 139; CHECK-NEXT: lea %s2, 256 140; CHECK-NEXT: lvl %s2 141; CHECK-NEXT: vld %v0, %s1, %s0 142; CHECK-NEXT: vst.ot %v0, %s1, %s0 143; CHECK-NEXT: b.l.t (, %s10) 144 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 145 tail call void @llvm.ve.vl.vstot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 146 ret void 147} 148 149; Function Attrs: nounwind writeonly 150declare void @llvm.ve.vl.vstot.vssl(<256 x double>, i64, ptr, i32) 151 152; Function Attrs: nounwind 153define void @vstot_vssml(ptr %0, i64 %1) { 154; CHECK-LABEL: vstot_vssml: 155; CHECK: # %bb.0: 156; CHECK-NEXT: lea %s2, 256 157; CHECK-NEXT: lvl %s2 158; CHECK-NEXT: vld %v0, %s1, %s0 159; CHECK-NEXT: vst.ot %v0, %s1, %s0, %vm1 160; CHECK-NEXT: b.l.t (, %s10) 161 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 162 tail call void @llvm.ve.vl.vstot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 163 ret void 164} 165 166; Function Attrs: nounwind writeonly 167declare void @llvm.ve.vl.vstot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 168 169; Function Attrs: nounwind 170define void @vstot_vssl_imm(ptr %0) { 171; CHECK-LABEL: vstot_vssl_imm: 172; CHECK: # %bb.0: 173; CHECK-NEXT: lea %s1, 256 174; CHECK-NEXT: lvl %s1 175; CHECK-NEXT: vld %v0, 8, %s0 176; CHECK-NEXT: vst.ot %v0, 8, %s0 177; CHECK-NEXT: b.l.t (, %s10) 178 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 179 tail call void @llvm.ve.vl.vstot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 180 ret void 181} 182 183; Function Attrs: nounwind 184define void @vstot_vssml_imm(ptr %0) { 185; CHECK-LABEL: vstot_vssml_imm: 186; CHECK: # %bb.0: 187; CHECK-NEXT: lea %s1, 256 188; CHECK-NEXT: lvl %s1 189; CHECK-NEXT: vld %v0, 8, %s0 190; CHECK-NEXT: vst.ot %v0, 8, %s0, %vm1 191; CHECK-NEXT: b.l.t (, %s10) 192 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 193 tail call void @llvm.ve.vl.vstot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 194 ret void 195} 196 197; Function Attrs: nounwind 198define void @vstncot_vssl(ptr %0, i64 %1) { 199; CHECK-LABEL: vstncot_vssl: 200; CHECK: # %bb.0: 201; CHECK-NEXT: lea %s2, 256 202; CHECK-NEXT: lvl %s2 203; CHECK-NEXT: vld %v0, %s1, %s0 204; CHECK-NEXT: vst.nc.ot %v0, %s1, %s0 205; CHECK-NEXT: b.l.t (, %s10) 206 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 207 tail call void @llvm.ve.vl.vstncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 208 ret void 209} 210 211; Function Attrs: nounwind writeonly 212declare void @llvm.ve.vl.vstncot.vssl(<256 x double>, i64, ptr, i32) 213 214; Function Attrs: nounwind 215define void @vstncot_vssml(ptr %0, i64 %1) { 216; CHECK-LABEL: vstncot_vssml: 217; CHECK: # %bb.0: 218; CHECK-NEXT: lea %s2, 256 219; CHECK-NEXT: lvl %s2 220; CHECK-NEXT: vld %v0, %s1, %s0 221; CHECK-NEXT: vst.nc.ot %v0, %s1, %s0, %vm1 222; CHECK-NEXT: b.l.t (, %s10) 223 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 224 tail call void @llvm.ve.vl.vstncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 225 ret void 226} 227 228; Function Attrs: nounwind writeonly 229declare void @llvm.ve.vl.vstncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 230 231; Function Attrs: nounwind 232define void @vstncot_vssl_imm(ptr %0) { 233; CHECK-LABEL: vstncot_vssl_imm: 234; CHECK: # %bb.0: 235; CHECK-NEXT: lea %s1, 256 236; CHECK-NEXT: lvl %s1 237; CHECK-NEXT: vld %v0, 8, %s0 238; CHECK-NEXT: vst.nc.ot %v0, 8, %s0 239; CHECK-NEXT: b.l.t (, %s10) 240 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 241 tail call void @llvm.ve.vl.vstncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 242 ret void 243} 244 245; Function Attrs: nounwind 246define void @vstncot_vssml_imm(ptr %0) { 247; CHECK-LABEL: vstncot_vssml_imm: 248; CHECK: # %bb.0: 249; CHECK-NEXT: lea %s1, 256 250; CHECK-NEXT: lvl %s1 251; CHECK-NEXT: vld %v0, 8, %s0 252; CHECK-NEXT: vst.nc.ot %v0, 8, %s0, %vm1 253; CHECK-NEXT: b.l.t (, %s10) 254 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 255 tail call void @llvm.ve.vl.vstncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 256 ret void 257} 258 259; Function Attrs: nounwind 260define void @vstu_vssl(ptr %0, i64 %1) { 261; CHECK-LABEL: vstu_vssl: 262; CHECK: # %bb.0: 263; CHECK-NEXT: lea %s2, 256 264; CHECK-NEXT: lvl %s2 265; CHECK-NEXT: vld %v0, %s1, %s0 266; CHECK-NEXT: vstu %v0, %s1, %s0 267; CHECK-NEXT: b.l.t (, %s10) 268 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 269 tail call void @llvm.ve.vl.vstu.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 270 ret void 271} 272 273; Function Attrs: nounwind writeonly 274declare void @llvm.ve.vl.vstu.vssl(<256 x double>, i64, ptr, i32) 275 276; Function Attrs: nounwind 277define void @vstu_vssml(ptr %0, i64 %1) { 278; CHECK-LABEL: vstu_vssml: 279; CHECK: # %bb.0: 280; CHECK-NEXT: lea %s2, 256 281; CHECK-NEXT: lvl %s2 282; CHECK-NEXT: vld %v0, %s1, %s0 283; CHECK-NEXT: vstu %v0, %s1, %s0, %vm1 284; CHECK-NEXT: b.l.t (, %s10) 285 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 286 tail call void @llvm.ve.vl.vstu.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 287 ret void 288} 289 290; Function Attrs: nounwind writeonly 291declare void @llvm.ve.vl.vstu.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 292 293; Function Attrs: nounwind 294define void @vstu_vssl_imm(ptr %0) { 295; CHECK-LABEL: vstu_vssl_imm: 296; CHECK: # %bb.0: 297; CHECK-NEXT: lea %s1, 256 298; CHECK-NEXT: lvl %s1 299; CHECK-NEXT: vld %v0, 8, %s0 300; CHECK-NEXT: vstu %v0, 8, %s0 301; CHECK-NEXT: b.l.t (, %s10) 302 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 303 tail call void @llvm.ve.vl.vstu.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 304 ret void 305} 306 307; Function Attrs: nounwind 308define void @vstu_vssml_imm(ptr %0) { 309; CHECK-LABEL: vstu_vssml_imm: 310; CHECK: # %bb.0: 311; CHECK-NEXT: lea %s1, 256 312; CHECK-NEXT: lvl %s1 313; CHECK-NEXT: vld %v0, 8, %s0 314; CHECK-NEXT: vstu %v0, 8, %s0, %vm1 315; CHECK-NEXT: b.l.t (, %s10) 316 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 317 tail call void @llvm.ve.vl.vstu.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 318 ret void 319} 320 321; Function Attrs: nounwind 322define void @vstunc_vssl(ptr %0, i64 %1) { 323; CHECK-LABEL: vstunc_vssl: 324; CHECK: # %bb.0: 325; CHECK-NEXT: lea %s2, 256 326; CHECK-NEXT: lvl %s2 327; CHECK-NEXT: vld %v0, %s1, %s0 328; CHECK-NEXT: vstu.nc %v0, %s1, %s0 329; CHECK-NEXT: b.l.t (, %s10) 330 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 331 tail call void @llvm.ve.vl.vstunc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 332 ret void 333} 334 335; Function Attrs: nounwind writeonly 336declare void @llvm.ve.vl.vstunc.vssl(<256 x double>, i64, ptr, i32) 337 338; Function Attrs: nounwind 339define void @vstunc_vssml(ptr %0, i64 %1) { 340; CHECK-LABEL: vstunc_vssml: 341; CHECK: # %bb.0: 342; CHECK-NEXT: lea %s2, 256 343; CHECK-NEXT: lvl %s2 344; CHECK-NEXT: vld %v0, %s1, %s0 345; CHECK-NEXT: vstu.nc %v0, %s1, %s0, %vm1 346; CHECK-NEXT: b.l.t (, %s10) 347 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 348 tail call void @llvm.ve.vl.vstunc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 349 ret void 350} 351 352; Function Attrs: nounwind writeonly 353declare void @llvm.ve.vl.vstunc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 354 355; Function Attrs: nounwind 356define void @vstunc_vssl_imm(ptr %0) { 357; CHECK-LABEL: vstunc_vssl_imm: 358; CHECK: # %bb.0: 359; CHECK-NEXT: lea %s1, 256 360; CHECK-NEXT: lvl %s1 361; CHECK-NEXT: vld %v0, 8, %s0 362; CHECK-NEXT: vstu.nc %v0, 8, %s0 363; CHECK-NEXT: b.l.t (, %s10) 364 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 365 tail call void @llvm.ve.vl.vstunc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 366 ret void 367} 368 369; Function Attrs: nounwind 370define void @vstunc_vssml_imm(ptr %0) { 371; CHECK-LABEL: vstunc_vssml_imm: 372; CHECK: # %bb.0: 373; CHECK-NEXT: lea %s1, 256 374; CHECK-NEXT: lvl %s1 375; CHECK-NEXT: vld %v0, 8, %s0 376; CHECK-NEXT: vstu.nc %v0, 8, %s0, %vm1 377; CHECK-NEXT: b.l.t (, %s10) 378 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 379 tail call void @llvm.ve.vl.vstunc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 380 ret void 381} 382 383; Function Attrs: nounwind 384define void @vstuot_vssl(ptr %0, i64 %1) { 385; CHECK-LABEL: vstuot_vssl: 386; CHECK: # %bb.0: 387; CHECK-NEXT: lea %s2, 256 388; CHECK-NEXT: lvl %s2 389; CHECK-NEXT: vld %v0, %s1, %s0 390; CHECK-NEXT: vstu.ot %v0, %s1, %s0 391; CHECK-NEXT: b.l.t (, %s10) 392 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 393 tail call void @llvm.ve.vl.vstuot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 394 ret void 395} 396 397; Function Attrs: nounwind writeonly 398declare void @llvm.ve.vl.vstuot.vssl(<256 x double>, i64, ptr, i32) 399 400; Function Attrs: nounwind 401define void @vstuot_vssml(ptr %0, i64 %1) { 402; CHECK-LABEL: vstuot_vssml: 403; CHECK: # %bb.0: 404; CHECK-NEXT: lea %s2, 256 405; CHECK-NEXT: lvl %s2 406; CHECK-NEXT: vld %v0, %s1, %s0 407; CHECK-NEXT: vstu.ot %v0, %s1, %s0, %vm1 408; CHECK-NEXT: b.l.t (, %s10) 409 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 410 tail call void @llvm.ve.vl.vstuot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 411 ret void 412} 413 414; Function Attrs: nounwind writeonly 415declare void @llvm.ve.vl.vstuot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 416 417; Function Attrs: nounwind 418define void @vstuot_vssl_imm(ptr %0) { 419; CHECK-LABEL: vstuot_vssl_imm: 420; CHECK: # %bb.0: 421; CHECK-NEXT: lea %s1, 256 422; CHECK-NEXT: lvl %s1 423; CHECK-NEXT: vld %v0, 8, %s0 424; CHECK-NEXT: vstu.ot %v0, 8, %s0 425; CHECK-NEXT: b.l.t (, %s10) 426 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 427 tail call void @llvm.ve.vl.vstuot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 428 ret void 429} 430 431; Function Attrs: nounwind 432define void @vstuot_vssml_imm(ptr %0) { 433; CHECK-LABEL: vstuot_vssml_imm: 434; CHECK: # %bb.0: 435; CHECK-NEXT: lea %s1, 256 436; CHECK-NEXT: lvl %s1 437; CHECK-NEXT: vld %v0, 8, %s0 438; CHECK-NEXT: vstu.ot %v0, 8, %s0, %vm1 439; CHECK-NEXT: b.l.t (, %s10) 440 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 441 tail call void @llvm.ve.vl.vstuot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 442 ret void 443} 444 445; Function Attrs: nounwind 446define void @vstuncot_vssl(ptr %0, i64 %1) { 447; CHECK-LABEL: vstuncot_vssl: 448; CHECK: # %bb.0: 449; CHECK-NEXT: lea %s2, 256 450; CHECK-NEXT: lvl %s2 451; CHECK-NEXT: vld %v0, %s1, %s0 452; CHECK-NEXT: vstu.nc.ot %v0, %s1, %s0 453; CHECK-NEXT: b.l.t (, %s10) 454 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 455 tail call void @llvm.ve.vl.vstuncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 456 ret void 457} 458 459; Function Attrs: nounwind writeonly 460declare void @llvm.ve.vl.vstuncot.vssl(<256 x double>, i64, ptr, i32) 461 462; Function Attrs: nounwind 463define void @vstuncot_vssml(ptr %0, i64 %1) { 464; CHECK-LABEL: vstuncot_vssml: 465; CHECK: # %bb.0: 466; CHECK-NEXT: lea %s2, 256 467; CHECK-NEXT: lvl %s2 468; CHECK-NEXT: vld %v0, %s1, %s0 469; CHECK-NEXT: vstu.nc.ot %v0, %s1, %s0, %vm1 470; CHECK-NEXT: b.l.t (, %s10) 471 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 472 tail call void @llvm.ve.vl.vstuncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 473 ret void 474} 475 476; Function Attrs: nounwind writeonly 477declare void @llvm.ve.vl.vstuncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 478 479; Function Attrs: nounwind 480define void @vstuncot_vssl_imm(ptr %0) { 481; CHECK-LABEL: vstuncot_vssl_imm: 482; CHECK: # %bb.0: 483; CHECK-NEXT: lea %s1, 256 484; CHECK-NEXT: lvl %s1 485; CHECK-NEXT: vld %v0, 8, %s0 486; CHECK-NEXT: vstu.nc.ot %v0, 8, %s0 487; CHECK-NEXT: b.l.t (, %s10) 488 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 489 tail call void @llvm.ve.vl.vstuncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 490 ret void 491} 492 493; Function Attrs: nounwind 494define void @vstuncot_vssml_imm(ptr %0) { 495; CHECK-LABEL: vstuncot_vssml_imm: 496; CHECK: # %bb.0: 497; CHECK-NEXT: lea %s1, 256 498; CHECK-NEXT: lvl %s1 499; CHECK-NEXT: vld %v0, 8, %s0 500; CHECK-NEXT: vstu.nc.ot %v0, 8, %s0, %vm1 501; CHECK-NEXT: b.l.t (, %s10) 502 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 503 tail call void @llvm.ve.vl.vstuncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 504 ret void 505} 506 507; Function Attrs: nounwind 508define void @vstl_vssl(ptr %0, i64 %1) { 509; CHECK-LABEL: vstl_vssl: 510; CHECK: # %bb.0: 511; CHECK-NEXT: lea %s2, 256 512; CHECK-NEXT: lvl %s2 513; CHECK-NEXT: vld %v0, %s1, %s0 514; CHECK-NEXT: vstl %v0, %s1, %s0 515; CHECK-NEXT: b.l.t (, %s10) 516 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 517 tail call void @llvm.ve.vl.vstl.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 518 ret void 519} 520 521; Function Attrs: nounwind writeonly 522declare void @llvm.ve.vl.vstl.vssl(<256 x double>, i64, ptr, i32) 523 524; Function Attrs: nounwind 525define void @vstl_vssml(ptr %0, i64 %1) { 526; CHECK-LABEL: vstl_vssml: 527; CHECK: # %bb.0: 528; CHECK-NEXT: lea %s2, 256 529; CHECK-NEXT: lvl %s2 530; CHECK-NEXT: vld %v0, %s1, %s0 531; CHECK-NEXT: vstl %v0, %s1, %s0, %vm1 532; CHECK-NEXT: b.l.t (, %s10) 533 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 534 tail call void @llvm.ve.vl.vstl.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 535 ret void 536} 537 538; Function Attrs: nounwind writeonly 539declare void @llvm.ve.vl.vstl.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 540 541; Function Attrs: nounwind 542define void @vstl_vssl_imm(ptr %0) { 543; CHECK-LABEL: vstl_vssl_imm: 544; CHECK: # %bb.0: 545; CHECK-NEXT: lea %s1, 256 546; CHECK-NEXT: lvl %s1 547; CHECK-NEXT: vld %v0, 8, %s0 548; CHECK-NEXT: vstl %v0, 8, %s0 549; CHECK-NEXT: b.l.t (, %s10) 550 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 551 tail call void @llvm.ve.vl.vstl.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 552 ret void 553} 554 555; Function Attrs: nounwind 556define void @vstl_vssml_imm(ptr %0) { 557; CHECK-LABEL: vstl_vssml_imm: 558; CHECK: # %bb.0: 559; CHECK-NEXT: lea %s1, 256 560; CHECK-NEXT: lvl %s1 561; CHECK-NEXT: vld %v0, 8, %s0 562; CHECK-NEXT: vstl %v0, 8, %s0, %vm1 563; CHECK-NEXT: b.l.t (, %s10) 564 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 565 tail call void @llvm.ve.vl.vstl.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 566 ret void 567} 568 569; Function Attrs: nounwind 570define void @vstlnc_vssl(ptr %0, i64 %1) { 571; CHECK-LABEL: vstlnc_vssl: 572; CHECK: # %bb.0: 573; CHECK-NEXT: lea %s2, 256 574; CHECK-NEXT: lvl %s2 575; CHECK-NEXT: vld %v0, %s1, %s0 576; CHECK-NEXT: vstl.nc %v0, %s1, %s0 577; CHECK-NEXT: b.l.t (, %s10) 578 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 579 tail call void @llvm.ve.vl.vstlnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 580 ret void 581} 582 583; Function Attrs: nounwind writeonly 584declare void @llvm.ve.vl.vstlnc.vssl(<256 x double>, i64, ptr, i32) 585 586; Function Attrs: nounwind 587define void @vstlnc_vssml(ptr %0, i64 %1) { 588; CHECK-LABEL: vstlnc_vssml: 589; CHECK: # %bb.0: 590; CHECK-NEXT: lea %s2, 256 591; CHECK-NEXT: lvl %s2 592; CHECK-NEXT: vld %v0, %s1, %s0 593; CHECK-NEXT: vstl.nc %v0, %s1, %s0, %vm1 594; CHECK-NEXT: b.l.t (, %s10) 595 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 596 tail call void @llvm.ve.vl.vstlnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 597 ret void 598} 599 600; Function Attrs: nounwind writeonly 601declare void @llvm.ve.vl.vstlnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 602 603; Function Attrs: nounwind 604define void @vstlnc_vssl_imm(ptr %0) { 605; CHECK-LABEL: vstlnc_vssl_imm: 606; CHECK: # %bb.0: 607; CHECK-NEXT: lea %s1, 256 608; CHECK-NEXT: lvl %s1 609; CHECK-NEXT: vld %v0, 8, %s0 610; CHECK-NEXT: vstl.nc %v0, 8, %s0 611; CHECK-NEXT: b.l.t (, %s10) 612 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 613 tail call void @llvm.ve.vl.vstlnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 614 ret void 615} 616 617; Function Attrs: nounwind 618define void @vstlnc_vssml_imm(ptr %0) { 619; CHECK-LABEL: vstlnc_vssml_imm: 620; CHECK: # %bb.0: 621; CHECK-NEXT: lea %s1, 256 622; CHECK-NEXT: lvl %s1 623; CHECK-NEXT: vld %v0, 8, %s0 624; CHECK-NEXT: vstl.nc %v0, 8, %s0, %vm1 625; CHECK-NEXT: b.l.t (, %s10) 626 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 627 tail call void @llvm.ve.vl.vstlnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 628 ret void 629} 630 631; Function Attrs: nounwind 632define void @vstlot_vssl(ptr %0, i64 %1) { 633; CHECK-LABEL: vstlot_vssl: 634; CHECK: # %bb.0: 635; CHECK-NEXT: lea %s2, 256 636; CHECK-NEXT: lvl %s2 637; CHECK-NEXT: vld %v0, %s1, %s0 638; CHECK-NEXT: vstl.ot %v0, %s1, %s0 639; CHECK-NEXT: b.l.t (, %s10) 640 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 641 tail call void @llvm.ve.vl.vstlot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 642 ret void 643} 644 645; Function Attrs: nounwind writeonly 646declare void @llvm.ve.vl.vstlot.vssl(<256 x double>, i64, ptr, i32) 647 648; Function Attrs: nounwind 649define void @vstlot_vssml(ptr %0, i64 %1) { 650; CHECK-LABEL: vstlot_vssml: 651; CHECK: # %bb.0: 652; CHECK-NEXT: lea %s2, 256 653; CHECK-NEXT: lvl %s2 654; CHECK-NEXT: vld %v0, %s1, %s0 655; CHECK-NEXT: vstl.ot %v0, %s1, %s0, %vm1 656; CHECK-NEXT: b.l.t (, %s10) 657 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 658 tail call void @llvm.ve.vl.vstlot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 659 ret void 660} 661 662; Function Attrs: nounwind writeonly 663declare void @llvm.ve.vl.vstlot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 664 665; Function Attrs: nounwind 666define void @vstlot_vssl_imm(ptr %0) { 667; CHECK-LABEL: vstlot_vssl_imm: 668; CHECK: # %bb.0: 669; CHECK-NEXT: lea %s1, 256 670; CHECK-NEXT: lvl %s1 671; CHECK-NEXT: vld %v0, 8, %s0 672; CHECK-NEXT: vstl.ot %v0, 8, %s0 673; CHECK-NEXT: b.l.t (, %s10) 674 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 675 tail call void @llvm.ve.vl.vstlot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 676 ret void 677} 678 679; Function Attrs: nounwind 680define void @vstlot_vssml_imm(ptr %0) { 681; CHECK-LABEL: vstlot_vssml_imm: 682; CHECK: # %bb.0: 683; CHECK-NEXT: lea %s1, 256 684; CHECK-NEXT: lvl %s1 685; CHECK-NEXT: vld %v0, 8, %s0 686; CHECK-NEXT: vstl.ot %v0, 8, %s0, %vm1 687; CHECK-NEXT: b.l.t (, %s10) 688 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 689 tail call void @llvm.ve.vl.vstlot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 690 ret void 691} 692 693; Function Attrs: nounwind 694define void @vstlncot_vssl(ptr %0, i64 %1) { 695; CHECK-LABEL: vstlncot_vssl: 696; CHECK: # %bb.0: 697; CHECK-NEXT: lea %s2, 256 698; CHECK-NEXT: lvl %s2 699; CHECK-NEXT: vld %v0, %s1, %s0 700; CHECK-NEXT: vstl.nc.ot %v0, %s1, %s0 701; CHECK-NEXT: b.l.t (, %s10) 702 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 703 tail call void @llvm.ve.vl.vstlncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 704 ret void 705} 706 707; Function Attrs: nounwind writeonly 708declare void @llvm.ve.vl.vstlncot.vssl(<256 x double>, i64, ptr, i32) 709 710; Function Attrs: nounwind 711define void @vstlncot_vssml(ptr %0, i64 %1) { 712; CHECK-LABEL: vstlncot_vssml: 713; CHECK: # %bb.0: 714; CHECK-NEXT: lea %s2, 256 715; CHECK-NEXT: lvl %s2 716; CHECK-NEXT: vld %v0, %s1, %s0 717; CHECK-NEXT: vstl.nc.ot %v0, %s1, %s0, %vm1 718; CHECK-NEXT: b.l.t (, %s10) 719 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 720 tail call void @llvm.ve.vl.vstlncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 721 ret void 722} 723 724; Function Attrs: nounwind writeonly 725declare void @llvm.ve.vl.vstlncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 726 727; Function Attrs: nounwind 728define void @vstlncot_vssl_imm(ptr %0) { 729; CHECK-LABEL: vstlncot_vssl_imm: 730; CHECK: # %bb.0: 731; CHECK-NEXT: lea %s1, 256 732; CHECK-NEXT: lvl %s1 733; CHECK-NEXT: vld %v0, 8, %s0 734; CHECK-NEXT: vstl.nc.ot %v0, 8, %s0 735; CHECK-NEXT: b.l.t (, %s10) 736 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 737 tail call void @llvm.ve.vl.vstlncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 738 ret void 739} 740 741; Function Attrs: nounwind 742define void @vstlncot_vssml_imm(ptr %0) { 743; CHECK-LABEL: vstlncot_vssml_imm: 744; CHECK: # %bb.0: 745; CHECK-NEXT: lea %s1, 256 746; CHECK-NEXT: lvl %s1 747; CHECK-NEXT: vld %v0, 8, %s0 748; CHECK-NEXT: vstl.nc.ot %v0, 8, %s0, %vm1 749; CHECK-NEXT: b.l.t (, %s10) 750 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 751 tail call void @llvm.ve.vl.vstlncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 752 ret void 753} 754 755; Function Attrs: nounwind 756define void @vst2d_vssl(ptr %0, i64 %1) { 757; CHECK-LABEL: vst2d_vssl: 758; CHECK: # %bb.0: 759; CHECK-NEXT: lea %s2, 256 760; CHECK-NEXT: lvl %s2 761; CHECK-NEXT: vld %v0, %s1, %s0 762; CHECK-NEXT: vst2d %v0, %s1, %s0 763; CHECK-NEXT: b.l.t (, %s10) 764 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 765 tail call void @llvm.ve.vl.vst2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 766 ret void 767} 768 769; Function Attrs: nounwind writeonly 770declare void @llvm.ve.vl.vst2d.vssl(<256 x double>, i64, ptr, i32) 771 772; Function Attrs: nounwind 773define void @vst2d_vssml(ptr %0, i64 %1) { 774; CHECK-LABEL: vst2d_vssml: 775; CHECK: # %bb.0: 776; CHECK-NEXT: lea %s2, 256 777; CHECK-NEXT: lvl %s2 778; CHECK-NEXT: vld %v0, %s1, %s0 779; CHECK-NEXT: vst2d %v0, %s1, %s0, %vm1 780; CHECK-NEXT: b.l.t (, %s10) 781 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 782 tail call void @llvm.ve.vl.vst2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 783 ret void 784} 785 786; Function Attrs: nounwind writeonly 787declare void @llvm.ve.vl.vst2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 788 789; Function Attrs: nounwind 790define void @vst2d_vssl_imm(ptr %0) { 791; CHECK-LABEL: vst2d_vssl_imm: 792; CHECK: # %bb.0: 793; CHECK-NEXT: lea %s1, 256 794; CHECK-NEXT: lvl %s1 795; CHECK-NEXT: vld %v0, 8, %s0 796; CHECK-NEXT: vst2d %v0, 8, %s0 797; CHECK-NEXT: b.l.t (, %s10) 798 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 799 tail call void @llvm.ve.vl.vst2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 800 ret void 801} 802 803; Function Attrs: nounwind 804define void @vst2d_vssml_imm(ptr %0) { 805; CHECK-LABEL: vst2d_vssml_imm: 806; CHECK: # %bb.0: 807; CHECK-NEXT: lea %s1, 256 808; CHECK-NEXT: lvl %s1 809; CHECK-NEXT: vld %v0, 8, %s0 810; CHECK-NEXT: vst2d %v0, 8, %s0, %vm1 811; CHECK-NEXT: b.l.t (, %s10) 812 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 813 tail call void @llvm.ve.vl.vst2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 814 ret void 815} 816 817; Function Attrs: nounwind 818define void @vst2dnc_vssl(ptr %0, i64 %1) { 819; CHECK-LABEL: vst2dnc_vssl: 820; CHECK: # %bb.0: 821; CHECK-NEXT: lea %s2, 256 822; CHECK-NEXT: lvl %s2 823; CHECK-NEXT: vld %v0, %s1, %s0 824; CHECK-NEXT: vst2d.nc %v0, %s1, %s0 825; CHECK-NEXT: b.l.t (, %s10) 826 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 827 tail call void @llvm.ve.vl.vst2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 828 ret void 829} 830 831; Function Attrs: nounwind writeonly 832declare void @llvm.ve.vl.vst2dnc.vssl(<256 x double>, i64, ptr, i32) 833 834; Function Attrs: nounwind 835define void @vst2dnc_vssml(ptr %0, i64 %1) { 836; CHECK-LABEL: vst2dnc_vssml: 837; CHECK: # %bb.0: 838; CHECK-NEXT: lea %s2, 256 839; CHECK-NEXT: lvl %s2 840; CHECK-NEXT: vld %v0, %s1, %s0 841; CHECK-NEXT: vst2d.nc %v0, %s1, %s0, %vm1 842; CHECK-NEXT: b.l.t (, %s10) 843 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 844 tail call void @llvm.ve.vl.vst2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 845 ret void 846} 847 848; Function Attrs: nounwind writeonly 849declare void @llvm.ve.vl.vst2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 850 851; Function Attrs: nounwind 852define void @vst2dnc_vssl_imm(ptr %0) { 853; CHECK-LABEL: vst2dnc_vssl_imm: 854; CHECK: # %bb.0: 855; CHECK-NEXT: lea %s1, 256 856; CHECK-NEXT: lvl %s1 857; CHECK-NEXT: vld %v0, 8, %s0 858; CHECK-NEXT: vst2d.nc %v0, 8, %s0 859; CHECK-NEXT: b.l.t (, %s10) 860 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 861 tail call void @llvm.ve.vl.vst2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 862 ret void 863} 864 865; Function Attrs: nounwind 866define void @vst2dnc_vssml_imm(ptr %0) { 867; CHECK-LABEL: vst2dnc_vssml_imm: 868; CHECK: # %bb.0: 869; CHECK-NEXT: lea %s1, 256 870; CHECK-NEXT: lvl %s1 871; CHECK-NEXT: vld %v0, 8, %s0 872; CHECK-NEXT: vst2d.nc %v0, 8, %s0, %vm1 873; CHECK-NEXT: b.l.t (, %s10) 874 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 875 tail call void @llvm.ve.vl.vst2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 876 ret void 877} 878 879; Function Attrs: nounwind 880define void @vst2dot_vssl(ptr %0, i64 %1) { 881; CHECK-LABEL: vst2dot_vssl: 882; CHECK: # %bb.0: 883; CHECK-NEXT: lea %s2, 256 884; CHECK-NEXT: lvl %s2 885; CHECK-NEXT: vld %v0, %s1, %s0 886; CHECK-NEXT: vst2d.ot %v0, %s1, %s0 887; CHECK-NEXT: b.l.t (, %s10) 888 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 889 tail call void @llvm.ve.vl.vst2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 890 ret void 891} 892 893; Function Attrs: nounwind writeonly 894declare void @llvm.ve.vl.vst2dot.vssl(<256 x double>, i64, ptr, i32) 895 896; Function Attrs: nounwind 897define void @vst2dot_vssml(ptr %0, i64 %1) { 898; CHECK-LABEL: vst2dot_vssml: 899; CHECK: # %bb.0: 900; CHECK-NEXT: lea %s2, 256 901; CHECK-NEXT: lvl %s2 902; CHECK-NEXT: vld %v0, %s1, %s0 903; CHECK-NEXT: vst2d.ot %v0, %s1, %s0, %vm1 904; CHECK-NEXT: b.l.t (, %s10) 905 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 906 tail call void @llvm.ve.vl.vst2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 907 ret void 908} 909 910; Function Attrs: nounwind writeonly 911declare void @llvm.ve.vl.vst2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 912 913; Function Attrs: nounwind 914define void @vst2dot_vssl_imm(ptr %0) { 915; CHECK-LABEL: vst2dot_vssl_imm: 916; CHECK: # %bb.0: 917; CHECK-NEXT: lea %s1, 256 918; CHECK-NEXT: lvl %s1 919; CHECK-NEXT: vld %v0, 8, %s0 920; CHECK-NEXT: vst2d.ot %v0, 8, %s0 921; CHECK-NEXT: b.l.t (, %s10) 922 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 923 tail call void @llvm.ve.vl.vst2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 924 ret void 925} 926 927; Function Attrs: nounwind 928define void @vst2dot_vssml_imm(ptr %0) { 929; CHECK-LABEL: vst2dot_vssml_imm: 930; CHECK: # %bb.0: 931; CHECK-NEXT: lea %s1, 256 932; CHECK-NEXT: lvl %s1 933; CHECK-NEXT: vld %v0, 8, %s0 934; CHECK-NEXT: vst2d.ot %v0, 8, %s0, %vm1 935; CHECK-NEXT: b.l.t (, %s10) 936 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 937 tail call void @llvm.ve.vl.vst2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 938 ret void 939} 940 941; Function Attrs: nounwind 942define void @vst2dncot_vssl(ptr %0, i64 %1) { 943; CHECK-LABEL: vst2dncot_vssl: 944; CHECK: # %bb.0: 945; CHECK-NEXT: lea %s2, 256 946; CHECK-NEXT: lvl %s2 947; CHECK-NEXT: vld %v0, %s1, %s0 948; CHECK-NEXT: vst2d.nc.ot %v0, %s1, %s0 949; CHECK-NEXT: b.l.t (, %s10) 950 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 951 tail call void @llvm.ve.vl.vst2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 952 ret void 953} 954 955; Function Attrs: nounwind writeonly 956declare void @llvm.ve.vl.vst2dncot.vssl(<256 x double>, i64, ptr, i32) 957 958; Function Attrs: nounwind 959define void @vst2dncot_vssml(ptr %0, i64 %1) { 960; CHECK-LABEL: vst2dncot_vssml: 961; CHECK: # %bb.0: 962; CHECK-NEXT: lea %s2, 256 963; CHECK-NEXT: lvl %s2 964; CHECK-NEXT: vld %v0, %s1, %s0 965; CHECK-NEXT: vst2d.nc.ot %v0, %s1, %s0, %vm1 966; CHECK-NEXT: b.l.t (, %s10) 967 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 968 tail call void @llvm.ve.vl.vst2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 969 ret void 970} 971 972; Function Attrs: nounwind writeonly 973declare void @llvm.ve.vl.vst2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 974 975; Function Attrs: nounwind 976define void @vst2dncot_vssl_imm(ptr %0) { 977; CHECK-LABEL: vst2dncot_vssl_imm: 978; CHECK: # %bb.0: 979; CHECK-NEXT: lea %s1, 256 980; CHECK-NEXT: lvl %s1 981; CHECK-NEXT: vld %v0, 8, %s0 982; CHECK-NEXT: vst2d.nc.ot %v0, 8, %s0 983; CHECK-NEXT: b.l.t (, %s10) 984 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 985 tail call void @llvm.ve.vl.vst2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 986 ret void 987} 988 989; Function Attrs: nounwind 990define void @vst2dncot_vssml_imm(ptr %0) { 991; CHECK-LABEL: vst2dncot_vssml_imm: 992; CHECK: # %bb.0: 993; CHECK-NEXT: lea %s1, 256 994; CHECK-NEXT: lvl %s1 995; CHECK-NEXT: vld %v0, 8, %s0 996; CHECK-NEXT: vst2d.nc.ot %v0, 8, %s0, %vm1 997; CHECK-NEXT: b.l.t (, %s10) 998 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 999 tail call void @llvm.ve.vl.vst2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1000 ret void 1001} 1002 1003; Function Attrs: nounwind 1004define void @vstu2d_vssl(ptr %0, i64 %1) { 1005; CHECK-LABEL: vstu2d_vssl: 1006; CHECK: # %bb.0: 1007; CHECK-NEXT: lea %s2, 256 1008; CHECK-NEXT: lvl %s2 1009; CHECK-NEXT: vld %v0, %s1, %s0 1010; CHECK-NEXT: vstu2d %v0, %s1, %s0 1011; CHECK-NEXT: b.l.t (, %s10) 1012 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1013 tail call void @llvm.ve.vl.vstu2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1014 ret void 1015} 1016 1017; Function Attrs: nounwind writeonly 1018declare void @llvm.ve.vl.vstu2d.vssl(<256 x double>, i64, ptr, i32) 1019 1020; Function Attrs: nounwind 1021define void @vstu2d_vssml(ptr %0, i64 %1) { 1022; CHECK-LABEL: vstu2d_vssml: 1023; CHECK: # %bb.0: 1024; CHECK-NEXT: lea %s2, 256 1025; CHECK-NEXT: lvl %s2 1026; CHECK-NEXT: vld %v0, %s1, %s0 1027; CHECK-NEXT: vstu2d %v0, %s1, %s0, %vm1 1028; CHECK-NEXT: b.l.t (, %s10) 1029 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1030 tail call void @llvm.ve.vl.vstu2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1031 ret void 1032} 1033 1034; Function Attrs: nounwind writeonly 1035declare void @llvm.ve.vl.vstu2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1036 1037; Function Attrs: nounwind 1038define void @vstu2d_vssl_imm(ptr %0) { 1039; CHECK-LABEL: vstu2d_vssl_imm: 1040; CHECK: # %bb.0: 1041; CHECK-NEXT: lea %s1, 256 1042; CHECK-NEXT: lvl %s1 1043; CHECK-NEXT: vld %v0, 8, %s0 1044; CHECK-NEXT: vstu2d %v0, 8, %s0 1045; CHECK-NEXT: b.l.t (, %s10) 1046 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1047 tail call void @llvm.ve.vl.vstu2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1048 ret void 1049} 1050 1051; Function Attrs: nounwind 1052define void @vstu2d_vssml_imm(ptr %0) { 1053; CHECK-LABEL: vstu2d_vssml_imm: 1054; CHECK: # %bb.0: 1055; CHECK-NEXT: lea %s1, 256 1056; CHECK-NEXT: lvl %s1 1057; CHECK-NEXT: vld %v0, 8, %s0 1058; CHECK-NEXT: vstu2d %v0, 8, %s0, %vm1 1059; CHECK-NEXT: b.l.t (, %s10) 1060 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1061 tail call void @llvm.ve.vl.vstu2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1062 ret void 1063} 1064 1065; Function Attrs: nounwind 1066define void @vstu2dnc_vssl(ptr %0, i64 %1) { 1067; CHECK-LABEL: vstu2dnc_vssl: 1068; CHECK: # %bb.0: 1069; CHECK-NEXT: lea %s2, 256 1070; CHECK-NEXT: lvl %s2 1071; CHECK-NEXT: vld %v0, %s1, %s0 1072; CHECK-NEXT: vstu2d.nc %v0, %s1, %s0 1073; CHECK-NEXT: b.l.t (, %s10) 1074 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1075 tail call void @llvm.ve.vl.vstu2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1076 ret void 1077} 1078 1079; Function Attrs: nounwind writeonly 1080declare void @llvm.ve.vl.vstu2dnc.vssl(<256 x double>, i64, ptr, i32) 1081 1082; Function Attrs: nounwind 1083define void @vstu2dnc_vssml(ptr %0, i64 %1) { 1084; CHECK-LABEL: vstu2dnc_vssml: 1085; CHECK: # %bb.0: 1086; CHECK-NEXT: lea %s2, 256 1087; CHECK-NEXT: lvl %s2 1088; CHECK-NEXT: vld %v0, %s1, %s0 1089; CHECK-NEXT: vstu2d.nc %v0, %s1, %s0, %vm1 1090; CHECK-NEXT: b.l.t (, %s10) 1091 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1092 tail call void @llvm.ve.vl.vstu2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1093 ret void 1094} 1095 1096; Function Attrs: nounwind writeonly 1097declare void @llvm.ve.vl.vstu2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1098 1099; Function Attrs: nounwind 1100define void @vstu2dnc_vssl_imm(ptr %0) { 1101; CHECK-LABEL: vstu2dnc_vssl_imm: 1102; CHECK: # %bb.0: 1103; CHECK-NEXT: lea %s1, 256 1104; CHECK-NEXT: lvl %s1 1105; CHECK-NEXT: vld %v0, 8, %s0 1106; CHECK-NEXT: vstu2d.nc %v0, 8, %s0 1107; CHECK-NEXT: b.l.t (, %s10) 1108 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1109 tail call void @llvm.ve.vl.vstu2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1110 ret void 1111} 1112 1113; Function Attrs: nounwind 1114define void @vstu2dnc_vssml_imm(ptr %0) { 1115; CHECK-LABEL: vstu2dnc_vssml_imm: 1116; CHECK: # %bb.0: 1117; CHECK-NEXT: lea %s1, 256 1118; CHECK-NEXT: lvl %s1 1119; CHECK-NEXT: vld %v0, 8, %s0 1120; CHECK-NEXT: vstu2d.nc %v0, 8, %s0, %vm1 1121; CHECK-NEXT: b.l.t (, %s10) 1122 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1123 tail call void @llvm.ve.vl.vstu2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1124 ret void 1125} 1126 1127; Function Attrs: nounwind 1128define void @vstu2dot_vssl(ptr %0, i64 %1) { 1129; CHECK-LABEL: vstu2dot_vssl: 1130; CHECK: # %bb.0: 1131; CHECK-NEXT: lea %s2, 256 1132; CHECK-NEXT: lvl %s2 1133; CHECK-NEXT: vld %v0, %s1, %s0 1134; CHECK-NEXT: vstu2d.ot %v0, %s1, %s0 1135; CHECK-NEXT: b.l.t (, %s10) 1136 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1137 tail call void @llvm.ve.vl.vstu2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1138 ret void 1139} 1140 1141; Function Attrs: nounwind writeonly 1142declare void @llvm.ve.vl.vstu2dot.vssl(<256 x double>, i64, ptr, i32) 1143 1144; Function Attrs: nounwind 1145define void @vstu2dot_vssml(ptr %0, i64 %1) { 1146; CHECK-LABEL: vstu2dot_vssml: 1147; CHECK: # %bb.0: 1148; CHECK-NEXT: lea %s2, 256 1149; CHECK-NEXT: lvl %s2 1150; CHECK-NEXT: vld %v0, %s1, %s0 1151; CHECK-NEXT: vstu2d.ot %v0, %s1, %s0, %vm1 1152; CHECK-NEXT: b.l.t (, %s10) 1153 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1154 tail call void @llvm.ve.vl.vstu2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1155 ret void 1156} 1157 1158; Function Attrs: nounwind writeonly 1159declare void @llvm.ve.vl.vstu2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1160 1161; Function Attrs: nounwind 1162define void @vstu2dot_vssl_imm(ptr %0) { 1163; CHECK-LABEL: vstu2dot_vssl_imm: 1164; CHECK: # %bb.0: 1165; CHECK-NEXT: lea %s1, 256 1166; CHECK-NEXT: lvl %s1 1167; CHECK-NEXT: vld %v0, 8, %s0 1168; CHECK-NEXT: vstu2d.ot %v0, 8, %s0 1169; CHECK-NEXT: b.l.t (, %s10) 1170 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1171 tail call void @llvm.ve.vl.vstu2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1172 ret void 1173} 1174 1175; Function Attrs: nounwind 1176define void @vstu2dot_vssml_imm(ptr %0) { 1177; CHECK-LABEL: vstu2dot_vssml_imm: 1178; CHECK: # %bb.0: 1179; CHECK-NEXT: lea %s1, 256 1180; CHECK-NEXT: lvl %s1 1181; CHECK-NEXT: vld %v0, 8, %s0 1182; CHECK-NEXT: vstu2d.ot %v0, 8, %s0, %vm1 1183; CHECK-NEXT: b.l.t (, %s10) 1184 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1185 tail call void @llvm.ve.vl.vstu2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1186 ret void 1187} 1188 1189; Function Attrs: nounwind 1190define void @vstu2dncot_vssl(ptr %0, i64 %1) { 1191; CHECK-LABEL: vstu2dncot_vssl: 1192; CHECK: # %bb.0: 1193; CHECK-NEXT: lea %s2, 256 1194; CHECK-NEXT: lvl %s2 1195; CHECK-NEXT: vld %v0, %s1, %s0 1196; CHECK-NEXT: vstu2d.nc.ot %v0, %s1, %s0 1197; CHECK-NEXT: b.l.t (, %s10) 1198 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1199 tail call void @llvm.ve.vl.vstu2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1200 ret void 1201} 1202 1203; Function Attrs: nounwind writeonly 1204declare void @llvm.ve.vl.vstu2dncot.vssl(<256 x double>, i64, ptr, i32) 1205 1206; Function Attrs: nounwind 1207define void @vstu2dncot_vssml(ptr %0, i64 %1) { 1208; CHECK-LABEL: vstu2dncot_vssml: 1209; CHECK: # %bb.0: 1210; CHECK-NEXT: lea %s2, 256 1211; CHECK-NEXT: lvl %s2 1212; CHECK-NEXT: vld %v0, %s1, %s0 1213; CHECK-NEXT: vstu2d.nc.ot %v0, %s1, %s0, %vm1 1214; CHECK-NEXT: b.l.t (, %s10) 1215 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1216 tail call void @llvm.ve.vl.vstu2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1217 ret void 1218} 1219 1220; Function Attrs: nounwind writeonly 1221declare void @llvm.ve.vl.vstu2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1222 1223; Function Attrs: nounwind 1224define void @vstu2dncot_vssl_imm(ptr %0) { 1225; CHECK-LABEL: vstu2dncot_vssl_imm: 1226; CHECK: # %bb.0: 1227; CHECK-NEXT: lea %s1, 256 1228; CHECK-NEXT: lvl %s1 1229; CHECK-NEXT: vld %v0, 8, %s0 1230; CHECK-NEXT: vstu2d.nc.ot %v0, 8, %s0 1231; CHECK-NEXT: b.l.t (, %s10) 1232 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1233 tail call void @llvm.ve.vl.vstu2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1234 ret void 1235} 1236 1237; Function Attrs: nounwind 1238define void @vstu2dncot_vssml_imm(ptr %0) { 1239; CHECK-LABEL: vstu2dncot_vssml_imm: 1240; CHECK: # %bb.0: 1241; CHECK-NEXT: lea %s1, 256 1242; CHECK-NEXT: lvl %s1 1243; CHECK-NEXT: vld %v0, 8, %s0 1244; CHECK-NEXT: vstu2d.nc.ot %v0, 8, %s0, %vm1 1245; CHECK-NEXT: b.l.t (, %s10) 1246 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1247 tail call void @llvm.ve.vl.vstu2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1248 ret void 1249} 1250 1251; Function Attrs: nounwind 1252define void @vstl2d_vssl(ptr %0, i64 %1) { 1253; CHECK-LABEL: vstl2d_vssl: 1254; CHECK: # %bb.0: 1255; CHECK-NEXT: lea %s2, 256 1256; CHECK-NEXT: lvl %s2 1257; CHECK-NEXT: vld %v0, %s1, %s0 1258; CHECK-NEXT: vstl2d %v0, %s1, %s0 1259; CHECK-NEXT: b.l.t (, %s10) 1260 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1261 tail call void @llvm.ve.vl.vstl2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1262 ret void 1263} 1264 1265; Function Attrs: nounwind writeonly 1266declare void @llvm.ve.vl.vstl2d.vssl(<256 x double>, i64, ptr, i32) 1267 1268; Function Attrs: nounwind 1269define void @vstl2d_vssml(ptr %0, i64 %1) { 1270; CHECK-LABEL: vstl2d_vssml: 1271; CHECK: # %bb.0: 1272; CHECK-NEXT: lea %s2, 256 1273; CHECK-NEXT: lvl %s2 1274; CHECK-NEXT: vld %v0, %s1, %s0 1275; CHECK-NEXT: vstl2d %v0, %s1, %s0, %vm1 1276; CHECK-NEXT: b.l.t (, %s10) 1277 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1278 tail call void @llvm.ve.vl.vstl2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1279 ret void 1280} 1281 1282; Function Attrs: nounwind writeonly 1283declare void @llvm.ve.vl.vstl2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1284 1285; Function Attrs: nounwind 1286define void @vstl2d_vssl_imm(ptr %0) { 1287; CHECK-LABEL: vstl2d_vssl_imm: 1288; CHECK: # %bb.0: 1289; CHECK-NEXT: lea %s1, 256 1290; CHECK-NEXT: lvl %s1 1291; CHECK-NEXT: vld %v0, 8, %s0 1292; CHECK-NEXT: vstl2d %v0, 8, %s0 1293; CHECK-NEXT: b.l.t (, %s10) 1294 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1295 tail call void @llvm.ve.vl.vstl2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1296 ret void 1297} 1298 1299; Function Attrs: nounwind 1300define void @vstl2d_vssml_imm(ptr %0) { 1301; CHECK-LABEL: vstl2d_vssml_imm: 1302; CHECK: # %bb.0: 1303; CHECK-NEXT: lea %s1, 256 1304; CHECK-NEXT: lvl %s1 1305; CHECK-NEXT: vld %v0, 8, %s0 1306; CHECK-NEXT: vstl2d %v0, 8, %s0, %vm1 1307; CHECK-NEXT: b.l.t (, %s10) 1308 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1309 tail call void @llvm.ve.vl.vstl2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1310 ret void 1311} 1312 1313; Function Attrs: nounwind 1314define void @vstl2dnc_vssl(ptr %0, i64 %1) { 1315; CHECK-LABEL: vstl2dnc_vssl: 1316; CHECK: # %bb.0: 1317; CHECK-NEXT: lea %s2, 256 1318; CHECK-NEXT: lvl %s2 1319; CHECK-NEXT: vld %v0, %s1, %s0 1320; CHECK-NEXT: vstl2d.nc %v0, %s1, %s0 1321; CHECK-NEXT: b.l.t (, %s10) 1322 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1323 tail call void @llvm.ve.vl.vstl2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1324 ret void 1325} 1326 1327; Function Attrs: nounwind writeonly 1328declare void @llvm.ve.vl.vstl2dnc.vssl(<256 x double>, i64, ptr, i32) 1329 1330; Function Attrs: nounwind 1331define void @vstl2dnc_vssml(ptr %0, i64 %1) { 1332; CHECK-LABEL: vstl2dnc_vssml: 1333; CHECK: # %bb.0: 1334; CHECK-NEXT: lea %s2, 256 1335; CHECK-NEXT: lvl %s2 1336; CHECK-NEXT: vld %v0, %s1, %s0 1337; CHECK-NEXT: vstl2d.nc %v0, %s1, %s0, %vm1 1338; CHECK-NEXT: b.l.t (, %s10) 1339 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1340 tail call void @llvm.ve.vl.vstl2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1341 ret void 1342} 1343 1344; Function Attrs: nounwind writeonly 1345declare void @llvm.ve.vl.vstl2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1346 1347; Function Attrs: nounwind 1348define void @vstl2dnc_vssl_imm(ptr %0) { 1349; CHECK-LABEL: vstl2dnc_vssl_imm: 1350; CHECK: # %bb.0: 1351; CHECK-NEXT: lea %s1, 256 1352; CHECK-NEXT: lvl %s1 1353; CHECK-NEXT: vld %v0, 8, %s0 1354; CHECK-NEXT: vstl2d.nc %v0, 8, %s0 1355; CHECK-NEXT: b.l.t (, %s10) 1356 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1357 tail call void @llvm.ve.vl.vstl2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1358 ret void 1359} 1360 1361; Function Attrs: nounwind 1362define void @vstl2dnc_vssml_imm(ptr %0) { 1363; CHECK-LABEL: vstl2dnc_vssml_imm: 1364; CHECK: # %bb.0: 1365; CHECK-NEXT: lea %s1, 256 1366; CHECK-NEXT: lvl %s1 1367; CHECK-NEXT: vld %v0, 8, %s0 1368; CHECK-NEXT: vstl2d.nc %v0, 8, %s0, %vm1 1369; CHECK-NEXT: b.l.t (, %s10) 1370 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1371 tail call void @llvm.ve.vl.vstl2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1372 ret void 1373} 1374 1375; Function Attrs: nounwind 1376define void @vstl2dot_vssl(ptr %0, i64 %1) { 1377; CHECK-LABEL: vstl2dot_vssl: 1378; CHECK: # %bb.0: 1379; CHECK-NEXT: lea %s2, 256 1380; CHECK-NEXT: lvl %s2 1381; CHECK-NEXT: vld %v0, %s1, %s0 1382; CHECK-NEXT: vstl2d.ot %v0, %s1, %s0 1383; CHECK-NEXT: b.l.t (, %s10) 1384 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1385 tail call void @llvm.ve.vl.vstl2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1386 ret void 1387} 1388 1389; Function Attrs: nounwind writeonly 1390declare void @llvm.ve.vl.vstl2dot.vssl(<256 x double>, i64, ptr, i32) 1391 1392; Function Attrs: nounwind 1393define void @vstl2dot_vssml(ptr %0, i64 %1) { 1394; CHECK-LABEL: vstl2dot_vssml: 1395; CHECK: # %bb.0: 1396; CHECK-NEXT: lea %s2, 256 1397; CHECK-NEXT: lvl %s2 1398; CHECK-NEXT: vld %v0, %s1, %s0 1399; CHECK-NEXT: vstl2d.ot %v0, %s1, %s0, %vm1 1400; CHECK-NEXT: b.l.t (, %s10) 1401 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1402 tail call void @llvm.ve.vl.vstl2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1403 ret void 1404} 1405 1406; Function Attrs: nounwind writeonly 1407declare void @llvm.ve.vl.vstl2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1408 1409; Function Attrs: nounwind 1410define void @vstl2dot_vssl_imm(ptr %0) { 1411; CHECK-LABEL: vstl2dot_vssl_imm: 1412; CHECK: # %bb.0: 1413; CHECK-NEXT: lea %s1, 256 1414; CHECK-NEXT: lvl %s1 1415; CHECK-NEXT: vld %v0, 8, %s0 1416; CHECK-NEXT: vstl2d.ot %v0, 8, %s0 1417; CHECK-NEXT: b.l.t (, %s10) 1418 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1419 tail call void @llvm.ve.vl.vstl2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1420 ret void 1421} 1422 1423; Function Attrs: nounwind 1424define void @vstl2dot_vssml_imm(ptr %0) { 1425; CHECK-LABEL: vstl2dot_vssml_imm: 1426; CHECK: # %bb.0: 1427; CHECK-NEXT: lea %s1, 256 1428; CHECK-NEXT: lvl %s1 1429; CHECK-NEXT: vld %v0, 8, %s0 1430; CHECK-NEXT: vstl2d.ot %v0, 8, %s0, %vm1 1431; CHECK-NEXT: b.l.t (, %s10) 1432 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1433 tail call void @llvm.ve.vl.vstl2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1434 ret void 1435} 1436 1437; Function Attrs: nounwind 1438define void @vstl2dncot_vssl(ptr %0, i64 %1) { 1439; CHECK-LABEL: vstl2dncot_vssl: 1440; CHECK: # %bb.0: 1441; CHECK-NEXT: lea %s2, 256 1442; CHECK-NEXT: lvl %s2 1443; CHECK-NEXT: vld %v0, %s1, %s0 1444; CHECK-NEXT: vstl2d.nc.ot %v0, %s1, %s0 1445; CHECK-NEXT: b.l.t (, %s10) 1446 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1447 tail call void @llvm.ve.vl.vstl2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256) 1448 ret void 1449} 1450 1451; Function Attrs: nounwind writeonly 1452declare void @llvm.ve.vl.vstl2dncot.vssl(<256 x double>, i64, ptr, i32) 1453 1454; Function Attrs: nounwind 1455define void @vstl2dncot_vssml(ptr %0, i64 %1) { 1456; CHECK-LABEL: vstl2dncot_vssml: 1457; CHECK: # %bb.0: 1458; CHECK-NEXT: lea %s2, 256 1459; CHECK-NEXT: lvl %s2 1460; CHECK-NEXT: vld %v0, %s1, %s0 1461; CHECK-NEXT: vstl2d.nc.ot %v0, %s1, %s0, %vm1 1462; CHECK-NEXT: b.l.t (, %s10) 1463 %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256) 1464 tail call void @llvm.ve.vl.vstl2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256) 1465 ret void 1466} 1467 1468; Function Attrs: nounwind writeonly 1469declare void @llvm.ve.vl.vstl2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32) 1470 1471; Function Attrs: nounwind 1472define void @vstl2dncot_vssl_imm(ptr %0) { 1473; CHECK-LABEL: vstl2dncot_vssl_imm: 1474; CHECK: # %bb.0: 1475; CHECK-NEXT: lea %s1, 256 1476; CHECK-NEXT: lvl %s1 1477; CHECK-NEXT: vld %v0, 8, %s0 1478; CHECK-NEXT: vstl2d.nc.ot %v0, 8, %s0 1479; CHECK-NEXT: b.l.t (, %s10) 1480 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1481 tail call void @llvm.ve.vl.vstl2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256) 1482 ret void 1483} 1484 1485; Function Attrs: nounwind 1486define void @vstl2dncot_vssml_imm(ptr %0) { 1487; CHECK-LABEL: vstl2dncot_vssml_imm: 1488; CHECK: # %bb.0: 1489; CHECK-NEXT: lea %s1, 256 1490; CHECK-NEXT: lvl %s1 1491; CHECK-NEXT: vld %v0, 8, %s0 1492; CHECK-NEXT: vstl2d.nc.ot %v0, 8, %s0, %vm1 1493; CHECK-NEXT: b.l.t (, %s10) 1494 %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256) 1495 tail call void @llvm.ve.vl.vstl2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256) 1496 ret void 1497} 1498