470 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector floating fused negative multiply subtract intrinsic instructions4;;;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 readnone13define 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, 25617; CHECK-NEXT: lvl %s018; CHECK-NEXT: vfnmsb.d %v0, %v0, %v1, %v219; 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> %422}23 24; Function Attrs: nounwind readnone25declare <256 x double> @llvm.ve.vl.vfnmsbd.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)26 27; Function Attrs: nounwind readnone28define 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, 12832; CHECK-NEXT: lvl %s033; CHECK-NEXT: vfnmsb.d %v3, %v0, %v1, %v234; CHECK-NEXT: lea %s16, 25635; CHECK-NEXT: lvl %s1636; CHECK-NEXT: vor %v0, (0)1, %v337; 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> %540}41 42; Function Attrs: nounwind readnone43declare <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 readnone46define 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, 25650; CHECK-NEXT: lvl %s151; CHECK-NEXT: vfnmsb.d %v0, %s0, %v0, %v152; 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> %455}56 57; Function Attrs: nounwind readnone58declare <256 x double> @llvm.ve.vl.vfnmsbd.vsvvl(double, <256 x double>, <256 x double>, i32)59 60; Function Attrs: nounwind readnone61define 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, 12865; CHECK-NEXT: lvl %s166; CHECK-NEXT: vfnmsb.d %v2, %s0, %v0, %v167; CHECK-NEXT: lea %s16, 25668; CHECK-NEXT: lvl %s1669; CHECK-NEXT: vor %v0, (0)1, %v270; 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> %573}74 75; Function Attrs: nounwind readnone76declare <256 x double> @llvm.ve.vl.vfnmsbd.vsvvvl(double, <256 x double>, <256 x double>, <256 x double>, i32)77 78; Function Attrs: nounwind readnone79define 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, 25683; CHECK-NEXT: lvl %s184; CHECK-NEXT: vfnmsb.d %v0, %v0, %s0, %v185; 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> %488}89 90; Function Attrs: nounwind readnone91declare <256 x double> @llvm.ve.vl.vfnmsbd.vvsvl(<256 x double>, double, <256 x double>, i32)92 93; Function Attrs: nounwind readnone94define 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, 12898; CHECK-NEXT: lvl %s199; CHECK-NEXT: vfnmsb.d %v2, %v0, %s0, %v1100; CHECK-NEXT: lea %s16, 256101; CHECK-NEXT: lvl %s16102; CHECK-NEXT: vor %v0, (0)1, %v2103; 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> %5106}107 108; Function Attrs: nounwind readnone109declare <256 x double> @llvm.ve.vl.vfnmsbd.vvsvvl(<256 x double>, double, <256 x double>, <256 x double>, i32)110 111; Function Attrs: nounwind readnone112define 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, 128116; CHECK-NEXT: lvl %s0117; CHECK-NEXT: vfnmsb.d %v3, %v0, %v1, %v2, %vm1118; CHECK-NEXT: lea %s16, 256119; CHECK-NEXT: lvl %s16120; CHECK-NEXT: vor %v0, (0)1, %v3121; 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> %6124}125 126; Function Attrs: nounwind readnone127declare <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 readnone130define 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, 128134; CHECK-NEXT: lvl %s1135; CHECK-NEXT: vfnmsb.d %v2, %s0, %v0, %v1, %vm1136; CHECK-NEXT: lea %s16, 256137; CHECK-NEXT: lvl %s16138; CHECK-NEXT: vor %v0, (0)1, %v2139; 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> %6142}143 144; Function Attrs: nounwind readnone145declare <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 readnone148define 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, 128152; CHECK-NEXT: lvl %s1153; CHECK-NEXT: vfnmsb.d %v2, %v0, %s0, %v1, %vm1154; CHECK-NEXT: lea %s16, 256155; CHECK-NEXT: lvl %s16156; CHECK-NEXT: vor %v0, (0)1, %v2157; 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> %6160}161 162; Function Attrs: nounwind readnone163declare <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 readnone166define 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, 256170; CHECK-NEXT: lvl %s0171; CHECK-NEXT: vfnmsb.s %v0, %v0, %v1, %v2172; 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> %4175}176 177; Function Attrs: nounwind readnone178declare <256 x double> @llvm.ve.vl.vfnmsbs.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)179 180; Function Attrs: nounwind readnone181define 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, 128185; CHECK-NEXT: lvl %s0186; CHECK-NEXT: vfnmsb.s %v3, %v0, %v1, %v2187; CHECK-NEXT: lea %s16, 256188; CHECK-NEXT: lvl %s16189; CHECK-NEXT: vor %v0, (0)1, %v3190; 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> %5193}194 195; Function Attrs: nounwind readnone196declare <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 readnone199define 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, 256203; CHECK-NEXT: lvl %s1204; CHECK-NEXT: vfnmsb.s %v0, %s0, %v0, %v1205; 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> %4208}209 210; Function Attrs: nounwind readnone211declare <256 x double> @llvm.ve.vl.vfnmsbs.vsvvl(float, <256 x double>, <256 x double>, i32)212 213; Function Attrs: nounwind readnone214define 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, 128218; CHECK-NEXT: lvl %s1219; CHECK-NEXT: vfnmsb.s %v2, %s0, %v0, %v1220; CHECK-NEXT: lea %s16, 256221; CHECK-NEXT: lvl %s16222; CHECK-NEXT: vor %v0, (0)1, %v2223; 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> %5226}227 228; Function Attrs: nounwind readnone229declare <256 x double> @llvm.ve.vl.vfnmsbs.vsvvvl(float, <256 x double>, <256 x double>, <256 x double>, i32)230 231; Function Attrs: nounwind readnone232define 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, 256236; CHECK-NEXT: lvl %s1237; CHECK-NEXT: vfnmsb.s %v0, %v0, %s0, %v1238; 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> %4241}242 243; Function Attrs: nounwind readnone244declare <256 x double> @llvm.ve.vl.vfnmsbs.vvsvl(<256 x double>, float, <256 x double>, i32)245 246; Function Attrs: nounwind readnone247define 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, 128251; CHECK-NEXT: lvl %s1252; CHECK-NEXT: vfnmsb.s %v2, %v0, %s0, %v1253; CHECK-NEXT: lea %s16, 256254; CHECK-NEXT: lvl %s16255; CHECK-NEXT: vor %v0, (0)1, %v2256; 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> %5259}260 261; Function Attrs: nounwind readnone262declare <256 x double> @llvm.ve.vl.vfnmsbs.vvsvvl(<256 x double>, float, <256 x double>, <256 x double>, i32)263 264; Function Attrs: nounwind readnone265define 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, 128269; CHECK-NEXT: lvl %s0270; CHECK-NEXT: vfnmsb.s %v3, %v0, %v1, %v2, %vm1271; CHECK-NEXT: lea %s16, 256272; CHECK-NEXT: lvl %s16273; CHECK-NEXT: vor %v0, (0)1, %v3274; 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> %6277}278 279; Function Attrs: nounwind readnone280declare <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 readnone283define 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, 128287; CHECK-NEXT: lvl %s1288; CHECK-NEXT: vfnmsb.s %v2, %s0, %v0, %v1, %vm1289; CHECK-NEXT: lea %s16, 256290; CHECK-NEXT: lvl %s16291; CHECK-NEXT: vor %v0, (0)1, %v2292; 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> %6295}296 297; Function Attrs: nounwind readnone298declare <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 readnone301define 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, 128305; CHECK-NEXT: lvl %s1306; CHECK-NEXT: vfnmsb.s %v2, %v0, %s0, %v1, %vm1307; CHECK-NEXT: lea %s16, 256308; CHECK-NEXT: lvl %s16309; CHECK-NEXT: vor %v0, (0)1, %v2310; 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> %6313}314 315; Function Attrs: nounwind readnone316declare <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 readnone319define 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, 256323; CHECK-NEXT: lvl %s0324; CHECK-NEXT: pvfnmsb %v0, %v0, %v1, %v2325; 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> %4328}329 330; Function Attrs: nounwind readnone331declare <256 x double> @llvm.ve.vl.pvfnmsb.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)332 333; Function Attrs: nounwind readnone334define 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, 128338; CHECK-NEXT: lvl %s0339; CHECK-NEXT: pvfnmsb %v3, %v0, %v1, %v2340; CHECK-NEXT: lea %s16, 256341; CHECK-NEXT: lvl %s16342; CHECK-NEXT: vor %v0, (0)1, %v3343; 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> %5346}347 348; Function Attrs: nounwind readnone349declare <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 readnone352define 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, 256356; CHECK-NEXT: lvl %s1357; CHECK-NEXT: pvfnmsb %v0, %s0, %v0, %v1358; 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> %4361}362 363; Function Attrs: nounwind readnone364declare <256 x double> @llvm.ve.vl.pvfnmsb.vsvvl(i64, <256 x double>, <256 x double>, i32)365 366; Function Attrs: nounwind readnone367define 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, 128371; CHECK-NEXT: lvl %s1372; CHECK-NEXT: pvfnmsb %v2, %s0, %v0, %v1373; CHECK-NEXT: lea %s16, 256374; CHECK-NEXT: lvl %s16375; CHECK-NEXT: vor %v0, (0)1, %v2376; 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> %5379}380 381; Function Attrs: nounwind readnone382declare <256 x double> @llvm.ve.vl.pvfnmsb.vsvvvl(i64, <256 x double>, <256 x double>, <256 x double>, i32)383 384; Function Attrs: nounwind readnone385define 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, 256389; CHECK-NEXT: lvl %s1390; CHECK-NEXT: pvfnmsb %v0, %v0, %s0, %v1391; 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> %4394}395 396; Function Attrs: nounwind readnone397declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvl(<256 x double>, i64, <256 x double>, i32)398 399; Function Attrs: nounwind readnone400define 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, 128404; CHECK-NEXT: lvl %s1405; CHECK-NEXT: pvfnmsb %v2, %v0, %s0, %v1406; CHECK-NEXT: lea %s16, 256407; CHECK-NEXT: lvl %s16408; CHECK-NEXT: vor %v0, (0)1, %v2409; 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> %5412}413 414; Function Attrs: nounwind readnone415declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvvl(<256 x double>, i64, <256 x double>, <256 x double>, i32)416 417; Function Attrs: nounwind readnone418define 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, 128422; CHECK-NEXT: lvl %s0423; CHECK-NEXT: pvfnmsb %v3, %v0, %v1, %v2, %vm2424; CHECK-NEXT: lea %s16, 256425; CHECK-NEXT: lvl %s16426; CHECK-NEXT: vor %v0, (0)1, %v3427; 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> %6430}431 432; Function Attrs: nounwind readnone433declare <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 readnone436define 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, 128440; CHECK-NEXT: lvl %s1441; CHECK-NEXT: pvfnmsb %v2, %s0, %v0, %v1, %vm2442; CHECK-NEXT: lea %s16, 256443; CHECK-NEXT: lvl %s16444; CHECK-NEXT: vor %v0, (0)1, %v2445; 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> %6448}449 450; Function Attrs: nounwind readnone451declare <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 readnone454define 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, 128458; CHECK-NEXT: lvl %s1459; CHECK-NEXT: pvfnmsb %v2, %v0, %s0, %v1, %vm2460; CHECK-NEXT: lea %s16, 256461; CHECK-NEXT: lvl %s16462; CHECK-NEXT: vor %v0, (0)1, %v2463; 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> %6466}467 468; Function Attrs: nounwind readnone469declare <256 x double> @llvm.ve.vl.pvfnmsb.vvsvMvl(<256 x double>, i64, <256 x double>, <512 x i1>, <256 x double>, i32)470