@@ -133,43 +133,35 @@ define <4 x double> @vrgather_permute_shuffle_uv_v4f64(<4 x double> %x) {
133
133
define <4 x double > @vrgather_shuffle_vv_v4f64 (<4 x double > %x , <4 x double > %y ) {
134
134
; RV32-LABEL: vrgather_shuffle_vv_v4f64:
135
135
; RV32: # %bb.0:
136
- ; RV32-NEXT: addi a0, zero, 1
137
- ; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
138
- ; RV32-NEXT: vmv.s.x v25, a0
139
- ; RV32-NEXT: vmv.v.i v28, 0
140
- ; RV32-NEXT: vsetvli zero, zero, e16, mf2, tu, mu
141
- ; RV32-NEXT: vslideup.vi v28, v25, 3
142
136
; RV32-NEXT: lui a0, %hi(.LCPI6_0)
143
137
; RV32-NEXT: addi a0, a0, %lo(.LCPI6_0)
144
- ; RV32-NEXT: vsetvli zero, zero , e16, mf2, ta, mu
138
+ ; RV32-NEXT: vsetivli zero, 4 , e16, mf2, ta, mu
145
139
; RV32-NEXT: vle16.v v25, (a0)
146
140
; RV32-NEXT: vsetvli zero, zero, e64, m2, ta, mu
147
141
; RV32-NEXT: vrgatherei16.vv v26, v8, v25
148
142
; RV32-NEXT: addi a0, zero, 8
149
143
; RV32-NEXT: vsetivli zero, 1, e8, mf8, ta, mu
150
144
; RV32-NEXT: vmv.s.x v0, a0
151
- ; RV32-NEXT: vsetivli zero, 4, e64, m2, tu, mu
152
- ; RV32-NEXT: vrgatherei16.vv v26, v10, v28, v0.t
145
+ ; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
146
+ ; RV32-NEXT: vmv.v.i v25, 1
147
+ ; RV32-NEXT: vsetvli zero, zero, e64, m2, tu, mu
148
+ ; RV32-NEXT: vrgatherei16.vv v26, v10, v25, v0.t
153
149
; RV32-NEXT: vmv2r.v v8, v26
154
150
; RV32-NEXT: ret
155
151
;
156
152
; RV64-LABEL: vrgather_shuffle_vv_v4f64:
157
153
; RV64: # %bb.0:
158
- ; RV64-NEXT: addi a0, zero, 1
159
- ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
160
- ; RV64-NEXT: vmv.s.x v26, a0
161
- ; RV64-NEXT: vmv.v.i v28, 0
162
- ; RV64-NEXT: vsetvli zero, zero, e64, m2, tu, mu
163
- ; RV64-NEXT: vslideup.vi v28, v26, 3
164
154
; RV64-NEXT: lui a0, %hi(.LCPI6_0)
165
155
; RV64-NEXT: addi a0, a0, %lo(.LCPI6_0)
166
- ; RV64-NEXT: vsetvli zero, zero , e64, m2, ta, mu
167
- ; RV64-NEXT: vle64.v v30 , (a0)
168
- ; RV64-NEXT: vrgather.vv v26, v8, v30
156
+ ; RV64-NEXT: vsetivli zero, 4 , e64, m2, ta, mu
157
+ ; RV64-NEXT: vle64.v v28 , (a0)
158
+ ; RV64-NEXT: vrgather.vv v26, v8, v28
169
159
; RV64-NEXT: addi a0, zero, 8
170
160
; RV64-NEXT: vsetivli zero, 1, e8, mf8, ta, mu
171
161
; RV64-NEXT: vmv.s.x v0, a0
172
- ; RV64-NEXT: vsetivli zero, 4, e64, m2, tu, mu
162
+ ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
163
+ ; RV64-NEXT: vmv.v.i v28, 1
164
+ ; RV64-NEXT: vsetvli zero, zero, e64, m2, tu, mu
173
165
; RV64-NEXT: vrgather.vv v26, v10, v28, v0.t
174
166
; RV64-NEXT: vmv2r.v v8, v26
175
167
; RV64-NEXT: ret
@@ -185,28 +177,31 @@ define <4 x double> @vrgather_shuffle_xv_v4f64(<4 x double> %x) {
185
177
; RV32-NEXT: vmv.s.x v0, a0
186
178
; RV32-NEXT: lui a0, %hi(.LCPI7_0)
187
179
; RV32-NEXT: addi a0, a0, %lo(.LCPI7_0)
188
- ; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
189
- ; RV32-NEXT: vle16.v v25, (a0)
190
- ; RV32-NEXT: lui a0, %hi(.LCPI7_1)
191
- ; RV32-NEXT: addi a0, a0, %lo(.LCPI7_1)
192
- ; RV32-NEXT: vsetvli zero, zero, e64, m2, ta, mu
180
+ ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, mu
193
181
; RV32-NEXT: vlse64.v v26, (a0), zero
194
- ; RV32-NEXT: vsetvli zero, zero, e64, m2, tu, mu
182
+ ; RV32-NEXT: lui a0, 16
183
+ ; RV32-NEXT: addi a0, a0, 2
184
+ ; RV32-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
185
+ ; RV32-NEXT: vmv.v.x v25, a0
186
+ ; RV32-NEXT: vsetivli zero, 4, e64, m2, tu, mu
195
187
; RV32-NEXT: vrgatherei16.vv v26, v8, v25, v0.t
196
188
; RV32-NEXT: vmv2r.v v8, v26
197
189
; RV32-NEXT: ret
198
190
;
199
191
; RV64-LABEL: vrgather_shuffle_xv_v4f64:
200
192
; RV64: # %bb.0:
193
+ ; RV64-NEXT: addi a0, zero, 2
194
+ ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
195
+ ; RV64-NEXT: vmv.s.x v26, a0
196
+ ; RV64-NEXT: vmv.v.i v28, 1
197
+ ; RV64-NEXT: vsetivli zero, 3, e64, m2, tu, mu
198
+ ; RV64-NEXT: vslideup.vi v28, v26, 2
201
199
; RV64-NEXT: addi a0, zero, 12
202
200
; RV64-NEXT: vsetivli zero, 1, e8, mf8, ta, mu
203
201
; RV64-NEXT: vmv.s.x v0, a0
204
202
; RV64-NEXT: lui a0, %hi(.LCPI7_0)
205
203
; RV64-NEXT: addi a0, a0, %lo(.LCPI7_0)
206
204
; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
207
- ; RV64-NEXT: vle64.v v28, (a0)
208
- ; RV64-NEXT: lui a0, %hi(.LCPI7_1)
209
- ; RV64-NEXT: addi a0, a0, %lo(.LCPI7_1)
210
205
; RV64-NEXT: vlse64.v v26, (a0), zero
211
206
; RV64-NEXT: vsetvli zero, zero, e64, m2, tu, mu
212
207
; RV64-NEXT: vrgather.vv v26, v8, v28, v0.t
@@ -220,30 +215,27 @@ define <4 x double> @vrgather_shuffle_vx_v4f64(<4 x double> %x) {
220
215
; RV32-LABEL: vrgather_shuffle_vx_v4f64:
221
216
; RV32: # %bb.0:
222
217
; RV32-NEXT: addi a0, zero, 3
223
- ; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
224
- ; RV32-NEXT: vmv.s.x v25, a0
225
- ; RV32-NEXT: vmv.v.i v28, 0
226
- ; RV32-NEXT: vsetivli zero, 2, e16, mf2, tu, mu
227
- ; RV32-NEXT: vslideup.vi v28, v25, 1
228
218
; RV32-NEXT: vsetivli zero, 1, e8, mf8, ta, mu
229
219
; RV32-NEXT: vmv.s.x v0, a0
230
220
; RV32-NEXT: lui a0, %hi(.LCPI8_0)
231
221
; RV32-NEXT: addi a0, a0, %lo(.LCPI8_0)
232
222
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, mu
233
223
; RV32-NEXT: vlse64.v v26, (a0), zero
234
- ; RV32-NEXT: vsetvli zero, zero, e64, m2, tu, mu
235
- ; RV32-NEXT: vrgatherei16.vv v26, v8, v28, v0.t
224
+ ; RV32-NEXT: lui a0, 48
225
+ ; RV32-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
226
+ ; RV32-NEXT: vmv.v.x v25, a0
227
+ ; RV32-NEXT: vsetivli zero, 4, e64, m2, tu, mu
228
+ ; RV32-NEXT: vrgatherei16.vv v26, v8, v25, v0.t
236
229
; RV32-NEXT: vmv2r.v v8, v26
237
230
; RV32-NEXT: ret
238
231
;
239
232
; RV64-LABEL: vrgather_shuffle_vx_v4f64:
240
233
; RV64: # %bb.0:
241
- ; RV64-NEXT: addi a0, zero, 3
242
234
; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
243
- ; RV64-NEXT: vmv.s.x v26, a0
244
- ; RV64-NEXT: vmv.v.i v28, 0
245
- ; RV64-NEXT: vsetivli zero, 2, e64, m2, tu, mu
246
- ; RV64-NEXT: vslideup.vi v28, v26, 1
235
+ ; RV64-NEXT: vmv.v.i v28, 3
236
+ ; RV64-NEXT: vsetvli zero, zero, e64, m2, tu, mu
237
+ ; RV64-NEXT: vmv.s.x v28, zero
238
+ ; RV64-NEXT: addi a0, zero, 3
247
239
; RV64-NEXT: vsetivli zero, 1, e8, mf8, ta, mu
248
240
; RV64-NEXT: vmv.s.x v0, a0
249
241
; RV64-NEXT: lui a0, %hi(.LCPI8_0)
0 commit comments