127 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector sequential number intrinsic instructions4;;;5;;; Note:6;;; We test VSEQ*l, VSEQ*l_v, PVSEQ*l, and PVSEQ*l_v instructions.7 8; Function Attrs: nounwind readnone9define fastcc <256 x double> @vseq_vl() {10; CHECK-LABEL: vseq_vl:11; CHECK: # %bb.0:12; CHECK-NEXT: lea %s0, 25613; CHECK-NEXT: lvl %s014; CHECK-NEXT: vseq %v015; CHECK-NEXT: b.l.t (, %s10)16 %1 = tail call fast <256 x double> @llvm.ve.vl.vseq.vl(i32 256)17 ret <256 x double> %118}19 20; Function Attrs: nounwind readnone21declare <256 x double> @llvm.ve.vl.vseq.vl(i32)22 23; Function Attrs: nounwind readnone24define fastcc <256 x double> @vseq_vvl(<256 x double> %0) {25; CHECK-LABEL: vseq_vvl:26; CHECK: # %bb.0:27; CHECK-NEXT: lea %s0, 25628; CHECK-NEXT: lvl %s029; CHECK-NEXT: vseq %v030; CHECK-NEXT: b.l.t (, %s10)31 %2 = tail call fast <256 x double> @llvm.ve.vl.vseq.vvl(<256 x double> %0, i32 256)32 ret <256 x double> %233}34 35; Function Attrs: nounwind readnone36declare <256 x double> @llvm.ve.vl.vseq.vvl(<256 x double>, i32)37 38; Function Attrs: nounwind readnone39define fastcc <256 x double> @pvseqlo_vl() {40; CHECK-LABEL: pvseqlo_vl:41; CHECK: # %bb.0:42; CHECK-NEXT: lea %s0, 25643; CHECK-NEXT: lvl %s044; CHECK-NEXT: pvseq.lo %v045; CHECK-NEXT: b.l.t (, %s10)46 %1 = tail call fast <256 x double> @llvm.ve.vl.pvseqlo.vl(i32 256)47 ret <256 x double> %148}49 50; Function Attrs: nounwind readnone51declare <256 x double> @llvm.ve.vl.pvseqlo.vl(i32)52 53; Function Attrs: nounwind readnone54define fastcc <256 x double> @pvseqlo_vvl(<256 x double> %0) {55; CHECK-LABEL: pvseqlo_vvl:56; CHECK: # %bb.0:57; CHECK-NEXT: lea %s0, 25658; CHECK-NEXT: lvl %s059; CHECK-NEXT: pvseq.lo %v060; CHECK-NEXT: b.l.t (, %s10)61 %2 = tail call fast <256 x double> @llvm.ve.vl.pvseqlo.vvl(<256 x double> %0, i32 256)62 ret <256 x double> %263}64 65; Function Attrs: nounwind readnone66declare <256 x double> @llvm.ve.vl.pvseqlo.vvl(<256 x double>, i32)67 68; Function Attrs: nounwind readnone69define fastcc <256 x double> @pvsequp_vl() {70; CHECK-LABEL: pvsequp_vl:71; CHECK: # %bb.0:72; CHECK-NEXT: lea %s0, 25673; CHECK-NEXT: lvl %s074; CHECK-NEXT: pvseq.up %v075; CHECK-NEXT: b.l.t (, %s10)76 %1 = tail call fast <256 x double> @llvm.ve.vl.pvsequp.vl(i32 256)77 ret <256 x double> %178}79 80; Function Attrs: nounwind readnone81declare <256 x double> @llvm.ve.vl.pvsequp.vl(i32)82 83; Function Attrs: nounwind readnone84define fastcc <256 x double> @pvsequp_vvl(<256 x double> %0) {85; CHECK-LABEL: pvsequp_vvl:86; CHECK: # %bb.0:87; CHECK-NEXT: lea %s0, 25688; CHECK-NEXT: lvl %s089; CHECK-NEXT: pvseq.up %v090; CHECK-NEXT: b.l.t (, %s10)91 %2 = tail call fast <256 x double> @llvm.ve.vl.pvsequp.vvl(<256 x double> %0, i32 256)92 ret <256 x double> %293}94 95; Function Attrs: nounwind readnone96declare <256 x double> @llvm.ve.vl.pvsequp.vvl(<256 x double>, i32)97 98; Function Attrs: nounwind readnone99define fastcc <256 x double> @pvseq_vl() {100; CHECK-LABEL: pvseq_vl:101; CHECK: # %bb.0:102; CHECK-NEXT: lea %s0, 256103; CHECK-NEXT: lvl %s0104; CHECK-NEXT: pvseq %v0105; CHECK-NEXT: b.l.t (, %s10)106 %1 = tail call fast <256 x double> @llvm.ve.vl.pvseq.vl(i32 256)107 ret <256 x double> %1108}109 110; Function Attrs: nounwind readnone111declare <256 x double> @llvm.ve.vl.pvseq.vl(i32)112 113; Function Attrs: nounwind readnone114define fastcc <256 x double> @pvseq_vvl(<256 x double> %0) {115; CHECK-LABEL: pvseq_vvl:116; CHECK: # %bb.0:117; CHECK-NEXT: lea %s0, 256118; CHECK-NEXT: lvl %s0119; CHECK-NEXT: pvseq %v0120; CHECK-NEXT: b.l.t (, %s10)121 %2 = tail call fast <256 x double> @llvm.ve.vl.pvseq.vvl(<256 x double> %0, i32 256)122 ret <256 x double> %2123}124 125; Function Attrs: nounwind readnone126declare <256 x double> @llvm.ve.vl.pvseq.vvl(<256 x double>, i32)127