1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s 2 3;;; Test vector floating fused negative multiply subtract intrinsic instructions 4;;; 5;;; Note: 6;;; We test VFNMSB*vvvl, VFNMSB*vvvl_v, VFNMSB*rvvl, VFNMSB*rvvl_v, 7;;; VFNMSB*vrvl, VFNMSB*vrvl_v, VFNMSB*vvvml_v, VFNMSB*rvvml_v, 8;;; VFNMSB*vrvml_v, PVFNMSB*vvvl, PVFNMSB*vvvl_v, PVFNMSB*rvvl, 9;;; PVFNMSB*rvvl_v, PVFNMSB*vrvl, PVFNMSB*vrvl_v, PVFNMSB*vvvml_v, 10;;; PVFNMSB*rvvml_v, and PVFNMSB*vrvml_v instructions. 11 12; Function Attrs: nounwind readnone 13define fastcc <256 x double> @vfnmsbd_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) { 14; CHECK-LABEL: vfnmsbd_vvvvl: 15; CHECK: # %bb.0: 16; CHECK-NEXT: lea %s0, 256 17; CHECK-NEXT: lvl %s0 18; CHECK-NEXT: vfnmsb.d %v0, %v0, %v1, %v2 19; CHECK-NEXT: b.l.t (, %s10) 20 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 256) 21 ret <256 x double> %4 22} 23 24; Function Attrs: nounwind readnone 25declare <256 x double> @llvm.ve.vl.vfnmsbd.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32) 26 27; Function Attrs: nounwind readnone 28define fastcc <256 x double> @vfnmsbd_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 29; CHECK-LABEL: vfnmsbd_vvvvvl: 30; CHECK: # %bb.0: 31; CHECK-NEXT: lea %s0, 128 32; CHECK-NEXT: lvl %s0 33; CHECK-NEXT: vfnmsb.d %v3, %v0, %v1, %v2 34; CHECK-NEXT: lea %s16, 256 35; CHECK-NEXT: lvl %s16 36; CHECK-NEXT: vor %v0, (0)1, %v3 37; CHECK-NEXT: b.l.t (, %s10) 38 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 39 ret <256 x double> %5 40} 41 42; Function Attrs: nounwind readnone 43declare <256 x double> @llvm.ve.vl.vfnmsbd.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32) 44 45; Function Attrs: nounwind readnone 46define fastcc <256 x double> @vfnmsbd_vsvvl(double %0, <256 x double> %1, <256 x double> %2) { 47; CHECK-LABEL: vfnmsbd_vsvvl: 48; CHECK: # %bb.0: 49; CHECK-NEXT: lea %s1, 256 50; CHECK-NEXT: lvl %s1 51; CHECK-NEXT: vfnmsb.d %v0, %s0, %v0, %v1 52; CHECK-NEXT: b.l.t (, %s10) 53 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vsvvl(double %0, <256 x double> %1, <256 x double> %2, i32 256) 54 ret <256 x double> %4 55} 56 57; Function Attrs: nounwind readnone 58declare <256 x double> @llvm.ve.vl.vfnmsbd.vsvvl(double, <256 x double>, <256 x double>, i32) 59 60; Function Attrs: nounwind readnone 61define fastcc <256 x double> @vfnmsbd_vsvvvl(double %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 62; CHECK-LABEL: vfnmsbd_vsvvvl: 63; CHECK: # %bb.0: 64; CHECK-NEXT: lea %s1, 128 65; CHECK-NEXT: lvl %s1 66; CHECK-NEXT: vfnmsb.d %v2, %s0, %v0, %v1 67; CHECK-NEXT: lea %s16, 256 68; CHECK-NEXT: lvl %s16 69; CHECK-NEXT: vor %v0, (0)1, %v2 70; CHECK-NEXT: b.l.t (, %s10) 71 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vsvvvl(double %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 72 ret <256 x double> %5 73} 74 75; Function Attrs: nounwind readnone 76declare <256 x double> @llvm.ve.vl.vfnmsbd.vsvvvl(double, <256 x double>, <256 x double>, <256 x double>, i32) 77 78; Function Attrs: nounwind readnone 79define fastcc <256 x double> @vfnmsbd_vvsvl(<256 x double> %0, double %1, <256 x double> %2) { 80; CHECK-LABEL: vfnmsbd_vvsvl: 81; CHECK: # %bb.0: 82; CHECK-NEXT: lea %s1, 256 83; CHECK-NEXT: lvl %s1 84; CHECK-NEXT: vfnmsb.d %v0, %v0, %s0, %v1 85; CHECK-NEXT: b.l.t (, %s10) 86 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvsvl(<256 x double> %0, double %1, <256 x double> %2, i32 256) 87 ret <256 x double> %4 88} 89 90; Function Attrs: nounwind readnone 91declare <256 x double> @llvm.ve.vl.vfnmsbd.vvsvl(<256 x double>, double, <256 x double>, i32) 92 93; Function Attrs: nounwind readnone 94define fastcc <256 x double> @vfnmsbd_vvsvvl(<256 x double> %0, double %1, <256 x double> %2, <256 x double> %3) { 95; CHECK-LABEL: vfnmsbd_vvsvvl: 96; CHECK: # %bb.0: 97; CHECK-NEXT: lea %s1, 128 98; CHECK-NEXT: lvl %s1 99; CHECK-NEXT: vfnmsb.d %v2, %v0, %s0, %v1 100; CHECK-NEXT: lea %s16, 256 101; CHECK-NEXT: lvl %s16 102; CHECK-NEXT: vor %v0, (0)1, %v2 103; CHECK-NEXT: b.l.t (, %s10) 104 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvsvvl(<256 x double> %0, double %1, <256 x double> %2, <256 x double> %3, i32 128) 105 ret <256 x double> %5 106} 107 108; Function Attrs: nounwind readnone 109declare <256 x double> @llvm.ve.vl.vfnmsbd.vvsvvl(<256 x double>, double, <256 x double>, <256 x double>, i32) 110 111; Function Attrs: nounwind readnone 112define fastcc <256 x double> @vfnmsbd_vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 113; CHECK-LABEL: vfnmsbd_vvvvmvl: 114; CHECK: # %bb.0: 115; CHECK-NEXT: lea %s0, 128 116; CHECK-NEXT: lvl %s0 117; CHECK-NEXT: vfnmsb.d %v3, %v0, %v1, %v2, %vm1 118; CHECK-NEXT: lea %s16, 256 119; CHECK-NEXT: lvl %s16 120; CHECK-NEXT: vor %v0, (0)1, %v3 121; CHECK-NEXT: b.l.t (, %s10) 122 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 123 ret <256 x double> %6 124} 125 126; Function Attrs: nounwind readnone 127declare <256 x double> @llvm.ve.vl.vfnmsbd.vvvvmvl(<256 x double>, <256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32) 128 129; Function Attrs: nounwind readnone 130define fastcc <256 x double> @vfnmsbd_vsvvmvl(double %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 131; CHECK-LABEL: vfnmsbd_vsvvmvl: 132; CHECK: # %bb.0: 133; CHECK-NEXT: lea %s1, 128 134; CHECK-NEXT: lvl %s1 135; CHECK-NEXT: vfnmsb.d %v2, %s0, %v0, %v1, %vm1 136; CHECK-NEXT: lea %s16, 256 137; CHECK-NEXT: lvl %s16 138; CHECK-NEXT: vor %v0, (0)1, %v2 139; CHECK-NEXT: b.l.t (, %s10) 140 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vsvvmvl(double %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 141 ret <256 x double> %6 142} 143 144; Function Attrs: nounwind readnone 145declare <256 x double> @llvm.ve.vl.vfnmsbd.vsvvmvl(double, <256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32) 146 147; Function Attrs: nounwind readnone 148define fastcc <256 x double> @vfnmsbd_vvsvmvl(<256 x double> %0, double %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 149; CHECK-LABEL: vfnmsbd_vvsvmvl: 150; CHECK: # %bb.0: 151; CHECK-NEXT: lea %s1, 128 152; CHECK-NEXT: lvl %s1 153; CHECK-NEXT: vfnmsb.d %v2, %v0, %s0, %v1, %vm1 154; CHECK-NEXT: lea %s16, 256 155; CHECK-NEXT: lvl %s16 156; CHECK-NEXT: vor %v0, (0)1, %v2 157; CHECK-NEXT: b.l.t (, %s10) 158 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbd.vvsvmvl(<256 x double> %0, double %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 159 ret <256 x double> %6 160} 161 162; Function Attrs: nounwind readnone 163declare <256 x double> @llvm.ve.vl.vfnmsbd.vvsvmvl(<256 x double>, double, <256 x double>, <256 x i1>, <256 x double>, i32) 164 165; Function Attrs: nounwind readnone 166define fastcc <256 x double> @vfnmsbs_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) { 167; CHECK-LABEL: vfnmsbs_vvvvl: 168; CHECK: # %bb.0: 169; CHECK-NEXT: lea %s0, 256 170; CHECK-NEXT: lvl %s0 171; CHECK-NEXT: vfnmsb.s %v0, %v0, %v1, %v2 172; CHECK-NEXT: b.l.t (, %s10) 173 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 256) 174 ret <256 x double> %4 175} 176 177; Function Attrs: nounwind readnone 178declare <256 x double> @llvm.ve.vl.vfnmsbs.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32) 179 180; Function Attrs: nounwind readnone 181define fastcc <256 x double> @vfnmsbs_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 182; CHECK-LABEL: vfnmsbs_vvvvvl: 183; CHECK: # %bb.0: 184; CHECK-NEXT: lea %s0, 128 185; CHECK-NEXT: lvl %s0 186; CHECK-NEXT: vfnmsb.s %v3, %v0, %v1, %v2 187; CHECK-NEXT: lea %s16, 256 188; CHECK-NEXT: lvl %s16 189; CHECK-NEXT: vor %v0, (0)1, %v3 190; CHECK-NEXT: b.l.t (, %s10) 191 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 192 ret <256 x double> %5 193} 194 195; Function Attrs: nounwind readnone 196declare <256 x double> @llvm.ve.vl.vfnmsbs.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32) 197 198; Function Attrs: nounwind readnone 199define fastcc <256 x double> @vfnmsbs_vsvvl(float %0, <256 x double> %1, <256 x double> %2) { 200; CHECK-LABEL: vfnmsbs_vsvvl: 201; CHECK: # %bb.0: 202; CHECK-NEXT: lea %s1, 256 203; CHECK-NEXT: lvl %s1 204; CHECK-NEXT: vfnmsb.s %v0, %s0, %v0, %v1 205; CHECK-NEXT: b.l.t (, %s10) 206 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vsvvl(float %0, <256 x double> %1, <256 x double> %2, i32 256) 207 ret <256 x double> %4 208} 209 210; Function Attrs: nounwind readnone 211declare <256 x double> @llvm.ve.vl.vfnmsbs.vsvvl(float, <256 x double>, <256 x double>, i32) 212 213; Function Attrs: nounwind readnone 214define fastcc <256 x double> @vfnmsbs_vsvvvl(float %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 215; CHECK-LABEL: vfnmsbs_vsvvvl: 216; CHECK: # %bb.0: 217; CHECK-NEXT: lea %s1, 128 218; CHECK-NEXT: lvl %s1 219; CHECK-NEXT: vfnmsb.s %v2, %s0, %v0, %v1 220; CHECK-NEXT: lea %s16, 256 221; CHECK-NEXT: lvl %s16 222; CHECK-NEXT: vor %v0, (0)1, %v2 223; CHECK-NEXT: b.l.t (, %s10) 224 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vsvvvl(float %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 225 ret <256 x double> %5 226} 227 228; Function Attrs: nounwind readnone 229declare <256 x double> @llvm.ve.vl.vfnmsbs.vsvvvl(float, <256 x double>, <256 x double>, <256 x double>, i32) 230 231; Function Attrs: nounwind readnone 232define fastcc <256 x double> @vfnmsbs_vvsvl(<256 x double> %0, float %1, <256 x double> %2) { 233; CHECK-LABEL: vfnmsbs_vvsvl: 234; CHECK: # %bb.0: 235; CHECK-NEXT: lea %s1, 256 236; CHECK-NEXT: lvl %s1 237; CHECK-NEXT: vfnmsb.s %v0, %v0, %s0, %v1 238; CHECK-NEXT: b.l.t (, %s10) 239 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvsvl(<256 x double> %0, float %1, <256 x double> %2, i32 256) 240 ret <256 x double> %4 241} 242 243; Function Attrs: nounwind readnone 244declare <256 x double> @llvm.ve.vl.vfnmsbs.vvsvl(<256 x double>, float, <256 x double>, i32) 245 246; Function Attrs: nounwind readnone 247define fastcc <256 x double> @vfnmsbs_vvsvvl(<256 x double> %0, float %1, <256 x double> %2, <256 x double> %3) { 248; CHECK-LABEL: vfnmsbs_vvsvvl: 249; CHECK: # %bb.0: 250; CHECK-NEXT: lea %s1, 128 251; CHECK-NEXT: lvl %s1 252; CHECK-NEXT: vfnmsb.s %v2, %v0, %s0, %v1 253; CHECK-NEXT: lea %s16, 256 254; CHECK-NEXT: lvl %s16 255; CHECK-NEXT: vor %v0, (0)1, %v2 256; CHECK-NEXT: b.l.t (, %s10) 257 %5 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvsvvl(<256 x double> %0, float %1, <256 x double> %2, <256 x double> %3, i32 128) 258 ret <256 x double> %5 259} 260 261; Function Attrs: nounwind readnone 262declare <256 x double> @llvm.ve.vl.vfnmsbs.vvsvvl(<256 x double>, float, <256 x double>, <256 x double>, i32) 263 264; Function Attrs: nounwind readnone 265define fastcc <256 x double> @vfnmsbs_vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 266; CHECK-LABEL: vfnmsbs_vvvvmvl: 267; CHECK: # %bb.0: 268; CHECK-NEXT: lea %s0, 128 269; CHECK-NEXT: lvl %s0 270; CHECK-NEXT: vfnmsb.s %v3, %v0, %v1, %v2, %vm1 271; CHECK-NEXT: lea %s16, 256 272; CHECK-NEXT: lvl %s16 273; CHECK-NEXT: vor %v0, (0)1, %v3 274; CHECK-NEXT: b.l.t (, %s10) 275 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 276 ret <256 x double> %6 277} 278 279; Function Attrs: nounwind readnone 280declare <256 x double> @llvm.ve.vl.vfnmsbs.vvvvmvl(<256 x double>, <256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32) 281 282; Function Attrs: nounwind readnone 283define fastcc <256 x double> @vfnmsbs_vsvvmvl(float %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 284; CHECK-LABEL: vfnmsbs_vsvvmvl: 285; CHECK: # %bb.0: 286; CHECK-NEXT: lea %s1, 128 287; CHECK-NEXT: lvl %s1 288; CHECK-NEXT: vfnmsb.s %v2, %s0, %v0, %v1, %vm1 289; CHECK-NEXT: lea %s16, 256 290; CHECK-NEXT: lvl %s16 291; CHECK-NEXT: vor %v0, (0)1, %v2 292; CHECK-NEXT: b.l.t (, %s10) 293 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vsvvmvl(float %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 294 ret <256 x double> %6 295} 296 297; Function Attrs: nounwind readnone 298declare <256 x double> @llvm.ve.vl.vfnmsbs.vsvvmvl(float, <256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32) 299 300; Function Attrs: nounwind readnone 301define fastcc <256 x double> @vfnmsbs_vvsvmvl(<256 x double> %0, float %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) { 302; CHECK-LABEL: vfnmsbs_vvsvmvl: 303; CHECK: # %bb.0: 304; CHECK-NEXT: lea %s1, 128 305; CHECK-NEXT: lvl %s1 306; CHECK-NEXT: vfnmsb.s %v2, %v0, %s0, %v1, %vm1 307; CHECK-NEXT: lea %s16, 256 308; CHECK-NEXT: lvl %s16 309; CHECK-NEXT: vor %v0, (0)1, %v2 310; CHECK-NEXT: b.l.t (, %s10) 311 %6 = tail call fast <256 x double> @llvm.ve.vl.vfnmsbs.vvsvmvl(<256 x double> %0, float %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4, i32 128) 312 ret <256 x double> %6 313} 314 315; Function Attrs: nounwind readnone 316declare <256 x double> @llvm.ve.vl.vfnmsbs.vvsvmvl(<256 x double>, float, <256 x double>, <256 x i1>, <256 x double>, i32) 317 318; Function Attrs: nounwind readnone 319define fastcc <256 x double> @pvfnmsb_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) { 320; CHECK-LABEL: pvfnmsb_vvvvl: 321; CHECK: # %bb.0: 322; CHECK-NEXT: lea %s0, 256 323; CHECK-NEXT: lvl %s0 324; CHECK-NEXT: pvfnmsb %v0, %v0, %v1, %v2 325; CHECK-NEXT: b.l.t (, %s10) 326 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 256) 327 ret <256 x double> %4 328} 329 330; Function Attrs: nounwind readnone 331declare <256 x double> @llvm.ve.vl.pvfnmsb.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32) 332 333; Function Attrs: nounwind readnone 334define fastcc <256 x double> @pvfnmsb_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 335; CHECK-LABEL: pvfnmsb_vvvvvl: 336; CHECK: # %bb.0: 337; CHECK-NEXT: lea %s0, 128 338; CHECK-NEXT: lvl %s0 339; CHECK-NEXT: pvfnmsb %v3, %v0, %v1, %v2 340; CHECK-NEXT: lea %s16, 256 341; CHECK-NEXT: lvl %s16 342; CHECK-NEXT: vor %v0, (0)1, %v3 343; CHECK-NEXT: b.l.t (, %s10) 344 %5 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 345 ret <256 x double> %5 346} 347 348; Function Attrs: nounwind readnone 349declare <256 x double> @llvm.ve.vl.pvfnmsb.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32) 350 351; Function Attrs: nounwind readnone 352define fastcc <256 x double> @pvfnmsb_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) { 353; CHECK-LABEL: pvfnmsb_vsvvl: 354; CHECK: # %bb.0: 355; CHECK-NEXT: lea %s1, 256 356; CHECK-NEXT: lvl %s1 357; CHECK-NEXT: pvfnmsb %v0, %s0, %v0, %v1 358; CHECK-NEXT: b.l.t (, %s10) 359 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 256) 360 ret <256 x double> %4 361} 362 363; Function Attrs: nounwind readnone 364declare <256 x double> @llvm.ve.vl.pvfnmsb.vsvvl(i64, <256 x double>, <256 x double>, i32) 365 366; Function Attrs: nounwind readnone 367define fastcc <256 x double> @pvfnmsb_vsvvvl(i64 %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) { 368; CHECK-LABEL: pvfnmsb_vsvvvl: 369; CHECK: # %bb.0: 370; CHECK-NEXT: lea %s1, 128 371; CHECK-NEXT: lvl %s1 372; CHECK-NEXT: pvfnmsb %v2, %s0, %v0, %v1 373; CHECK-NEXT: lea %s16, 256 374; CHECK-NEXT: lvl %s16 375; CHECK-NEXT: vor %v0, (0)1, %v2 376; CHECK-NEXT: b.l.t (, %s10) 377 %5 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vsvvvl(i64 %0, <256 x double> %1, <256 x double> %2, <256 x double> %3, i32 128) 378 ret <256 x double> %5 379} 380 381; Function Attrs: nounwind readnone 382declare <256 x double> @llvm.ve.vl.pvfnmsb.vsvvvl(i64, <256 x double>, <256 x double>, <256 x double>, i32) 383 384; Function Attrs: nounwind readnone 385define fastcc <256 x double> @pvfnmsb_vvsvl(<256 x double> %0, i64 %1, <256 x double> %2) { 386; CHECK-LABEL: pvfnmsb_vvsvl: 387; CHECK: # %bb.0: 388; CHECK-NEXT: lea %s1, 256 389; CHECK-NEXT: lvl %s1 390; CHECK-NEXT: pvfnmsb %v0, %v0, %s0, %v1 391; CHECK-NEXT: b.l.t (, %s10) 392 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvsvl(<256 x double> %0, i64 %1, <256 x double> %2, i32 256) 393 ret <256 x double> %4 394} 395 396; Function Attrs: nounwind readnone 397declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvl(<256 x double>, i64, <256 x double>, i32) 398 399; Function Attrs: nounwind readnone 400define fastcc <256 x double> @pvfnmsb_vvsvvl(<256 x double> %0, i64 %1, <256 x double> %2, <256 x double> %3) { 401; CHECK-LABEL: pvfnmsb_vvsvvl: 402; CHECK: # %bb.0: 403; CHECK-NEXT: lea %s1, 128 404; CHECK-NEXT: lvl %s1 405; CHECK-NEXT: pvfnmsb %v2, %v0, %s0, %v1 406; CHECK-NEXT: lea %s16, 256 407; CHECK-NEXT: lvl %s16 408; CHECK-NEXT: vor %v0, (0)1, %v2 409; CHECK-NEXT: b.l.t (, %s10) 410 %5 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvsvvl(<256 x double> %0, i64 %1, <256 x double> %2, <256 x double> %3, i32 128) 411 ret <256 x double> %5 412} 413 414; Function Attrs: nounwind readnone 415declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvvl(<256 x double>, i64, <256 x double>, <256 x double>, i32) 416 417; Function Attrs: nounwind readnone 418define fastcc <256 x double> @pvfnmsb_vvvvMvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) { 419; CHECK-LABEL: pvfnmsb_vvvvMvl: 420; CHECK: # %bb.0: 421; CHECK-NEXT: lea %s0, 128 422; CHECK-NEXT: lvl %s0 423; CHECK-NEXT: pvfnmsb %v3, %v0, %v1, %v2, %vm2 424; CHECK-NEXT: lea %s16, 256 425; CHECK-NEXT: lvl %s16 426; CHECK-NEXT: vor %v0, (0)1, %v3 427; CHECK-NEXT: b.l.t (, %s10) 428 %6 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvvvMvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4, i32 128) 429 ret <256 x double> %6 430} 431 432; Function Attrs: nounwind readnone 433declare <256 x double> @llvm.ve.vl.pvfnmsb.vvvvMvl(<256 x double>, <256 x double>, <256 x double>, <512 x i1>, <256 x double>, i32) 434 435; Function Attrs: nounwind readnone 436define fastcc <256 x double> @pvfnmsb_vsvvMvl(i64 %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) { 437; CHECK-LABEL: pvfnmsb_vsvvMvl: 438; CHECK: # %bb.0: 439; CHECK-NEXT: lea %s1, 128 440; CHECK-NEXT: lvl %s1 441; CHECK-NEXT: pvfnmsb %v2, %s0, %v0, %v1, %vm2 442; CHECK-NEXT: lea %s16, 256 443; CHECK-NEXT: lvl %s16 444; CHECK-NEXT: vor %v0, (0)1, %v2 445; CHECK-NEXT: b.l.t (, %s10) 446 %6 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vsvvMvl(i64 %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4, i32 128) 447 ret <256 x double> %6 448} 449 450; Function Attrs: nounwind readnone 451declare <256 x double> @llvm.ve.vl.pvfnmsb.vsvvMvl(i64, <256 x double>, <256 x double>, <512 x i1>, <256 x double>, i32) 452 453; Function Attrs: nounwind readnone 454define fastcc <256 x double> @pvfnmsb_vvsvMvl(<256 x double> %0, i64 %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) { 455; CHECK-LABEL: pvfnmsb_vvsvMvl: 456; CHECK: # %bb.0: 457; CHECK-NEXT: lea %s1, 128 458; CHECK-NEXT: lvl %s1 459; CHECK-NEXT: pvfnmsb %v2, %v0, %s0, %v1, %vm2 460; CHECK-NEXT: lea %s16, 256 461; CHECK-NEXT: lvl %s16 462; CHECK-NEXT: vor %v0, (0)1, %v2 463; CHECK-NEXT: b.l.t (, %s10) 464 %6 = tail call fast <256 x double> @llvm.ve.vl.pvfnmsb.vvsvMvl(<256 x double> %0, i64 %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4, i32 128) 465 ret <256 x double> %6 466} 467 468; Function Attrs: nounwind readnone 469declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvMvl(<256 x double>, i64, <256 x double>, <512 x i1>, <256 x double>, i32) 470