brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.9 KiB · df82013 Raw
315 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector floating compare and select maximum intrinsic instructions4;;;5;;; Note:6;;;   We test VFMAX*vvl, VFMAX*vvl_v, VFMAX*rvl, VFMAX*rvl_v, VFMAX*vvml_v,7;;;   VFMAX*rvml_v, PVFMAX*vvl, PVFMAX*vvl_v, PVFMAX*rvl, PVFMAX*rvl_v,8;;;   PVFMAX*vvml_v, and PVFMAX*rvml_v instructions.9 10; Function Attrs: nounwind readnone11define fastcc <256 x double> @vfmaxd_vvvl(<256 x double> %0, <256 x double> %1) {12; CHECK-LABEL: vfmaxd_vvvl:13; CHECK:       # %bb.0:14; CHECK-NEXT:    lea %s0, 25615; CHECK-NEXT:    lvl %s016; CHECK-NEXT:    vfmax.d %v0, %v0, %v117; CHECK-NEXT:    b.l.t (, %s10)18  %3 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vvvl(<256 x double> %0, <256 x double> %1, i32 256)19  ret <256 x double> %320}21 22; Function Attrs: nounwind readnone23declare <256 x double> @llvm.ve.vl.vfmaxd.vvvl(<256 x double>, <256 x double>, i32)24 25; Function Attrs: nounwind readnone26define fastcc <256 x double> @vfmaxd_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {27; CHECK-LABEL: vfmaxd_vvvvl:28; CHECK:       # %bb.0:29; CHECK-NEXT:    lea %s0, 12830; CHECK-NEXT:    lvl %s031; CHECK-NEXT:    vfmax.d %v2, %v0, %v132; CHECK-NEXT:    lea %s16, 25633; CHECK-NEXT:    lvl %s1634; CHECK-NEXT:    vor %v0, (0)1, %v235; CHECK-NEXT:    b.l.t (, %s10)36  %4 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)37  ret <256 x double> %438}39 40; Function Attrs: nounwind readnone41declare <256 x double> @llvm.ve.vl.vfmaxd.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)42 43; Function Attrs: nounwind readnone44define fastcc <256 x double> @vfmaxd_vsvl(double %0, <256 x double> %1) {45; CHECK-LABEL: vfmaxd_vsvl:46; CHECK:       # %bb.0:47; CHECK-NEXT:    lea %s1, 25648; CHECK-NEXT:    lvl %s149; CHECK-NEXT:    vfmax.d %v0, %s0, %v050; CHECK-NEXT:    b.l.t (, %s10)51  %3 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vsvl(double %0, <256 x double> %1, i32 256)52  ret <256 x double> %353}54 55; Function Attrs: nounwind readnone56declare <256 x double> @llvm.ve.vl.vfmaxd.vsvl(double, <256 x double>, i32)57 58; Function Attrs: nounwind readnone59define fastcc <256 x double> @vfmaxd_vsvvl(double %0, <256 x double> %1, <256 x double> %2) {60; CHECK-LABEL: vfmaxd_vsvvl:61; CHECK:       # %bb.0:62; CHECK-NEXT:    lea %s1, 12863; CHECK-NEXT:    lvl %s164; CHECK-NEXT:    vfmax.d %v1, %s0, %v065; CHECK-NEXT:    lea %s16, 25666; CHECK-NEXT:    lvl %s1667; CHECK-NEXT:    vor %v0, (0)1, %v168; CHECK-NEXT:    b.l.t (, %s10)69  %4 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vsvvl(double %0, <256 x double> %1, <256 x double> %2, i32 128)70  ret <256 x double> %471}72 73; Function Attrs: nounwind readnone74declare <256 x double> @llvm.ve.vl.vfmaxd.vsvvl(double, <256 x double>, <256 x double>, i32)75 76; Function Attrs: nounwind readnone77define fastcc <256 x double> @vfmaxd_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {78; CHECK-LABEL: vfmaxd_vvvmvl:79; CHECK:       # %bb.0:80; CHECK-NEXT:    lea %s0, 12881; CHECK-NEXT:    lvl %s082; CHECK-NEXT:    vfmax.d %v2, %v0, %v1, %vm183; CHECK-NEXT:    lea %s16, 25684; CHECK-NEXT:    lvl %s1685; CHECK-NEXT:    vor %v0, (0)1, %v286; CHECK-NEXT:    b.l.t (, %s10)87  %5 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)88  ret <256 x double> %589}90 91; Function Attrs: nounwind readnone92declare <256 x double> @llvm.ve.vl.vfmaxd.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)93 94; Function Attrs: nounwind readnone95define fastcc <256 x double> @vfmaxd_vsvmvl(double %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {96; CHECK-LABEL: vfmaxd_vsvmvl:97; CHECK:       # %bb.0:98; CHECK-NEXT:    lea %s1, 12899; CHECK-NEXT:    lvl %s1100; CHECK-NEXT:    vfmax.d %v1, %s0, %v0, %vm1101; CHECK-NEXT:    lea %s16, 256102; CHECK-NEXT:    lvl %s16103; CHECK-NEXT:    vor %v0, (0)1, %v1104; CHECK-NEXT:    b.l.t (, %s10)105  %5 = tail call fast <256 x double> @llvm.ve.vl.vfmaxd.vsvmvl(double %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)106  ret <256 x double> %5107}108 109; Function Attrs: nounwind readnone110declare <256 x double> @llvm.ve.vl.vfmaxd.vsvmvl(double, <256 x double>, <256 x i1>, <256 x double>, i32)111 112; Function Attrs: nounwind readnone113define fastcc <256 x double> @vfmaxs_vvvl(<256 x double> %0, <256 x double> %1) {114; CHECK-LABEL: vfmaxs_vvvl:115; CHECK:       # %bb.0:116; CHECK-NEXT:    lea %s0, 256117; CHECK-NEXT:    lvl %s0118; CHECK-NEXT:    vfmax.s %v0, %v0, %v1119; CHECK-NEXT:    b.l.t (, %s10)120  %3 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vvvl(<256 x double> %0, <256 x double> %1, i32 256)121  ret <256 x double> %3122}123 124; Function Attrs: nounwind readnone125declare <256 x double> @llvm.ve.vl.vfmaxs.vvvl(<256 x double>, <256 x double>, i32)126 127; Function Attrs: nounwind readnone128define fastcc <256 x double> @vfmaxs_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {129; CHECK-LABEL: vfmaxs_vvvvl:130; CHECK:       # %bb.0:131; CHECK-NEXT:    lea %s0, 128132; CHECK-NEXT:    lvl %s0133; CHECK-NEXT:    vfmax.s %v2, %v0, %v1134; CHECK-NEXT:    lea %s16, 256135; CHECK-NEXT:    lvl %s16136; CHECK-NEXT:    vor %v0, (0)1, %v2137; CHECK-NEXT:    b.l.t (, %s10)138  %4 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)139  ret <256 x double> %4140}141 142; Function Attrs: nounwind readnone143declare <256 x double> @llvm.ve.vl.vfmaxs.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)144 145; Function Attrs: nounwind readnone146define fastcc <256 x double> @vfmaxs_vsvl(float %0, <256 x double> %1) {147; CHECK-LABEL: vfmaxs_vsvl:148; CHECK:       # %bb.0:149; CHECK-NEXT:    lea %s1, 256150; CHECK-NEXT:    lvl %s1151; CHECK-NEXT:    vfmax.s %v0, %s0, %v0152; CHECK-NEXT:    b.l.t (, %s10)153  %3 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vsvl(float %0, <256 x double> %1, i32 256)154  ret <256 x double> %3155}156 157; Function Attrs: nounwind readnone158declare <256 x double> @llvm.ve.vl.vfmaxs.vsvl(float, <256 x double>, i32)159 160; Function Attrs: nounwind readnone161define fastcc <256 x double> @vfmaxs_vsvvl(float %0, <256 x double> %1, <256 x double> %2) {162; CHECK-LABEL: vfmaxs_vsvvl:163; CHECK:       # %bb.0:164; CHECK-NEXT:    lea %s1, 128165; CHECK-NEXT:    lvl %s1166; CHECK-NEXT:    vfmax.s %v1, %s0, %v0167; CHECK-NEXT:    lea %s16, 256168; CHECK-NEXT:    lvl %s16169; CHECK-NEXT:    vor %v0, (0)1, %v1170; CHECK-NEXT:    b.l.t (, %s10)171  %4 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vsvvl(float %0, <256 x double> %1, <256 x double> %2, i32 128)172  ret <256 x double> %4173}174 175; Function Attrs: nounwind readnone176declare <256 x double> @llvm.ve.vl.vfmaxs.vsvvl(float, <256 x double>, <256 x double>, i32)177 178; Function Attrs: nounwind readnone179define fastcc <256 x double> @vfmaxs_vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {180; CHECK-LABEL: vfmaxs_vvvmvl:181; CHECK:       # %bb.0:182; CHECK-NEXT:    lea %s0, 128183; CHECK-NEXT:    lvl %s0184; CHECK-NEXT:    vfmax.s %v2, %v0, %v1, %vm1185; CHECK-NEXT:    lea %s16, 256186; CHECK-NEXT:    lvl %s16187; CHECK-NEXT:    vor %v0, (0)1, %v2188; CHECK-NEXT:    b.l.t (, %s10)189  %5 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vvvmvl(<256 x double> %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)190  ret <256 x double> %5191}192 193; Function Attrs: nounwind readnone194declare <256 x double> @llvm.ve.vl.vfmaxs.vvvmvl(<256 x double>, <256 x double>, <256 x i1>, <256 x double>, i32)195 196; Function Attrs: nounwind readnone197define fastcc <256 x double> @vfmaxs_vsvmvl(float %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3) {198; CHECK-LABEL: vfmaxs_vsvmvl:199; CHECK:       # %bb.0:200; CHECK-NEXT:    lea %s1, 128201; CHECK-NEXT:    lvl %s1202; CHECK-NEXT:    vfmax.s %v1, %s0, %v0, %vm1203; CHECK-NEXT:    lea %s16, 256204; CHECK-NEXT:    lvl %s16205; CHECK-NEXT:    vor %v0, (0)1, %v1206; CHECK-NEXT:    b.l.t (, %s10)207  %5 = tail call fast <256 x double> @llvm.ve.vl.vfmaxs.vsvmvl(float %0, <256 x double> %1, <256 x i1> %2, <256 x double> %3, i32 128)208  ret <256 x double> %5209}210 211; Function Attrs: nounwind readnone212declare <256 x double> @llvm.ve.vl.vfmaxs.vsvmvl(float, <256 x double>, <256 x i1>, <256 x double>, i32)213 214; Function Attrs: nounwind readnone215define fastcc <256 x double> @pvfmax_vvvl(<256 x double> %0, <256 x double> %1) {216; CHECK-LABEL: pvfmax_vvvl:217; CHECK:       # %bb.0:218; CHECK-NEXT:    lea %s0, 256219; CHECK-NEXT:    lvl %s0220; CHECK-NEXT:    pvfmax %v0, %v0, %v1221; CHECK-NEXT:    b.l.t (, %s10)222  %3 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vvvl(<256 x double> %0, <256 x double> %1, i32 256)223  ret <256 x double> %3224}225 226; Function Attrs: nounwind readnone227declare <256 x double> @llvm.ve.vl.pvfmax.vvvl(<256 x double>, <256 x double>, i32)228 229; Function Attrs: nounwind readnone230define fastcc <256 x double> @pvfmax_vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2) {231; CHECK-LABEL: pvfmax_vvvvl:232; CHECK:       # %bb.0:233; CHECK-NEXT:    lea %s0, 128234; CHECK-NEXT:    lvl %s0235; CHECK-NEXT:    pvfmax %v2, %v0, %v1236; CHECK-NEXT:    lea %s16, 256237; CHECK-NEXT:    lvl %s16238; CHECK-NEXT:    vor %v0, (0)1, %v2239; CHECK-NEXT:    b.l.t (, %s10)240  %4 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vvvvl(<256 x double> %0, <256 x double> %1, <256 x double> %2, i32 128)241  ret <256 x double> %4242}243 244; Function Attrs: nounwind readnone245declare <256 x double> @llvm.ve.vl.pvfmax.vvvvl(<256 x double>, <256 x double>, <256 x double>, i32)246 247; Function Attrs: nounwind readnone248define fastcc <256 x double> @pvfmax_vsvl(i64 %0, <256 x double> %1) {249; CHECK-LABEL: pvfmax_vsvl:250; CHECK:       # %bb.0:251; CHECK-NEXT:    lea %s1, 256252; CHECK-NEXT:    lvl %s1253; CHECK-NEXT:    pvfmax %v0, %s0, %v0254; CHECK-NEXT:    b.l.t (, %s10)255  %3 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vsvl(i64 %0, <256 x double> %1, i32 256)256  ret <256 x double> %3257}258 259; Function Attrs: nounwind readnone260declare <256 x double> @llvm.ve.vl.pvfmax.vsvl(i64, <256 x double>, i32)261 262; Function Attrs: nounwind readnone263define fastcc <256 x double> @pvfmax_vsvvl(i64 %0, <256 x double> %1, <256 x double> %2) {264; CHECK-LABEL: pvfmax_vsvvl:265; CHECK:       # %bb.0:266; CHECK-NEXT:    lea %s1, 128267; CHECK-NEXT:    lvl %s1268; CHECK-NEXT:    pvfmax %v1, %s0, %v0269; CHECK-NEXT:    lea %s16, 256270; CHECK-NEXT:    lvl %s16271; CHECK-NEXT:    vor %v0, (0)1, %v1272; CHECK-NEXT:    b.l.t (, %s10)273  %4 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vsvvl(i64 %0, <256 x double> %1, <256 x double> %2, i32 128)274  ret <256 x double> %4275}276 277; Function Attrs: nounwind readnone278declare <256 x double> @llvm.ve.vl.pvfmax.vsvvl(i64, <256 x double>, <256 x double>, i32)279 280; Function Attrs: nounwind readnone281define fastcc <256 x double> @pvfmax_vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {282; CHECK-LABEL: pvfmax_vvvMvl:283; CHECK:       # %bb.0:284; CHECK-NEXT:    lea %s0, 128285; CHECK-NEXT:    lvl %s0286; CHECK-NEXT:    pvfmax %v2, %v0, %v1, %vm2287; CHECK-NEXT:    lea %s16, 256288; CHECK-NEXT:    lvl %s16289; CHECK-NEXT:    vor %v0, (0)1, %v2290; CHECK-NEXT:    b.l.t (, %s10)291  %5 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vvvMvl(<256 x double> %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)292  ret <256 x double> %5293}294 295; Function Attrs: nounwind readnone296declare <256 x double> @llvm.ve.vl.pvfmax.vvvMvl(<256 x double>, <256 x double>, <512 x i1>, <256 x double>, i32)297 298; Function Attrs: nounwind readnone299define fastcc <256 x double> @pvfmax_vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3) {300; CHECK-LABEL: pvfmax_vsvMvl:301; CHECK:       # %bb.0:302; CHECK-NEXT:    lea %s1, 128303; CHECK-NEXT:    lvl %s1304; CHECK-NEXT:    pvfmax %v1, %s0, %v0, %vm2305; CHECK-NEXT:    lea %s16, 256306; CHECK-NEXT:    lvl %s16307; CHECK-NEXT:    vor %v0, (0)1, %v1308; CHECK-NEXT:    b.l.t (, %s10)309  %5 = tail call fast <256 x double> @llvm.ve.vl.pvfmax.vsvMvl(i64 %0, <256 x double> %1, <512 x i1> %2, <256 x double> %3, i32 128)310  ret <256 x double> %5311}312 313; Function Attrs: nounwind readnone314declare <256 x double> @llvm.ve.vl.pvfmax.vsvMvl(i64, <256 x double>, <512 x i1>, <256 x double>, i32)315