@@ -365,6 +365,32 @@ body: |
365365 PseudoRET implicit $lr, implicit %7(<64 x s8>)
366366 ...
367367
368+ ---
369+ name : VEXTBCST_8_extract_i32_ZEXT_imm
370+ legalized : true
371+ regBankSelected : true
372+ body : |
373+ bb.1.entry:
374+ liveins: $p0
375+ ; CHECK-LABEL: name: VEXTBCST_8_extract_i32_ZEXT_imm
376+ ; CHECK: liveins: $p0
377+ ; CHECK-NEXT: {{ $}}
378+ ; CHECK-NEXT: %ptr:ep = COPY $p0
379+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<64 x s8>))
380+ ; CHECK-NEXT: [[VEXTRACT_8_vec_extract_imm_vaddSign0_:%[0-9]+]]:er = VEXTRACT_8_vec_extract_imm_vaddSign0 [[VLD_x_idx_imm_pseudo]], 0, implicit $vaddsign0
381+ ; CHECK-NEXT: [[VBCST_8_:%[0-9]+]]:vec512 = VBCST_8 [[VEXTRACT_8_vec_extract_imm_vaddSign0_]]
382+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_8_]]
383+ %ptr:ptrregbank(p0) = COPY $p0
384+ %1:vregbank(<16 x s32>) = G_IMPLICIT_DEF
385+ %2:gprregbank(s32) = G_CONSTANT i32 28
386+ %3:gprregbank(s32) = G_CONSTANT i32 0
387+ %4:vregbank(<64 x s8>) = G_LOAD %ptr(p0) :: (load (<64 x s8>))
388+ %5:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<64 x s8>), %3(s32)
389+ %7:vregbank(<64 x s8>) = G_AIE_BROADCAST_VECTOR %5(s32)
390+ PseudoRET implicit $lr, implicit %7(<64 x s8>)
391+ ...
392+
393+
368394---
369395name : VEXTBCST_8_extract_i32_r
370396legalized : true
@@ -390,6 +416,32 @@ body: |
390416 PseudoRET implicit $lr, implicit %7(<64 x s8>)
391417 ...
392418
419+ ---
420+ name : VEXTBCST_8_extract_i32_ZEXT_r
421+ legalized : true
422+ regBankSelected : true
423+ body : |
424+ bb.1.entry:
425+ liveins: $p0, $r4
426+ ; CHECK-LABEL: name: VEXTBCST_8_extract_i32_ZEXT_r
427+ ; CHECK: liveins: $p0, $r4
428+ ; CHECK-NEXT: {{ $}}
429+ ; CHECK-NEXT: %ptr:ep = COPY $p0
430+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:er = COPY $r4
431+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<64 x s8>))
432+ ; CHECK-NEXT: [[VEXTRACT_8_vec_extract_r_vaddSign0_:%[0-9]+]]:er = VEXTRACT_8_vec_extract_r_vaddSign0 [[VLD_x_idx_imm_pseudo]], [[COPY]], implicit $vaddsign0
433+ ; CHECK-NEXT: [[VBCST_8_:%[0-9]+]]:vec512 = VBCST_8 [[VEXTRACT_8_vec_extract_r_vaddSign0_]]
434+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_8_]]
435+ %ptr:ptrregbank(p0) = COPY $p0
436+ %1:vregbank(<16 x s32>) = G_IMPLICIT_DEF
437+ %2:gprregbank(s32) = G_CONSTANT i32 28
438+ %3:gprregbank(s32) = COPY $r4
439+ %4:vregbank(<64 x s8>) = G_LOAD %ptr(p0) :: (load (<64 x s8>))
440+ %5:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<64 x s8>), %3(s32)
441+ %7:vregbank(<64 x s8>) = G_AIE_BROADCAST_VECTOR %5(s32)
442+ PseudoRET implicit $lr, implicit %7(<64 x s8>)
443+ ...
444+
393445---
394446name : VEXTBCST_16_extract_i32_imm
395447legalized : true
@@ -414,6 +466,31 @@ body: |
414466 PseudoRET implicit $lr, implicit %7(<32 x s16>)
415467 ...
416468
469+ ---
470+ name : VEXTBCST_16_extract_i32_ZEXT_imm
471+ legalized : true
472+ regBankSelected : true
473+ body : |
474+ bb.1.entry:
475+ liveins: $p0
476+ ; CHECK-LABEL: name: VEXTBCST_16_extract_i32_ZEXT_imm
477+ ; CHECK: liveins: $p0
478+ ; CHECK-NEXT: {{ $}}
479+ ; CHECK-NEXT: %ptr:ep = COPY $p0
480+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<32 x s16>))
481+ ; CHECK-NEXT: [[VEXTRACT_16_vec_extract_imm_vaddSign0_:%[0-9]+]]:er = VEXTRACT_16_vec_extract_imm_vaddSign0 [[VLD_x_idx_imm_pseudo]], 0, implicit $vaddsign0
482+ ; CHECK-NEXT: [[VBCST_16_:%[0-9]+]]:vec512 = VBCST_16 [[VEXTRACT_16_vec_extract_imm_vaddSign0_]]
483+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_16_]]
484+ %ptr:ptrregbank(p0) = COPY $p0
485+ %1:vregbank(<16 x s32>) = G_IMPLICIT_DEF
486+ %2:gprregbank(s32) = G_CONSTANT i32 28
487+ %3:gprregbank(s32) = G_CONSTANT i32 0
488+ %4:vregbank(<32 x s16>) = G_LOAD %ptr(p0) :: (load (<32 x s16>))
489+ %5:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<32 x s16>), %3(s32)
490+ %7:vregbank(<32 x s16>) = G_AIE_BROADCAST_VECTOR %5(s32)
491+ PseudoRET implicit $lr, implicit %7(<32 x s16>)
492+ ...
493+
417494---
418495name : VEXTBCST_16_extract_i32_r
419496legalized : true
@@ -439,6 +516,32 @@ body: |
439516 PseudoRET implicit $lr, implicit %7(<32 x s16>)
440517 ...
441518
519+ ---
520+ name : VEXTBCST_16_extract_i32_ZEXT_r
521+ legalized : true
522+ regBankSelected : true
523+ body : |
524+ bb.1.entry:
525+ liveins: $p0, $r2
526+ ; CHECK-LABEL: name: VEXTBCST_16_extract_i32_ZEXT_r
527+ ; CHECK: liveins: $p0, $r2
528+ ; CHECK-NEXT: {{ $}}
529+ ; CHECK-NEXT: %ptr:ep = COPY $p0
530+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:er = COPY $r2
531+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<32 x s16>))
532+ ; CHECK-NEXT: [[VEXTRACT_16_vec_extract_r_vaddSign0_:%[0-9]+]]:er = VEXTRACT_16_vec_extract_r_vaddSign0 [[VLD_x_idx_imm_pseudo]], [[COPY]], implicit $vaddsign0
533+ ; CHECK-NEXT: [[VBCST_16_:%[0-9]+]]:vec512 = VBCST_16 [[VEXTRACT_16_vec_extract_r_vaddSign0_]]
534+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_16_]]
535+ %ptr:ptrregbank(p0) = COPY $p0
536+ %1:vregbank(<16 x s32>) = G_IMPLICIT_DEF
537+ %2:gprregbank(s32) = G_CONSTANT i32 28
538+ %3:gprregbank(s32) = COPY $r2
539+ %4:vregbank(<32 x s16>) = G_LOAD %ptr(p0) :: (load (<32 x s16>))
540+ %5:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<32 x s16>), %3(s32)
541+ %7:vregbank(<32 x s16>) = G_AIE_BROADCAST_VECTOR %5(s32)
542+ PseudoRET implicit $lr, implicit %7(<32 x s16>)
543+ ...
544+
442545---
443546name : VEXTBCST_32_extract_i32_imm
444547legalized : true
@@ -461,6 +564,29 @@ body: |
461564 PseudoRET implicit $lr, implicit %485(<16 x s32>)
462565 ...
463566
567+ ---
568+ name : VEXTBCST_32_extract_i32_ZEXT_imm
569+ legalized : true
570+ regBankSelected : true
571+ body : |
572+ bb.1.entry:
573+ liveins: $p0
574+ ; CHECK-LABEL: name: VEXTBCST_32_extract_i32_ZEXT_imm
575+ ; CHECK: liveins: $p0
576+ ; CHECK-NEXT: {{ $}}
577+ ; CHECK-NEXT: %ptr:ep = COPY $p0
578+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<16 x s32>))
579+ ; CHECK-NEXT: [[VEXTRACT_32_vec_extract_imm_vaddSign0_:%[0-9]+]]:er = VEXTRACT_32_vec_extract_imm_vaddSign0 [[VLD_x_idx_imm_pseudo]], 0, implicit $vaddsign0
580+ ; CHECK-NEXT: [[VBCST_32_:%[0-9]+]]:vec512 = VBCST_32 [[VEXTRACT_32_vec_extract_imm_vaddSign0_]]
581+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_32_]]
582+ %ptr:ptrregbank(p0) = COPY $p0
583+ %4:vregbank(<16 x s32>) = G_LOAD %ptr(p0) :: (load (<16 x s32>))
584+ %483:gprregbank(s32) = G_CONSTANT i32 0
585+ %484:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<16 x s32>), %483(s32)
586+ %485:vregbank(<16 x s32>) = G_AIE_BROADCAST_VECTOR %484(s32)
587+ PseudoRET implicit $lr, implicit %485(<16 x s32>)
588+ ...
589+
464590---
465591name : VEXTBCST_32_extract_i32_r
466592legalized : true
@@ -483,3 +609,27 @@ body: |
483609 %485:vregbank(<16 x s32>) = G_AIE_BROADCAST_VECTOR %484(s32)
484610 PseudoRET implicit $lr, implicit %485(<16 x s32>)
485611 ...
612+
613+ ---
614+ name : VEXTBCST_32_extract_i32_ZEXT_r
615+ legalized : true
616+ regBankSelected : true
617+ body : |
618+ bb.1.entry:
619+ liveins: $p0, $r6
620+ ; CHECK-LABEL: name: VEXTBCST_32_extract_i32_ZEXT_r
621+ ; CHECK: liveins: $p0, $r6
622+ ; CHECK-NEXT: {{ $}}
623+ ; CHECK-NEXT: %ptr:ep = COPY $p0
624+ ; CHECK-NEXT: [[VLD_x_idx_imm_pseudo:%[0-9]+]]:vec512 = VLD_x_idx_imm_pseudo %ptr, 0 :: (load (<16 x s32>))
625+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:er = COPY $r6
626+ ; CHECK-NEXT: [[VEXTRACT_32_vec_extract_r_vaddSign0_:%[0-9]+]]:er = VEXTRACT_32_vec_extract_r_vaddSign0 [[VLD_x_idx_imm_pseudo]], [[COPY]], implicit $vaddsign0
627+ ; CHECK-NEXT: [[VBCST_32_:%[0-9]+]]:vec512 = VBCST_32 [[VEXTRACT_32_vec_extract_r_vaddSign0_]]
628+ ; CHECK-NEXT: PseudoRET implicit $lr, implicit [[VBCST_32_]]
629+ %ptr:ptrregbank(p0) = COPY $p0
630+ %4:vregbank(<16 x s32>) = G_LOAD %ptr(p0) :: (load (<16 x s32>))
631+ %483:gprregbank(s32) = COPY $r6
632+ %484:gprregbank(s32) = G_AIE_ZEXT_EXTRACT_VECTOR_ELT %4(<16 x s32>), %483(s32)
633+ %485:vregbank(<16 x s32>) = G_AIE_BROADCAST_VECTOR %484(s32)
634+ PseudoRET implicit $lr, implicit %485(<16 x s32>)
635+ ...
0 commit comments