brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 7ea47c3 Raw
206 lines · plain
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s2 3;;; Test vector floating reciprocal square root intrinsic instructions4;;;5;;; Note:6;;;   We test VRSQRT*vl, VRSQRT*vl_v, PVRSQRT*vl, and PVRSQRT*vl_v7;;;   instructions.8 9; Function Attrs: nounwind readnone10define fastcc <256 x double> @vrsqrtd_vvl(<256 x double> %0) {11; CHECK-LABEL: vrsqrtd_vvl:12; CHECK:       # %bb.0:13; CHECK-NEXT:    lea %s0, 25614; CHECK-NEXT:    lvl %s015; CHECK-NEXT:    vrsqrt.d %v0, %v016; CHECK-NEXT:    b.l.t (, %s10)17  %2 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtd.vvl(<256 x double> %0, i32 256)18  ret <256 x double> %219}20 21; Function Attrs: nounwind readnone22declare <256 x double> @llvm.ve.vl.vrsqrtd.vvl(<256 x double>, i32)23 24; Function Attrs: nounwind readnone25define fastcc <256 x double> @vrsqrtd_vvvl(<256 x double> %0, <256 x double> %1) {26; CHECK-LABEL: vrsqrtd_vvvl:27; CHECK:       # %bb.0:28; CHECK-NEXT:    lea %s0, 12829; CHECK-NEXT:    lvl %s030; CHECK-NEXT:    vrsqrt.d %v1, %v031; CHECK-NEXT:    lea %s16, 25632; CHECK-NEXT:    lvl %s1633; CHECK-NEXT:    vor %v0, (0)1, %v134; CHECK-NEXT:    b.l.t (, %s10)35  %3 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtd.vvvl(<256 x double> %0, <256 x double> %1, i32 128)36  ret <256 x double> %337}38 39; Function Attrs: nounwind readnone40declare <256 x double> @llvm.ve.vl.vrsqrtd.vvvl(<256 x double>, <256 x double>, i32)41 42; Function Attrs: nounwind readnone43define fastcc <256 x double> @vrsqrts_vvl(<256 x double> %0) {44; CHECK-LABEL: vrsqrts_vvl:45; CHECK:       # %bb.0:46; CHECK-NEXT:    lea %s0, 25647; CHECK-NEXT:    lvl %s048; CHECK-NEXT:    vrsqrt.s %v0, %v049; CHECK-NEXT:    b.l.t (, %s10)50  %2 = tail call fast <256 x double> @llvm.ve.vl.vrsqrts.vvl(<256 x double> %0, i32 256)51  ret <256 x double> %252}53 54; Function Attrs: nounwind readnone55declare <256 x double> @llvm.ve.vl.vrsqrts.vvl(<256 x double>, i32)56 57; Function Attrs: nounwind readnone58define fastcc <256 x double> @vrsqrts_vvvl(<256 x double> %0, <256 x double> %1) {59; CHECK-LABEL: vrsqrts_vvvl:60; CHECK:       # %bb.0:61; CHECK-NEXT:    lea %s0, 12862; CHECK-NEXT:    lvl %s063; CHECK-NEXT:    vrsqrt.s %v1, %v064; CHECK-NEXT:    lea %s16, 25665; CHECK-NEXT:    lvl %s1666; CHECK-NEXT:    vor %v0, (0)1, %v167; CHECK-NEXT:    b.l.t (, %s10)68  %3 = tail call fast <256 x double> @llvm.ve.vl.vrsqrts.vvvl(<256 x double> %0, <256 x double> %1, i32 128)69  ret <256 x double> %370}71 72; Function Attrs: nounwind readnone73declare <256 x double> @llvm.ve.vl.vrsqrts.vvvl(<256 x double>, <256 x double>, i32)74 75; Function Attrs: nounwind readnone76define fastcc <256 x double> @vrsqrtdnex_vvl(<256 x double> %0) {77; CHECK-LABEL: vrsqrtdnex_vvl:78; CHECK:       # %bb.0:79; CHECK-NEXT:    lea %s0, 25680; CHECK-NEXT:    lvl %s081; CHECK-NEXT:    vrsqrt.d.nex %v0, %v082; CHECK-NEXT:    b.l.t (, %s10)83  %2 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtdnex.vvl(<256 x double> %0, i32 256)84  ret <256 x double> %285}86 87; Function Attrs: nounwind readnone88declare <256 x double> @llvm.ve.vl.vrsqrtdnex.vvl(<256 x double>, i32)89 90; Function Attrs: nounwind readnone91define fastcc <256 x double> @vrsqrtdnex_vvvl(<256 x double> %0, <256 x double> %1) {92; CHECK-LABEL: vrsqrtdnex_vvvl:93; CHECK:       # %bb.0:94; CHECK-NEXT:    lea %s0, 12895; CHECK-NEXT:    lvl %s096; CHECK-NEXT:    vrsqrt.d.nex %v1, %v097; CHECK-NEXT:    lea %s16, 25698; CHECK-NEXT:    lvl %s1699; CHECK-NEXT:    vor %v0, (0)1, %v1100; CHECK-NEXT:    b.l.t (, %s10)101  %3 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtdnex.vvvl(<256 x double> %0, <256 x double> %1, i32 128)102  ret <256 x double> %3103}104 105; Function Attrs: nounwind readnone106declare <256 x double> @llvm.ve.vl.vrsqrtdnex.vvvl(<256 x double>, <256 x double>, i32)107 108; Function Attrs: nounwind readnone109define fastcc <256 x double> @vrsqrtsnex_vvl(<256 x double> %0) {110; CHECK-LABEL: vrsqrtsnex_vvl:111; CHECK:       # %bb.0:112; CHECK-NEXT:    lea %s0, 256113; CHECK-NEXT:    lvl %s0114; CHECK-NEXT:    vrsqrt.s.nex %v0, %v0115; CHECK-NEXT:    b.l.t (, %s10)116  %2 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtsnex.vvl(<256 x double> %0, i32 256)117  ret <256 x double> %2118}119 120; Function Attrs: nounwind readnone121declare <256 x double> @llvm.ve.vl.vrsqrtsnex.vvl(<256 x double>, i32)122 123; Function Attrs: nounwind readnone124define fastcc <256 x double> @vrsqrtsnex_vvvl(<256 x double> %0, <256 x double> %1) {125; CHECK-LABEL: vrsqrtsnex_vvvl:126; CHECK:       # %bb.0:127; CHECK-NEXT:    lea %s0, 128128; CHECK-NEXT:    lvl %s0129; CHECK-NEXT:    vrsqrt.s.nex %v1, %v0130; CHECK-NEXT:    lea %s16, 256131; CHECK-NEXT:    lvl %s16132; CHECK-NEXT:    vor %v0, (0)1, %v1133; CHECK-NEXT:    b.l.t (, %s10)134  %3 = tail call fast <256 x double> @llvm.ve.vl.vrsqrtsnex.vvvl(<256 x double> %0, <256 x double> %1, i32 128)135  ret <256 x double> %3136}137 138; Function Attrs: nounwind readnone139declare <256 x double> @llvm.ve.vl.vrsqrtsnex.vvvl(<256 x double>, <256 x double>, i32)140 141; Function Attrs: nounwind readnone142define fastcc <256 x double> @pvrsqrt_vvl(<256 x double> %0) {143; CHECK-LABEL: pvrsqrt_vvl:144; CHECK:       # %bb.0:145; CHECK-NEXT:    lea %s0, 256146; CHECK-NEXT:    lvl %s0147; CHECK-NEXT:    pvrsqrt %v0, %v0148; CHECK-NEXT:    b.l.t (, %s10)149  %2 = tail call fast <256 x double> @llvm.ve.vl.pvrsqrt.vvl(<256 x double> %0, i32 256)150  ret <256 x double> %2151}152 153; Function Attrs: nounwind readnone154declare <256 x double> @llvm.ve.vl.pvrsqrt.vvl(<256 x double>, i32)155 156; Function Attrs: nounwind readnone157define fastcc <256 x double> @pvrsqrt_vvvl(<256 x double> %0, <256 x double> %1) {158; CHECK-LABEL: pvrsqrt_vvvl:159; CHECK:       # %bb.0:160; CHECK-NEXT:    lea %s0, 128161; CHECK-NEXT:    lvl %s0162; CHECK-NEXT:    pvrsqrt %v1, %v0163; CHECK-NEXT:    lea %s16, 256164; CHECK-NEXT:    lvl %s16165; CHECK-NEXT:    vor %v0, (0)1, %v1166; CHECK-NEXT:    b.l.t (, %s10)167  %3 = tail call fast <256 x double> @llvm.ve.vl.pvrsqrt.vvvl(<256 x double> %0, <256 x double> %1, i32 128)168  ret <256 x double> %3169}170 171; Function Attrs: nounwind readnone172declare <256 x double> @llvm.ve.vl.pvrsqrt.vvvl(<256 x double>, <256 x double>, i32)173 174; Function Attrs: nounwind readnone175define fastcc <256 x double> @pvrsqrtnex_vvl(<256 x double> %0) {176; CHECK-LABEL: pvrsqrtnex_vvl:177; CHECK:       # %bb.0:178; CHECK-NEXT:    lea %s0, 256179; CHECK-NEXT:    lvl %s0180; CHECK-NEXT:    pvrsqrt.nex %v0, %v0181; CHECK-NEXT:    b.l.t (, %s10)182  %2 = tail call fast <256 x double> @llvm.ve.vl.pvrsqrtnex.vvl(<256 x double> %0, i32 256)183  ret <256 x double> %2184}185 186; Function Attrs: nounwind readnone187declare <256 x double> @llvm.ve.vl.pvrsqrtnex.vvl(<256 x double>, i32)188 189; Function Attrs: nounwind readnone190define fastcc <256 x double> @pvrsqrtnex_vvvl(<256 x double> %0, <256 x double> %1) {191; CHECK-LABEL: pvrsqrtnex_vvvl:192; CHECK:       # %bb.0:193; CHECK-NEXT:    lea %s0, 128194; CHECK-NEXT:    lvl %s0195; CHECK-NEXT:    pvrsqrt.nex %v1, %v0196; CHECK-NEXT:    lea %s16, 256197; CHECK-NEXT:    lvl %s16198; CHECK-NEXT:    vor %v0, (0)1, %v1199; CHECK-NEXT:    b.l.t (, %s10)200  %3 = tail call fast <256 x double> @llvm.ve.vl.pvrsqrtnex.vvvl(<256 x double> %0, <256 x double> %1, i32 128)201  ret <256 x double> %3202}203 204; Function Attrs: nounwind readnone205declare <256 x double> @llvm.ve.vl.pvrsqrtnex.vvvl(<256 x double>, <256 x double>, i32)206