brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 85c2b61 Raw
143 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s3#4# Check that we can continue matching when we are in a situation where we will5# emit a TB(N)Z.6...7---8name:            fold_zext9alignment:       410legalized:       true11regBankSelected: true12tracksRegLiveness: true13body:             |14  ; CHECK-LABEL: name: fold_zext15  ; CHECK: bb.0:16  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)17  ; CHECK-NEXT:   liveins: $x018  ; CHECK-NEXT: {{  $}}19  ; CHECK-NEXT:   %copy:gpr32 = COPY $w020  ; CHECK-NEXT:   TBNZW %copy, 3, %bb.121  ; CHECK-NEXT:   B %bb.022  ; CHECK-NEXT: {{  $}}23  ; CHECK-NEXT: bb.1:24  ; CHECK-NEXT:   RET_ReallyLR25  bb.0:26    successors: %bb.0, %bb.127    liveins: $x028    %copy:gpr(s32) = COPY $w029    %bit:gpr(s64) = G_CONSTANT i64 830    %zero:gpr(s64) = G_CONSTANT i64 031    %fold_me:gpr(s64) = G_ZEXT %copy(s32)32    %and:gpr(s64) = G_AND %fold_me, %bit33    %cmp:gpr(s32) = G_ICMP intpred(ne), %and(s64), %zero34    G_BRCOND %cmp, %bb.135    G_BR %bb.036  bb.1:37    RET_ReallyLR38...39---40name:            fold_anyext41alignment:       442legalized:       true43regBankSelected: true44tracksRegLiveness: true45body:             |46  ; CHECK-LABEL: name: fold_anyext47  ; CHECK: bb.0:48  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)49  ; CHECK-NEXT:   liveins: $x050  ; CHECK-NEXT: {{  $}}51  ; CHECK-NEXT:   %copy:gpr32 = COPY $w052  ; CHECK-NEXT:   TBNZW %copy, 3, %bb.153  ; CHECK-NEXT:   B %bb.054  ; CHECK-NEXT: {{  $}}55  ; CHECK-NEXT: bb.1:56  ; CHECK-NEXT:   RET_ReallyLR57  bb.0:58    successors: %bb.0, %bb.159    liveins: $x060    %copy:gpr(s32) = COPY $w061    %bit:gpr(s64) = G_CONSTANT i64 862    %zero:gpr(s64) = G_CONSTANT i64 063    %fold_me:gpr(s64) = G_ANYEXT %copy(s32)64    %and:gpr(s64) = G_AND %fold_me, %bit65    %cmp:gpr(s32) = G_ICMP intpred(ne), %and(s64), %zero66    G_BRCOND %cmp, %bb.167    G_BR %bb.068  bb.1:69    RET_ReallyLR70...71---72name:            fold_multiple73alignment:       474legalized:       true75regBankSelected: true76tracksRegLiveness: true77body:             |78  ; CHECK-LABEL: name: fold_multiple79  ; CHECK: bb.0:80  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)81  ; CHECK-NEXT:   liveins: $h082  ; CHECK-NEXT: {{  $}}83  ; CHECK-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:fpr32 = SUBREG_TO_REG 0, $h0, %subreg.hsub84  ; CHECK-NEXT:   %copy:gpr32all = COPY [[SUBREG_TO_REG]]85  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr32 = COPY %copy86  ; CHECK-NEXT:   TBNZW [[COPY]], 3, %bb.187  ; CHECK-NEXT:   B %bb.088  ; CHECK-NEXT: {{  $}}89  ; CHECK-NEXT: bb.1:90  ; CHECK-NEXT:   RET_ReallyLR91  bb.0:92    successors: %bb.0, %bb.193    liveins: $h094    %copy:gpr(s16) = COPY $h095    %bit:gpr(s64) = G_CONSTANT i64 896    %zero:gpr(s64) = G_CONSTANT i64 097    %ext1:gpr(s32) = G_ZEXT %copy(s16)98    %ext2:gpr(s64) = G_ANYEXT %ext1(s32)99    %and:gpr(s64) = G_AND %ext2, %bit100    %cmp:gpr(s32) = G_ICMP intpred(ne), %and(s64), %zero101    G_BRCOND %cmp, %bb.1102    G_BR %bb.0103  bb.1:104    RET_ReallyLR105...106---107name:            dont_fold_more_than_one_use108alignment:       4109legalized:       true110regBankSelected: true111tracksRegLiveness: true112body:             |113  ; CHECK-LABEL: name: dont_fold_more_than_one_use114  ; CHECK: bb.0:115  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)116  ; CHECK-NEXT:   liveins: $x0117  ; CHECK-NEXT: {{  $}}118  ; CHECK-NEXT:   %copy:gpr32 = COPY $w0119  ; CHECK-NEXT:   [[ORRWrs:%[0-9]+]]:gpr32 = ORRWrs $wzr, %copy, 0120  ; CHECK-NEXT:   %zext:gpr64 = SUBREG_TO_REG 0, [[ORRWrs]], %subreg.sub_32121  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr32all = COPY %zext.sub_32122  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]123  ; CHECK-NEXT:   TBNZW [[COPY1]], 3, %bb.1124  ; CHECK-NEXT:   B %bb.0125  ; CHECK-NEXT: {{  $}}126  ; CHECK-NEXT: bb.1:127  ; CHECK-NEXT:   $x0 = COPY %zext128  ; CHECK-NEXT:   RET_ReallyLR implicit $x0129  bb.0:130    successors: %bb.0, %bb.1131    liveins: $x0132    %copy:gpr(s32) = COPY $w0133    %bit:gpr(s64) = G_CONSTANT i64 8134    %zero:gpr(s64) = G_CONSTANT i64 0135    %zext:gpr(s64) = G_ZEXT %copy(s32)136    %and:gpr(s64) = G_AND %zext, %bit137    %cmp:gpr(s32) = G_ICMP intpred(ne), %and(s64), %zero138    G_BRCOND %cmp, %bb.1139    G_BR %bb.0140  bb.1:141    $x0 = COPY %zext:gpr(s64)142    RET_ReallyLR implicit $x0143