222 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -simplify-mir -verify-machineinstrs -mcpu=ppc -mtriple=powerpc64-ibm-aix-xcoff \3# RUN: -stop-after=postrapseudos %s -o - | FileCheck %s4 5---6name: foo7alignment: 88tracksRegLiveness: true9body: |10 bb.0.entry:11 liveins: $x5, $x412 ; CHECK-LABEL: name: foo13 ; CHECK: liveins: $x4, $x514 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: early-clobber renamable $g8p3 = LQ 128, $x416 ; CHECK-NEXT: $x5 = OR8 $x7, $x717 ; CHECK-NEXT: STQ killed renamable $g8p3, 160, $x518 ; CHECK-NEXT: BLR8 implicit $lr8, implicit undef $rm, implicit $x519 %0:g8prc = LQ 128, $x420 $x5 = COPY %0.sub_gp8_x1:g8prc21 STQ %0, 160, $x522 BLR8 implicit $lr8, implicit undef $rm, implicit $x523...24 25---26name: foobar27alignment: 828tracksRegLiveness: true29body: |30 bb.0.entry:31 liveins: $x3, $x432 ; CHECK-LABEL: name: foobar33 ; CHECK: liveins: $x3, $x434 ; CHECK-NEXT: {{ $}}35 ; CHECK-NEXT: renamable $g8p3 = LQARX $x3, $x436 ; CHECK-NEXT: STQCX renamable $g8p3, $x3, $x4, implicit-def dead $cr037 ; CHECK-NEXT: $x3 = OR8 $x7, killed $x738 ; CHECK-NEXT: BLR8 implicit $lr8, implicit undef $rm, implicit $x339 %0:g8prc = LQARX $x3, $x440 STQCX %0:g8prc, $x3, $x4, implicit-def $cr041 $x3 = COPY %0.sub_gp8_x1:g8prc42 BLR8 implicit $lr8, implicit undef $rm, implicit $x343...44 45---46name: bar47alignment: 848tracksRegLiveness: true49body: |50 bb.0.entry:51 liveins: $x3, $x452 ; CHECK-LABEL: name: bar53 ; CHECK: liveins: $x3, $x454 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: early-clobber renamable $g8p2 = LQ 128, renamable $x356 ; CHECK-NEXT: STQ renamable $g8p2, 160, $x357 ; CHECK-NEXT: $x3 = OR8 $x4, killed $x458 ; CHECK-NEXT: BLR8 implicit $lr8, implicit undef $rm, implicit $x359 %0:g8rc_nox0 = COPY $x360 %1:g8prc = LQ 128, %061 STQ %1, 160, $x362 $x3 = COPY %1.sub_gp8_x0:g8prc63 BLR8 implicit $lr8, implicit undef $rm, implicit $x364...65 66# `spill_g8prc`'s code contains undefined behaviors. This code is only to67# demonstrate correctness of spiller.68---69name: spill_g8prc70alignment: 871tracksRegLiveness: true72body: |73 bb.0.entry:74 liveins: $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x1275 ; CHECK-LABEL: name: spill_g8prc76 ; CHECK: liveins: $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $x29, $x30, $x31, $x277 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: STD killed $x14, -144, $x1 :: (store (s64) into %fixed-stack.17, align 16)79 ; CHECK-NEXT: STD killed $x15, -136, $x1 :: (store (s64) into %fixed-stack.16)80 ; CHECK-NEXT: STD killed $x16, -128, $x1 :: (store (s64) into %fixed-stack.15, align 16)81 ; CHECK-NEXT: STD killed $x17, -120, $x1 :: (store (s64) into %fixed-stack.14)82 ; CHECK-NEXT: STD killed $x18, -112, $x1 :: (store (s64) into %fixed-stack.13, align 16)83 ; CHECK-NEXT: STD killed $x19, -104, $x1 :: (store (s64) into %fixed-stack.12)84 ; CHECK-NEXT: STD killed $x20, -96, $x1 :: (store (s64) into %fixed-stack.11, align 16)85 ; CHECK-NEXT: STD killed $x21, -88, $x1 :: (store (s64) into %fixed-stack.10)86 ; CHECK-NEXT: STD killed $x22, -80, $x1 :: (store (s64) into %fixed-stack.9, align 16)87 ; CHECK-NEXT: STD killed $x23, -72, $x1 :: (store (s64) into %fixed-stack.8)88 ; CHECK-NEXT: STD killed $x24, -64, $x1 :: (store (s64) into %fixed-stack.7, align 16)89 ; CHECK-NEXT: STD killed $x25, -56, $x1 :: (store (s64) into %fixed-stack.6)90 ; CHECK-NEXT: STD killed $x26, -48, $x1 :: (store (s64) into %fixed-stack.5, align 16)91 ; CHECK-NEXT: STD killed $x27, -40, $x1 :: (store (s64) into %fixed-stack.4)92 ; CHECK-NEXT: STD killed $x28, -32, $x1 :: (store (s64) into %fixed-stack.3, align 16)93 ; CHECK-NEXT: STD killed $x29, -24, $x1 :: (store (s64) into %fixed-stack.2)94 ; CHECK-NEXT: STD killed $x30, -16, $x1 :: (store (s64) into %fixed-stack.1, align 16)95 ; CHECK-NEXT: STD killed $x31, -8, $x1 :: (store (s64) into %fixed-stack.0)96 ; CHECK-NEXT: STD killed $x2, -152, $x1 :: (store (s64) into %stack.4)97 ; CHECK-NEXT: $x7 = OR8 $x3, $x398 ; CHECK-NEXT: renamable $g8p4 = LQARX $x5, $x699 ; CHECK-NEXT: STD killed $x8, -176, $x1100 ; CHECK-NEXT: STD killed $x9, -168, $x1101 ; CHECK-NEXT: renamable $g8p1 = LQARX $x3, renamable $x4102 ; CHECK-NEXT: renamable $g8p4 = LQARX renamable $x7, renamable $x4103 ; CHECK-NEXT: STD killed $x8, -192, $x1104 ; CHECK-NEXT: STD killed $x9, -184, $x1105 ; CHECK-NEXT: renamable $g8p4 = LQARX renamable $x7, renamable $x4106 ; CHECK-NEXT: STD killed $x8, -208, $x1107 ; CHECK-NEXT: STD killed $x9, -200, $x1108 ; CHECK-NEXT: renamable $g8p4 = LQARX renamable $x7, renamable $x4109 ; CHECK-NEXT: STD killed $x8, -224, $x1110 ; CHECK-NEXT: STD killed $x9, -216, $x1111 ; CHECK-NEXT: renamable $g8p12 = LQARX renamable $x7, renamable $x4112 ; CHECK-NEXT: renamable $g8p11 = LQARX renamable $x7, renamable $x4113 ; CHECK-NEXT: renamable $g8p10 = LQARX renamable $x7, renamable $x4114 ; CHECK-NEXT: renamable $g8p9 = LQARX renamable $x7, renamable $x4115 ; CHECK-NEXT: renamable $g8p8 = LQARX renamable $x7, renamable $x4116 ; CHECK-NEXT: renamable $g8p7 = LQARX renamable $x7, renamable $x4117 ; CHECK-NEXT: renamable $g8p15 = LQARX renamable $x7, renamable $x4118 ; CHECK-NEXT: renamable $g8p13 = LQARX renamable $x7, renamable $x4119 ; CHECK-NEXT: renamable $g8p14 = LQARX renamable $x7, renamable $x4120 ; CHECK-NEXT: renamable $g8p5 = LQARX renamable $x7, renamable $x4121 ; CHECK-NEXT: renamable $g8p4 = LQARX renamable $x7, renamable $x4122 ; CHECK-NEXT: STQCX killed renamable $g8p4, renamable $x7, renamable $x4, implicit-def dead $cr0123 ; CHECK-NEXT: STQCX killed renamable $g8p5, renamable $x7, renamable $x4, implicit-def dead $cr0124 ; CHECK-NEXT: STQCX killed renamable $g8p14, renamable $x7, renamable $x4, implicit-def dead $cr0125 ; CHECK-NEXT: STQCX killed renamable $g8p13, renamable $x7, renamable $x4, implicit-def dead $cr0126 ; CHECK-NEXT: STQCX killed renamable $g8p15, renamable $x7, renamable $x4, implicit-def dead $cr0127 ; CHECK-NEXT: STQCX killed renamable $g8p7, renamable $x7, renamable $x4, implicit-def dead $cr0128 ; CHECK-NEXT: STQCX killed renamable $g8p8, renamable $x7, renamable $x4, implicit-def dead $cr0129 ; CHECK-NEXT: STQCX killed renamable $g8p9, renamable $x7, renamable $x4, implicit-def dead $cr0130 ; CHECK-NEXT: STQCX killed renamable $g8p10, renamable $x7, renamable $x4, implicit-def dead $cr0131 ; CHECK-NEXT: STQCX killed renamable $g8p11, renamable $x7, renamable $x4, implicit-def dead $cr0132 ; CHECK-NEXT: STQCX killed renamable $g8p12, renamable $x7, renamable $x4, implicit-def dead $cr0133 ; CHECK-NEXT: $x8 = LD -224, $x1134 ; CHECK-NEXT: $x9 = LD -216, $x1135 ; CHECK-NEXT: STQCX killed renamable $g8p4, renamable $x7, renamable $x4, implicit-def dead $cr0136 ; CHECK-NEXT: $x8 = LD -208, $x1137 ; CHECK-NEXT: $x9 = LD -200, $x1138 ; CHECK-NEXT: STQCX killed renamable $g8p4, renamable $x7, renamable $x4, implicit-def dead $cr0139 ; CHECK-NEXT: $x8 = LD -192, $x1140 ; CHECK-NEXT: $x9 = LD -184, $x1141 ; CHECK-NEXT: STQCX killed renamable $g8p4, renamable $x7, renamable $x4, implicit-def dead $cr0142 ; CHECK-NEXT: STQCX renamable $g8p1, killed renamable $x7, killed renamable $x4, implicit-def dead $cr0143 ; CHECK-NEXT: $x8 = LD -176, $x1144 ; CHECK-NEXT: $x9 = LD -168, $x1145 ; CHECK-NEXT: STQCX killed renamable $g8p4, $x5, $x6, implicit-def dead $cr0146 ; CHECK-NEXT: $x2 = LD -152, $x1 :: (load (s64) from %stack.4)147 ; CHECK-NEXT: $x31 = LD -8, $x1 :: (load (s64) from %fixed-stack.0)148 ; CHECK-NEXT: $x30 = LD -16, $x1 :: (load (s64) from %fixed-stack.1, align 16)149 ; CHECK-NEXT: $x29 = LD -24, $x1 :: (load (s64) from %fixed-stack.2)150 ; CHECK-NEXT: $x28 = LD -32, $x1 :: (load (s64) from %fixed-stack.3, align 16)151 ; CHECK-NEXT: $x27 = LD -40, $x1 :: (load (s64) from %fixed-stack.4)152 ; CHECK-NEXT: $x26 = LD -48, $x1 :: (load (s64) from %fixed-stack.5, align 16)153 ; CHECK-NEXT: $x25 = LD -56, $x1 :: (load (s64) from %fixed-stack.6)154 ; CHECK-NEXT: $x24 = LD -64, $x1 :: (load (s64) from %fixed-stack.7, align 16)155 ; CHECK-NEXT: $x23 = LD -72, $x1 :: (load (s64) from %fixed-stack.8)156 ; CHECK-NEXT: $x22 = LD -80, $x1 :: (load (s64) from %fixed-stack.9, align 16)157 ; CHECK-NEXT: $x21 = LD -88, $x1 :: (load (s64) from %fixed-stack.10)158 ; CHECK-NEXT: $x20 = LD -96, $x1 :: (load (s64) from %fixed-stack.11, align 16)159 ; CHECK-NEXT: $x19 = LD -104, $x1 :: (load (s64) from %fixed-stack.12)160 ; CHECK-NEXT: $x18 = LD -112, $x1 :: (load (s64) from %fixed-stack.13, align 16)161 ; CHECK-NEXT: $x17 = LD -120, $x1 :: (load (s64) from %fixed-stack.14)162 ; CHECK-NEXT: $x16 = LD -128, $x1 :: (load (s64) from %fixed-stack.15, align 16)163 ; CHECK-NEXT: $x15 = LD -136, $x1 :: (load (s64) from %fixed-stack.16)164 ; CHECK-NEXT: $x14 = LD -144, $x1 :: (load (s64) from %fixed-stack.17, align 16)165 ; CHECK-NEXT: BLR8 implicit $lr8, implicit undef $rm, implicit $x3166 %addr0:g8rc_nox0 = COPY $x3167 %addr1:g8rc = COPY $x4168 %0:g8prc = LQARX $x5, $x6169 %1:g8prc = LQARX %addr0, %addr1170 %2:g8prc = LQARX %addr0, %addr1171 %3:g8prc = LQARX %addr0, %addr1172 %4:g8prc = LQARX %addr0, %addr1173 %5:g8prc = LQARX %addr0, %addr1174 %6:g8prc = LQARX %addr0, %addr1175 %7:g8prc = LQARX %addr0, %addr1176 %8:g8prc = LQARX %addr0, %addr1177 %9:g8prc = LQARX %addr0, %addr1178 %10:g8prc = LQARX %addr0, %addr1179 %11:g8prc = LQARX %addr0, %addr1180 %12:g8prc = LQARX %addr0, %addr1181 %13:g8prc = LQARX %addr0, %addr1182 %14:g8prc = LQARX %addr0, %addr1183 %15:g8prc = LQARX %addr0, %addr1184 STQCX %15:g8prc, %addr0, %addr1, implicit-def $cr0185 STQCX %14:g8prc, %addr0, %addr1, implicit-def $cr0186 STQCX %13:g8prc, %addr0, %addr1, implicit-def $cr0187 STQCX %12:g8prc, %addr0, %addr1, implicit-def $cr0188 STQCX %11:g8prc, %addr0, %addr1, implicit-def $cr0189 STQCX %10:g8prc, %addr0, %addr1, implicit-def $cr0190 STQCX %9:g8prc, %addr0, %addr1, implicit-def $cr0191 STQCX %8:g8prc, %addr0, %addr1, implicit-def $cr0192 STQCX %7:g8prc, %addr0, %addr1, implicit-def $cr0193 STQCX %6:g8prc, %addr0, %addr1, implicit-def $cr0194 STQCX %5:g8prc, %addr0, %addr1, implicit-def $cr0195 STQCX %4:g8prc, %addr0, %addr1, implicit-def $cr0196 STQCX %3:g8prc, %addr0, %addr1, implicit-def $cr0197 STQCX %2:g8prc, %addr0, %addr1, implicit-def $cr0198 STQCX %1:g8prc, %addr0, %addr1, implicit-def $cr0199 STQCX %0:g8prc, $x5, $x6, implicit-def $cr0200 $x3 = COPY %1.sub_gp8_x1:g8prc201 BLR8 implicit $lr8, implicit undef $rm, implicit $x3202...203 204---205name: copy_g8prc206alignment: 8207tracksRegLiveness: true208body: |209 bb.0.entry:210 liveins: $g8p8211 ; CHECK-LABEL: name: copy_g8prc212 ; CHECK: liveins: $g8p8213 ; CHECK-NEXT: {{ $}}214 ; CHECK-NEXT: $x4 = OR8 $x16, $x16215 ; CHECK-NEXT: $x5 = OR8 $x17, $x17216 ; CHECK-NEXT: BLR8 implicit $lr8, implicit undef $rm, implicit $x5, implicit $x4217 %0:g8prc = COPY $g8p8218 $x5 = COPY %0.sub_gp8_x1:g8prc219 $x4 = COPY %0.sub_gp8_x0:g8prc220 BLR8 implicit $lr8, implicit undef $rm, implicit $x5, implicit $x4221...222