235 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3 4---5name: sshlsat_16tracksRegLiveness: true7body: |8 bb.0:9 liveins: $vgpr010 11 ; CHECK-LABEL: name: sshlsat_112 ; CHECK: liveins: $vgpr013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 416 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C]](s32)17 ; CHECK-NEXT: $vgpr0 = COPY [[SSHLSAT]](s32)18 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr019 %0:_(s32) = COPY $vgpr020 %2:_(s32) = G_CONSTANT i32 221 %3:_(s32) = G_SSHLSAT %0, %2(s32)22 %4:_(s32) = G_SSHLSAT %3, %2(s32)23 $vgpr0 = COPY %4(s32)24 SI_RETURN_TO_EPILOG implicit $vgpr025 26...27---28name: sshlsat_229tracksRegLiveness: true30body: |31 bb.0:32 liveins: $sgpr033 34 ; CHECK-LABEL: name: sshlsat_235 ; CHECK: liveins: $sgpr036 ; CHECK-NEXT: {{ $}}37 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr038 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1039 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C]](s32)40 ; CHECK-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[SSHLSAT]](s32)41 ; CHECK-NEXT: $sgpr0 = COPY [[INT]](s32)42 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr043 %0:_(s32) = COPY $sgpr044 %2:_(s32) = G_CONSTANT i32 145 %4:_(s32) = G_CONSTANT i32 246 %6:_(s32) = G_CONSTANT i32 347 %8:_(s32) = G_CONSTANT i32 448 %3:_(s32) = G_SSHLSAT %0, %2(s32)49 %5:_(s32) = G_SSHLSAT %3, %4(s32)50 %7:_(s32) = G_SSHLSAT %5, %6(s32)51 %9:_(s32) = G_SSHLSAT %7, %8(s32)52 %10:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %9(s32)53 $sgpr0 = COPY %10(s32)54 SI_RETURN_TO_EPILOG implicit $sgpr055 56...57---58name: sshlsat_i3259tracksRegLiveness: true60body: |61 bb.0:62 liveins: $vgpr063 64 ; CHECK-LABEL: name: sshlsat_i3265 ; CHECK: liveins: $vgpr066 ; CHECK-NEXT: {{ $}}67 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr068 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3169 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C]](s32)70 ; CHECK-NEXT: $vgpr0 = COPY [[SSHLSAT]](s32)71 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr072 %0:_(s32) = COPY $vgpr073 %2:_(s32) = G_CONSTANT i32 1074 %3:_(s32) = G_SSHLSAT %0, %2(s32)75 %4:_(s32) = G_SSHLSAT %3, %2(s32)76 %5:_(s32) = G_SSHLSAT %4, %2(s32)77 %6:_(s32) = G_SSHLSAT %5, %2(s32)78 $vgpr0 = COPY %6(s32)79 SI_RETURN_TO_EPILOG implicit $vgpr080 81...82---83name: sshlsat_i6484tracksRegLiveness: true85body: |86 bb.0:87 liveins: $sgpr0, $sgpr188 89 ; CHECK-LABEL: name: sshlsat_i6490 ; CHECK: liveins: $sgpr0, $sgpr191 ; CHECK-NEXT: {{ $}}92 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr093 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr194 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)95 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 6296 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s64) = G_SSHLSAT [[MV]], [[C]](s64)97 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SSHLSAT]](s64)98 ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)99 ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)100 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1101 %1:_(s32) = COPY $sgpr0102 %2:_(s32) = COPY $sgpr1103 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)104 %4:_(s64) = G_CONSTANT i64 10105 %11:_(s64) = G_CONSTANT i64 2106 %5:_(s64) = G_SSHLSAT %0, %4(s64)107 %6:_(s64) = G_SSHLSAT %5, %4(s64)108 %7:_(s64) = G_SSHLSAT %6, %4(s64)109 %8:_(s64) = G_SSHLSAT %7, %4(s64)110 %9:_(s64) = G_SSHLSAT %8, %4(s64)111 %10:_(s64) = G_SSHLSAT %9, %4(s64)112 %12:_(s64) = G_SSHLSAT %10, %11(s64)113 %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %12(s64)114 $sgpr0 = COPY %13(s32)115 $sgpr1 = COPY %14(s32)116 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1117 118...119---120name: ushlsat_1121tracksRegLiveness: true122body: |123 bb.0:124 liveins: $vgpr0125 126 ; CHECK-LABEL: name: ushlsat_1127 ; CHECK: liveins: $vgpr0128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0130 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4131 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C]](s32)132 ; CHECK-NEXT: $vgpr0 = COPY [[USHLSAT]](s32)133 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0134 %0:_(s32) = COPY $vgpr0135 %2:_(s32) = G_CONSTANT i32 2136 %3:_(s32) = G_USHLSAT %0, %2(s32)137 %4:_(s32) = G_USHLSAT %3, %2(s32)138 $vgpr0 = COPY %4(s32)139 SI_RETURN_TO_EPILOG implicit $vgpr0140 141...142---143name: ushlsat_2144tracksRegLiveness: true145body: |146 bb.0:147 liveins: $sgpr0148 149 ; CHECK-LABEL: name: ushlsat_2150 ; CHECK: liveins: $sgpr0151 ; CHECK-NEXT: {{ $}}152 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0153 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10154 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C]](s32)155 ; CHECK-NEXT: $sgpr0 = COPY [[USHLSAT]](s32)156 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0157 %0:_(s32) = COPY $sgpr0158 %2:_(s32) = G_CONSTANT i32 1159 %4:_(s32) = G_CONSTANT i32 2160 %6:_(s32) = G_CONSTANT i32 3161 %8:_(s32) = G_CONSTANT i32 4162 %3:_(s32) = G_USHLSAT %0, %2(s32)163 %5:_(s32) = G_USHLSAT %3, %4(s32)164 %7:_(s32) = G_USHLSAT %5, %6(s32)165 %9:_(s32) = G_USHLSAT %7, %8(s32)166 $sgpr0 = COPY %9(s32)167 SI_RETURN_TO_EPILOG implicit $sgpr0168 169...170---171name: ushlsat_i32172tracksRegLiveness: true173body: |174 bb.0:175 liveins: $vgpr0176 177 ; CHECK-LABEL: name: ushlsat_i32178 ; CHECK: liveins: $vgpr0179 ; CHECK-NEXT: {{ $}}180 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0181 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10182 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 30183 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C1]](s32)184 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[USHLSAT]], [[C]](s32)185 ; CHECK-NEXT: $vgpr0 = COPY [[USHLSAT1]](s32)186 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0187 %0:_(s32) = COPY $vgpr0188 %2:_(s32) = G_CONSTANT i32 10189 %3:_(s32) = G_USHLSAT %0, %2(s32)190 %4:_(s32) = G_USHLSAT %3, %2(s32)191 %5:_(s32) = G_USHLSAT %4, %2(s32)192 %6:_(s32) = G_USHLSAT %5, %2(s32)193 $vgpr0 = COPY %6(s32)194 SI_RETURN_TO_EPILOG implicit $vgpr0195 196...197---198name: ushlsat_i64199tracksRegLiveness: true200body: |201 bb.0:202 liveins: $sgpr0, $sgpr1203 204 ; CHECK-LABEL: name: ushlsat_i64205 ; CHECK: liveins: $sgpr0, $sgpr1206 ; CHECK-NEXT: {{ $}}207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1209 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)210 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 10211 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 60212 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s64) = G_USHLSAT [[MV]], [[C1]](s64)213 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s64) = G_USHLSAT [[USHLSAT]], [[C]](s64)214 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[USHLSAT1]](s64)215 ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)216 ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)217 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1218 %1:_(s32) = COPY $sgpr0219 %2:_(s32) = COPY $sgpr1220 %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)221 %4:_(s64) = G_CONSTANT i64 10222 %5:_(s64) = G_USHLSAT %0, %4(s64)223 %6:_(s64) = G_USHLSAT %5, %4(s64)224 %7:_(s64) = G_USHLSAT %6, %4(s64)225 %8:_(s64) = G_USHLSAT %7, %4(s64)226 %9:_(s64) = G_USHLSAT %8, %4(s64)227 %10:_(s64) = G_USHLSAT %9, %4(s64)228 %11:_(s64) = G_USHLSAT %10, %4(s64)229 %12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %11(s64)230 $sgpr0 = COPY %12(s32)231 $sgpr1 = COPY %13(s32)232 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1233 234...235