5
5
define <vscale x 4 x i32 > @splat_c3_nxv4i32 (<vscale x 4 x i32 > %v ) {
6
6
; CHECK-LABEL: splat_c3_nxv4i32:
7
7
; CHECK: # %bb.0:
8
- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, mu
9
- ; CHECK-NEXT: vslidedown.vi v8, v8, 3
10
- ; CHECK-NEXT: vmv.x.s a0, v8
11
- ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, mu
12
- ; CHECK-NEXT: vmv.v.x v8, a0
8
+ ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
9
+ ; CHECK-NEXT: vrgather.vi v10, v8, 3
10
+ ; CHECK-NEXT: vmv.v.v v8, v10
13
11
; CHECK-NEXT: ret
14
12
%x = extractelement <vscale x 4 x i32 > %v , i32 3
15
13
%ins = insertelement <vscale x 4 x i32 > poison, i32 %x , i32 0
@@ -20,11 +18,9 @@ define <vscale x 4 x i32> @splat_c3_nxv4i32(<vscale x 4 x i32> %v) {
20
18
define <vscale x 4 x i32 > @splat_idx_nxv4i32 (<vscale x 4 x i32 > %v , i64 %idx ) {
21
19
; CHECK-LABEL: splat_idx_nxv4i32:
22
20
; CHECK: # %bb.0:
23
- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, mu
24
- ; CHECK-NEXT: vslidedown.vx v8, v8, a0
25
- ; CHECK-NEXT: vmv.x.s a0, v8
26
21
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, mu
27
- ; CHECK-NEXT: vmv.v.x v8, a0
22
+ ; CHECK-NEXT: vrgather.vx v10, v8, a0
23
+ ; CHECK-NEXT: vmv.v.v v8, v10
28
24
; CHECK-NEXT: ret
29
25
%x = extractelement <vscale x 4 x i32 > %v , i64 %idx
30
26
%ins = insertelement <vscale x 4 x i32 > poison, i32 %x , i32 0
@@ -35,11 +31,9 @@ define <vscale x 4 x i32> @splat_idx_nxv4i32(<vscale x 4 x i32> %v, i64 %idx) {
35
31
define <vscale x 8 x i16 > @splat_c4_nxv8i16 (<vscale x 8 x i16 > %v ) {
36
32
; CHECK-LABEL: splat_c4_nxv8i16:
37
33
; CHECK: # %bb.0:
38
- ; CHECK-NEXT: vsetivli zero, 1, e16, m2, ta, mu
39
- ; CHECK-NEXT: vslidedown.vi v8, v8, 4
40
- ; CHECK-NEXT: vmv.x.s a0, v8
41
- ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, mu
42
- ; CHECK-NEXT: vmv.v.x v8, a0
34
+ ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
35
+ ; CHECK-NEXT: vrgather.vi v10, v8, 4
36
+ ; CHECK-NEXT: vmv.v.v v8, v10
43
37
; CHECK-NEXT: ret
44
38
%x = extractelement <vscale x 8 x i16 > %v , i32 4
45
39
%ins = insertelement <vscale x 8 x i16 > poison, i16 %x , i32 0
@@ -50,11 +44,9 @@ define <vscale x 8 x i16> @splat_c4_nxv8i16(<vscale x 8 x i16> %v) {
50
44
define <vscale x 8 x i16 > @splat_idx_nxv8i16 (<vscale x 8 x i16 > %v , i64 %idx ) {
51
45
; CHECK-LABEL: splat_idx_nxv8i16:
52
46
; CHECK: # %bb.0:
53
- ; CHECK-NEXT: vsetivli zero, 1, e16, m2, ta, mu
54
- ; CHECK-NEXT: vslidedown.vx v8, v8, a0
55
- ; CHECK-NEXT: vmv.x.s a0, v8
56
47
; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, mu
57
- ; CHECK-NEXT: vmv.v.x v8, a0
48
+ ; CHECK-NEXT: vrgather.vx v10, v8, a0
49
+ ; CHECK-NEXT: vmv.v.v v8, v10
58
50
; CHECK-NEXT: ret
59
51
%x = extractelement <vscale x 8 x i16 > %v , i64 %idx
60
52
%ins = insertelement <vscale x 8 x i16 > poison, i16 %x , i32 0
@@ -65,11 +57,9 @@ define <vscale x 8 x i16> @splat_idx_nxv8i16(<vscale x 8 x i16> %v, i64 %idx) {
65
57
define <vscale x 2 x half > @splat_c1_nxv2f16 (<vscale x 2 x half > %v ) {
66
58
; CHECK-LABEL: splat_c1_nxv2f16:
67
59
; CHECK: # %bb.0:
68
- ; CHECK-NEXT: vsetivli zero, 1, e16, mf2, ta, mu
69
- ; CHECK-NEXT: vslidedown.vi v8, v8, 1
70
- ; CHECK-NEXT: vfmv.f.s ft0, v8
71
60
; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
72
- ; CHECK-NEXT: vfmv.v.f v8, ft0
61
+ ; CHECK-NEXT: vrgather.vi v9, v8, 1
62
+ ; CHECK-NEXT: vmv1r.v v8, v9
73
63
; CHECK-NEXT: ret
74
64
%x = extractelement <vscale x 2 x half > %v , i32 1
75
65
%ins = insertelement <vscale x 2 x half > poison, half %x , i32 0
@@ -80,11 +70,9 @@ define <vscale x 2 x half> @splat_c1_nxv2f16(<vscale x 2 x half> %v) {
80
70
define <vscale x 2 x half > @splat_idx_nxv2f16 (<vscale x 2 x half > %v , i64 %idx ) {
81
71
; CHECK-LABEL: splat_idx_nxv2f16:
82
72
; CHECK: # %bb.0:
83
- ; CHECK-NEXT: vsetivli zero, 1, e16, mf2, ta, mu
84
- ; CHECK-NEXT: vslidedown.vx v8, v8, a0
85
- ; CHECK-NEXT: vfmv.f.s ft0, v8
86
- ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
87
- ; CHECK-NEXT: vfmv.v.f v8, ft0
73
+ ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, mu
74
+ ; CHECK-NEXT: vrgather.vx v9, v8, a0
75
+ ; CHECK-NEXT: vmv1r.v v8, v9
88
76
; CHECK-NEXT: ret
89
77
%x = extractelement <vscale x 2 x half > %v , i64 %idx
90
78
%ins = insertelement <vscale x 2 x half > poison, half %x , i32 0
@@ -95,11 +83,9 @@ define <vscale x 2 x half> @splat_idx_nxv2f16(<vscale x 2 x half> %v, i64 %idx)
95
83
define <vscale x 4 x float > @splat_c3_nxv4f32 (<vscale x 4 x float > %v ) {
96
84
; CHECK-LABEL: splat_c3_nxv4f32:
97
85
; CHECK: # %bb.0:
98
- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, mu
99
- ; CHECK-NEXT: vslidedown.vi v8, v8, 3
100
- ; CHECK-NEXT: vfmv.f.s ft0, v8
101
86
; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
102
- ; CHECK-NEXT: vfmv.v.f v8, ft0
87
+ ; CHECK-NEXT: vrgather.vi v10, v8, 3
88
+ ; CHECK-NEXT: vmv.v.v v8, v10
103
89
; CHECK-NEXT: ret
104
90
%x = extractelement <vscale x 4 x float > %v , i64 3
105
91
%ins = insertelement <vscale x 4 x float > poison, float %x , i32 0
@@ -110,11 +96,9 @@ define <vscale x 4 x float> @splat_c3_nxv4f32(<vscale x 4 x float> %v) {
110
96
define <vscale x 4 x float > @splat_idx_nxv4f32 (<vscale x 4 x float > %v , i64 %idx ) {
111
97
; CHECK-LABEL: splat_idx_nxv4f32:
112
98
; CHECK: # %bb.0:
113
- ; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, mu
114
- ; CHECK-NEXT: vslidedown.vx v8, v8, a0
115
- ; CHECK-NEXT: vfmv.f.s ft0, v8
116
- ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
117
- ; CHECK-NEXT: vfmv.v.f v8, ft0
99
+ ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, mu
100
+ ; CHECK-NEXT: vrgather.vx v10, v8, a0
101
+ ; CHECK-NEXT: vmv.v.v v8, v10
118
102
; CHECK-NEXT: ret
119
103
%x = extractelement <vscale x 4 x float > %v , i64 %idx
120
104
%ins = insertelement <vscale x 4 x float > poison, float %x , i32 0
0 commit comments