@@ -1662,6 +1662,25 @@ define <4 x i8> @load_factor8_one_active(ptr %ptr) vscale_range(8,1024) {
1662
1662
ret <4 x i8 > %v0
1663
1663
}
1664
1664
1665
+ define <4 x ptr > @load_factor3_one_active_ptr (ptr %ptr ) {
1666
+ ; RV32-LABEL: load_factor3_one_active_ptr:
1667
+ ; RV32: # %bb.0:
1668
+ ; RV32-NEXT: li a1, 12
1669
+ ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1670
+ ; RV32-NEXT: vlse32.v v8, (a0), a1
1671
+ ; RV32-NEXT: ret
1672
+ ;
1673
+ ; RV64-LABEL: load_factor3_one_active_ptr:
1674
+ ; RV64: # %bb.0:
1675
+ ; RV64-NEXT: li a1, 24
1676
+ ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1677
+ ; RV64-NEXT: vlse64.v v8, (a0), a1
1678
+ ; RV64-NEXT: ret
1679
+ %interleaved.vec = load <12 x ptr >, ptr %ptr
1680
+ %v0 = shufflevector <12 x ptr > %interleaved.vec , <12 x ptr > poison, <4 x i32 > <i32 0 , i32 3 , i32 6 , i32 9 >
1681
+ ret <4 x ptr > %v0
1682
+ }
1683
+
1665
1684
define void @load_factor4_one_active_storeback (ptr %ptr ) {
1666
1685
; CHECK-LABEL: load_factor4_one_active_storeback:
1667
1686
; CHECK: # %bb.0:
@@ -1748,6 +1767,25 @@ define void @store_factor4_one_active_slidedown(ptr %ptr, <4 x i32> %v) {
1748
1767
ret void
1749
1768
}
1750
1769
1770
+ define void @store_factor4_one_active_ptr (ptr %ptr , <4 x ptr > %v ) {
1771
+ ; RV32-LABEL: store_factor4_one_active_ptr:
1772
+ ; RV32: # %bb.0:
1773
+ ; RV32-NEXT: li a1, 16
1774
+ ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1775
+ ; RV32-NEXT: vsse32.v v8, (a0), a1
1776
+ ; RV32-NEXT: ret
1777
+ ;
1778
+ ; RV64-LABEL: store_factor4_one_active_ptr:
1779
+ ; RV64: # %bb.0:
1780
+ ; RV64-NEXT: li a1, 32
1781
+ ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1782
+ ; RV64-NEXT: vsse64.v v8, (a0), a1
1783
+ ; RV64-NEXT: ret
1784
+ %v0 = shufflevector <4 x ptr > %v , <4 x ptr > poison, <16 x i32 > <i32 0 , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 3 , i32 undef , i32 undef , i32 undef >
1785
+ store <16 x ptr > %v0 , ptr %ptr
1786
+ ret void
1787
+ }
1788
+
1751
1789
; Negative tests
1752
1790
1753
1791
define {<4 x i32 >, <4 x i32 >, <4 x i32 >} @invalid_vp_mask (ptr %ptr ) {
@@ -1766,8 +1804,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @invalid_vp_mask(ptr %ptr) {
1766
1804
; RV32-NEXT: vle32.v v12, (a0), v0.t
1767
1805
; RV32-NEXT: li a0, 36
1768
1806
; RV32-NEXT: vmv.s.x v20, a1
1769
- ; RV32-NEXT: lui a1, %hi(.LCPI49_0 )
1770
- ; RV32-NEXT: addi a1, a1, %lo(.LCPI49_0 )
1807
+ ; RV32-NEXT: lui a1, %hi(.LCPI51_0 )
1808
+ ; RV32-NEXT: addi a1, a1, %lo(.LCPI51_0 )
1771
1809
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1772
1810
; RV32-NEXT: vle16.v v21, (a1)
1773
1811
; RV32-NEXT: vcompress.vm v8, v12, v11
@@ -1842,8 +1880,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @invalid_vp_evl(ptr %ptr) {
1842
1880
; RV32-NEXT: vmv.s.x v10, a0
1843
1881
; RV32-NEXT: li a0, 146
1844
1882
; RV32-NEXT: vmv.s.x v11, a0
1845
- ; RV32-NEXT: lui a0, %hi(.LCPI50_0 )
1846
- ; RV32-NEXT: addi a0, a0, %lo(.LCPI50_0 )
1883
+ ; RV32-NEXT: lui a0, %hi(.LCPI52_0 )
1884
+ ; RV32-NEXT: addi a0, a0, %lo(.LCPI52_0 )
1847
1885
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1848
1886
; RV32-NEXT: vle16.v v20, (a0)
1849
1887
; RV32-NEXT: li a0, 36
0 commit comments