209 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-uknown -global-isel-abort=1 -run-pass=instruction-select %s -o - | FileCheck %s3...4---5name: usube_s646alignment: 47legalized: true8regBankSelected: true9tracksRegLiveness: true10body: |11 bb.1:12 liveins: $x0, $x113 14 ; CHECK-LABEL: name: usube_s6415 ; CHECK: liveins: $x0, $x116 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x018 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x119 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 120 ; CHECK-NEXT: [[SUBSWrr:%[0-9]+]]:gpr32 = SUBSWrr $wzr, [[MOVi32imm]], implicit-def $nzcv21 ; CHECK-NEXT: [[SBCSXr:%[0-9]+]]:gpr64 = SBCSXr [[COPY]], [[COPY1]], implicit-def $nzcv, implicit $nzcv22 ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 2, implicit $nzcv23 ; CHECK-NEXT: $x0 = COPY [[SBCSXr]]24 ; CHECK-NEXT: $w1 = COPY [[CSINCWr]]25 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $w126 %0:gpr(s64) = COPY $x027 %1:gpr(s64) = COPY $x128 %2:gpr(s32) = G_CONSTANT i32 129 %3:gpr(s64), %4:gpr(s32) = G_USUBE %0, %1, %230 $x0 = COPY %3(s64)31 $w1 = COPY %4(s32)32 RET_ReallyLR implicit $x0, implicit $w133...34...35---36name: usube_s3237alignment: 438legalized: true39regBankSelected: true40tracksRegLiveness: true41body: |42 bb.1:43 liveins: $w0, $w144 45 ; CHECK-LABEL: name: usube_s3246 ; CHECK: liveins: $w0, $w147 ; CHECK-NEXT: {{ $}}48 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w049 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w150 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 151 ; CHECK-NEXT: [[SUBSWrr:%[0-9]+]]:gpr32 = SUBSWrr $wzr, [[MOVi32imm]], implicit-def $nzcv52 ; CHECK-NEXT: [[SBCSWr:%[0-9]+]]:gpr32 = SBCSWr [[COPY]], [[COPY1]], implicit-def $nzcv, implicit $nzcv53 ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 2, implicit $nzcv54 ; CHECK-NEXT: $w0 = COPY [[SBCSWr]]55 ; CHECK-NEXT: $w1 = COPY [[CSINCWr]]56 ; CHECK-NEXT: RET_ReallyLR implicit $w0, implicit $w157 %0:gpr(s32) = COPY $w058 %1:gpr(s32) = COPY $w159 %2:gpr(s32) = G_CONSTANT i32 160 %3:gpr(s32), %4:gpr(s32) = G_USUBE %0, %1, %261 $w0 = COPY %3(s32)62 $w1 = COPY %4(s32)63 RET_ReallyLR implicit $w0, implicit $w164...65...66---67name: usube_opt_prev_usubo68alignment: 469legalized: true70regBankSelected: true71tracksRegLiveness: true72body: |73 bb.1:74 liveins: $x0, $x1, $x2, $x375 76 ; CHECK-LABEL: name: usube_opt_prev_usubo77 ; CHECK: liveins: $x0, $x1, $x2, $x378 ; CHECK-NEXT: {{ $}}79 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x080 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x181 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x282 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY $x383 ; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr [[COPY]], [[COPY2]], implicit-def $nzcv84 ; CHECK-NEXT: [[SBCSXr:%[0-9]+]]:gpr64 = SBCSXr [[COPY1]], [[COPY3]], implicit-def $nzcv, implicit $nzcv85 ; CHECK-NEXT: $x0 = COPY [[SUBSXrr]]86 ; CHECK-NEXT: $x1 = COPY [[SBCSXr]]87 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x188 %0:gpr(s64) = COPY $x089 %1:gpr(s64) = COPY $x190 %2:gpr(s64) = COPY $x291 %3:gpr(s64) = COPY $x392 %8:gpr(s64), %12:gpr(s32) = G_USUBO %0, %293 %9:gpr(s64), %13:gpr(s32) = G_USUBE %1, %3, %1294 $x0 = COPY %8(s64)95 $x1 = COPY %9(s64)96 RET_ReallyLR implicit $x0, implicit $x197...98...99---100name: usube_opt_prev_usube101alignment: 4102legalized: true103regBankSelected: true104tracksRegLiveness: true105body: |106 bb.1:107 liveins: $x0, $x1, $x2, $x3108 109 ; CHECK-LABEL: name: usube_opt_prev_usube110 ; CHECK: liveins: $x0, $x1, $x2, $x3111 ; CHECK-NEXT: {{ $}}112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0113 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1114 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2115 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY $x3116 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1117 ; CHECK-NEXT: [[SUBSWrr:%[0-9]+]]:gpr32 = SUBSWrr $wzr, [[MOVi32imm]], implicit-def $nzcv118 ; CHECK-NEXT: [[SBCSXr:%[0-9]+]]:gpr64 = SBCSXr [[COPY]], [[COPY2]], implicit-def $nzcv, implicit $nzcv119 ; CHECK-NEXT: [[SBCSXr1:%[0-9]+]]:gpr64 = SBCSXr [[COPY1]], [[COPY3]], implicit-def $nzcv, implicit $nzcv120 ; CHECK-NEXT: $x0 = COPY [[SBCSXr]]121 ; CHECK-NEXT: $x1 = COPY [[SBCSXr1]]122 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1123 %0:gpr(s64) = COPY $x0124 %1:gpr(s64) = COPY $x1125 %2:gpr(s64) = COPY $x2126 %3:gpr(s64) = COPY $x3127 %6:gpr(s32) = G_CONSTANT i32 1128 %8:gpr(s64), %12:gpr(s32) = G_USUBE %0, %2, %6129 %9:gpr(s64), %13:gpr(s32) = G_USUBE %1, %3, %12130 $x0 = COPY %8(s64)131 $x1 = COPY %9(s64)132 RET_ReallyLR implicit $x0, implicit $x1133...134...135---136name: usube_opt_bail_clobber137alignment: 4138legalized: true139regBankSelected: true140tracksRegLiveness: true141body: |142 bb.1:143 liveins: $x0, $x1, $x2, $x4, $x5, $x6144 145 ; CHECK-LABEL: name: usube_opt_bail_clobber146 ; CHECK: liveins: $x0, $x1, $x2, $x4, $x5, $x6147 ; CHECK-NEXT: {{ $}}148 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0149 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1150 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2151 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY $x4152 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64 = COPY $x5153 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr64 = COPY $x6154 ; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr [[COPY]], [[COPY3]], implicit-def $nzcv155 ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 2, implicit $nzcv156 ; CHECK-NEXT: [[SBCSXr:%[0-9]+]]:gpr64 = SBCSXr [[COPY1]], [[COPY4]], implicit-def $nzcv, implicit $nzcv157 ; CHECK-NEXT: [[SUBSWrr:%[0-9]+]]:gpr32 = SUBSWrr $wzr, [[CSINCWr]], implicit-def $nzcv158 ; CHECK-NEXT: [[SBCSXr1:%[0-9]+]]:gpr64 = SBCSXr [[COPY2]], [[COPY5]], implicit-def $nzcv, implicit $nzcv159 ; CHECK-NEXT: $x0 = COPY [[SUBSXrr]]160 ; CHECK-NEXT: $x1 = COPY [[SBCSXr]]161 ; CHECK-NEXT: $x2 = COPY [[SBCSXr1]]162 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1, implicit $x2163 %0:gpr(s64) = COPY $x0164 %1:gpr(s64) = COPY $x1165 %2:gpr(s64) = COPY $x2166 %4:gpr(s64) = COPY $x4167 %5:gpr(s64) = COPY $x5168 %6:gpr(s64) = COPY $x6169 %7:gpr(s64), %11:gpr(s32) = G_USUBO %0, %4170 %8:gpr(s64), %12:gpr(s32) = G_USUBE %1, %5, %11171 ; carry-in is not produced by previous instruction172 %9:gpr(s64), %13:gpr(s32) = G_USUBE %2, %6, %11173 $x0 = COPY %7(s64)174 $x1 = COPY %8(s64)175 $x2 = COPY %9(s64)176 RET_ReallyLR implicit $x0, implicit $x1, implicit $x2177...178...179---180name: usube_opt_prev_dead181alignment: 4182legalized: true183regBankSelected: true184tracksRegLiveness: true185body: |186 bb.1:187 liveins: $x0, $x1, $x2, $x3188 ; CHECK-LABEL: name: usube_opt_prev_dead189 ; CHECK: liveins: $x0, $x1, $x2, $x3190 ; CHECK-NEXT: {{ $}}191 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0192 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1193 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2194 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY $x3195 ; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr [[COPY]], [[COPY2]], implicit-def $nzcv196 ; CHECK-NEXT: [[SBCSXr:%[0-9]+]]:gpr64 = SBCSXr [[COPY1]], [[COPY3]], implicit-def $nzcv, implicit $nzcv197 ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 2, implicit $nzcv198 ; CHECK-NEXT: $w0 = COPY [[CSINCWr]]199 ; CHECK-NEXT: RET_ReallyLR implicit $w0200 %0:gpr(s64) = COPY $x0201 %1:gpr(s64) = COPY $x1202 %2:gpr(s64) = COPY $x2203 %3:gpr(s64) = COPY $x3204 %4:gpr(s64), %5:gpr(s32) = G_USUBO %0, %2205 %6:gpr(s64), %7:gpr(s32) = G_USUBE %1, %3, %5206 $w0 = COPY %7(s32)207 RET_ReallyLR implicit $w0208...209