204 lines · plain
1# RUN: llc -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu \2# RUN: -run-pass ppc-mi-peepholes %s -o - -verify-machineinstrs | FileCheck %s3 4---5name: testFoldRLWINM6#CHECK: name: testFoldRLWINM7tracksRegLiveness: true8body: |9 bb.0.entry:10 liveins: $x311 %0:g8rc = COPY $x312 %1:gprc = COPY %0.sub_32:g8rc13 %2:gprc = RLWINM %1:gprc, 27, 5, 3114 ; CHECK-NOT: %2:gprc = RLWINM %1, 27, 5, 3115 %3:gprc = RLWINM %2:gprc, 19, 0, 1216 ; CHECK: %3:gprc = RLWINM killed %1, 14, 0, 1217 BLR8 implicit $lr8, implicit $rm18...19---20name: testFoldRLWINMSrcFullMask121#CHECK: name: testFoldRLWINMSrcFullMask122tracksRegLiveness: true23body: |24 bb.0.entry:25 liveins: $x326 %0:g8rc = COPY $x327 %1:gprc = COPY %0.sub_32:g8rc28 %2:gprc = RLWINM %1:gprc, 27, 0, 3129 ; CHECK-NOT: %2:gprc = RLWINM %1, 27, 0, 3130 %3:gprc = RLWINM %2:gprc, 19, 0, 1231 ; CHECK: %3:gprc = RLWINM killed %1, 14, 0, 1232 BLR8 implicit $lr8, implicit $rm33...34---35name: testFoldRLWINMSrcFullMask236#CHECK: name: testFoldRLWINMSrcFullMask237tracksRegLiveness: true38body: |39 bb.0.entry:40 liveins: $x341 %0:g8rc = COPY $x342 %1:gprc = COPY %0.sub_32:g8rc43 %2:gprc = RLWINM %1:gprc, 27, 10, 9 44 ; CHECK-NOT: %2:gprc = RLWINM %1, 27, 10, 945 %3:gprc = RLWINM %2:gprc, 19, 10, 146 ; CHECK: %3:gprc = RLWINM killed %1, 14, 10, 147 BLR8 implicit $lr8, implicit $rm48...49---50name: testFoldRLWINMSrcWrapped51#CHECK: name: testFoldRLWINMSrcWrapped52tracksRegLiveness: true53body: |54 bb.0.entry:55 liveins: $x356 %0:g8rc = COPY $x357 %1:gprc = COPY %0.sub_32:g8rc58 %2:gprc = RLWINM %1:gprc, 27, 30, 1059 ; CHECK-NOT: %2:gprc = RLWINM %1, 27, 30, 10 60 %3:gprc = RLWINM %2:gprc, 19, 0, 1261 ; CHECK: %3:gprc = RLWINM killed %1, 14, 11, 1262 BLR8 implicit $lr8, implicit $rm63...64---65name: testFoldRLWINMUserWrapped66#CHECK: name: testFoldRLWINMUserWrapped67tracksRegLiveness: true68body: |69 bb.0.entry:70 liveins: $x371 %0:g8rc = COPY $x372 %1:gprc = COPY %0.sub_32:g8rc73 %2:gprc = RLWINM %1:gprc, 10, 5, 3174 ; CHECK: %2:gprc = RLWINM killed %1, 10, 5, 3175 %3:gprc = RLWINM %2:gprc, 10, 30, 576 ; CHECK: %3:gprc = RLWINM killed %2, 10, 30, 577 BLR8 implicit $lr8, implicit $rm78...79---80name: testFoldRLWINMResultWrapped81#CHECK: name: testFoldRLWINMResultWrapped82tracksRegLiveness: true83body: |84 bb.0.entry:85 liveins: $x386 %0:g8rc = COPY $x387 %1:gprc = COPY %0.sub_32:g8rc88 %2:gprc = RLWINM killed %1:gprc, 10, 20, 1089 ; CHECK: %2:gprc = RLWINM killed %1, 10, 20, 1090 %3:gprc = RLWINM killed %2:gprc, 10, 0, 3191 ; CHECK: %3:gprc = RLWINM killed %2, 10, 0, 3192 BLR8 implicit $lr8, implicit $rm93...94---95name: testFoldRLWINMMultipleUses96#CHECK: name: testFoldRLWINMMultipleUses97tracksRegLiveness: true98body: |99 bb.0.entry:100 liveins: $x3101 %0:g8rc = COPY $x3102 %1:gprc = COPY %0.sub_32:g8rc103 %2:gprc = RLWINM killed %1:gprc, 27, 5, 31104 ; CHECK: %2:gprc = RLWINM %1, 27, 5, 31105 %3:gprc = RLWINM %2:gprc, 19, 0, 12106 ; CHECK: %3:gprc = RLWINM killed %1, 14, 0, 12107 STW %3:gprc, %2:gprc, 100 108 ; CHECK: STW killed %3, killed %2, 100109 BLR8 implicit $lr8, implicit $rm110...111---112name: testFoldRLWINMToZero113#CHECK: name: testFoldRLWINMToZero114tracksRegLiveness: true115body: |116 bb.0.entry:117 liveins: $x3118 %0:g8rc = COPY $x3119 %1:gprc = COPY %0.sub_32:g8rc120 %2:gprc = RLWINM %1:gprc, 27, 5, 10121 ; CHECK-NOT: RLWINM %1,122 %3:gprc = RLWINM %2:gprc, 8, 5, 10123 ; CHECK: %3:gprc = LI 0124 BLR8 implicit $lr8, implicit $rm125...126---127name: testFoldRLWINM_recToZero128#CHECK: name: testFoldRLWINM_recToZero129tracksRegLiveness: true130body: |131 bb.0.entry:132 liveins: $x3133 %0:g8rc = COPY $x3134 %1:gprc = COPY %0.sub_32:g8rc135 %2:gprc = RLWINM %1:gprc, 27, 5, 10136 ; CHECK-NOT: RLWINM %1,137 %3:gprc = RLWINM_rec %2:gprc, 8, 5, 10, implicit-def $cr0138 ; CHECK: %3:gprc = ANDI_rec killed %1, 0, implicit-def dead $cr0139 BLR8 implicit $lr8, implicit $rm140...141---142name: testFoldRLWINMoToZeroSrcCanNotBeDeleted143#CHECK: name: testFoldRLWINMoToZeroSrcCanNotBeDeleted144tracksRegLiveness: true145body: |146 bb.0.entry:147 liveins: $x3148 %0:g8rc = COPY $x3149 %1:gprc = COPY %0.sub_32:g8rc150 %2:gprc = RLWINM_rec killed %1:gprc, 27, 5, 10, implicit-def $cr0151 ; CHECK: %2:gprc = RLWINM_rec %1, 27, 5, 10, implicit-def dead $cr0152 %3:gprc = RLWINM_rec killed %2:gprc, 8, 5, 10, implicit-def $cr0153 ; CHECK: %3:gprc = ANDI_rec killed %1, 0, implicit-def dead $cr0154 BLR8 implicit $lr8, implicit $rm155...156---157name: testFoldRLWINMInvalidMask158#CHECK: name: testFoldRLWINMInvalidMask159tracksRegLiveness: true160body: |161 bb.0.entry:162 liveins: $x3163 %0:g8rc = COPY $x3164 %1:gprc = COPY %0.sub_32:g8rc165 %2:gprc = RLWINM %1:gprc, 20, 5, 31166 ; CHECK: %2:gprc = RLWINM killed %1, 20, 5, 31167 %3:gprc = RLWINM %2:gprc, 19, 10, 20168 ; CHECK: %3:gprc = RLWINM killed %2, 19, 10, 20169 BLR8 implicit $lr8, implicit $rm170...171---172name: testFoldRLWINMLIWrapMask173#CHECK: name: testFoldRLWINMLIWrapMask174tracksRegLiveness: true175body: |176 bb.0.entry:177 liveins: $x3178 %0:gprc = COPY $x3179 %1:gprc = LI 100180 ; CHECK: %2:gprc = LI 200181 %2:gprc = RLWINM %1:gprc, 1, 3, 2182 STW %2:gprc, %0:gprc, 100183 BLR8 implicit $lr8, implicit $rm184...185---186name: testFoldRLWINMAndANDI187tracksRegLiveness: true188body: |189 bb.0.entry:190 liveins: $x3191 ; CHECK-LABEL: name: testFoldRLWINMAndANDI192 ; CHECK: liveins: $x3193 ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY killed $x3194 ; CHECK: [[COPY1:%[0-9]+]]:gprc = COPY killed [[COPY]].sub_32195 ; CHECK: [[RLWINM:%[0-9]+]]:gprc = RLWINM killed [[COPY1]], 4, 28, 31196 ; CHECK: [[ANDI_rec:%[0-9]+]]:gprc = ANDI_rec killed [[RLWINM]], 4, implicit-def dead $cr0197 ; CHECK: BLR8 implicit $lr8, implicit $rm198 %0:g8rc = COPY $x3199 %1:gprc = COPY %0.sub_32:g8rc200 %2:gprc = RLWINM %1:gprc, 4, 28, 31201 %3:gprc = ANDI_rec %2:gprc, 4, implicit-def $cr0202 BLR8 implicit $lr8, implicit $rm203...204