1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s 2 3;;; Test vector gather intrinsic instructions 4;;; 5;;; Note: 6;;; We test VGT*vrrl, VGT*vrrl_v, VGT*vrzl, VGT*vrzl_v, VGT*virl, VGT*virl_v, 7;;; VGT*vizl, VGT*vizl_v, VGT*vrrml, VGT*vrrml_v, VGT*vrzml, VGT*vrzml_v, 8;;; VGT*virml, VGT*virml_v, VGT*vizml, and VGT*vizml_v instructions. 9 10; Function Attrs: nounwind readonly 11define fastcc <256 x double> @vgt_vvssl(<256 x double> %0, i64 %1, i64 %2) { 12; CHECK-LABEL: vgt_vvssl: 13; CHECK: # %bb.0: 14; CHECK-NEXT: lea %s2, 256 15; CHECK-NEXT: lvl %s2 16; CHECK-NEXT: vgt %v0, %v0, %s0, %s1 17; CHECK-NEXT: b.l.t (, %s10) 18 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 19 ret <256 x double> %4 20} 21 22; Function Attrs: nounwind readonly 23declare <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double>, i64, i64, i32) 24 25; Function Attrs: nounwind readonly 26define fastcc <256 x double> @vgt_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 27; CHECK-LABEL: vgt_vvssvl: 28; CHECK: # %bb.0: 29; CHECK-NEXT: lea %s2, 128 30; CHECK-NEXT: lvl %s2 31; CHECK-NEXT: vgt %v1, %v0, %s0, %s1 32; CHECK-NEXT: lea %s16, 256 33; CHECK-NEXT: lvl %s16 34; CHECK-NEXT: vor %v0, (0)1, %v1 35; CHECK-NEXT: b.l.t (, %s10) 36 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 37 ret <256 x double> %5 38} 39 40; Function Attrs: nounwind readonly 41declare <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 42 43; Function Attrs: nounwind readonly 44define fastcc <256 x double> @vgt_vvssl_imm_1(<256 x double> %0, i64 %1) { 45; CHECK-LABEL: vgt_vvssl_imm_1: 46; CHECK: # %bb.0: 47; CHECK-NEXT: lea %s1, 256 48; CHECK-NEXT: lvl %s1 49; CHECK-NEXT: vgt %v0, %v0, %s0, 0 50; CHECK-NEXT: b.l.t (, %s10) 51 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 52 ret <256 x double> %3 53} 54 55; Function Attrs: nounwind readonly 56define fastcc <256 x double> @vgt_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 57; CHECK-LABEL: vgt_vvssvl_imm_1: 58; CHECK: # %bb.0: 59; CHECK-NEXT: lea %s1, 128 60; CHECK-NEXT: lvl %s1 61; CHECK-NEXT: vgt %v1, %v0, %s0, 0 62; CHECK-NEXT: lea %s16, 256 63; CHECK-NEXT: lvl %s16 64; CHECK-NEXT: vor %v0, (0)1, %v1 65; CHECK-NEXT: b.l.t (, %s10) 66 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 67 ret <256 x double> %4 68} 69 70; Function Attrs: nounwind readonly 71define fastcc <256 x double> @vgt_vvssl_imm_2(<256 x double> %0, i64 %1) { 72; CHECK-LABEL: vgt_vvssl_imm_2: 73; CHECK: # %bb.0: 74; CHECK-NEXT: lea %s1, 256 75; CHECK-NEXT: lvl %s1 76; CHECK-NEXT: vgt %v0, %v0, 8, %s0 77; CHECK-NEXT: b.l.t (, %s10) 78 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 79 ret <256 x double> %3 80} 81 82; Function Attrs: nounwind readonly 83define fastcc <256 x double> @vgt_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 84; CHECK-LABEL: vgt_vvssvl_imm_2: 85; CHECK: # %bb.0: 86; CHECK-NEXT: lea %s1, 128 87; CHECK-NEXT: lvl %s1 88; CHECK-NEXT: vgt %v1, %v0, 8, %s0 89; CHECK-NEXT: lea %s16, 256 90; CHECK-NEXT: lvl %s16 91; CHECK-NEXT: vor %v0, (0)1, %v1 92; CHECK-NEXT: b.l.t (, %s10) 93 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 94 ret <256 x double> %4 95} 96 97; Function Attrs: nounwind readonly 98define fastcc <256 x double> @vgt_vvssl_imm_3(<256 x double> %0) { 99; CHECK-LABEL: vgt_vvssl_imm_3: 100; CHECK: # %bb.0: 101; CHECK-NEXT: lea %s0, 256 102; CHECK-NEXT: lvl %s0 103; CHECK-NEXT: vgt %v0, %v0, 8, 0 104; CHECK-NEXT: b.l.t (, %s10) 105 %2 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 106 ret <256 x double> %2 107} 108 109; Function Attrs: nounwind readonly 110define fastcc <256 x double> @vgt_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 111; CHECK-LABEL: vgt_vvssvl_imm_3: 112; CHECK: # %bb.0: 113; CHECK-NEXT: lea %s0, 128 114; CHECK-NEXT: lvl %s0 115; CHECK-NEXT: vgt %v1, %v0, 8, 0 116; CHECK-NEXT: lea %s16, 256 117; CHECK-NEXT: lvl %s16 118; CHECK-NEXT: vor %v0, (0)1, %v1 119; CHECK-NEXT: b.l.t (, %s10) 120 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 121 ret <256 x double> %3 122} 123 124; Function Attrs: nounwind readonly 125define fastcc <256 x double> @vgt_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 126; CHECK-LABEL: vgt_vvssml: 127; CHECK: # %bb.0: 128; CHECK-NEXT: lea %s2, 256 129; CHECK-NEXT: lvl %s2 130; CHECK-NEXT: vgt %v0, %v0, %s0, %s1, %vm1 131; CHECK-NEXT: b.l.t (, %s10) 132 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 133 ret <256 x double> %5 134} 135 136; Function Attrs: nounwind readonly 137declare <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 138 139; Function Attrs: nounwind readonly 140define fastcc <256 x double> @vgt_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 141; CHECK-LABEL: vgt_vvssmvl: 142; CHECK: # %bb.0: 143; CHECK-NEXT: lea %s2, 128 144; CHECK-NEXT: lvl %s2 145; CHECK-NEXT: vgt %v1, %v0, %s0, %s1, %vm1 146; CHECK-NEXT: lea %s16, 256 147; CHECK-NEXT: lvl %s16 148; CHECK-NEXT: vor %v0, (0)1, %v1 149; CHECK-NEXT: b.l.t (, %s10) 150 %6 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 151 ret <256 x double> %6 152} 153 154; Function Attrs: nounwind readonly 155declare <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 156 157; Function Attrs: nounwind readonly 158define fastcc <256 x double> @vgt_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 159; CHECK-LABEL: vgt_vvssml_imm_1: 160; CHECK: # %bb.0: 161; CHECK-NEXT: lea %s1, 256 162; CHECK-NEXT: lvl %s1 163; CHECK-NEXT: vgt %v0, %v0, %s0, 0, %vm1 164; CHECK-NEXT: b.l.t (, %s10) 165 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 166 ret <256 x double> %4 167} 168 169; Function Attrs: nounwind readonly 170define fastcc <256 x double> @vgt_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 171; CHECK-LABEL: vgt_vvssmvl_imm_1: 172; CHECK: # %bb.0: 173; CHECK-NEXT: lea %s1, 128 174; CHECK-NEXT: lvl %s1 175; CHECK-NEXT: vgt %v1, %v0, %s0, 0, %vm1 176; CHECK-NEXT: lea %s16, 256 177; CHECK-NEXT: lvl %s16 178; CHECK-NEXT: vor %v0, (0)1, %v1 179; CHECK-NEXT: b.l.t (, %s10) 180 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 181 ret <256 x double> %5 182} 183 184; Function Attrs: nounwind readonly 185define fastcc <256 x double> @vgt_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 186; CHECK-LABEL: vgt_vvssml_imm_2: 187; CHECK: # %bb.0: 188; CHECK-NEXT: lea %s1, 256 189; CHECK-NEXT: lvl %s1 190; CHECK-NEXT: vgt %v0, %v0, 8, %s0, %vm1 191; CHECK-NEXT: b.l.t (, %s10) 192 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 193 ret <256 x double> %4 194} 195 196; Function Attrs: nounwind readonly 197define fastcc <256 x double> @vgt_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 198; CHECK-LABEL: vgt_vvssmvl_imm_2: 199; CHECK: # %bb.0: 200; CHECK-NEXT: lea %s1, 128 201; CHECK-NEXT: lvl %s1 202; CHECK-NEXT: vgt %v1, %v0, 8, %s0, %vm1 203; CHECK-NEXT: lea %s16, 256 204; CHECK-NEXT: lvl %s16 205; CHECK-NEXT: vor %v0, (0)1, %v1 206; CHECK-NEXT: b.l.t (, %s10) 207 %5 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 208 ret <256 x double> %5 209} 210 211; Function Attrs: nounwind readonly 212define fastcc <256 x double> @vgt_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 213; CHECK-LABEL: vgt_vvssml_imm_3: 214; CHECK: # %bb.0: 215; CHECK-NEXT: lea %s0, 256 216; CHECK-NEXT: lvl %s0 217; CHECK-NEXT: vgt %v0, %v0, 8, 0, %vm1 218; CHECK-NEXT: b.l.t (, %s10) 219 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 220 ret <256 x double> %3 221} 222 223; Function Attrs: nounwind readonly 224define fastcc <256 x double> @vgt_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 225; CHECK-LABEL: vgt_vvssmvl_imm_3: 226; CHECK: # %bb.0: 227; CHECK-NEXT: lea %s0, 128 228; CHECK-NEXT: lvl %s0 229; CHECK-NEXT: vgt %v1, %v0, 8, 0, %vm1 230; CHECK-NEXT: lea %s16, 256 231; CHECK-NEXT: lvl %s16 232; CHECK-NEXT: vor %v0, (0)1, %v1 233; CHECK-NEXT: b.l.t (, %s10) 234 %4 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 235 ret <256 x double> %4 236} 237 238; Function Attrs: nounwind readonly 239define fastcc <256 x double> @vgt_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 240; CHECK-LABEL: vgt_vvssl_no_imm_1: 241; CHECK: # %bb.0: 242; CHECK-NEXT: lea %s1, 256 243; CHECK-NEXT: or %s2, 8, (0)1 244; CHECK-NEXT: lvl %s1 245; CHECK-NEXT: vgt %v0, %v0, %s0, %s2 246; CHECK-NEXT: b.l.t (, %s10) 247 %3 = tail call fast <256 x double> @llvm.ve.vl.vgt.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 248 ret <256 x double> %3 249} 250 251; Function Attrs: nounwind readonly 252define fastcc <256 x double> @vgtnc_vvssl(<256 x double> %0, i64 %1, i64 %2) { 253; CHECK-LABEL: vgtnc_vvssl: 254; CHECK: # %bb.0: 255; CHECK-NEXT: lea %s2, 256 256; CHECK-NEXT: lvl %s2 257; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s1 258; CHECK-NEXT: b.l.t (, %s10) 259 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 260 ret <256 x double> %4 261} 262 263; Function Attrs: nounwind readonly 264declare <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double>, i64, i64, i32) 265 266; Function Attrs: nounwind readonly 267define fastcc <256 x double> @vgtnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 268; CHECK-LABEL: vgtnc_vvssvl: 269; CHECK: # %bb.0: 270; CHECK-NEXT: lea %s2, 128 271; CHECK-NEXT: lvl %s2 272; CHECK-NEXT: vgt.nc %v1, %v0, %s0, %s1 273; CHECK-NEXT: lea %s16, 256 274; CHECK-NEXT: lvl %s16 275; CHECK-NEXT: vor %v0, (0)1, %v1 276; CHECK-NEXT: b.l.t (, %s10) 277 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 278 ret <256 x double> %5 279} 280 281; Function Attrs: nounwind readonly 282declare <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 283 284; Function Attrs: nounwind readonly 285define fastcc <256 x double> @vgtnc_vvssl_imm_1(<256 x double> %0, i64 %1) { 286; CHECK-LABEL: vgtnc_vvssl_imm_1: 287; CHECK: # %bb.0: 288; CHECK-NEXT: lea %s1, 256 289; CHECK-NEXT: lvl %s1 290; CHECK-NEXT: vgt.nc %v0, %v0, %s0, 0 291; CHECK-NEXT: b.l.t (, %s10) 292 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 293 ret <256 x double> %3 294} 295 296; Function Attrs: nounwind readonly 297define fastcc <256 x double> @vgtnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 298; CHECK-LABEL: vgtnc_vvssvl_imm_1: 299; CHECK: # %bb.0: 300; CHECK-NEXT: lea %s1, 128 301; CHECK-NEXT: lvl %s1 302; CHECK-NEXT: vgt.nc %v1, %v0, %s0, 0 303; CHECK-NEXT: lea %s16, 256 304; CHECK-NEXT: lvl %s16 305; CHECK-NEXT: vor %v0, (0)1, %v1 306; CHECK-NEXT: b.l.t (, %s10) 307 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 308 ret <256 x double> %4 309} 310 311; Function Attrs: nounwind readonly 312define fastcc <256 x double> @vgtnc_vvssl_imm_2(<256 x double> %0, i64 %1) { 313; CHECK-LABEL: vgtnc_vvssl_imm_2: 314; CHECK: # %bb.0: 315; CHECK-NEXT: lea %s1, 256 316; CHECK-NEXT: lvl %s1 317; CHECK-NEXT: vgt.nc %v0, %v0, 8, %s0 318; CHECK-NEXT: b.l.t (, %s10) 319 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 320 ret <256 x double> %3 321} 322 323; Function Attrs: nounwind readonly 324define fastcc <256 x double> @vgtnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 325; CHECK-LABEL: vgtnc_vvssvl_imm_2: 326; CHECK: # %bb.0: 327; CHECK-NEXT: lea %s1, 128 328; CHECK-NEXT: lvl %s1 329; CHECK-NEXT: vgt.nc %v1, %v0, 8, %s0 330; CHECK-NEXT: lea %s16, 256 331; CHECK-NEXT: lvl %s16 332; CHECK-NEXT: vor %v0, (0)1, %v1 333; CHECK-NEXT: b.l.t (, %s10) 334 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 335 ret <256 x double> %4 336} 337 338; Function Attrs: nounwind readonly 339define fastcc <256 x double> @vgtnc_vvssl_imm_3(<256 x double> %0) { 340; CHECK-LABEL: vgtnc_vvssl_imm_3: 341; CHECK: # %bb.0: 342; CHECK-NEXT: lea %s0, 256 343; CHECK-NEXT: lvl %s0 344; CHECK-NEXT: vgt.nc %v0, %v0, 8, 0 345; CHECK-NEXT: b.l.t (, %s10) 346 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 347 ret <256 x double> %2 348} 349 350; Function Attrs: nounwind readonly 351define fastcc <256 x double> @vgtnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 352; CHECK-LABEL: vgtnc_vvssvl_imm_3: 353; CHECK: # %bb.0: 354; CHECK-NEXT: lea %s0, 128 355; CHECK-NEXT: lvl %s0 356; CHECK-NEXT: vgt.nc %v1, %v0, 8, 0 357; CHECK-NEXT: lea %s16, 256 358; CHECK-NEXT: lvl %s16 359; CHECK-NEXT: vor %v0, (0)1, %v1 360; CHECK-NEXT: b.l.t (, %s10) 361 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 362 ret <256 x double> %3 363} 364 365; Function Attrs: nounwind readonly 366define fastcc <256 x double> @vgtnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 367; CHECK-LABEL: vgtnc_vvssml: 368; CHECK: # %bb.0: 369; CHECK-NEXT: lea %s2, 256 370; CHECK-NEXT: lvl %s2 371; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s1, %vm1 372; CHECK-NEXT: b.l.t (, %s10) 373 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 374 ret <256 x double> %5 375} 376 377; Function Attrs: nounwind readonly 378declare <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 379 380; Function Attrs: nounwind readonly 381define fastcc <256 x double> @vgtnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 382; CHECK-LABEL: vgtnc_vvssmvl: 383; CHECK: # %bb.0: 384; CHECK-NEXT: lea %s2, 128 385; CHECK-NEXT: lvl %s2 386; CHECK-NEXT: vgt.nc %v1, %v0, %s0, %s1, %vm1 387; CHECK-NEXT: lea %s16, 256 388; CHECK-NEXT: lvl %s16 389; CHECK-NEXT: vor %v0, (0)1, %v1 390; CHECK-NEXT: b.l.t (, %s10) 391 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 392 ret <256 x double> %6 393} 394 395; Function Attrs: nounwind readonly 396declare <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 397 398; Function Attrs: nounwind readonly 399define fastcc <256 x double> @vgtnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 400; CHECK-LABEL: vgtnc_vvssml_imm_1: 401; CHECK: # %bb.0: 402; CHECK-NEXT: lea %s1, 256 403; CHECK-NEXT: lvl %s1 404; CHECK-NEXT: vgt.nc %v0, %v0, %s0, 0, %vm1 405; CHECK-NEXT: b.l.t (, %s10) 406 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 407 ret <256 x double> %4 408} 409 410; Function Attrs: nounwind readonly 411define fastcc <256 x double> @vgtnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 412; CHECK-LABEL: vgtnc_vvssmvl_imm_1: 413; CHECK: # %bb.0: 414; CHECK-NEXT: lea %s1, 128 415; CHECK-NEXT: lvl %s1 416; CHECK-NEXT: vgt.nc %v1, %v0, %s0, 0, %vm1 417; CHECK-NEXT: lea %s16, 256 418; CHECK-NEXT: lvl %s16 419; CHECK-NEXT: vor %v0, (0)1, %v1 420; CHECK-NEXT: b.l.t (, %s10) 421 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 422 ret <256 x double> %5 423} 424 425; Function Attrs: nounwind readonly 426define fastcc <256 x double> @vgtnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 427; CHECK-LABEL: vgtnc_vvssml_imm_2: 428; CHECK: # %bb.0: 429; CHECK-NEXT: lea %s1, 256 430; CHECK-NEXT: lvl %s1 431; CHECK-NEXT: vgt.nc %v0, %v0, 8, %s0, %vm1 432; CHECK-NEXT: b.l.t (, %s10) 433 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 434 ret <256 x double> %4 435} 436 437; Function Attrs: nounwind readonly 438define fastcc <256 x double> @vgtnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 439; CHECK-LABEL: vgtnc_vvssmvl_imm_2: 440; CHECK: # %bb.0: 441; CHECK-NEXT: lea %s1, 128 442; CHECK-NEXT: lvl %s1 443; CHECK-NEXT: vgt.nc %v1, %v0, 8, %s0, %vm1 444; CHECK-NEXT: lea %s16, 256 445; CHECK-NEXT: lvl %s16 446; CHECK-NEXT: vor %v0, (0)1, %v1 447; CHECK-NEXT: b.l.t (, %s10) 448 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 449 ret <256 x double> %5 450} 451 452; Function Attrs: nounwind readonly 453define fastcc <256 x double> @vgtnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 454; CHECK-LABEL: vgtnc_vvssml_imm_3: 455; CHECK: # %bb.0: 456; CHECK-NEXT: lea %s0, 256 457; CHECK-NEXT: lvl %s0 458; CHECK-NEXT: vgt.nc %v0, %v0, 8, 0, %vm1 459; CHECK-NEXT: b.l.t (, %s10) 460 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 461 ret <256 x double> %3 462} 463 464; Function Attrs: nounwind readonly 465define fastcc <256 x double> @vgtnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 466; CHECK-LABEL: vgtnc_vvssmvl_imm_3: 467; CHECK: # %bb.0: 468; CHECK-NEXT: lea %s0, 128 469; CHECK-NEXT: lvl %s0 470; CHECK-NEXT: vgt.nc %v1, %v0, 8, 0, %vm1 471; CHECK-NEXT: lea %s16, 256 472; CHECK-NEXT: lvl %s16 473; CHECK-NEXT: vor %v0, (0)1, %v1 474; CHECK-NEXT: b.l.t (, %s10) 475 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 476 ret <256 x double> %4 477} 478 479; Function Attrs: nounwind readonly 480define fastcc <256 x double> @vgtnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 481; CHECK-LABEL: vgtnc_vvssl_no_imm_1: 482; CHECK: # %bb.0: 483; CHECK-NEXT: lea %s1, 256 484; CHECK-NEXT: or %s2, 8, (0)1 485; CHECK-NEXT: lvl %s1 486; CHECK-NEXT: vgt.nc %v0, %v0, %s0, %s2 487; CHECK-NEXT: b.l.t (, %s10) 488 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 489 ret <256 x double> %3 490} 491 492; Function Attrs: nounwind readonly 493define fastcc <256 x double> @vgtu_vvssl(<256 x double> %0, i64 %1, i64 %2) { 494; CHECK-LABEL: vgtu_vvssl: 495; CHECK: # %bb.0: 496; CHECK-NEXT: lea %s2, 256 497; CHECK-NEXT: lvl %s2 498; CHECK-NEXT: vgtu %v0, %v0, %s0, %s1 499; CHECK-NEXT: b.l.t (, %s10) 500 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 501 ret <256 x double> %4 502} 503 504; Function Attrs: nounwind readonly 505declare <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double>, i64, i64, i32) 506 507; Function Attrs: nounwind readonly 508define fastcc <256 x double> @vgtu_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 509; CHECK-LABEL: vgtu_vvssvl: 510; CHECK: # %bb.0: 511; CHECK-NEXT: lea %s2, 128 512; CHECK-NEXT: lvl %s2 513; CHECK-NEXT: vgtu %v1, %v0, %s0, %s1 514; CHECK-NEXT: lea %s16, 256 515; CHECK-NEXT: lvl %s16 516; CHECK-NEXT: vor %v0, (0)1, %v1 517; CHECK-NEXT: b.l.t (, %s10) 518 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 519 ret <256 x double> %5 520} 521 522; Function Attrs: nounwind readonly 523declare <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 524 525; Function Attrs: nounwind readonly 526define fastcc <256 x double> @vgtu_vvssl_imm_1(<256 x double> %0, i64 %1) { 527; CHECK-LABEL: vgtu_vvssl_imm_1: 528; CHECK: # %bb.0: 529; CHECK-NEXT: lea %s1, 256 530; CHECK-NEXT: lvl %s1 531; CHECK-NEXT: vgtu %v0, %v0, %s0, 0 532; CHECK-NEXT: b.l.t (, %s10) 533 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 534 ret <256 x double> %3 535} 536 537; Function Attrs: nounwind readonly 538define fastcc <256 x double> @vgtu_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 539; CHECK-LABEL: vgtu_vvssvl_imm_1: 540; CHECK: # %bb.0: 541; CHECK-NEXT: lea %s1, 128 542; CHECK-NEXT: lvl %s1 543; CHECK-NEXT: vgtu %v1, %v0, %s0, 0 544; CHECK-NEXT: lea %s16, 256 545; CHECK-NEXT: lvl %s16 546; CHECK-NEXT: vor %v0, (0)1, %v1 547; CHECK-NEXT: b.l.t (, %s10) 548 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 549 ret <256 x double> %4 550} 551 552; Function Attrs: nounwind readonly 553define fastcc <256 x double> @vgtu_vvssl_imm_2(<256 x double> %0, i64 %1) { 554; CHECK-LABEL: vgtu_vvssl_imm_2: 555; CHECK: # %bb.0: 556; CHECK-NEXT: lea %s1, 256 557; CHECK-NEXT: lvl %s1 558; CHECK-NEXT: vgtu %v0, %v0, 8, %s0 559; CHECK-NEXT: b.l.t (, %s10) 560 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 561 ret <256 x double> %3 562} 563 564; Function Attrs: nounwind readonly 565define fastcc <256 x double> @vgtu_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 566; CHECK-LABEL: vgtu_vvssvl_imm_2: 567; CHECK: # %bb.0: 568; CHECK-NEXT: lea %s1, 128 569; CHECK-NEXT: lvl %s1 570; CHECK-NEXT: vgtu %v1, %v0, 8, %s0 571; CHECK-NEXT: lea %s16, 256 572; CHECK-NEXT: lvl %s16 573; CHECK-NEXT: vor %v0, (0)1, %v1 574; CHECK-NEXT: b.l.t (, %s10) 575 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 576 ret <256 x double> %4 577} 578 579; Function Attrs: nounwind readonly 580define fastcc <256 x double> @vgtu_vvssl_imm_3(<256 x double> %0) { 581; CHECK-LABEL: vgtu_vvssl_imm_3: 582; CHECK: # %bb.0: 583; CHECK-NEXT: lea %s0, 256 584; CHECK-NEXT: lvl %s0 585; CHECK-NEXT: vgtu %v0, %v0, 8, 0 586; CHECK-NEXT: b.l.t (, %s10) 587 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 588 ret <256 x double> %2 589} 590 591; Function Attrs: nounwind readonly 592define fastcc <256 x double> @vgtu_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 593; CHECK-LABEL: vgtu_vvssvl_imm_3: 594; CHECK: # %bb.0: 595; CHECK-NEXT: lea %s0, 128 596; CHECK-NEXT: lvl %s0 597; CHECK-NEXT: vgtu %v1, %v0, 8, 0 598; CHECK-NEXT: lea %s16, 256 599; CHECK-NEXT: lvl %s16 600; CHECK-NEXT: vor %v0, (0)1, %v1 601; CHECK-NEXT: b.l.t (, %s10) 602 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 603 ret <256 x double> %3 604} 605 606; Function Attrs: nounwind readonly 607define fastcc <256 x double> @vgtu_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 608; CHECK-LABEL: vgtu_vvssml: 609; CHECK: # %bb.0: 610; CHECK-NEXT: lea %s2, 256 611; CHECK-NEXT: lvl %s2 612; CHECK-NEXT: vgtu %v0, %v0, %s0, %s1, %vm1 613; CHECK-NEXT: b.l.t (, %s10) 614 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 615 ret <256 x double> %5 616} 617 618; Function Attrs: nounwind readonly 619declare <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 620 621; Function Attrs: nounwind readonly 622define fastcc <256 x double> @vgtu_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 623; CHECK-LABEL: vgtu_vvssmvl: 624; CHECK: # %bb.0: 625; CHECK-NEXT: lea %s2, 128 626; CHECK-NEXT: lvl %s2 627; CHECK-NEXT: vgtu %v1, %v0, %s0, %s1, %vm1 628; CHECK-NEXT: lea %s16, 256 629; CHECK-NEXT: lvl %s16 630; CHECK-NEXT: vor %v0, (0)1, %v1 631; CHECK-NEXT: b.l.t (, %s10) 632 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 633 ret <256 x double> %6 634} 635 636; Function Attrs: nounwind readonly 637declare <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 638 639; Function Attrs: nounwind readonly 640define fastcc <256 x double> @vgtu_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 641; CHECK-LABEL: vgtu_vvssml_imm_1: 642; CHECK: # %bb.0: 643; CHECK-NEXT: lea %s1, 256 644; CHECK-NEXT: lvl %s1 645; CHECK-NEXT: vgtu %v0, %v0, %s0, 0, %vm1 646; CHECK-NEXT: b.l.t (, %s10) 647 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 648 ret <256 x double> %4 649} 650 651; Function Attrs: nounwind readonly 652define fastcc <256 x double> @vgtu_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 653; CHECK-LABEL: vgtu_vvssmvl_imm_1: 654; CHECK: # %bb.0: 655; CHECK-NEXT: lea %s1, 128 656; CHECK-NEXT: lvl %s1 657; CHECK-NEXT: vgtu %v1, %v0, %s0, 0, %vm1 658; CHECK-NEXT: lea %s16, 256 659; CHECK-NEXT: lvl %s16 660; CHECK-NEXT: vor %v0, (0)1, %v1 661; CHECK-NEXT: b.l.t (, %s10) 662 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 663 ret <256 x double> %5 664} 665 666; Function Attrs: nounwind readonly 667define fastcc <256 x double> @vgtu_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 668; CHECK-LABEL: vgtu_vvssml_imm_2: 669; CHECK: # %bb.0: 670; CHECK-NEXT: lea %s1, 256 671; CHECK-NEXT: lvl %s1 672; CHECK-NEXT: vgtu %v0, %v0, 8, %s0, %vm1 673; CHECK-NEXT: b.l.t (, %s10) 674 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 675 ret <256 x double> %4 676} 677 678; Function Attrs: nounwind readonly 679define fastcc <256 x double> @vgtu_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 680; CHECK-LABEL: vgtu_vvssmvl_imm_2: 681; CHECK: # %bb.0: 682; CHECK-NEXT: lea %s1, 128 683; CHECK-NEXT: lvl %s1 684; CHECK-NEXT: vgtu %v1, %v0, 8, %s0, %vm1 685; CHECK-NEXT: lea %s16, 256 686; CHECK-NEXT: lvl %s16 687; CHECK-NEXT: vor %v0, (0)1, %v1 688; CHECK-NEXT: b.l.t (, %s10) 689 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 690 ret <256 x double> %5 691} 692 693; Function Attrs: nounwind readonly 694define fastcc <256 x double> @vgtu_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 695; CHECK-LABEL: vgtu_vvssml_imm_3: 696; CHECK: # %bb.0: 697; CHECK-NEXT: lea %s0, 256 698; CHECK-NEXT: lvl %s0 699; CHECK-NEXT: vgtu %v0, %v0, 8, 0, %vm1 700; CHECK-NEXT: b.l.t (, %s10) 701 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 702 ret <256 x double> %3 703} 704 705; Function Attrs: nounwind readonly 706define fastcc <256 x double> @vgtu_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 707; CHECK-LABEL: vgtu_vvssmvl_imm_3: 708; CHECK: # %bb.0: 709; CHECK-NEXT: lea %s0, 128 710; CHECK-NEXT: lvl %s0 711; CHECK-NEXT: vgtu %v1, %v0, 8, 0, %vm1 712; CHECK-NEXT: lea %s16, 256 713; CHECK-NEXT: lvl %s16 714; CHECK-NEXT: vor %v0, (0)1, %v1 715; CHECK-NEXT: b.l.t (, %s10) 716 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 717 ret <256 x double> %4 718} 719 720; Function Attrs: nounwind readonly 721define fastcc <256 x double> @vgtu_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 722; CHECK-LABEL: vgtu_vvssl_no_imm_1: 723; CHECK: # %bb.0: 724; CHECK-NEXT: lea %s1, 256 725; CHECK-NEXT: or %s2, 8, (0)1 726; CHECK-NEXT: lvl %s1 727; CHECK-NEXT: vgtu %v0, %v0, %s0, %s2 728; CHECK-NEXT: b.l.t (, %s10) 729 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtu.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 730 ret <256 x double> %3 731} 732 733; Function Attrs: nounwind readonly 734define fastcc <256 x double> @vgtunc_vvssl(<256 x double> %0, i64 %1, i64 %2) { 735; CHECK-LABEL: vgtunc_vvssl: 736; CHECK: # %bb.0: 737; CHECK-NEXT: lea %s2, 256 738; CHECK-NEXT: lvl %s2 739; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s1 740; CHECK-NEXT: b.l.t (, %s10) 741 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 742 ret <256 x double> %4 743} 744 745; Function Attrs: nounwind readonly 746declare <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double>, i64, i64, i32) 747 748; Function Attrs: nounwind readonly 749define fastcc <256 x double> @vgtunc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 750; CHECK-LABEL: vgtunc_vvssvl: 751; CHECK: # %bb.0: 752; CHECK-NEXT: lea %s2, 128 753; CHECK-NEXT: lvl %s2 754; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, %s1 755; CHECK-NEXT: lea %s16, 256 756; CHECK-NEXT: lvl %s16 757; CHECK-NEXT: vor %v0, (0)1, %v1 758; CHECK-NEXT: b.l.t (, %s10) 759 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 760 ret <256 x double> %5 761} 762 763; Function Attrs: nounwind readonly 764declare <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 765 766; Function Attrs: nounwind readonly 767define fastcc <256 x double> @vgtunc_vvssl_imm_1(<256 x double> %0, i64 %1) { 768; CHECK-LABEL: vgtunc_vvssl_imm_1: 769; CHECK: # %bb.0: 770; CHECK-NEXT: lea %s1, 256 771; CHECK-NEXT: lvl %s1 772; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, 0 773; CHECK-NEXT: b.l.t (, %s10) 774 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 775 ret <256 x double> %3 776} 777 778; Function Attrs: nounwind readonly 779define fastcc <256 x double> @vgtunc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 780; CHECK-LABEL: vgtunc_vvssvl_imm_1: 781; CHECK: # %bb.0: 782; CHECK-NEXT: lea %s1, 128 783; CHECK-NEXT: lvl %s1 784; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, 0 785; CHECK-NEXT: lea %s16, 256 786; CHECK-NEXT: lvl %s16 787; CHECK-NEXT: vor %v0, (0)1, %v1 788; CHECK-NEXT: b.l.t (, %s10) 789 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 790 ret <256 x double> %4 791} 792 793; Function Attrs: nounwind readonly 794define fastcc <256 x double> @vgtunc_vvssl_imm_2(<256 x double> %0, i64 %1) { 795; CHECK-LABEL: vgtunc_vvssl_imm_2: 796; CHECK: # %bb.0: 797; CHECK-NEXT: lea %s1, 256 798; CHECK-NEXT: lvl %s1 799; CHECK-NEXT: vgtu.nc %v0, %v0, 8, %s0 800; CHECK-NEXT: b.l.t (, %s10) 801 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 802 ret <256 x double> %3 803} 804 805; Function Attrs: nounwind readonly 806define fastcc <256 x double> @vgtunc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 807; CHECK-LABEL: vgtunc_vvssvl_imm_2: 808; CHECK: # %bb.0: 809; CHECK-NEXT: lea %s1, 128 810; CHECK-NEXT: lvl %s1 811; CHECK-NEXT: vgtu.nc %v1, %v0, 8, %s0 812; CHECK-NEXT: lea %s16, 256 813; CHECK-NEXT: lvl %s16 814; CHECK-NEXT: vor %v0, (0)1, %v1 815; CHECK-NEXT: b.l.t (, %s10) 816 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 817 ret <256 x double> %4 818} 819 820; Function Attrs: nounwind readonly 821define fastcc <256 x double> @vgtunc_vvssl_imm_3(<256 x double> %0) { 822; CHECK-LABEL: vgtunc_vvssl_imm_3: 823; CHECK: # %bb.0: 824; CHECK-NEXT: lea %s0, 256 825; CHECK-NEXT: lvl %s0 826; CHECK-NEXT: vgtu.nc %v0, %v0, 8, 0 827; CHECK-NEXT: b.l.t (, %s10) 828 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 829 ret <256 x double> %2 830} 831 832; Function Attrs: nounwind readonly 833define fastcc <256 x double> @vgtunc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 834; CHECK-LABEL: vgtunc_vvssvl_imm_3: 835; CHECK: # %bb.0: 836; CHECK-NEXT: lea %s0, 128 837; CHECK-NEXT: lvl %s0 838; CHECK-NEXT: vgtu.nc %v1, %v0, 8, 0 839; CHECK-NEXT: lea %s16, 256 840; CHECK-NEXT: lvl %s16 841; CHECK-NEXT: vor %v0, (0)1, %v1 842; CHECK-NEXT: b.l.t (, %s10) 843 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 844 ret <256 x double> %3 845} 846 847; Function Attrs: nounwind readonly 848define fastcc <256 x double> @vgtunc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 849; CHECK-LABEL: vgtunc_vvssml: 850; CHECK: # %bb.0: 851; CHECK-NEXT: lea %s2, 256 852; CHECK-NEXT: lvl %s2 853; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s1, %vm1 854; CHECK-NEXT: b.l.t (, %s10) 855 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 856 ret <256 x double> %5 857} 858 859; Function Attrs: nounwind readonly 860declare <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 861 862; Function Attrs: nounwind readonly 863define fastcc <256 x double> @vgtunc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 864; CHECK-LABEL: vgtunc_vvssmvl: 865; CHECK: # %bb.0: 866; CHECK-NEXT: lea %s2, 128 867; CHECK-NEXT: lvl %s2 868; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, %s1, %vm1 869; CHECK-NEXT: lea %s16, 256 870; CHECK-NEXT: lvl %s16 871; CHECK-NEXT: vor %v0, (0)1, %v1 872; CHECK-NEXT: b.l.t (, %s10) 873 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 874 ret <256 x double> %6 875} 876 877; Function Attrs: nounwind readonly 878declare <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 879 880; Function Attrs: nounwind readonly 881define fastcc <256 x double> @vgtunc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 882; CHECK-LABEL: vgtunc_vvssml_imm_1: 883; CHECK: # %bb.0: 884; CHECK-NEXT: lea %s1, 256 885; CHECK-NEXT: lvl %s1 886; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, 0, %vm1 887; CHECK-NEXT: b.l.t (, %s10) 888 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 889 ret <256 x double> %4 890} 891 892; Function Attrs: nounwind readonly 893define fastcc <256 x double> @vgtunc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 894; CHECK-LABEL: vgtunc_vvssmvl_imm_1: 895; CHECK: # %bb.0: 896; CHECK-NEXT: lea %s1, 128 897; CHECK-NEXT: lvl %s1 898; CHECK-NEXT: vgtu.nc %v1, %v0, %s0, 0, %vm1 899; CHECK-NEXT: lea %s16, 256 900; CHECK-NEXT: lvl %s16 901; CHECK-NEXT: vor %v0, (0)1, %v1 902; CHECK-NEXT: b.l.t (, %s10) 903 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 904 ret <256 x double> %5 905} 906 907; Function Attrs: nounwind readonly 908define fastcc <256 x double> @vgtunc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 909; CHECK-LABEL: vgtunc_vvssml_imm_2: 910; CHECK: # %bb.0: 911; CHECK-NEXT: lea %s1, 256 912; CHECK-NEXT: lvl %s1 913; CHECK-NEXT: vgtu.nc %v0, %v0, 8, %s0, %vm1 914; CHECK-NEXT: b.l.t (, %s10) 915 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 916 ret <256 x double> %4 917} 918 919; Function Attrs: nounwind readonly 920define fastcc <256 x double> @vgtunc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 921; CHECK-LABEL: vgtunc_vvssmvl_imm_2: 922; CHECK: # %bb.0: 923; CHECK-NEXT: lea %s1, 128 924; CHECK-NEXT: lvl %s1 925; CHECK-NEXT: vgtu.nc %v1, %v0, 8, %s0, %vm1 926; CHECK-NEXT: lea %s16, 256 927; CHECK-NEXT: lvl %s16 928; CHECK-NEXT: vor %v0, (0)1, %v1 929; CHECK-NEXT: b.l.t (, %s10) 930 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 931 ret <256 x double> %5 932} 933 934; Function Attrs: nounwind readonly 935define fastcc <256 x double> @vgtunc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 936; CHECK-LABEL: vgtunc_vvssml_imm_3: 937; CHECK: # %bb.0: 938; CHECK-NEXT: lea %s0, 256 939; CHECK-NEXT: lvl %s0 940; CHECK-NEXT: vgtu.nc %v0, %v0, 8, 0, %vm1 941; CHECK-NEXT: b.l.t (, %s10) 942 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 943 ret <256 x double> %3 944} 945 946; Function Attrs: nounwind readonly 947define fastcc <256 x double> @vgtunc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 948; CHECK-LABEL: vgtunc_vvssmvl_imm_3: 949; CHECK: # %bb.0: 950; CHECK-NEXT: lea %s0, 128 951; CHECK-NEXT: lvl %s0 952; CHECK-NEXT: vgtu.nc %v1, %v0, 8, 0, %vm1 953; CHECK-NEXT: lea %s16, 256 954; CHECK-NEXT: lvl %s16 955; CHECK-NEXT: vor %v0, (0)1, %v1 956; CHECK-NEXT: b.l.t (, %s10) 957 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 958 ret <256 x double> %4 959} 960 961; Function Attrs: nounwind readonly 962define fastcc <256 x double> @vgtunc_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 963; CHECK-LABEL: vgtunc_vvssl_no_imm_1: 964; CHECK: # %bb.0: 965; CHECK-NEXT: lea %s1, 256 966; CHECK-NEXT: or %s2, 8, (0)1 967; CHECK-NEXT: lvl %s1 968; CHECK-NEXT: vgtu.nc %v0, %v0, %s0, %s2 969; CHECK-NEXT: b.l.t (, %s10) 970 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtunc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 971 ret <256 x double> %3 972} 973 974; Function Attrs: nounwind readonly 975define fastcc <256 x double> @vgtlsx_vvssl(<256 x double> %0, i64 %1, i64 %2) { 976; CHECK-LABEL: vgtlsx_vvssl: 977; CHECK: # %bb.0: 978; CHECK-NEXT: lea %s2, 256 979; CHECK-NEXT: lvl %s2 980; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s1 981; CHECK-NEXT: b.l.t (, %s10) 982 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 983 ret <256 x double> %4 984} 985 986; Function Attrs: nounwind readonly 987declare <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double>, i64, i64, i32) 988 989; Function Attrs: nounwind readonly 990define fastcc <256 x double> @vgtlsx_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 991; CHECK-LABEL: vgtlsx_vvssvl: 992; CHECK: # %bb.0: 993; CHECK-NEXT: lea %s2, 128 994; CHECK-NEXT: lvl %s2 995; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, %s1 996; CHECK-NEXT: lea %s16, 256 997; CHECK-NEXT: lvl %s16 998; CHECK-NEXT: vor %v0, (0)1, %v1 999; CHECK-NEXT: b.l.t (, %s10) 1000 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 1001 ret <256 x double> %5 1002} 1003 1004; Function Attrs: nounwind readonly 1005declare <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 1006 1007; Function Attrs: nounwind readonly 1008define fastcc <256 x double> @vgtlsx_vvssl_imm_1(<256 x double> %0, i64 %1) { 1009; CHECK-LABEL: vgtlsx_vvssl_imm_1: 1010; CHECK: # %bb.0: 1011; CHECK-NEXT: lea %s1, 256 1012; CHECK-NEXT: lvl %s1 1013; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, 0 1014; CHECK-NEXT: b.l.t (, %s10) 1015 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 1016 ret <256 x double> %3 1017} 1018 1019; Function Attrs: nounwind readonly 1020define fastcc <256 x double> @vgtlsx_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 1021; CHECK-LABEL: vgtlsx_vvssvl_imm_1: 1022; CHECK: # %bb.0: 1023; CHECK-NEXT: lea %s1, 128 1024; CHECK-NEXT: lvl %s1 1025; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, 0 1026; CHECK-NEXT: lea %s16, 256 1027; CHECK-NEXT: lvl %s16 1028; CHECK-NEXT: vor %v0, (0)1, %v1 1029; CHECK-NEXT: b.l.t (, %s10) 1030 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 1031 ret <256 x double> %4 1032} 1033 1034; Function Attrs: nounwind readonly 1035define fastcc <256 x double> @vgtlsx_vvssl_imm_2(<256 x double> %0, i64 %1) { 1036; CHECK-LABEL: vgtlsx_vvssl_imm_2: 1037; CHECK: # %bb.0: 1038; CHECK-NEXT: lea %s1, 256 1039; CHECK-NEXT: lvl %s1 1040; CHECK-NEXT: vgtl.sx %v0, %v0, 8, %s0 1041; CHECK-NEXT: b.l.t (, %s10) 1042 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 1043 ret <256 x double> %3 1044} 1045 1046; Function Attrs: nounwind readonly 1047define fastcc <256 x double> @vgtlsx_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 1048; CHECK-LABEL: vgtlsx_vvssvl_imm_2: 1049; CHECK: # %bb.0: 1050; CHECK-NEXT: lea %s1, 128 1051; CHECK-NEXT: lvl %s1 1052; CHECK-NEXT: vgtl.sx %v1, %v0, 8, %s0 1053; CHECK-NEXT: lea %s16, 256 1054; CHECK-NEXT: lvl %s16 1055; CHECK-NEXT: vor %v0, (0)1, %v1 1056; CHECK-NEXT: b.l.t (, %s10) 1057 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 1058 ret <256 x double> %4 1059} 1060 1061; Function Attrs: nounwind readonly 1062define fastcc <256 x double> @vgtlsx_vvssl_imm_3(<256 x double> %0) { 1063; CHECK-LABEL: vgtlsx_vvssl_imm_3: 1064; CHECK: # %bb.0: 1065; CHECK-NEXT: lea %s0, 256 1066; CHECK-NEXT: lvl %s0 1067; CHECK-NEXT: vgtl.sx %v0, %v0, 8, 0 1068; CHECK-NEXT: b.l.t (, %s10) 1069 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 1070 ret <256 x double> %2 1071} 1072 1073; Function Attrs: nounwind readonly 1074define fastcc <256 x double> @vgtlsx_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 1075; CHECK-LABEL: vgtlsx_vvssvl_imm_3: 1076; CHECK: # %bb.0: 1077; CHECK-NEXT: lea %s0, 128 1078; CHECK-NEXT: lvl %s0 1079; CHECK-NEXT: vgtl.sx %v1, %v0, 8, 0 1080; CHECK-NEXT: lea %s16, 256 1081; CHECK-NEXT: lvl %s16 1082; CHECK-NEXT: vor %v0, (0)1, %v1 1083; CHECK-NEXT: b.l.t (, %s10) 1084 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 1085 ret <256 x double> %3 1086} 1087 1088; Function Attrs: nounwind readonly 1089define fastcc <256 x double> @vgtlsx_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 1090; CHECK-LABEL: vgtlsx_vvssml: 1091; CHECK: # %bb.0: 1092; CHECK-NEXT: lea %s2, 256 1093; CHECK-NEXT: lvl %s2 1094; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s1, %vm1 1095; CHECK-NEXT: b.l.t (, %s10) 1096 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 1097 ret <256 x double> %5 1098} 1099 1100; Function Attrs: nounwind readonly 1101declare <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 1102 1103; Function Attrs: nounwind readonly 1104define fastcc <256 x double> @vgtlsx_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 1105; CHECK-LABEL: vgtlsx_vvssmvl: 1106; CHECK: # %bb.0: 1107; CHECK-NEXT: lea %s2, 128 1108; CHECK-NEXT: lvl %s2 1109; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, %s1, %vm1 1110; CHECK-NEXT: lea %s16, 256 1111; CHECK-NEXT: lvl %s16 1112; CHECK-NEXT: vor %v0, (0)1, %v1 1113; CHECK-NEXT: b.l.t (, %s10) 1114 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 1115 ret <256 x double> %6 1116} 1117 1118; Function Attrs: nounwind readonly 1119declare <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 1120 1121; Function Attrs: nounwind readonly 1122define fastcc <256 x double> @vgtlsx_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 1123; CHECK-LABEL: vgtlsx_vvssml_imm_1: 1124; CHECK: # %bb.0: 1125; CHECK-NEXT: lea %s1, 256 1126; CHECK-NEXT: lvl %s1 1127; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, 0, %vm1 1128; CHECK-NEXT: b.l.t (, %s10) 1129 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 1130 ret <256 x double> %4 1131} 1132 1133; Function Attrs: nounwind readonly 1134define fastcc <256 x double> @vgtlsx_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1135; CHECK-LABEL: vgtlsx_vvssmvl_imm_1: 1136; CHECK: # %bb.0: 1137; CHECK-NEXT: lea %s1, 128 1138; CHECK-NEXT: lvl %s1 1139; CHECK-NEXT: vgtl.sx %v1, %v0, %s0, 0, %vm1 1140; CHECK-NEXT: lea %s16, 256 1141; CHECK-NEXT: lvl %s16 1142; CHECK-NEXT: vor %v0, (0)1, %v1 1143; CHECK-NEXT: b.l.t (, %s10) 1144 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 1145 ret <256 x double> %5 1146} 1147 1148; Function Attrs: nounwind readonly 1149define fastcc <256 x double> @vgtlsx_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 1150; CHECK-LABEL: vgtlsx_vvssml_imm_2: 1151; CHECK: # %bb.0: 1152; CHECK-NEXT: lea %s1, 256 1153; CHECK-NEXT: lvl %s1 1154; CHECK-NEXT: vgtl.sx %v0, %v0, 8, %s0, %vm1 1155; CHECK-NEXT: b.l.t (, %s10) 1156 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 1157 ret <256 x double> %4 1158} 1159 1160; Function Attrs: nounwind readonly 1161define fastcc <256 x double> @vgtlsx_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1162; CHECK-LABEL: vgtlsx_vvssmvl_imm_2: 1163; CHECK: # %bb.0: 1164; CHECK-NEXT: lea %s1, 128 1165; CHECK-NEXT: lvl %s1 1166; CHECK-NEXT: vgtl.sx %v1, %v0, 8, %s0, %vm1 1167; CHECK-NEXT: lea %s16, 256 1168; CHECK-NEXT: lvl %s16 1169; CHECK-NEXT: vor %v0, (0)1, %v1 1170; CHECK-NEXT: b.l.t (, %s10) 1171 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 1172 ret <256 x double> %5 1173} 1174 1175; Function Attrs: nounwind readonly 1176define fastcc <256 x double> @vgtlsx_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 1177; CHECK-LABEL: vgtlsx_vvssml_imm_3: 1178; CHECK: # %bb.0: 1179; CHECK-NEXT: lea %s0, 256 1180; CHECK-NEXT: lvl %s0 1181; CHECK-NEXT: vgtl.sx %v0, %v0, 8, 0, %vm1 1182; CHECK-NEXT: b.l.t (, %s10) 1183 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 1184 ret <256 x double> %3 1185} 1186 1187; Function Attrs: nounwind readonly 1188define fastcc <256 x double> @vgtlsx_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 1189; CHECK-LABEL: vgtlsx_vvssmvl_imm_3: 1190; CHECK: # %bb.0: 1191; CHECK-NEXT: lea %s0, 128 1192; CHECK-NEXT: lvl %s0 1193; CHECK-NEXT: vgtl.sx %v1, %v0, 8, 0, %vm1 1194; CHECK-NEXT: lea %s16, 256 1195; CHECK-NEXT: lvl %s16 1196; CHECK-NEXT: vor %v0, (0)1, %v1 1197; CHECK-NEXT: b.l.t (, %s10) 1198 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 1199 ret <256 x double> %4 1200} 1201 1202; Function Attrs: nounwind readonly 1203define fastcc <256 x double> @vgtlsx_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 1204; CHECK-LABEL: vgtlsx_vvssl_no_imm_1: 1205; CHECK: # %bb.0: 1206; CHECK-NEXT: lea %s1, 256 1207; CHECK-NEXT: or %s2, 8, (0)1 1208; CHECK-NEXT: lvl %s1 1209; CHECK-NEXT: vgtl.sx %v0, %v0, %s0, %s2 1210; CHECK-NEXT: b.l.t (, %s10) 1211 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsx.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 1212 ret <256 x double> %3 1213} 1214 1215; Function Attrs: nounwind readonly 1216define fastcc <256 x double> @vgtlsxnc_vvssl(<256 x double> %0, i64 %1, i64 %2) { 1217; CHECK-LABEL: vgtlsxnc_vvssl: 1218; CHECK: # %bb.0: 1219; CHECK-NEXT: lea %s2, 256 1220; CHECK-NEXT: lvl %s2 1221; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s1 1222; CHECK-NEXT: b.l.t (, %s10) 1223 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 1224 ret <256 x double> %4 1225} 1226 1227; Function Attrs: nounwind readonly 1228declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double>, i64, i64, i32) 1229 1230; Function Attrs: nounwind readonly 1231define fastcc <256 x double> @vgtlsxnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 1232; CHECK-LABEL: vgtlsxnc_vvssvl: 1233; CHECK: # %bb.0: 1234; CHECK-NEXT: lea %s2, 128 1235; CHECK-NEXT: lvl %s2 1236; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, %s1 1237; CHECK-NEXT: lea %s16, 256 1238; CHECK-NEXT: lvl %s16 1239; CHECK-NEXT: vor %v0, (0)1, %v1 1240; CHECK-NEXT: b.l.t (, %s10) 1241 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 1242 ret <256 x double> %5 1243} 1244 1245; Function Attrs: nounwind readonly 1246declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 1247 1248; Function Attrs: nounwind readonly 1249define fastcc <256 x double> @vgtlsxnc_vvssl_imm_1(<256 x double> %0, i64 %1) { 1250; CHECK-LABEL: vgtlsxnc_vvssl_imm_1: 1251; CHECK: # %bb.0: 1252; CHECK-NEXT: lea %s1, 256 1253; CHECK-NEXT: lvl %s1 1254; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, 0 1255; CHECK-NEXT: b.l.t (, %s10) 1256 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 1257 ret <256 x double> %3 1258} 1259 1260; Function Attrs: nounwind readonly 1261define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 1262; CHECK-LABEL: vgtlsxnc_vvssvl_imm_1: 1263; CHECK: # %bb.0: 1264; CHECK-NEXT: lea %s1, 128 1265; CHECK-NEXT: lvl %s1 1266; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, 0 1267; CHECK-NEXT: lea %s16, 256 1268; CHECK-NEXT: lvl %s16 1269; CHECK-NEXT: vor %v0, (0)1, %v1 1270; CHECK-NEXT: b.l.t (, %s10) 1271 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 1272 ret <256 x double> %4 1273} 1274 1275; Function Attrs: nounwind readonly 1276define fastcc <256 x double> @vgtlsxnc_vvssl_imm_2(<256 x double> %0, i64 %1) { 1277; CHECK-LABEL: vgtlsxnc_vvssl_imm_2: 1278; CHECK: # %bb.0: 1279; CHECK-NEXT: lea %s1, 256 1280; CHECK-NEXT: lvl %s1 1281; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, %s0 1282; CHECK-NEXT: b.l.t (, %s10) 1283 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 1284 ret <256 x double> %3 1285} 1286 1287; Function Attrs: nounwind readonly 1288define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 1289; CHECK-LABEL: vgtlsxnc_vvssvl_imm_2: 1290; CHECK: # %bb.0: 1291; CHECK-NEXT: lea %s1, 128 1292; CHECK-NEXT: lvl %s1 1293; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, %s0 1294; CHECK-NEXT: lea %s16, 256 1295; CHECK-NEXT: lvl %s16 1296; CHECK-NEXT: vor %v0, (0)1, %v1 1297; CHECK-NEXT: b.l.t (, %s10) 1298 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 1299 ret <256 x double> %4 1300} 1301 1302; Function Attrs: nounwind readonly 1303define fastcc <256 x double> @vgtlsxnc_vvssl_imm_3(<256 x double> %0) { 1304; CHECK-LABEL: vgtlsxnc_vvssl_imm_3: 1305; CHECK: # %bb.0: 1306; CHECK-NEXT: lea %s0, 256 1307; CHECK-NEXT: lvl %s0 1308; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, 0 1309; CHECK-NEXT: b.l.t (, %s10) 1310 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 1311 ret <256 x double> %2 1312} 1313 1314; Function Attrs: nounwind readonly 1315define fastcc <256 x double> @vgtlsxnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 1316; CHECK-LABEL: vgtlsxnc_vvssvl_imm_3: 1317; CHECK: # %bb.0: 1318; CHECK-NEXT: lea %s0, 128 1319; CHECK-NEXT: lvl %s0 1320; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, 0 1321; CHECK-NEXT: lea %s16, 256 1322; CHECK-NEXT: lvl %s16 1323; CHECK-NEXT: vor %v0, (0)1, %v1 1324; CHECK-NEXT: b.l.t (, %s10) 1325 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 1326 ret <256 x double> %3 1327} 1328 1329; Function Attrs: nounwind readonly 1330define fastcc <256 x double> @vgtlsxnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 1331; CHECK-LABEL: vgtlsxnc_vvssml: 1332; CHECK: # %bb.0: 1333; CHECK-NEXT: lea %s2, 256 1334; CHECK-NEXT: lvl %s2 1335; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s1, %vm1 1336; CHECK-NEXT: b.l.t (, %s10) 1337 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 1338 ret <256 x double> %5 1339} 1340 1341; Function Attrs: nounwind readonly 1342declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 1343 1344; Function Attrs: nounwind readonly 1345define fastcc <256 x double> @vgtlsxnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 1346; CHECK-LABEL: vgtlsxnc_vvssmvl: 1347; CHECK: # %bb.0: 1348; CHECK-NEXT: lea %s2, 128 1349; CHECK-NEXT: lvl %s2 1350; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, %s1, %vm1 1351; CHECK-NEXT: lea %s16, 256 1352; CHECK-NEXT: lvl %s16 1353; CHECK-NEXT: vor %v0, (0)1, %v1 1354; CHECK-NEXT: b.l.t (, %s10) 1355 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 1356 ret <256 x double> %6 1357} 1358 1359; Function Attrs: nounwind readonly 1360declare <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 1361 1362; Function Attrs: nounwind readonly 1363define fastcc <256 x double> @vgtlsxnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 1364; CHECK-LABEL: vgtlsxnc_vvssml_imm_1: 1365; CHECK: # %bb.0: 1366; CHECK-NEXT: lea %s1, 256 1367; CHECK-NEXT: lvl %s1 1368; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, 0, %vm1 1369; CHECK-NEXT: b.l.t (, %s10) 1370 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 1371 ret <256 x double> %4 1372} 1373 1374; Function Attrs: nounwind readonly 1375define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1376; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_1: 1377; CHECK: # %bb.0: 1378; CHECK-NEXT: lea %s1, 128 1379; CHECK-NEXT: lvl %s1 1380; CHECK-NEXT: vgtl.sx.nc %v1, %v0, %s0, 0, %vm1 1381; CHECK-NEXT: lea %s16, 256 1382; CHECK-NEXT: lvl %s16 1383; CHECK-NEXT: vor %v0, (0)1, %v1 1384; CHECK-NEXT: b.l.t (, %s10) 1385 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 1386 ret <256 x double> %5 1387} 1388 1389; Function Attrs: nounwind readonly 1390define fastcc <256 x double> @vgtlsxnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 1391; CHECK-LABEL: vgtlsxnc_vvssml_imm_2: 1392; CHECK: # %bb.0: 1393; CHECK-NEXT: lea %s1, 256 1394; CHECK-NEXT: lvl %s1 1395; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, %s0, %vm1 1396; CHECK-NEXT: b.l.t (, %s10) 1397 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 1398 ret <256 x double> %4 1399} 1400 1401; Function Attrs: nounwind readonly 1402define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1403; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_2: 1404; CHECK: # %bb.0: 1405; CHECK-NEXT: lea %s1, 128 1406; CHECK-NEXT: lvl %s1 1407; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, %s0, %vm1 1408; CHECK-NEXT: lea %s16, 256 1409; CHECK-NEXT: lvl %s16 1410; CHECK-NEXT: vor %v0, (0)1, %v1 1411; CHECK-NEXT: b.l.t (, %s10) 1412 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 1413 ret <256 x double> %5 1414} 1415 1416; Function Attrs: nounwind readonly 1417define fastcc <256 x double> @vgtlsxnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 1418; CHECK-LABEL: vgtlsxnc_vvssml_imm_3: 1419; CHECK: # %bb.0: 1420; CHECK-NEXT: lea %s0, 256 1421; CHECK-NEXT: lvl %s0 1422; CHECK-NEXT: vgtl.sx.nc %v0, %v0, 8, 0, %vm1 1423; CHECK-NEXT: b.l.t (, %s10) 1424 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 1425 ret <256 x double> %3 1426} 1427 1428; Function Attrs: nounwind readonly 1429define fastcc <256 x double> @vgtlsxnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 1430; CHECK-LABEL: vgtlsxnc_vvssmvl_imm_3: 1431; CHECK: # %bb.0: 1432; CHECK-NEXT: lea %s0, 128 1433; CHECK-NEXT: lvl %s0 1434; CHECK-NEXT: vgtl.sx.nc %v1, %v0, 8, 0, %vm1 1435; CHECK-NEXT: lea %s16, 256 1436; CHECK-NEXT: lvl %s16 1437; CHECK-NEXT: vor %v0, (0)1, %v1 1438; CHECK-NEXT: b.l.t (, %s10) 1439 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 1440 ret <256 x double> %4 1441} 1442 1443; Function Attrs: nounwind readonly 1444define fastcc <256 x double> @vgtlsxnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 1445; CHECK-LABEL: vgtlsxnc_vvssl_no_imm_1: 1446; CHECK: # %bb.0: 1447; CHECK-NEXT: lea %s1, 256 1448; CHECK-NEXT: or %s2, 8, (0)1 1449; CHECK-NEXT: lvl %s1 1450; CHECK-NEXT: vgtl.sx.nc %v0, %v0, %s0, %s2 1451; CHECK-NEXT: b.l.t (, %s10) 1452 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlsxnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 1453 ret <256 x double> %3 1454} 1455 1456; Function Attrs: nounwind readonly 1457define fastcc <256 x double> @vgtlzx_vvssl(<256 x double> %0, i64 %1, i64 %2) { 1458; CHECK-LABEL: vgtlzx_vvssl: 1459; CHECK: # %bb.0: 1460; CHECK-NEXT: lea %s2, 256 1461; CHECK-NEXT: lvl %s2 1462; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s1 1463; CHECK-NEXT: b.l.t (, %s10) 1464 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 1465 ret <256 x double> %4 1466} 1467 1468; Function Attrs: nounwind readonly 1469declare <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double>, i64, i64, i32) 1470 1471; Function Attrs: nounwind readonly 1472define fastcc <256 x double> @vgtlzx_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 1473; CHECK-LABEL: vgtlzx_vvssvl: 1474; CHECK: # %bb.0: 1475; CHECK-NEXT: lea %s2, 128 1476; CHECK-NEXT: lvl %s2 1477; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, %s1 1478; CHECK-NEXT: lea %s16, 256 1479; CHECK-NEXT: lvl %s16 1480; CHECK-NEXT: vor %v0, (0)1, %v1 1481; CHECK-NEXT: b.l.t (, %s10) 1482 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 1483 ret <256 x double> %5 1484} 1485 1486; Function Attrs: nounwind readonly 1487declare <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 1488 1489; Function Attrs: nounwind readonly 1490define fastcc <256 x double> @vgtlzx_vvssl_imm_1(<256 x double> %0, i64 %1) { 1491; CHECK-LABEL: vgtlzx_vvssl_imm_1: 1492; CHECK: # %bb.0: 1493; CHECK-NEXT: lea %s1, 256 1494; CHECK-NEXT: lvl %s1 1495; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, 0 1496; CHECK-NEXT: b.l.t (, %s10) 1497 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 1498 ret <256 x double> %3 1499} 1500 1501; Function Attrs: nounwind readonly 1502define fastcc <256 x double> @vgtlzx_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 1503; CHECK-LABEL: vgtlzx_vvssvl_imm_1: 1504; CHECK: # %bb.0: 1505; CHECK-NEXT: lea %s1, 128 1506; CHECK-NEXT: lvl %s1 1507; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, 0 1508; CHECK-NEXT: lea %s16, 256 1509; CHECK-NEXT: lvl %s16 1510; CHECK-NEXT: vor %v0, (0)1, %v1 1511; CHECK-NEXT: b.l.t (, %s10) 1512 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 1513 ret <256 x double> %4 1514} 1515 1516; Function Attrs: nounwind readonly 1517define fastcc <256 x double> @vgtlzx_vvssl_imm_2(<256 x double> %0, i64 %1) { 1518; CHECK-LABEL: vgtlzx_vvssl_imm_2: 1519; CHECK: # %bb.0: 1520; CHECK-NEXT: lea %s1, 256 1521; CHECK-NEXT: lvl %s1 1522; CHECK-NEXT: vgtl.zx %v0, %v0, 8, %s0 1523; CHECK-NEXT: b.l.t (, %s10) 1524 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 1525 ret <256 x double> %3 1526} 1527 1528; Function Attrs: nounwind readonly 1529define fastcc <256 x double> @vgtlzx_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 1530; CHECK-LABEL: vgtlzx_vvssvl_imm_2: 1531; CHECK: # %bb.0: 1532; CHECK-NEXT: lea %s1, 128 1533; CHECK-NEXT: lvl %s1 1534; CHECK-NEXT: vgtl.zx %v1, %v0, 8, %s0 1535; CHECK-NEXT: lea %s16, 256 1536; CHECK-NEXT: lvl %s16 1537; CHECK-NEXT: vor %v0, (0)1, %v1 1538; CHECK-NEXT: b.l.t (, %s10) 1539 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 1540 ret <256 x double> %4 1541} 1542 1543; Function Attrs: nounwind readonly 1544define fastcc <256 x double> @vgtlzx_vvssl_imm_3(<256 x double> %0) { 1545; CHECK-LABEL: vgtlzx_vvssl_imm_3: 1546; CHECK: # %bb.0: 1547; CHECK-NEXT: lea %s0, 256 1548; CHECK-NEXT: lvl %s0 1549; CHECK-NEXT: vgtl.zx %v0, %v0, 8, 0 1550; CHECK-NEXT: b.l.t (, %s10) 1551 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 1552 ret <256 x double> %2 1553} 1554 1555; Function Attrs: nounwind readonly 1556define fastcc <256 x double> @vgtlzx_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 1557; CHECK-LABEL: vgtlzx_vvssvl_imm_3: 1558; CHECK: # %bb.0: 1559; CHECK-NEXT: lea %s0, 128 1560; CHECK-NEXT: lvl %s0 1561; CHECK-NEXT: vgtl.zx %v1, %v0, 8, 0 1562; CHECK-NEXT: lea %s16, 256 1563; CHECK-NEXT: lvl %s16 1564; CHECK-NEXT: vor %v0, (0)1, %v1 1565; CHECK-NEXT: b.l.t (, %s10) 1566 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 1567 ret <256 x double> %3 1568} 1569 1570; Function Attrs: nounwind readonly 1571define fastcc <256 x double> @vgtlzx_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 1572; CHECK-LABEL: vgtlzx_vvssml: 1573; CHECK: # %bb.0: 1574; CHECK-NEXT: lea %s2, 256 1575; CHECK-NEXT: lvl %s2 1576; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s1, %vm1 1577; CHECK-NEXT: b.l.t (, %s10) 1578 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 1579 ret <256 x double> %5 1580} 1581 1582; Function Attrs: nounwind readonly 1583declare <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 1584 1585; Function Attrs: nounwind readonly 1586define fastcc <256 x double> @vgtlzx_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 1587; CHECK-LABEL: vgtlzx_vvssmvl: 1588; CHECK: # %bb.0: 1589; CHECK-NEXT: lea %s2, 128 1590; CHECK-NEXT: lvl %s2 1591; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, %s1, %vm1 1592; CHECK-NEXT: lea %s16, 256 1593; CHECK-NEXT: lvl %s16 1594; CHECK-NEXT: vor %v0, (0)1, %v1 1595; CHECK-NEXT: b.l.t (, %s10) 1596 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 1597 ret <256 x double> %6 1598} 1599 1600; Function Attrs: nounwind readonly 1601declare <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 1602 1603; Function Attrs: nounwind readonly 1604define fastcc <256 x double> @vgtlzx_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 1605; CHECK-LABEL: vgtlzx_vvssml_imm_1: 1606; CHECK: # %bb.0: 1607; CHECK-NEXT: lea %s1, 256 1608; CHECK-NEXT: lvl %s1 1609; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, 0, %vm1 1610; CHECK-NEXT: b.l.t (, %s10) 1611 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 1612 ret <256 x double> %4 1613} 1614 1615; Function Attrs: nounwind readonly 1616define fastcc <256 x double> @vgtlzx_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1617; CHECK-LABEL: vgtlzx_vvssmvl_imm_1: 1618; CHECK: # %bb.0: 1619; CHECK-NEXT: lea %s1, 128 1620; CHECK-NEXT: lvl %s1 1621; CHECK-NEXT: vgtl.zx %v1, %v0, %s0, 0, %vm1 1622; CHECK-NEXT: lea %s16, 256 1623; CHECK-NEXT: lvl %s16 1624; CHECK-NEXT: vor %v0, (0)1, %v1 1625; CHECK-NEXT: b.l.t (, %s10) 1626 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 1627 ret <256 x double> %5 1628} 1629 1630; Function Attrs: nounwind readonly 1631define fastcc <256 x double> @vgtlzx_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 1632; CHECK-LABEL: vgtlzx_vvssml_imm_2: 1633; CHECK: # %bb.0: 1634; CHECK-NEXT: lea %s1, 256 1635; CHECK-NEXT: lvl %s1 1636; CHECK-NEXT: vgtl.zx %v0, %v0, 8, %s0, %vm1 1637; CHECK-NEXT: b.l.t (, %s10) 1638 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 1639 ret <256 x double> %4 1640} 1641 1642; Function Attrs: nounwind readonly 1643define fastcc <256 x double> @vgtlzx_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1644; CHECK-LABEL: vgtlzx_vvssmvl_imm_2: 1645; CHECK: # %bb.0: 1646; CHECK-NEXT: lea %s1, 128 1647; CHECK-NEXT: lvl %s1 1648; CHECK-NEXT: vgtl.zx %v1, %v0, 8, %s0, %vm1 1649; CHECK-NEXT: lea %s16, 256 1650; CHECK-NEXT: lvl %s16 1651; CHECK-NEXT: vor %v0, (0)1, %v1 1652; CHECK-NEXT: b.l.t (, %s10) 1653 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 1654 ret <256 x double> %5 1655} 1656 1657; Function Attrs: nounwind readonly 1658define fastcc <256 x double> @vgtlzx_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 1659; CHECK-LABEL: vgtlzx_vvssml_imm_3: 1660; CHECK: # %bb.0: 1661; CHECK-NEXT: lea %s0, 256 1662; CHECK-NEXT: lvl %s0 1663; CHECK-NEXT: vgtl.zx %v0, %v0, 8, 0, %vm1 1664; CHECK-NEXT: b.l.t (, %s10) 1665 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 1666 ret <256 x double> %3 1667} 1668 1669; Function Attrs: nounwind readonly 1670define fastcc <256 x double> @vgtlzx_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 1671; CHECK-LABEL: vgtlzx_vvssmvl_imm_3: 1672; CHECK: # %bb.0: 1673; CHECK-NEXT: lea %s0, 128 1674; CHECK-NEXT: lvl %s0 1675; CHECK-NEXT: vgtl.zx %v1, %v0, 8, 0, %vm1 1676; CHECK-NEXT: lea %s16, 256 1677; CHECK-NEXT: lvl %s16 1678; CHECK-NEXT: vor %v0, (0)1, %v1 1679; CHECK-NEXT: b.l.t (, %s10) 1680 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 1681 ret <256 x double> %4 1682} 1683 1684; Function Attrs: nounwind readonly 1685define fastcc <256 x double> @vgtlzx_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 1686; CHECK-LABEL: vgtlzx_vvssl_no_imm_1: 1687; CHECK: # %bb.0: 1688; CHECK-NEXT: lea %s1, 256 1689; CHECK-NEXT: or %s2, 8, (0)1 1690; CHECK-NEXT: lvl %s1 1691; CHECK-NEXT: vgtl.zx %v0, %v0, %s0, %s2 1692; CHECK-NEXT: b.l.t (, %s10) 1693 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzx.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 1694 ret <256 x double> %3 1695} 1696 1697; Function Attrs: nounwind readonly 1698define fastcc <256 x double> @vgtlzxnc_vvssl(<256 x double> %0, i64 %1, i64 %2) { 1699; CHECK-LABEL: vgtlzxnc_vvssl: 1700; CHECK: # %bb.0: 1701; CHECK-NEXT: lea %s2, 256 1702; CHECK-NEXT: lvl %s2 1703; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s1 1704; CHECK-NEXT: b.l.t (, %s10) 1705 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 %2, i32 256) 1706 ret <256 x double> %4 1707} 1708 1709; Function Attrs: nounwind readonly 1710declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double>, i64, i64, i32) 1711 1712; Function Attrs: nounwind readonly 1713define fastcc <256 x double> @vgtlzxnc_vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3) { 1714; CHECK-LABEL: vgtlzxnc_vvssvl: 1715; CHECK: # %bb.0: 1716; CHECK-NEXT: lea %s2, 128 1717; CHECK-NEXT: lvl %s2 1718; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, %s1 1719; CHECK-NEXT: lea %s16, 256 1720; CHECK-NEXT: lvl %s16 1721; CHECK-NEXT: vor %v0, (0)1, %v1 1722; CHECK-NEXT: b.l.t (, %s10) 1723 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 %1, i64 %2, <256 x double> %3, i32 128) 1724 ret <256 x double> %5 1725} 1726 1727; Function Attrs: nounwind readonly 1728declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double>, i64, i64, <256 x double>, i32) 1729 1730; Function Attrs: nounwind readonly 1731define fastcc <256 x double> @vgtlzxnc_vvssl_imm_1(<256 x double> %0, i64 %1) { 1732; CHECK-LABEL: vgtlzxnc_vvssl_imm_1: 1733; CHECK: # %bb.0: 1734; CHECK-NEXT: lea %s1, 256 1735; CHECK-NEXT: lvl %s1 1736; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, 0 1737; CHECK-NEXT: b.l.t (, %s10) 1738 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 0, i32 256) 1739 ret <256 x double> %3 1740} 1741 1742; Function Attrs: nounwind readonly 1743define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_1(<256 x double> %0, i64 %1, <256 x double> %2) { 1744; CHECK-LABEL: vgtlzxnc_vvssvl_imm_1: 1745; CHECK: # %bb.0: 1746; CHECK-NEXT: lea %s1, 128 1747; CHECK-NEXT: lvl %s1 1748; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, 0 1749; CHECK-NEXT: lea %s16, 256 1750; CHECK-NEXT: lvl %s16 1751; CHECK-NEXT: vor %v0, (0)1, %v1 1752; CHECK-NEXT: b.l.t (, %s10) 1753 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 %1, i64 0, <256 x double> %2, i32 128) 1754 ret <256 x double> %4 1755} 1756 1757; Function Attrs: nounwind readonly 1758define fastcc <256 x double> @vgtlzxnc_vvssl_imm_2(<256 x double> %0, i64 %1) { 1759; CHECK-LABEL: vgtlzxnc_vvssl_imm_2: 1760; CHECK: # %bb.0: 1761; CHECK-NEXT: lea %s1, 256 1762; CHECK-NEXT: lvl %s1 1763; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, %s0 1764; CHECK-NEXT: b.l.t (, %s10) 1765 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 8, i64 %1, i32 256) 1766 ret <256 x double> %3 1767} 1768 1769; Function Attrs: nounwind readonly 1770define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_2(<256 x double> %0, i64 %1, <256 x double> %2) { 1771; CHECK-LABEL: vgtlzxnc_vvssvl_imm_2: 1772; CHECK: # %bb.0: 1773; CHECK-NEXT: lea %s1, 128 1774; CHECK-NEXT: lvl %s1 1775; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, %s0 1776; CHECK-NEXT: lea %s16, 256 1777; CHECK-NEXT: lvl %s16 1778; CHECK-NEXT: vor %v0, (0)1, %v1 1779; CHECK-NEXT: b.l.t (, %s10) 1780 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 8, i64 %1, <256 x double> %2, i32 128) 1781 ret <256 x double> %4 1782} 1783 1784; Function Attrs: nounwind readonly 1785define fastcc <256 x double> @vgtlzxnc_vvssl_imm_3(<256 x double> %0) { 1786; CHECK-LABEL: vgtlzxnc_vvssl_imm_3: 1787; CHECK: # %bb.0: 1788; CHECK-NEXT: lea %s0, 256 1789; CHECK-NEXT: lvl %s0 1790; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, 0 1791; CHECK-NEXT: b.l.t (, %s10) 1792 %2 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 8, i64 0, i32 256) 1793 ret <256 x double> %2 1794} 1795 1796; Function Attrs: nounwind readonly 1797define fastcc <256 x double> @vgtlzxnc_vvssvl_imm_3(<256 x double> %0, <256 x double> %1) { 1798; CHECK-LABEL: vgtlzxnc_vvssvl_imm_3: 1799; CHECK: # %bb.0: 1800; CHECK-NEXT: lea %s0, 128 1801; CHECK-NEXT: lvl %s0 1802; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, 0 1803; CHECK-NEXT: lea %s16, 256 1804; CHECK-NEXT: lvl %s16 1805; CHECK-NEXT: vor %v0, (0)1, %v1 1806; CHECK-NEXT: b.l.t (, %s10) 1807 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssvl(<256 x double> %0, i64 8, i64 0, <256 x double> %1, i32 128) 1808 ret <256 x double> %3 1809} 1810 1811; Function Attrs: nounwind readonly 1812define fastcc <256 x double> @vgtlzxnc_vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3) { 1813; CHECK-LABEL: vgtlzxnc_vvssml: 1814; CHECK: # %bb.0: 1815; CHECK-NEXT: lea %s2, 256 1816; CHECK-NEXT: lvl %s2 1817; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s1, %vm1 1818; CHECK-NEXT: b.l.t (, %s10) 1819 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, i32 256) 1820 ret <256 x double> %5 1821} 1822 1823; Function Attrs: nounwind readonly 1824declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double>, i64, i64, <256 x i1>, i32) 1825 1826; Function Attrs: nounwind readonly 1827define fastcc <256 x double> @vgtlzxnc_vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4) { 1828; CHECK-LABEL: vgtlzxnc_vvssmvl: 1829; CHECK: # %bb.0: 1830; CHECK-NEXT: lea %s2, 128 1831; CHECK-NEXT: lvl %s2 1832; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, %s1, %vm1 1833; CHECK-NEXT: lea %s16, 256 1834; CHECK-NEXT: lvl %s16 1835; CHECK-NEXT: vor %v0, (0)1, %v1 1836; CHECK-NEXT: b.l.t (, %s10) 1837 %6 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 %1, i64 %2, <256 x i1> %3, <256 x double> %4, i32 128) 1838 ret <256 x double> %6 1839} 1840 1841; Function Attrs: nounwind readonly 1842declare <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double>, i64, i64, <256 x i1>, <256 x double>, i32) 1843 1844; Function Attrs: nounwind readonly 1845define fastcc <256 x double> @vgtlzxnc_vvssml_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2) { 1846; CHECK-LABEL: vgtlzxnc_vvssml_imm_1: 1847; CHECK: # %bb.0: 1848; CHECK-NEXT: lea %s1, 256 1849; CHECK-NEXT: lvl %s1 1850; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, 0, %vm1 1851; CHECK-NEXT: b.l.t (, %s10) 1852 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, i32 256) 1853 ret <256 x double> %4 1854} 1855 1856; Function Attrs: nounwind readonly 1857define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_1(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1858; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_1: 1859; CHECK: # %bb.0: 1860; CHECK-NEXT: lea %s1, 128 1861; CHECK-NEXT: lvl %s1 1862; CHECK-NEXT: vgtl.zx.nc %v1, %v0, %s0, 0, %vm1 1863; CHECK-NEXT: lea %s16, 256 1864; CHECK-NEXT: lvl %s16 1865; CHECK-NEXT: vor %v0, (0)1, %v1 1866; CHECK-NEXT: b.l.t (, %s10) 1867 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 %1, i64 0, <256 x i1> %2, <256 x double> %3, i32 128) 1868 ret <256 x double> %5 1869} 1870 1871; Function Attrs: nounwind readonly 1872define fastcc <256 x double> @vgtlzxnc_vvssml_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2) { 1873; CHECK-LABEL: vgtlzxnc_vvssml_imm_2: 1874; CHECK: # %bb.0: 1875; CHECK-NEXT: lea %s1, 256 1876; CHECK-NEXT: lvl %s1 1877; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, %s0, %vm1 1878; CHECK-NEXT: b.l.t (, %s10) 1879 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, i32 256) 1880 ret <256 x double> %4 1881} 1882 1883; Function Attrs: nounwind readonly 1884define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_2(<256 x double> %0, i64 %1, <256 x i1> %2, <256 x double> %3) { 1885; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_2: 1886; CHECK: # %bb.0: 1887; CHECK-NEXT: lea %s1, 128 1888; CHECK-NEXT: lvl %s1 1889; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, %s0, %vm1 1890; CHECK-NEXT: lea %s16, 256 1891; CHECK-NEXT: lvl %s16 1892; CHECK-NEXT: vor %v0, (0)1, %v1 1893; CHECK-NEXT: b.l.t (, %s10) 1894 %5 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 8, i64 %1, <256 x i1> %2, <256 x double> %3, i32 128) 1895 ret <256 x double> %5 1896} 1897 1898; Function Attrs: nounwind readonly 1899define fastcc <256 x double> @vgtlzxnc_vvssml_imm_3(<256 x double> %0, <256 x i1> %1) { 1900; CHECK-LABEL: vgtlzxnc_vvssml_imm_3: 1901; CHECK: # %bb.0: 1902; CHECK-NEXT: lea %s0, 256 1903; CHECK-NEXT: lvl %s0 1904; CHECK-NEXT: vgtl.zx.nc %v0, %v0, 8, 0, %vm1 1905; CHECK-NEXT: b.l.t (, %s10) 1906 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssml(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, i32 256) 1907 ret <256 x double> %3 1908} 1909 1910; Function Attrs: nounwind readonly 1911define fastcc <256 x double> @vgtlzxnc_vvssmvl_imm_3(<256 x double> %0, <256 x i1> %1, <256 x double> %2) { 1912; CHECK-LABEL: vgtlzxnc_vvssmvl_imm_3: 1913; CHECK: # %bb.0: 1914; CHECK-NEXT: lea %s0, 128 1915; CHECK-NEXT: lvl %s0 1916; CHECK-NEXT: vgtl.zx.nc %v1, %v0, 8, 0, %vm1 1917; CHECK-NEXT: lea %s16, 256 1918; CHECK-NEXT: lvl %s16 1919; CHECK-NEXT: vor %v0, (0)1, %v1 1920; CHECK-NEXT: b.l.t (, %s10) 1921 %4 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssmvl(<256 x double> %0, i64 8, i64 0, <256 x i1> %1, <256 x double> %2, i32 128) 1922 ret <256 x double> %4 1923} 1924 1925; Function Attrs: nounwind readonly 1926define fastcc <256 x double> @vgtlzxnc_vvssl_no_imm_1(<256 x double> %0, i64 %1) { 1927; CHECK-LABEL: vgtlzxnc_vvssl_no_imm_1: 1928; CHECK: # %bb.0: 1929; CHECK-NEXT: lea %s1, 256 1930; CHECK-NEXT: or %s2, 8, (0)1 1931; CHECK-NEXT: lvl %s1 1932; CHECK-NEXT: vgtl.zx.nc %v0, %v0, %s0, %s2 1933; CHECK-NEXT: b.l.t (, %s10) 1934 %3 = tail call fast <256 x double> @llvm.ve.vl.vgtlzxnc.vvssl(<256 x double> %0, i64 %1, i64 8, i32 256) 1935 ret <256 x double> %3 1936} 1937