Skip to content

Commit 4ed47cb

Browse files
committed
Precommit tests
1 parent f24810a commit 4ed47cb

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpmerge.ll

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,3 +1353,56 @@ define <32 x double> @vpmerge_vf_v32f64(double %a, <32 x double> %vb, <32 x i1>
13531353
%v = call <32 x double> @llvm.vp.merge.v32f64(<32 x i1> %m, <32 x double> %va, <32 x double> %vb, i32 %evl)
13541354
ret <32 x double> %v
13551355
}
1356+
1357+
define <4 x i32> @splat_v4i32(i32 %x, i32 zeroext %evl) {
1358+
; CHECK-LABEL: splat_v4i32:
1359+
; CHECK: # %bb.0:
1360+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
1361+
; CHECK-NEXT: vmset.m v0
1362+
; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1363+
; CHECK-NEXT: vmerge.vxm v8, v8, a0, v0
1364+
; CHECK-NEXT: ret
1365+
%head = insertelement <4 x i32> poison, i32 %x, i32 0
1366+
%splat = shufflevector <4 x i32> %head, <4 x i32> poison, <4 x i32> zeroinitializer
1367+
%v = call <4 x i32> @llvm.vp.merge(<4 x i1> splat (i1 true), <4 x i32> %splat, <4 x i32> poison, i32 %evl)
1368+
ret <4 x i32> %v
1369+
}
1370+
1371+
define <4 x float> @splat_v4f32(float %x, i32 zeroext %evl) {
1372+
; CHECK-LABEL: splat_v4f32:
1373+
; CHECK: # %bb.0:
1374+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
1375+
; CHECK-NEXT: vmset.m v0
1376+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1377+
; CHECK-NEXT: vfmerge.vfm v8, v8, fa0, v0
1378+
; CHECK-NEXT: ret
1379+
%head = insertelement <4 x float> poison, float %x, i32 0
1380+
%splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
1381+
%v = call <4 x float> @llvm.vp.merge(<4 x i1> splat (i1 true), <4 x float> %splat, <4 x float> poison, i32 %evl)
1382+
ret <4 x float> %v
1383+
}
1384+
1385+
define <4 x i32> @splat_v4i32_const(i32 zeroext %evl) {
1386+
; CHECK-LABEL: splat_v4i32_const:
1387+
; CHECK: # %bb.0:
1388+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
1389+
; CHECK-NEXT: vmset.m v0
1390+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1391+
; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
1392+
; CHECK-NEXT: ret
1393+
%v = call <4 x i32> @llvm.vp.merge(<4 x i1> splat (i1 true), <4 x i32> splat (i32 1), <4 x i32> poison, i32 %evl)
1394+
ret <4 x i32> %v
1395+
}
1396+
1397+
define <4 x float> @splat_v4f32_const(i32 zeroext %evl) {
1398+
; CHECK-LABEL: splat_v4f32_const:
1399+
; CHECK: # %bb.0:
1400+
; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
1401+
; CHECK-NEXT: vmset.m v0
1402+
; CHECK-NEXT: lui a1, 270976
1403+
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1404+
; CHECK-NEXT: vmerge.vxm v8, v8, a1, v0
1405+
; CHECK-NEXT: ret
1406+
%v = call <4 x float> @llvm.vp.merge(<4 x i1> splat (i1 true), <4 x float> splat (float 42.0), <4 x float> poison, i32 %evl)
1407+
ret <4 x float> %v
1408+
}

llvm/test/CodeGen/RISCV/rvv/vpmerge-sdnode.ll

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1663,3 +1663,52 @@ define <vscale x 8 x double> @vpmerge_vf_nxv8f64(double %a, <vscale x 8 x double
16631663
%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)
16641664
ret <vscale x 8 x double> %v
16651665
}
1666+
1667+
define <vscale x 2 x i32> @splat_nxv2i32(i32 %x, i32 zeroext %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, i32 0
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 (i1 true), <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, i32 zeroext %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, i32 0
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 (i1 true), <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(i32 zeroext %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 (i1 true), <vscale x 2 x i32> splat (i32 1), <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(i32 zeroext %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 (i1 true), <vscale x 2 x float> splat (float 42.0), <vscale x 2 x float> poison, i32 %evl)
1713+
ret <vscale x 2 x float> %v
1714+
}

0 commit comments

Comments
 (0)