@@ -198,3 +198,138 @@ define <8 x i64> @stack_fold_ternlogq(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x
198
198
}
199
199
200
200
declare <8 x i64 > @llvm.x86.avx512.mask.pternlog.q.512 (<8 x i64 >, <8 x i64 >, <8 x i64 >, i32 , i8 )
201
+
202
+ define <16 x i8 > @stack_fold_vpmovdb (<16 x i32 > %a0 ) {
203
+ ;CHECK-LABEL: stack_fold_vpmovdb
204
+ ;CHECK: vpmovdb %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
205
+ %1 = call <16 x i8 > @llvm.x86.avx512.mask.pmov.db.512 (<16 x i32 > %a0 , <16 x i8 > undef , i16 -1 )
206
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
207
+ ret <16 x i8 > %1
208
+ }
209
+ declare <16 x i8 > @llvm.x86.avx512.mask.pmov.db.512 (<16 x i32 >, <16 x i8 >, i16 )
210
+
211
+ define <16 x i16 > @stack_fold_vpmovdw (<16 x i32 > %a0 ) {
212
+ ;CHECK-LABEL: stack_fold_vpmovdw
213
+ ;CHECK: vpmovdw %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
214
+ %1 = call <16 x i16 > @llvm.x86.avx512.mask.pmov.dw.512 (<16 x i32 > %a0 , <16 x i16 > undef , i16 -1 )
215
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
216
+ ret <16 x i16 > %1
217
+ }
218
+ declare <16 x i16 > @llvm.x86.avx512.mask.pmov.dw.512 (<16 x i32 >, <16 x i16 >, i16 )
219
+
220
+ define <8 x i32 > @stack_fold_vpmovqd (<8 x i64 > %a0 ) {
221
+ ;CHECK-LABEL: stack_fold_vpmovqd
222
+ ;CHECK: vpmovqd %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
223
+ %1 = call <8 x i32 > @llvm.x86.avx512.mask.pmov.qd.512 (<8 x i64 > %a0 , <8 x i32 > undef , i8 -1 )
224
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
225
+ ret <8 x i32 > %1
226
+ }
227
+ declare <8 x i32 > @llvm.x86.avx512.mask.pmov.qd.512 (<8 x i64 >, <8 x i32 >, i8 )
228
+
229
+ define <8 x i16 > @stack_fold_vpmovqw (<8 x i64 > %a0 ) {
230
+ ;CHECK-LABEL: stack_fold_vpmovqw
231
+ ;CHECK: vpmovqw %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
232
+ %1 = call <8 x i16 > @llvm.x86.avx512.mask.pmov.qw.512 (<8 x i64 > %a0 , <8 x i16 > undef , i8 -1 )
233
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
234
+ ret <8 x i16 > %1
235
+ }
236
+ declare <8 x i16 > @llvm.x86.avx512.mask.pmov.qw.512 (<8 x i64 >, <8 x i16 >, i8 )
237
+
238
+ define <32 x i8 > @stack_fold_vpmovwb (<32 x i16 > %a0 ) {
239
+ ;CHECK-LABEL: stack_fold_vpmovwb
240
+ ;CHECK: vpmovwb %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
241
+ %1 = call <32 x i8 > @llvm.x86.avx512.mask.pmov.wb.512 (<32 x i16 > %a0 , <32 x i8 > undef , i32 -1 )
242
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
243
+ ret <32 x i8 > %1
244
+ }
245
+ declare <32 x i8 > @llvm.x86.avx512.mask.pmov.wb.512 (<32 x i16 >, <32 x i8 >, i32 )
246
+
247
+ define <16 x i8 > @stack_fold_vpmovsdb (<16 x i32 > %a0 ) {
248
+ ;CHECK-LABEL: stack_fold_vpmovsdb
249
+ ;CHECK: vpmovsdb %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
250
+ %1 = call <16 x i8 > @llvm.x86.avx512.mask.pmovs.db.512 (<16 x i32 > %a0 , <16 x i8 > undef , i16 -1 )
251
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
252
+ ret <16 x i8 > %1
253
+ }
254
+ declare <16 x i8 > @llvm.x86.avx512.mask.pmovs.db.512 (<16 x i32 >, <16 x i8 >, i16 )
255
+
256
+ define <16 x i16 > @stack_fold_vpmovsdw (<16 x i32 > %a0 ) {
257
+ ;CHECK-LABEL: stack_fold_vpmovsdw
258
+ ;CHECK: vpmovsdw %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
259
+ %1 = call <16 x i16 > @llvm.x86.avx512.mask.pmovs.dw.512 (<16 x i32 > %a0 , <16 x i16 > undef , i16 -1 )
260
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
261
+ ret <16 x i16 > %1
262
+ }
263
+ declare <16 x i16 > @llvm.x86.avx512.mask.pmovs.dw.512 (<16 x i32 >, <16 x i16 >, i16 )
264
+
265
+ define <8 x i32 > @stack_fold_vpmovsqd (<8 x i64 > %a0 ) {
266
+ ;CHECK-LABEL: stack_fold_vpmovsqd
267
+ ;CHECK: vpmovsqd %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
268
+ %1 = call <8 x i32 > @llvm.x86.avx512.mask.pmovs.qd.512 (<8 x i64 > %a0 , <8 x i32 > undef , i8 -1 )
269
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
270
+ ret <8 x i32 > %1
271
+ }
272
+ declare <8 x i32 > @llvm.x86.avx512.mask.pmovs.qd.512 (<8 x i64 >, <8 x i32 >, i8 )
273
+
274
+ define <8 x i16 > @stack_fold_vpmovsqw (<8 x i64 > %a0 ) {
275
+ ;CHECK-LABEL: stack_fold_vpmovsqw
276
+ ;CHECK: vpmovsqw %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
277
+ %1 = call <8 x i16 > @llvm.x86.avx512.mask.pmovs.qw.512 (<8 x i64 > %a0 , <8 x i16 > undef , i8 -1 )
278
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
279
+ ret <8 x i16 > %1
280
+ }
281
+ declare <8 x i16 > @llvm.x86.avx512.mask.pmovs.qw.512 (<8 x i64 >, <8 x i16 >, i8 )
282
+
283
+ define <32 x i8 > @stack_fold_vpmovswb (<32 x i16 > %a0 ) {
284
+ ;CHECK-LABEL: stack_fold_vpmovswb
285
+ ;CHECK: vpmovswb %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
286
+ %1 = call <32 x i8 > @llvm.x86.avx512.mask.pmovs.wb.512 (<32 x i16 > %a0 , <32 x i8 > undef , i32 -1 )
287
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
288
+ ret <32 x i8 > %1
289
+ }
290
+ declare <32 x i8 > @llvm.x86.avx512.mask.pmovs.wb.512 (<32 x i16 >, <32 x i8 >, i32 )
291
+
292
+ define <16 x i8 > @stack_fold_vpmovusdb (<16 x i32 > %a0 ) {
293
+ ;CHECK-LABEL: stack_fold_vpmovusdb
294
+ ;CHECK: vpmovusdb %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
295
+ %1 = call <16 x i8 > @llvm.x86.avx512.mask.pmovus.db.512 (<16 x i32 > %a0 , <16 x i8 > undef , i16 -1 )
296
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
297
+ ret <16 x i8 > %1
298
+ }
299
+ declare <16 x i8 > @llvm.x86.avx512.mask.pmovus.db.512 (<16 x i32 >, <16 x i8 >, i16 )
300
+
301
+ define <16 x i16 > @stack_fold_vpmovusdw (<16 x i32 > %a0 ) {
302
+ ;CHECK-LABEL: stack_fold_vpmovusdw
303
+ ;CHECK: vpmovusdw %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
304
+ %1 = call <16 x i16 > @llvm.x86.avx512.mask.pmovus.dw.512 (<16 x i32 > %a0 , <16 x i16 > undef , i16 -1 )
305
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
306
+ ret <16 x i16 > %1
307
+ }
308
+ declare <16 x i16 > @llvm.x86.avx512.mask.pmovus.dw.512 (<16 x i32 >, <16 x i16 >, i16 )
309
+
310
+ define <8 x i32 > @stack_fold_vpmovusqd (<8 x i64 > %a0 ) {
311
+ ;CHECK-LABEL: stack_fold_vpmovusqd
312
+ ;CHECK: vpmovusqd %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
313
+ %1 = call <8 x i32 > @llvm.x86.avx512.mask.pmovus.qd.512 (<8 x i64 > %a0 , <8 x i32 > undef , i8 -1 )
314
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
315
+ ret <8 x i32 > %1
316
+ }
317
+ declare <8 x i32 > @llvm.x86.avx512.mask.pmovus.qd.512 (<8 x i64 >, <8 x i32 >, i8 )
318
+
319
+ define <8 x i16 > @stack_fold_vpmovusqw (<8 x i64 > %a0 ) {
320
+ ;CHECK-LABEL: stack_fold_vpmovusqw
321
+ ;CHECK: vpmovusqw %zmm0, {{-?[0-9]*}}(%rsp) # 16-byte Folded Spill
322
+ %1 = call <8 x i16 > @llvm.x86.avx512.mask.pmovus.qw.512 (<8 x i64 > %a0 , <8 x i16 > undef , i8 -1 )
323
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
324
+ ret <8 x i16 > %1
325
+ }
326
+ declare <8 x i16 > @llvm.x86.avx512.mask.pmovus.qw.512 (<8 x i64 >, <8 x i16 >, i8 )
327
+
328
+ define <32 x i8 > @stack_fold_vpmovuswb (<32 x i16 > %a0 ) {
329
+ ;CHECK-LABEL: stack_fold_vpmovuswb
330
+ ;CHECK: vpmovuswb %zmm0, {{-?[0-9]*}}(%rsp) # 32-byte Folded Spill
331
+ %1 = call <32 x i8 > @llvm.x86.avx512.mask.pmovus.wb.512 (<32 x i16 > %a0 , <32 x i8 > undef , i32 -1 )
332
+ %2 = tail call <2 x i64 > asm sideeffect "nop" , "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}" ()
333
+ ret <32 x i8 > %1
334
+ }
335
+ declare <32 x i8 > @llvm.x86.avx512.mask.pmovus.wb.512 (<32 x i16 >, <32 x i8 >, i32 )
0 commit comments