@@ -661,3 +661,49 @@ body: |
661661 RET_ReallyLR implicit $w0
662662
663663 ...
664+ ---
665+ name : cmpeq_nxv16i8_ptest_with_register_class_mismatch
666+ alignment : 2
667+ tracksRegLiveness : true
668+ registers :
669+ - { id: 0, class: ppr }
670+ - { id: 1, class: zpr }
671+ - { id: 2, class: zpr }
672+ - { id: 3, class: ppr_3b }
673+ - { id: 4, class: ppr }
674+ - { id: 5, class: gpr32 }
675+ - { id: 6, class: gpr32 }
676+ liveins :
677+ - { reg: '$z0', virtual-reg: '%1' }
678+ - { reg: '$z1', virtual-reg: '%2' }
679+ frameInfo :
680+ maxCallFrameSize : 0
681+ body : |
682+ bb.0:
683+ liveins: $z0, $z1
684+
685+ ; CHECK-LABEL: name: cmpeq_nxv16i8_ptest_with_register_class_mismatch
686+ ; CHECK: liveins: $z0, $z1
687+ ; CHECK-NEXT: {{ $}}
688+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:zpr = COPY $z0
689+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:zpr = COPY $z1
690+ ; CHECK-NEXT: [[PTRUE_B:%[0-9]+]]:ppr = PTRUE_B 31, implicit $vg
691+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:ppr_3b = COPY [[PTRUE_B]]
692+ ; CHECK-NEXT: [[CMPEQ_PPzZZ_B:%[0-9]+]]:ppr = CMPEQ_PPzZZ_B [[COPY2]], [[COPY]], [[COPY1]], implicit-def dead $nzcv
693+ ; CHECK-NEXT: PTEST_PP [[PTRUE_B]], killed [[CMPEQ_PPzZZ_B]], implicit-def $nzcv
694+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $wzr
695+ ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr [[COPY3]], $wzr, 0, implicit $nzcv
696+ ; CHECK-NEXT: $w0 = COPY [[CSINCWr]]
697+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
698+ %1:zpr = COPY $z0
699+ %2:zpr = COPY $z1
700+ %0:ppr = PTRUE_B 31, implicit $vg
701+ %3:ppr_3b = COPY %0
702+ %4:ppr = CMPEQ_PPzZZ_B %3, %1, %2, implicit-def dead $nzcv
703+ PTEST_PP %0, killed %4, implicit-def $nzcv
704+ %5:gpr32 = COPY $wzr
705+ %6:gpr32 = CSINCWr %5, $wzr, 0, implicit $nzcv
706+ $w0 = COPY %6
707+ RET_ReallyLR implicit $w0
708+
709+ ...
0 commit comments