brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · e970758 Raw
108 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV323; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV644 5define <vscale x 1 x i1> @vp_splat_nxv1i1_true_unmasked(i32 zeroext %evl) {6; CHECK-LABEL: vp_splat_nxv1i1_true_unmasked:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma9; CHECK-NEXT:    vmset.m v010; CHECK-NEXT:    ret11  %splat = call <vscale x 1 x i1> @llvm.experimental.vp.splat.nxv1i1(i1 true, <vscale x 1 x i1> splat (i1 true), i32 %evl)12  ret <vscale x 1 x i1> %splat13}14 15define <vscale x 1 x i1> @vp_splat_nxv1i1_false_unmasked(i32 zeroext %evl) {16; CHECK-LABEL: vp_splat_nxv1i1_false_unmasked:17; CHECK:       # %bb.0:18; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma19; CHECK-NEXT:    vmclr.m v020; CHECK-NEXT:    ret21  %splat = call <vscale x 1 x i1> @llvm.experimental.vp.splat.nxv1i1(i1 false, <vscale x 1 x i1> splat (i1 true), i32 %evl)22  ret <vscale x 1 x i1> %splat23}24 25define <vscale x 1 x i1> @vp_splat_nxv1i1(i1 %val, <vscale x 1 x i1> %m, i32 zeroext %evl) {26; CHECK-LABEL: vp_splat_nxv1i1:27; CHECK:       # %bb.0:28; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma29; CHECK-NEXT:    vmv.v.x v8, a030; CHECK-NEXT:    vmsne.vi v0, v8, 0, v0.t31; CHECK-NEXT:    ret32  %splat = call <vscale x 1 x i1> @llvm.experimental.vp.splat.nxv1i1(i1 %val, <vscale x 1 x i1> %m, i32 %evl)33  ret <vscale x 1 x i1> %splat34}35 36define <vscale x 2 x i1> @vp_splat_nxv2i1(i1 %val, <vscale x 2 x i1> %m, i32 zeroext %evl) {37; CHECK-LABEL: vp_splat_nxv2i1:38; CHECK:       # %bb.0:39; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma40; CHECK-NEXT:    vmv.v.x v8, a041; CHECK-NEXT:    vmsne.vi v0, v8, 0, v0.t42; CHECK-NEXT:    ret43  %splat = call <vscale x 2 x i1> @llvm.experimental.vp.splat.nxv2i1(i1 %val, <vscale x 2 x i1> %m, i32 %evl)44  ret <vscale x 2 x i1> %splat45}46 47define <vscale x 4 x i1> @vp_splat_nxv4i1(i1 %val, <vscale x 4 x i1> %m, i32 zeroext %evl) {48; CHECK-LABEL: vp_splat_nxv4i1:49; CHECK:       # %bb.0:50; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma51; CHECK-NEXT:    vmv.v.x v8, a052; CHECK-NEXT:    vmsne.vi v0, v8, 0, v0.t53; CHECK-NEXT:    ret54  %splat = call <vscale x 4 x i1> @llvm.experimental.vp.splat.nxv4i1(i1 %val, <vscale x 4 x i1> %m, i32 %evl)55  ret <vscale x 4 x i1> %splat56}57 58define <vscale x 8 x i1> @vp_splat_nxv8i1(i1 %val, <vscale x 8 x i1> %m, i32 zeroext %evl) {59; CHECK-LABEL: vp_splat_nxv8i1:60; CHECK:       # %bb.0:61; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma62; CHECK-NEXT:    vmv.v.x v8, a063; CHECK-NEXT:    vmsne.vi v0, v8, 0, v0.t64; CHECK-NEXT:    ret65  %splat = call <vscale x 8 x i1> @llvm.experimental.vp.splat.nxv8i1(i1 %val, <vscale x 8 x i1> %m, i32 %evl)66  ret <vscale x 8 x i1> %splat67}68 69define <vscale x 16 x i1> @vp_splat_nxv16i1(i1 %val, <vscale x 16 x i1> %m, i32 zeroext %evl) {70; CHECK-LABEL: vp_splat_nxv16i1:71; CHECK:       # %bb.0:72; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma73; CHECK-NEXT:    vmv.v.x v10, a074; CHECK-NEXT:    vmsne.vi v8, v10, 0, v0.t75; CHECK-NEXT:    vmv1r.v v0, v876; CHECK-NEXT:    ret77  %splat = call <vscale x 16 x i1> @llvm.experimental.vp.splat.nxv16i1(i1 %val, <vscale x 16 x i1> %m, i32 %evl)78  ret <vscale x 16 x i1> %splat79}80 81define <vscale x 32 x i1> @vp_splat_nxv32i1(i1 %val, <vscale x 32 x i1> %m, i32 zeroext %evl) {82; CHECK-LABEL: vp_splat_nxv32i1:83; CHECK:       # %bb.0:84; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma85; CHECK-NEXT:    vmv.v.x v12, a086; CHECK-NEXT:    vmsne.vi v8, v12, 0, v0.t87; CHECK-NEXT:    vmv1r.v v0, v888; CHECK-NEXT:    ret89  %splat = call <vscale x 32 x i1> @llvm.experimental.vp.splat.nxv32i1(i1 %val, <vscale x 32 x i1> %m, i32 %evl)90  ret <vscale x 32 x i1> %splat91}92 93define <vscale x 64 x i1> @vp_splat_nxv64i1(i1 %val, <vscale x 64 x i1> %m, i32 zeroext %evl) {94; CHECK-LABEL: vp_splat_nxv64i1:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma97; CHECK-NEXT:    vmv.v.x v16, a098; CHECK-NEXT:    vmsne.vi v8, v16, 0, v0.t99; CHECK-NEXT:    vmv1r.v v0, v8100; CHECK-NEXT:    ret101  %splat = call <vscale x 64 x i1> @llvm.experimental.vp.splat.nxv64i1(i1 %val, <vscale x 64 x i1> %m, i32 %evl)102  ret <vscale x 64 x i1> %splat103}104 105;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:106; RV32: {{.*}}107; RV64: {{.*}}108