470 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector floating fused negative multiply add intrinsic instructions4;;;5;;; Note:6;;; We test VFNMAD*vvvl, VFNMAD*vvvl_v, VFNMAD*rvvl, VFNMAD*rvvl_v,7;;; VFNMAD*vrvl, VFNMAD*vrvl_v, VFNMAD*vvvml_v, VFNMAD*rvvml_v,8;;; VFNMAD*vrvml_v, PVFNMAD*vvvl, PVFNMAD*vvvl_v, PVFNMAD*rvvl,9;;; PVFNMAD*rvvl_v, PVFNMAD*vrvl, PVFNMAD*vrvl_v, PVFNMAD*vvvml_v,10;;; PVFNMAD*rvvml_v, and PVFNMAD*vrvml_v instructions.11 12; Function Attrs: nounwind readnone13define fastcc <256 x double> @vfnmadd_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {14; CHECK-LABEL: vfnmadd_vvvvl:15; CHECK: # %bb.0:16; CHECK-NEXT: lea %s0, 25617; CHECK-NEXT: lvl %s018; CHECK-NEXT: vfnmad.d %v0, %v0, %v1, %v219; CHECK-NEXT: b.l.t (, %s10)20 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmadd.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.vfnmadd.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)26 27; Function Attrs: nounwind readnone28define fastcc <256 x double> @vfnmadd_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {29; CHECK-LABEL: vfnmadd_vvvvvl:30; CHECK: # %bb.0:31; CHECK-NEXT: lea %s0, 12832; CHECK-NEXT: lvl %s033; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32)44 45; Function Attrs: nounwind readnone46define fastcc <256 x double> @vfnmadd_vsvvl(double %0, <256 x double> %1, <256 x double> %2) {47; CHECK-LABEL: vfnmadd_vsvvl:48; CHECK: # %bb.0:49; CHECK-NEXT: lea %s1, 25650; CHECK-NEXT: lvl %s151; CHECK-NEXT: vfnmad.d %v0, %s0, %v0, %v152; CHECK-NEXT: b.l.t (, %s10)53 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmadd.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.vfnmadd.vsvvl(double, <256 x double>, <256 x double>, i32)59 60; Function Attrs: nounwind readnone61define fastcc <256 x double> @vfnmadd_vsvvvl(double %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {62; CHECK-LABEL: vfnmadd_vsvvvl:63; CHECK: # %bb.0:64; CHECK-NEXT: lea %s1, 12865; CHECK-NEXT: lvl %s166; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.vsvvvl(double, <256 x double>, <256 x double>, <256 x double>, i32)77 78; Function Attrs: nounwind readnone79define fastcc <256 x double> @vfnmadd_vvsvl(<256 x double> %0, double %1, <256 x double> %2) {80; CHECK-LABEL: vfnmadd_vvsvl:81; CHECK: # %bb.0:82; CHECK-NEXT: lea %s1, 25683; CHECK-NEXT: lvl %s184; CHECK-NEXT: vfnmad.d %v0, %v0, %s0, %v185; CHECK-NEXT: b.l.t (, %s10)86 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmadd.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.vfnmadd.vvsvl(<256 x double>, double, <256 x double>, i32)92 93; Function Attrs: nounwind readnone94define fastcc <256 x double> @vfnmadd_vvsvvl(<256 x double> %0, double %1, <256 x double> %2, <256 x double> %3) {95; CHECK-LABEL: vfnmadd_vvsvvl:96; CHECK: # %bb.0:97; CHECK-NEXT: lea %s1, 12898; CHECK-NEXT: lvl %s199; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.vvsvvl(<256 x double>, double, <256 x double>, <256 x double>, i32)110 111; Function Attrs: nounwind readnone112define fastcc <256 x double> @vfnmadd_vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {113; CHECK-LABEL: vfnmadd_vvvvmvl:114; CHECK: # %bb.0:115; CHECK-NEXT: lea %s0, 128116; CHECK-NEXT: lvl %s0117; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.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> @vfnmadd_vsvvmvl(double %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {131; CHECK-LABEL: vfnmadd_vsvvmvl:132; CHECK: # %bb.0:133; CHECK-NEXT: lea %s1, 128134; CHECK-NEXT: lvl %s1135; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.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> @vfnmadd_vvsvmvl(<256 x double> %0, double %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {149; CHECK-LABEL: vfnmadd_vvsvmvl:150; CHECK: # %bb.0:151; CHECK-NEXT: lea %s1, 128152; CHECK-NEXT: lvl %s1153; CHECK-NEXT: vfnmad.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.vfnmadd.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.vfnmadd.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> @vfnmads_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {167; CHECK-LABEL: vfnmads_vvvvl:168; CHECK: # %bb.0:169; CHECK-NEXT: lea %s0, 256170; CHECK-NEXT: lvl %s0171; CHECK-NEXT: vfnmad.s %v0, %v0, %v1, %v2172; CHECK-NEXT: b.l.t (, %s10)173 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmads.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.vfnmads.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)179 180; Function Attrs: nounwind readnone181define fastcc <256 x double> @vfnmads_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {182; CHECK-LABEL: vfnmads_vvvvvl:183; CHECK: # %bb.0:184; CHECK-NEXT: lea %s0, 128185; CHECK-NEXT: lvl %s0186; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32)197 198; Function Attrs: nounwind readnone199define fastcc <256 x double> @vfnmads_vsvvl(float %0, <256 x double> %1, <256 x double> %2) {200; CHECK-LABEL: vfnmads_vsvvl:201; CHECK: # %bb.0:202; CHECK-NEXT: lea %s1, 256203; CHECK-NEXT: lvl %s1204; CHECK-NEXT: vfnmad.s %v0, %s0, %v0, %v1205; CHECK-NEXT: b.l.t (, %s10)206 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmads.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.vfnmads.vsvvl(float, <256 x double>, <256 x double>, i32)212 213; Function Attrs: nounwind readnone214define fastcc <256 x double> @vfnmads_vsvvvl(float %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {215; CHECK-LABEL: vfnmads_vsvvvl:216; CHECK: # %bb.0:217; CHECK-NEXT: lea %s1, 128218; CHECK-NEXT: lvl %s1219; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.vsvvvl(float, <256 x double>, <256 x double>, <256 x double>, i32)230 231; Function Attrs: nounwind readnone232define fastcc <256 x double> @vfnmads_vvsvl(<256 x double> %0, float %1, <256 x double> %2) {233; CHECK-LABEL: vfnmads_vvsvl:234; CHECK: # %bb.0:235; CHECK-NEXT: lea %s1, 256236; CHECK-NEXT: lvl %s1237; CHECK-NEXT: vfnmad.s %v0, %v0, %s0, %v1238; CHECK-NEXT: b.l.t (, %s10)239 %4 = tail call fast <256 x double> @llvm.ve.vl.vfnmads.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.vfnmads.vvsvl(<256 x double>, float, <256 x double>, i32)245 246; Function Attrs: nounwind readnone247define fastcc <256 x double> @vfnmads_vvsvvl(<256 x double> %0, float %1, <256 x double> %2, <256 x double> %3) {248; CHECK-LABEL: vfnmads_vvsvvl:249; CHECK: # %bb.0:250; CHECK-NEXT: lea %s1, 128251; CHECK-NEXT: lvl %s1252; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.vvsvvl(<256 x double>, float, <256 x double>, <256 x double>, i32)263 264; Function Attrs: nounwind readnone265define fastcc <256 x double> @vfnmads_vvvvmvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {266; CHECK-LABEL: vfnmads_vvvvmvl:267; CHECK: # %bb.0:268; CHECK-NEXT: lea %s0, 128269; CHECK-NEXT: lvl %s0270; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.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> @vfnmads_vsvvmvl(float %0, <256 x double> %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {284; CHECK-LABEL: vfnmads_vsvvmvl:285; CHECK: # %bb.0:286; CHECK-NEXT: lea %s1, 128287; CHECK-NEXT: lvl %s1288; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.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> @vfnmads_vvsvmvl(<256 x double> %0, float %1, <256 x double> %2, <256 x i1> %3, <256 x double> %4) {302; CHECK-LABEL: vfnmads_vvsvmvl:303; CHECK: # %bb.0:304; CHECK-NEXT: lea %s1, 128305; CHECK-NEXT: lvl %s1306; CHECK-NEXT: vfnmad.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.vfnmads.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.vfnmads.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> @pvfnmad_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {320; CHECK-LABEL: pvfnmad_vvvvl:321; CHECK: # %bb.0:322; CHECK-NEXT: lea %s0, 256323; CHECK-NEXT: lvl %s0324; CHECK-NEXT: pvfnmad %v0, %v0, %v1, %v2325; CHECK-NEXT: b.l.t (, %s10)326 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmad.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.pvfnmad.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)332 333; Function Attrs: nounwind readnone334define fastcc <256 x double> @pvfnmad_vvvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {335; CHECK-LABEL: pvfnmad_vvvvvl:336; CHECK: # %bb.0:337; CHECK-NEXT: lea %s0, 128338; CHECK-NEXT: lvl %s0339; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.vvvvvl(<256 x double>, <256 x double>, <256 x double>, <256 x double>, i32)350 351; Function Attrs: nounwind readnone352define fastcc <256 x double> @pvfnmad_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {353; CHECK-LABEL: pvfnmad_vsvvl:354; CHECK: # %bb.0:355; CHECK-NEXT: lea %s1, 256356; CHECK-NEXT: lvl %s1357; CHECK-NEXT: pvfnmad %v0, %s0, %v0, %v1358; CHECK-NEXT: b.l.t (, %s10)359 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmad.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.pvfnmad.vsvvl(i64, <256 x double>, <256 x double>, i32)365 366; Function Attrs: nounwind readnone367define fastcc <256 x double> @pvfnmad_vsvvvl(i64 %0, <256 x double> %1, <256 x double> %2, <256 x double> %3) {368; CHECK-LABEL: pvfnmad_vsvvvl:369; CHECK: # %bb.0:370; CHECK-NEXT: lea %s1, 128371; CHECK-NEXT: lvl %s1372; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.vsvvvl(i64, <256 x double>, <256 x double>, <256 x double>, i32)383 384; Function Attrs: nounwind readnone385define fastcc <256 x double> @pvfnmad_vvsvl(<256 x double> %0, i64 %1, <256 x double> %2) {386; CHECK-LABEL: pvfnmad_vvsvl:387; CHECK: # %bb.0:388; CHECK-NEXT: lea %s1, 256389; CHECK-NEXT: lvl %s1390; CHECK-NEXT: pvfnmad %v0, %v0, %s0, %v1391; CHECK-NEXT: b.l.t (, %s10)392 %4 = tail call fast <256 x double> @llvm.ve.vl.pvfnmad.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.pvfnmad.vvsvl(<256 x double>, i64, <256 x double>, i32)398 399; Function Attrs: nounwind readnone400define fastcc <256 x double> @pvfnmad_vvsvvl(<256 x double> %0, i64 %1, <256 x double> %2, <256 x double> %3) {401; CHECK-LABEL: pvfnmad_vvsvvl:402; CHECK: # %bb.0:403; CHECK-NEXT: lea %s1, 128404; CHECK-NEXT: lvl %s1405; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.vvsvvl(<256 x double>, i64, <256 x double>, <256 x double>, i32)416 417; Function Attrs: nounwind readnone418define fastcc <256 x double> @pvfnmad_vvvvMvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) {419; CHECK-LABEL: pvfnmad_vvvvMvl:420; CHECK: # %bb.0:421; CHECK-NEXT: lea %s0, 128422; CHECK-NEXT: lvl %s0423; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.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> @pvfnmad_vsvvMvl(i64 %0, <256 x double> %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) {437; CHECK-LABEL: pvfnmad_vsvvMvl:438; CHECK: # %bb.0:439; CHECK-NEXT: lea %s1, 128440; CHECK-NEXT: lvl %s1441; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.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> @pvfnmad_vvsvMvl(<256 x double> %0, i64 %1, <256 x double> %2, <512 x i1> %3, <256 x double> %4) {455; CHECK-LABEL: pvfnmad_vvsvMvl:456; CHECK: # %bb.0:457; CHECK-NEXT: lea %s1, 128458; CHECK-NEXT: lvl %s1459; CHECK-NEXT: pvfnmad %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.pvfnmad.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.pvfnmad.vvsvMvl(<256 x double>, i64, <256 x double>, <512 x i1>, <256 x double>, i32)470