@@ -114,22 +114,15 @@ define void @insert_4xdouble(ptr %src, ptr %dst, double %in) nounwind {
114
114
define void @insert_32xi8_idx (ptr %src , ptr %dst , i8 %in , i32 %idx ) nounwind {
115
115
; CHECK-LABEL: insert_32xi8_idx:
116
116
; CHECK: # %bb.0:
117
- ; CHECK-NEXT: addi.d $sp, $sp, -96
118
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
119
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
120
- ; CHECK-NEXT: addi.d $fp, $sp, 96
121
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
122
- ; CHECK-NEXT: xvld $xr0, $a0, 0
123
- ; CHECK-NEXT: xvst $xr0, $sp, 32
124
- ; CHECK-NEXT: addi.d $a0, $sp, 32
125
- ; CHECK-NEXT: bstrins.d $a0, $a3, 4, 0
126
- ; CHECK-NEXT: st.b $a2, $a0, 0
127
- ; CHECK-NEXT: xvld $xr0, $sp, 32
117
+ ; CHECK-NEXT: pcalau12i $a4, %pc_hi20(.LCPI8_0)
118
+ ; CHECK-NEXT: xvld $xr0, $a4, %pc_lo12(.LCPI8_0)
119
+ ; CHECK-NEXT: xvld $xr1, $a0, 0
120
+ ; CHECK-NEXT: bstrpick.d $a0, $a3, 31, 0
121
+ ; CHECK-NEXT: xvreplgr2vr.b $xr2, $a0
122
+ ; CHECK-NEXT: xvseq.b $xr0, $xr2, $xr0
123
+ ; CHECK-NEXT: xvreplgr2vr.b $xr2, $a2
124
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr1, $xr2, $xr0
128
125
; CHECK-NEXT: xvst $xr0, $a1, 0
129
- ; CHECK-NEXT: addi.d $sp, $fp, -96
130
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
131
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
132
- ; CHECK-NEXT: addi.d $sp, $sp, 96
133
126
; CHECK-NEXT: ret
134
127
%v = load volatile <32 x i8 >, ptr %src
135
128
%v_new = insertelement <32 x i8 > %v , i8 %in , i32 %idx
@@ -140,22 +133,15 @@ define void @insert_32xi8_idx(ptr %src, ptr %dst, i8 %in, i32 %idx) nounwind {
140
133
define void @insert_16xi16_idx (ptr %src , ptr %dst , i16 %in , i32 %idx ) nounwind {
141
134
; CHECK-LABEL: insert_16xi16_idx:
142
135
; CHECK: # %bb.0:
143
- ; CHECK-NEXT: addi.d $sp, $sp, -96
144
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
145
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
146
- ; CHECK-NEXT: addi.d $fp, $sp, 96
147
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
148
- ; CHECK-NEXT: xvld $xr0, $a0, 0
149
- ; CHECK-NEXT: xvst $xr0, $sp, 32
150
- ; CHECK-NEXT: addi.d $a0, $sp, 32
151
- ; CHECK-NEXT: bstrins.d $a0, $a3, 4, 1
152
- ; CHECK-NEXT: st.h $a2, $a0, 0
153
- ; CHECK-NEXT: xvld $xr0, $sp, 32
136
+ ; CHECK-NEXT: pcalau12i $a4, %pc_hi20(.LCPI9_0)
137
+ ; CHECK-NEXT: xvld $xr0, $a4, %pc_lo12(.LCPI9_0)
138
+ ; CHECK-NEXT: xvld $xr1, $a0, 0
139
+ ; CHECK-NEXT: bstrpick.d $a0, $a3, 31, 0
140
+ ; CHECK-NEXT: xvreplgr2vr.h $xr2, $a0
141
+ ; CHECK-NEXT: xvseq.h $xr0, $xr2, $xr0
142
+ ; CHECK-NEXT: xvreplgr2vr.h $xr2, $a2
143
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr1, $xr2, $xr0
154
144
; CHECK-NEXT: xvst $xr0, $a1, 0
155
- ; CHECK-NEXT: addi.d $sp, $fp, -96
156
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
157
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
158
- ; CHECK-NEXT: addi.d $sp, $sp, 96
159
145
; CHECK-NEXT: ret
160
146
%v = load volatile <16 x i16 >, ptr %src
161
147
%v_new = insertelement <16 x i16 > %v , i16 %in , i32 %idx
@@ -166,22 +152,15 @@ define void @insert_16xi16_idx(ptr %src, ptr %dst, i16 %in, i32 %idx) nounwind {
166
152
define void @insert_8xi32_idx (ptr %src , ptr %dst , i32 %in , i32 %idx ) nounwind {
167
153
; CHECK-LABEL: insert_8xi32_idx:
168
154
; CHECK: # %bb.0:
169
- ; CHECK-NEXT: addi.d $sp, $sp, -96
170
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
171
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
172
- ; CHECK-NEXT: addi.d $fp, $sp, 96
173
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
174
- ; CHECK-NEXT: xvld $xr0, $a0, 0
175
- ; CHECK-NEXT: xvst $xr0, $sp, 32
176
- ; CHECK-NEXT: addi.d $a0, $sp, 32
177
- ; CHECK-NEXT: bstrins.d $a0, $a3, 4, 2
178
- ; CHECK-NEXT: st.w $a2, $a0, 0
179
- ; CHECK-NEXT: xvld $xr0, $sp, 32
155
+ ; CHECK-NEXT: pcalau12i $a4, %pc_hi20(.LCPI10_0)
156
+ ; CHECK-NEXT: xvld $xr0, $a4, %pc_lo12(.LCPI10_0)
157
+ ; CHECK-NEXT: xvld $xr1, $a0, 0
158
+ ; CHECK-NEXT: bstrpick.d $a0, $a3, 31, 0
159
+ ; CHECK-NEXT: xvreplgr2vr.w $xr2, $a0
160
+ ; CHECK-NEXT: xvseq.w $xr0, $xr2, $xr0
161
+ ; CHECK-NEXT: xvreplgr2vr.w $xr2, $a2
162
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr1, $xr2, $xr0
180
163
; CHECK-NEXT: xvst $xr0, $a1, 0
181
- ; CHECK-NEXT: addi.d $sp, $fp, -96
182
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
183
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
184
- ; CHECK-NEXT: addi.d $sp, $sp, 96
185
164
; CHECK-NEXT: ret
186
165
%v = load volatile <8 x i32 >, ptr %src
187
166
%v_new = insertelement <8 x i32 > %v , i32 %in , i32 %idx
@@ -192,22 +171,15 @@ define void @insert_8xi32_idx(ptr %src, ptr %dst, i32 %in, i32 %idx) nounwind {
192
171
define void @insert_4xi64_idx (ptr %src , ptr %dst , i64 %in , i32 %idx ) nounwind {
193
172
; CHECK-LABEL: insert_4xi64_idx:
194
173
; CHECK: # %bb.0:
195
- ; CHECK-NEXT: addi.d $sp, $sp, -96
196
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
197
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
198
- ; CHECK-NEXT: addi.d $fp, $sp, 96
199
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
200
- ; CHECK-NEXT: xvld $xr0, $a0, 0
201
- ; CHECK-NEXT: xvst $xr0, $sp, 32
202
- ; CHECK-NEXT: addi.d $a0, $sp, 32
203
- ; CHECK-NEXT: bstrins.d $a0, $a3, 4, 3
204
- ; CHECK-NEXT: st.d $a2, $a0, 0
205
- ; CHECK-NEXT: xvld $xr0, $sp, 32
174
+ ; CHECK-NEXT: pcalau12i $a4, %pc_hi20(.LCPI11_0)
175
+ ; CHECK-NEXT: xvld $xr0, $a4, %pc_lo12(.LCPI11_0)
176
+ ; CHECK-NEXT: xvld $xr1, $a0, 0
177
+ ; CHECK-NEXT: bstrpick.d $a0, $a3, 31, 0
178
+ ; CHECK-NEXT: xvreplgr2vr.d $xr2, $a0
179
+ ; CHECK-NEXT: xvseq.d $xr0, $xr2, $xr0
180
+ ; CHECK-NEXT: xvreplgr2vr.d $xr2, $a2
181
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr1, $xr2, $xr0
206
182
; CHECK-NEXT: xvst $xr0, $a1, 0
207
- ; CHECK-NEXT: addi.d $sp, $fp, -96
208
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
209
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
210
- ; CHECK-NEXT: addi.d $sp, $sp, 96
211
183
; CHECK-NEXT: ret
212
184
%v = load volatile <4 x i64 >, ptr %src
213
185
%v_new = insertelement <4 x i64 > %v , i64 %in , i32 %idx
@@ -218,22 +190,16 @@ define void @insert_4xi64_idx(ptr %src, ptr %dst, i64 %in, i32 %idx) nounwind {
218
190
define void @insert_8xfloat_idx (ptr %src , ptr %dst , float %in , i32 %idx ) nounwind {
219
191
; CHECK-LABEL: insert_8xfloat_idx:
220
192
; CHECK: # %bb.0:
221
- ; CHECK-NEXT: addi.d $sp, $sp, -96
222
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
223
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
224
- ; CHECK-NEXT: addi.d $fp, $sp, 96
225
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
226
- ; CHECK-NEXT: xvld $xr1, $a0, 0
227
- ; CHECK-NEXT: xvst $xr1, $sp, 32
228
- ; CHECK-NEXT: addi.d $a0, $sp, 32
229
- ; CHECK-NEXT: bstrins.d $a0, $a2, 4, 2
230
- ; CHECK-NEXT: fst.s $fa0, $a0, 0
231
- ; CHECK-NEXT: xvld $xr0, $sp, 32
193
+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
194
+ ; CHECK-NEXT: pcalau12i $a3, %pc_hi20(.LCPI12_0)
195
+ ; CHECK-NEXT: xvld $xr1, $a3, %pc_lo12(.LCPI12_0)
196
+ ; CHECK-NEXT: xvld $xr2, $a0, 0
197
+ ; CHECK-NEXT: bstrpick.d $a0, $a2, 31, 0
198
+ ; CHECK-NEXT: xvreplgr2vr.w $xr3, $a0
199
+ ; CHECK-NEXT: xvseq.w $xr1, $xr3, $xr1
200
+ ; CHECK-NEXT: xvreplve0.w $xr0, $xr0
201
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr2, $xr0, $xr1
232
202
; CHECK-NEXT: xvst $xr0, $a1, 0
233
- ; CHECK-NEXT: addi.d $sp, $fp, -96
234
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
235
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
236
- ; CHECK-NEXT: addi.d $sp, $sp, 96
237
203
; CHECK-NEXT: ret
238
204
%v = load volatile <8 x float >, ptr %src
239
205
%v_new = insertelement <8 x float > %v , float %in , i32 %idx
@@ -244,22 +210,16 @@ define void @insert_8xfloat_idx(ptr %src, ptr %dst, float %in, i32 %idx) nounwin
244
210
define void @insert_4xdouble_idx (ptr %src , ptr %dst , double %in , i32 %idx ) nounwind {
245
211
; CHECK-LABEL: insert_4xdouble_idx:
246
212
; CHECK: # %bb.0:
247
- ; CHECK-NEXT: addi.d $sp, $sp, -96
248
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
249
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
250
- ; CHECK-NEXT: addi.d $fp, $sp, 96
251
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
252
- ; CHECK-NEXT: xvld $xr1, $a0, 0
253
- ; CHECK-NEXT: xvst $xr1, $sp, 32
254
- ; CHECK-NEXT: addi.d $a0, $sp, 32
255
- ; CHECK-NEXT: bstrins.d $a0, $a2, 4, 3
256
- ; CHECK-NEXT: fst.d $fa0, $a0, 0
257
- ; CHECK-NEXT: xvld $xr0, $sp, 32
213
+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
214
+ ; CHECK-NEXT: pcalau12i $a3, %pc_hi20(.LCPI13_0)
215
+ ; CHECK-NEXT: xvld $xr1, $a3, %pc_lo12(.LCPI13_0)
216
+ ; CHECK-NEXT: xvld $xr2, $a0, 0
217
+ ; CHECK-NEXT: bstrpick.d $a0, $a2, 31, 0
218
+ ; CHECK-NEXT: xvreplgr2vr.d $xr3, $a0
219
+ ; CHECK-NEXT: xvseq.d $xr1, $xr3, $xr1
220
+ ; CHECK-NEXT: xvreplve0.d $xr0, $xr0
221
+ ; CHECK-NEXT: xvbitsel.v $xr0, $xr2, $xr0, $xr1
258
222
; CHECK-NEXT: xvst $xr0, $a1, 0
259
- ; CHECK-NEXT: addi.d $sp, $fp, -96
260
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
261
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
262
- ; CHECK-NEXT: addi.d $sp, $sp, 96
263
223
; CHECK-NEXT: ret
264
224
%v = load volatile <4 x double >, ptr %src
265
225
%v_new = insertelement <4 x double > %v , double %in , i32 %idx
0 commit comments