@@ -588,7 +588,7 @@ body: |
588588
589589
590590---
591- name : 21-ldrswpre-ldrswui-no- merge
591+ name : 21-ldrswpre-ldrswui-merge
592592tracksRegLiveness : true
593593liveins :
594594 - { reg: '$x0' }
@@ -599,10 +599,9 @@ machineFunctionInfo:
599599body : |
600600 bb.0:
601601 liveins: $x0, $x1, $x2
602- ; CHECK-LABEL: name: 21-ldrswpre-ldrswui-no- merge
602+ ; CHECK-LABEL: name: 21-ldrswpre-ldrswui-merge
603603 ; CHECK: liveins: $x0, $x1, $x2
604- ; CHECK: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
605- ; CHECK: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
604+ ; CHECK: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
606605 ; CHECK: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
607606 ; CHECK: RET undef $lr
608607 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
@@ -614,7 +613,7 @@ body: |
614613
615614
616615---
617- name : 22-ldrswpre-ldurswi-no- merge
616+ name : 22-ldrswpre-ldurswi-merge
618617tracksRegLiveness : true
619618liveins :
620619 - { reg: '$x0' }
@@ -625,10 +624,9 @@ machineFunctionInfo:
625624body : |
626625 bb.0:
627626 liveins: $x0, $x1, $x2
628- ; CHECK-LABEL: name: 22-ldrswpre-ldurswi-no- merge
627+ ; CHECK-LABEL: name: 22-ldrswpre-ldurswi-merge
629628 ; CHECK: liveins: $x0, $x1, $x2
630- ; CHECK: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
631- ; CHECK: renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
629+ ; CHECK: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
632630 ; CHECK: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
633631 ; CHECK: RET undef $lr
634632 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
@@ -775,3 +773,61 @@ body: |
775773 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
776774 RET undef $lr
777775 ...
776+
777+
778+ ---
779+ name : 28-ldrswpre-ldrwpre-no-merge
780+ tracksRegLiveness : true
781+ liveins :
782+ - { reg: '$x11' }
783+ - { reg: '$x13' }
784+ machineFunctionInfo :
785+ hasRedZone : false
786+ body : |
787+ bb.0:
788+ liveins: $x11, $x13
789+ ; CHECK-LABEL: name: 28-ldrswpre-ldrwpre-no-merge
790+ ; CHECK: liveins: $x11, $x13
791+ ; CHECK: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 8, implicit $w11 :: (load (s32), align 8)
792+ ; CHECK: $x14 = EORXrs renamable $x11, renamable $x13, 0
793+ ; CHECK: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 4, implicit $w11 :: (load (s32))
794+ ; CHECK: $x13 = EORXrs renamable $x11, renamable $x13, 0
795+ ; CHECK: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
796+ ; CHECK: RET undef $lr
797+ early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 8 :: (load (s32), align 8)
798+ $x14 = EORXrs renamable $x11, renamable $x13, 0
799+ early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 4 :: (load (s32))
800+ $x13 = EORXrs renamable $x11, killed renamable $x13, 0
801+ STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
802+ STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))
803+ RET undef $lr
804+ ...
805+
806+
807+ ---
808+ name : 29-ldrwpre-ldrswpre-no-merge
809+ tracksRegLiveness : true
810+ liveins :
811+ - { reg: '$x11' }
812+ - { reg: '$x13' }
813+ machineFunctionInfo :
814+ hasRedZone : false
815+ body : |
816+ bb.0:
817+ liveins: $x11, $x13
818+ ; CHECK-LABEL: name: 29-ldrwpre-ldrswpre-no-merge
819+ ; CHECK: liveins: $x11, $x13
820+ ; CHECK: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 8, implicit $w11 :: (load (s32))
821+ ; CHECK: $x14 = EORXrs renamable $x11, renamable $x13, 0
822+ ; CHECK: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 4, implicit $w11 :: (load (s32), align 8)
823+ ; CHECK: $x13 = EORXrs renamable $x11, renamable $x13, 0
824+ ; CHECK: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
825+ ; CHECK: RET undef $lr
826+ early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 8 :: (load (s32))
827+ $x14 = EORXrs renamable $x11, renamable $x13, 0
828+ early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 4 :: (load (s32), align 8)
829+ $x13 = EORXrs renamable $x11, killed renamable $x13, 0
830+ STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
831+ STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))
832+ RET undef $lr
833+ ...
0 commit comments