; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=riscv64 -mattr=+v -verify-machineinstrs | FileCheck %s define @vpmerge_mf8( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_mf8: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, tu, ma ; CHECK-NEXT: vmv.v.v v8, v9 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i8 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv1i8( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_mf4( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_mf4: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, tu, ma ; CHECK-NEXT: vmv.v.v v8, v9 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i8 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv2i8( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_mf2( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_mf2: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, tu, ma ; CHECK-NEXT: vmv.v.v v8, v9 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i8 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv4i8( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_m1( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_m1: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e8, m1, tu, ma ; CHECK-NEXT: vmv.v.v v8, v9 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i8 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv8i8( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_m2( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_m2: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma ; CHECK-NEXT: vmv.v.v v8, v10 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i16 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv8i16( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_m4( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_m4: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma ; CHECK-NEXT: vmv.v.v v8, v12 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i32 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv8i32( %allones, %y, %x, i32 %vl) ret %1 } define @vpmerge_m8( %x, %y, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_m8: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, ma ; CHECK-NEXT: vmv.v.v v8, v16 ; CHECK-NEXT: ret %splat = insertelement poison, i1 -1, i64 0 %allones = shufflevector %splat, poison, zeroinitializer %1 = call @llvm.vp.merge.nxv8i64( %allones, %y, %x, i32 %vl) ret %1 } declare @llvm.vp.merge.nxv1i8(, , , i32) declare @llvm.vp.merge.nxv2i8(, , , i32) declare @llvm.vp.merge.nxv4i8(, , , i32) declare @llvm.vp.merge.nxv8i8(, , , i32) declare @llvm.vp.merge.nxv8i16(, , , i32) declare @llvm.vp.merge.nxv8i32(, , , i32) declare @llvm.vp.merge.nxv8i64(, , , i32)