You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/vpmerge-sdnode.ll
+49Lines changed: 49 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1663,3 +1663,52 @@ define <vscale x 8 x double> @vpmerge_vf_nxv8f64(double %a, <vscale x 8 x double
1663
1663
%v = call <vscale x 8 x double> @llvm.vp.merge.nxv8f64(<vscale x 8 x i1> %m, <vscale x 8 x double> %va, <vscale x 8 x double> %vb, i32%evl)
1664
1664
ret <vscale x 8 x double> %v
1665
1665
}
1666
+
1667
+
define <vscale x 2 x i32> @splat_nxv2i32(i32%x, i32zeroext%evl) {
1668
+
; CHECK-LABEL: splat_nxv2i32:
1669
+
; CHECK: # %bb.0:
1670
+
; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1671
+
; CHECK-NEXT: vmset.m v0
1672
+
; CHECK-NEXT: vmerge.vxm v8, v8, a0, v0
1673
+
; CHECK-NEXT: ret
1674
+
%head = insertelement <vscale x 2 x i32> poison, i32%x, i320
1675
+
%splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1676
+
%v = call <vscale x 2 x i32> @llvm.vp.merge(<vscale x 2 x i1> splat (i1true), <vscale x 2 x i32> %splat, <vscale x 2 x i32> poison, i32%evl)
1677
+
ret <vscale x 2 x i32> %v
1678
+
}
1679
+
1680
+
define <vscale x 2 x float> @splat_nxv2f32(float%x, i32zeroext%evl) {
1681
+
; CHECK-LABEL: splat_nxv2f32:
1682
+
; CHECK: # %bb.0:
1683
+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1684
+
; CHECK-NEXT: vmset.m v0
1685
+
; CHECK-NEXT: vfmerge.vfm v8, v8, fa0, v0
1686
+
; CHECK-NEXT: ret
1687
+
%head = insertelement <vscale x 2 x float> poison, float%x, i320
1688
+
%splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
1689
+
%v = call <vscale x 2 x float> @llvm.vp.merge(<vscale x 2 x i1> splat (i1true), <vscale x 2 x float> %splat, <vscale x 2 x float> poison, i32%evl)
1690
+
ret <vscale x 2 x float> %v
1691
+
}
1692
+
1693
+
define <vscale x 2 x i32> @splat_nxv2i32_const(i32zeroext%evl) {
1694
+
; CHECK-LABEL: splat_nxv2i32_const:
1695
+
; CHECK: # %bb.0:
1696
+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1697
+
; CHECK-NEXT: vmset.m v0
1698
+
; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
1699
+
; CHECK-NEXT: ret
1700
+
%v = call <vscale x 2 x i32> @llvm.vp.merge(<vscale x 2 x i1> splat (i1true), <vscale x 2 x i32> splat (i321), <vscale x 2 x i32> poison, i32%evl)
1701
+
ret <vscale x 2 x i32> %v
1702
+
}
1703
+
1704
+
define <vscale x 2 x float> @splat_nxv2f32_const(i32zeroext%evl) {
1705
+
; CHECK-LABEL: splat_nxv2f32_const:
1706
+
; CHECK: # %bb.0:
1707
+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1708
+
; CHECK-NEXT: vmset.m v0
1709
+
; CHECK-NEXT: lui a0, 270976
1710
+
; CHECK-NEXT: vmerge.vxm v8, v8, a0, v0
1711
+
; CHECK-NEXT: ret
1712
+
%v = call <vscale x 2 x float> @llvm.vp.merge(<vscale x 2 x i1> splat (i1true), <vscale x 2 x float> splat (float42.0), <vscale x 2 x float> poison, i32%evl)
0 commit comments