brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · baf0f00 Raw
211 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector bit reverse intrinsic instructions4;;;5;;; Note:6;;;   We test VBRV*vl, VBRV*vl_v, VBRV*vml_v, PVBRV*vl, PVBRV*vl_v, PVBRV*vml_v instructions.7 8; Function Attrs: nounwind readnone9define fastcc <256 x double> @vbrv_vvl(<256 x double> %0) {10; CHECK-LABEL: vbrv_vvl:11; CHECK:       # %bb.0:12; CHECK-NEXT:    lea %s0, 25613; CHECK-NEXT:    lvl %s014; CHECK-NEXT:    vbrv %v0, %v015; CHECK-NEXT:    b.l.t (, %s10)16  %2 = tail call fast <256 x double> @llvm.ve.vl.vbrv.vvl(<256 x double> %0, i32 256)17  ret <256 x double> %218}19 20; Function Attrs: nounwind readnone21declare <256 x double> @llvm.ve.vl.vbrv.vvl(<256 x double>, i32)22 23; Function Attrs: nounwind readnone24define fastcc <256 x double> @vbrv_vvvl(<256 x double> %0, <256 x double> %1) {25; CHECK-LABEL: vbrv_vvvl:26; CHECK:       # %bb.0:27; CHECK-NEXT:    lea %s0, 12828; CHECK-NEXT:    lvl %s029; CHECK-NEXT:    vbrv %v1, %v030; CHECK-NEXT:    lea %s16, 25631; CHECK-NEXT:    lvl %s1632; CHECK-NEXT:    vor %v0, (0)1, %v133; CHECK-NEXT:    b.l.t (, %s10)34  %3 = tail call fast <256 x double> @llvm.ve.vl.vbrv.vvvl(<256 x double> %0, <256 x double> %1, i32 128)35  ret <256 x double> %336}37 38; Function Attrs: nounwind readnone39declare <256 x double> @llvm.ve.vl.vbrv.vvvl(<256 x double>, <256 x double>, i32)40 41; Function Attrs: nounwind readnone42define fastcc <256 x double> @vbrv_vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {43; CHECK-LABEL: vbrv_vvmvl:44; CHECK:       # %bb.0:45; CHECK-NEXT:    lea %s0, 12846; CHECK-NEXT:    lvl %s047; CHECK-NEXT:    vbrv %v1, %v0, %vm148; CHECK-NEXT:    lea %s16, 25649; CHECK-NEXT:    lvl %s1650; CHECK-NEXT:    vor %v0, (0)1, %v151; CHECK-NEXT:    b.l.t (, %s10)52  %4 = tail call fast <256 x double> @llvm.ve.vl.vbrv.vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)53  ret <256 x double> %454}55 56; Function Attrs: nounwind readnone57declare <256 x double> @llvm.ve.vl.vbrv.vvmvl(<256 x double>, <256 x i1>, <256 x double>, i32)58 59; Function Attrs: nounwind readnone60define fastcc <256 x double> @pvbrvlo_vvl(<256 x double> %0) {61; CHECK-LABEL: pvbrvlo_vvl:62; CHECK:       # %bb.0:63; CHECK-NEXT:    lea %s0, 25664; CHECK-NEXT:    lvl %s065; CHECK-NEXT:    pvbrv.lo %v0, %v066; CHECK-NEXT:    b.l.t (, %s10)67  %2 = tail call fast <256 x double> @llvm.ve.vl.pvbrvlo.vvl(<256 x double> %0, i32 256)68  ret <256 x double> %269}70 71; Function Attrs: nounwind readnone72declare <256 x double> @llvm.ve.vl.pvbrvlo.vvl(<256 x double>, i32)73 74; Function Attrs: nounwind readnone75define fastcc <256 x double> @pvbrvlo_vvvl(<256 x double> %0, <256 x double> %1) {76; CHECK-LABEL: pvbrvlo_vvvl:77; CHECK:       # %bb.0:78; CHECK-NEXT:    lea %s0, 12879; CHECK-NEXT:    lvl %s080; CHECK-NEXT:    pvbrv.lo %v1, %v081; CHECK-NEXT:    lea %s16, 25682; CHECK-NEXT:    lvl %s1683; CHECK-NEXT:    vor %v0, (0)1, %v184; CHECK-NEXT:    b.l.t (, %s10)85  %3 = tail call fast <256 x double> @llvm.ve.vl.pvbrvlo.vvvl(<256 x double> %0, <256 x double> %1, i32 128)86  ret <256 x double> %387}88 89; Function Attrs: nounwind readnone90declare <256 x double> @llvm.ve.vl.pvbrvlo.vvvl(<256 x double>, <256 x double>, i32)91 92; Function Attrs: nounwind readnone93define fastcc <256 x double> @pvbrvlo_vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {94; CHECK-LABEL: pvbrvlo_vvmvl:95; CHECK:       # %bb.0:96; CHECK-NEXT:    lea %s0, 12897; CHECK-NEXT:    lvl %s098; CHECK-NEXT:    pvbrv.lo %v1, %v0, %vm199; CHECK-NEXT:    lea %s16, 256100; CHECK-NEXT:    lvl %s16101; CHECK-NEXT:    vor %v0, (0)1, %v1102; CHECK-NEXT:    b.l.t (, %s10)103  %4 = tail call fast <256 x double> @llvm.ve.vl.pvbrvlo.vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)104  ret <256 x double> %4105}106 107; Function Attrs: nounwind readnone108declare <256 x double> @llvm.ve.vl.pvbrvlo.vvmvl(<256 x double>, <256 x i1>, <256 x double>, i32)109 110; Function Attrs: nounwind readnone111define fastcc <256 x double> @pvbrvup_vvl(<256 x double> %0) {112; CHECK-LABEL: pvbrvup_vvl:113; CHECK:       # %bb.0:114; CHECK-NEXT:    lea %s0, 256115; CHECK-NEXT:    lvl %s0116; CHECK-NEXT:    pvbrv.up %v0, %v0117; CHECK-NEXT:    b.l.t (, %s10)118  %2 = tail call fast <256 x double> @llvm.ve.vl.pvbrvup.vvl(<256 x double> %0, i32 256)119  ret <256 x double> %2120}121 122; Function Attrs: nounwind readnone123declare <256 x double> @llvm.ve.vl.pvbrvup.vvl(<256 x double>, i32)124 125; Function Attrs: nounwind readnone126define fastcc <256 x double> @pvbrvup_vvvl(<256 x double> %0, <256 x double> %1) {127; CHECK-LABEL: pvbrvup_vvvl:128; CHECK:       # %bb.0:129; CHECK-NEXT:    lea %s0, 128130; CHECK-NEXT:    lvl %s0131; CHECK-NEXT:    pvbrv.up %v1, %v0132; CHECK-NEXT:    lea %s16, 256133; CHECK-NEXT:    lvl %s16134; CHECK-NEXT:    vor %v0, (0)1, %v1135; CHECK-NEXT:    b.l.t (, %s10)136  %3 = tail call fast <256 x double> @llvm.ve.vl.pvbrvup.vvvl(<256 x double> %0, <256 x double> %1, i32 128)137  ret <256 x double> %3138}139 140; Function Attrs: nounwind readnone141declare <256 x double> @llvm.ve.vl.pvbrvup.vvvl(<256 x double>, <256 x double>, i32)142 143; Function Attrs: nounwind readnone144define fastcc <256 x double> @pvbrvup_vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2) {145; CHECK-LABEL: pvbrvup_vvmvl:146; CHECK:       # %bb.0:147; CHECK-NEXT:    lea %s0, 128148; CHECK-NEXT:    lvl %s0149; CHECK-NEXT:    pvbrv.up %v1, %v0, %vm1150; CHECK-NEXT:    lea %s16, 256151; CHECK-NEXT:    lvl %s16152; CHECK-NEXT:    vor %v0, (0)1, %v1153; CHECK-NEXT:    b.l.t (, %s10)154  %4 = tail call fast <256 x double> @llvm.ve.vl.pvbrvup.vvmvl(<256 x double> %0, <256 x i1> %1, <256 x double> %2, i32 128)155  ret <256 x double> %4156}157 158; Function Attrs: nounwind readnone159declare <256 x double> @llvm.ve.vl.pvbrvup.vvmvl(<256 x double>, <256 x i1>, <256 x double>, i32)160 161; Function Attrs: nounwind readnone162define fastcc <256 x double> @pvbrv_vvl(<256 x double> %0) {163; CHECK-LABEL: pvbrv_vvl:164; CHECK:       # %bb.0:165; CHECK-NEXT:    lea %s0, 256166; CHECK-NEXT:    lvl %s0167; CHECK-NEXT:    pvbrv %v0, %v0168; CHECK-NEXT:    b.l.t (, %s10)169  %2 = tail call fast <256 x double> @llvm.ve.vl.pvbrv.vvl(<256 x double> %0, i32 256)170  ret <256 x double> %2171}172 173; Function Attrs: nounwind readnone174declare <256 x double> @llvm.ve.vl.pvbrv.vvl(<256 x double>, i32)175 176; Function Attrs: nounwind readnone177define fastcc <256 x double> @pvbrv_vvvl(<256 x double> %0, <256 x double> %1) {178; CHECK-LABEL: pvbrv_vvvl:179; CHECK:       # %bb.0:180; CHECK-NEXT:    lea %s0, 128181; CHECK-NEXT:    lvl %s0182; CHECK-NEXT:    pvbrv %v1, %v0183; CHECK-NEXT:    lea %s16, 256184; CHECK-NEXT:    lvl %s16185; CHECK-NEXT:    vor %v0, (0)1, %v1186; CHECK-NEXT:    b.l.t (, %s10)187  %3 = tail call fast <256 x double> @llvm.ve.vl.pvbrv.vvvl(<256 x double> %0, <256 x double> %1, i32 128)188  ret <256 x double> %3189}190 191; Function Attrs: nounwind readnone192declare <256 x double> @llvm.ve.vl.pvbrv.vvvl(<256 x double>, <256 x double>, i32)193 194; Function Attrs: nounwind readnone195define fastcc <256 x double> @pvbrv_vvMvl(<256 x double> %0, <512 x i1> %1, <256 x double> %2) {196; CHECK-LABEL: pvbrv_vvMvl:197; CHECK:       # %bb.0:198; CHECK-NEXT:    lea %s0, 128199; CHECK-NEXT:    lvl %s0200; CHECK-NEXT:    pvbrv %v1, %v0, %vm2201; CHECK-NEXT:    lea %s16, 256202; CHECK-NEXT:    lvl %s16203; CHECK-NEXT:    vor %v0, (0)1, %v1204; CHECK-NEXT:    b.l.t (, %s10)205  %4 = tail call fast <256 x double> @llvm.ve.vl.pvbrv.vvMvl(<256 x double> %0, <512 x i1> %1, <256 x double> %2, i32 128)206  ret <256 x double> %4207}208 209; Function Attrs: nounwind readnone210declare <256 x double> @llvm.ve.vl.pvbrv.vvMvl(<256 x double>, <512 x i1>, <256 x double>, i32)211