; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=riscv64 -mattr=+v | FileCheck %s define @vwadd_tu( %arg, %arg1, i32 signext %arg2) { ; CHECK-LABEL: vwadd_tu: ; CHECK: # %bb.0: # %bb ; CHECK-NEXT: slli a0, a0, 32 ; CHECK-NEXT: srli a0, a0, 32 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma ; CHECK-NEXT: vsext.vf2 v10, v8 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, tu, ma ; CHECK-NEXT: vwadd.wv v9, v9, v10 ; CHECK-NEXT: vmv1r.v v8, v9 ; CHECK-NEXT: ret bb: %tmp = call @llvm.vp.sext.nxv2i32.nxv2i8( %arg, shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), i32 %arg2) %tmp3 = call @llvm.vp.add.nxv2i32( %arg1, %tmp, shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), i32 %arg2) %tmp4 = call @llvm.vp.merge.nxv2i32( shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), %tmp3, %arg1, i32 %arg2) ret %tmp4 } define @vwaddu_tu( %arg, %arg1, i32 signext %arg2) { ; CHECK-LABEL: vwaddu_tu: ; CHECK: # %bb.0: # %bb ; CHECK-NEXT: slli a0, a0, 32 ; CHECK-NEXT: srli a0, a0, 32 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma ; CHECK-NEXT: vzext.vf2 v10, v8 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, tu, ma ; CHECK-NEXT: vwaddu.wv v9, v9, v10 ; CHECK-NEXT: vmv1r.v v8, v9 ; CHECK-NEXT: ret bb: %tmp = call @llvm.vp.zext.nxv2i32.nxv2i8( %arg, shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), i32 %arg2) %tmp3 = call @llvm.vp.add.nxv2i32( %arg1, %tmp, shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), i32 %arg2) %tmp4 = call @llvm.vp.merge.nxv2i32( shufflevector ( insertelement ( poison, i1 true, i32 0), poison, zeroinitializer), %tmp3, %arg1, i32 %arg2) ret %tmp4 } declare @llvm.vp.sext.nxv2i32.nxv2i8(, , i32) declare @llvm.vp.zext.nxv2i32.nxv2i8(, , i32) declare @llvm.vp.add.nxv2i32(, , , i32) declare @llvm.vp.merge.nxv2i32(, , , i32)