1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s 3 4--- 5name: test_ashr_i44 6tracksRegLiveness: true 7body: | 8 bb.0: 9 liveins: $vgpr0, $vgpr1 10 11 ; CHECK-LABEL: name: test_ashr_i44 12 ; CHECK: liveins: $vgpr0, $vgpr1 13 ; CHECK-NEXT: {{ $}} 14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 15 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 16 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 17 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64) 18 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 43 19 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s44) = G_ASHR [[TRUNC]], [[C]](s44) 20 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ASHR]](s44) 21 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 22 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32) 23 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32) 24 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 25 %1:_(s32) = COPY $vgpr0 26 %2:_(s32) = COPY $vgpr1 27 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 28 %4:_(s44) = G_TRUNC %3(s64) 29 %5:_(s44) = G_CONSTANT i44 22 30 %6:_(s44) = G_ASHR %4, %5(s44) 31 %7:_(s44) = G_ASHR %6, %5(s44) 32 %8:_(s64) = G_ANYEXT %7(s44) 33 %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64) 34 $vgpr0 = COPY %9(s32) 35 $vgpr1 = COPY %10(s32) 36 SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 37 38... 39--- 40name: test_ashr_i55 41tracksRegLiveness: true 42body: | 43 bb.0: 44 liveins: $sgpr0, $sgpr1 45 46 ; CHECK-LABEL: name: test_ashr_i55 47 ; CHECK: liveins: $sgpr0, $sgpr1 48 ; CHECK-NEXT: {{ $}} 49 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 50 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1 51 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 52 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64) 53 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53 54 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s55) = G_ASHR [[TRUNC]], [[C]](s55) 55 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ASHR]](s55) 56 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 57 ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32) 58 ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32) 59 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 60 %1:_(s32) = COPY $sgpr0 61 %2:_(s32) = COPY $sgpr1 62 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 63 %4:_(s55) = G_TRUNC %3(s64) 64 %5:_(s55) = G_CONSTANT i55 50 65 %7:_(s55) = G_CONSTANT i55 3 66 %6:_(s55) = G_ASHR %4, %5(s55) 67 %8:_(s55) = G_ASHR %6, %7(s55) 68 %9:_(s64) = G_ANYEXT %8(s55) 69 %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64) 70 $sgpr0 = COPY %10(s32) 71 $sgpr1 = COPY %11(s32) 72 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 73 74... 75--- 76name: test_lshr_i44 77tracksRegLiveness: true 78body: | 79 bb.0: 80 liveins: $sgpr0, $sgpr1 81 82 ; CHECK-LABEL: name: test_lshr_i44 83 ; CHECK: liveins: $sgpr0, $sgpr1 84 ; CHECK-NEXT: {{ $}} 85 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 86 ; CHECK-NEXT: $sgpr0 = COPY [[C]](s32) 87 ; CHECK-NEXT: $sgpr1 = COPY [[C]](s32) 88 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 89 %1:_(s32) = COPY $sgpr0 90 %2:_(s32) = COPY $sgpr1 91 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 92 %4:_(s44) = G_TRUNC %3(s64) 93 %5:_(s44) = G_CONSTANT i44 22 94 %6:_(s44) = G_LSHR %4, %5(s44) 95 %7:_(s44) = G_LSHR %6, %5(s44) 96 %8:_(s64) = G_ANYEXT %7(s44) 97 %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64) 98 $sgpr0 = COPY %9(s32) 99 $sgpr1 = COPY %10(s32) 100 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 101 102... 103--- 104name: test_lshr_i55 105tracksRegLiveness: true 106body: | 107 bb.0: 108 liveins: $vgpr0, $vgpr1 109 110 ; CHECK-LABEL: name: test_lshr_i55 111 ; CHECK: liveins: $vgpr0, $vgpr1 112 ; CHECK-NEXT: {{ $}} 113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 115 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 116 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64) 117 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53 118 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s55) = G_LSHR [[TRUNC]], [[C]](s55) 119 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LSHR]](s55) 120 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 121 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32) 122 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32) 123 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 124 %1:_(s32) = COPY $vgpr0 125 %2:_(s32) = COPY $vgpr1 126 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 127 %4:_(s55) = G_TRUNC %3(s64) 128 %5:_(s55) = G_CONSTANT i55 50 129 %7:_(s55) = G_CONSTANT i55 3 130 %6:_(s55) = G_LSHR %4, %5(s55) 131 %8:_(s55) = G_LSHR %6, %7(s55) 132 %9:_(s64) = G_ANYEXT %8(s55) 133 %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64) 134 $vgpr0 = COPY %10(s32) 135 $vgpr1 = COPY %11(s32) 136 SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 137 138... 139--- 140name: test_shl_i44 141tracksRegLiveness: true 142body: | 143 bb.0: 144 liveins: $vgpr0, $vgpr1 145 146 ; CHECK-LABEL: name: test_shl_i44 147 ; CHECK: liveins: $vgpr0, $vgpr1 148 ; CHECK-NEXT: {{ $}} 149 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 150 ; CHECK-NEXT: $vgpr0 = COPY [[C]](s32) 151 ; CHECK-NEXT: $vgpr1 = COPY [[C]](s32) 152 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 153 %1:_(s32) = COPY $vgpr0 154 %2:_(s32) = COPY $vgpr1 155 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 156 %4:_(s44) = G_TRUNC %3(s64) 157 %5:_(s44) = G_CONSTANT i44 22 158 %6:_(s44) = G_SHL %4, %5(s44) 159 %7:_(s44) = G_SHL %6, %5(s44) 160 %8:_(s64) = G_ANYEXT %7(s44) 161 %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64) 162 $vgpr0 = COPY %9(s32) 163 $vgpr1 = COPY %10(s32) 164 SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 165 166... 167--- 168name: test_shl_i55 169tracksRegLiveness: true 170body: | 171 bb.0: 172 liveins: $sgpr0, $sgpr1 173 174 ; CHECK-LABEL: name: test_shl_i55 175 ; CHECK: liveins: $sgpr0, $sgpr1 176 ; CHECK-NEXT: {{ $}} 177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 178 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1 179 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 180 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64) 181 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53 182 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s55) = G_SHL [[TRUNC]], [[C]](s55) 183 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SHL]](s55) 184 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 185 ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32) 186 ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32) 187 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 188 %1:_(s32) = COPY $sgpr0 189 %2:_(s32) = COPY $sgpr1 190 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 191 %4:_(s55) = G_TRUNC %3(s64) 192 %5:_(s55) = G_CONSTANT i55 50 193 %7:_(s55) = G_CONSTANT i55 3 194 %6:_(s55) = G_SHL %4, %5(s55) 195 %8:_(s55) = G_SHL %6, %7(s55) 196 %9:_(s64) = G_ANYEXT %8(s55) 197 %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64) 198 $sgpr0 = COPY %10(s32) 199 $sgpr1 = COPY %11(s32) 200 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 201 202... 203--- 204name: sshlsat_i44 205tracksRegLiveness: true 206body: | 207 bb.0: 208 liveins: $sgpr0, $sgpr1 209 210 ; CHECK-LABEL: name: sshlsat_i44 211 ; CHECK: liveins: $sgpr0, $sgpr1 212 ; CHECK-NEXT: {{ $}} 213 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 214 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1 215 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 216 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64) 217 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 43 218 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s44) = G_SSHLSAT [[TRUNC]], [[C]](s44) 219 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SSHLSAT]](s44) 220 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 221 ; CHECK-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV]](s32) 222 ; CHECK-NEXT: $sgpr0 = COPY [[INTRINSIC_CONVERGENT]](s32) 223 ; CHECK-NEXT: [[INTRINSIC_CONVERGENT1:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV1]](s32) 224 ; CHECK-NEXT: $sgpr1 = COPY [[INTRINSIC_CONVERGENT1]](s32) 225 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 226 %1:_(s32) = COPY $sgpr0 227 %2:_(s32) = COPY $sgpr1 228 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 229 %0:_(s44) = G_TRUNC %3(s64) 230 %5:_(s44) = G_CONSTANT i44 22 231 %6:_(s44) = G_SSHLSAT %0, %5(s44) 232 %7:_(s44) = G_SSHLSAT %6, %5(s44) 233 %8:_(s64) = G_ANYEXT %7(s44) 234 %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %8(s64) 235 %11:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %9(s32) 236 $sgpr0 = COPY %11(s32) 237 %12:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %10(s32) 238 $sgpr1 = COPY %12(s32) 239 SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1 240 241... 242--- 243name: sshlsat_i55 244tracksRegLiveness: true 245body: | 246 bb.0: 247 liveins: $vgpr0, $vgpr1 248 249 ; CHECK-LABEL: name: sshlsat_i55 250 ; CHECK: liveins: $vgpr0, $vgpr1 251 ; CHECK-NEXT: {{ $}} 252 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 253 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 254 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 255 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64) 256 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53 257 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s55) = G_SSHLSAT [[TRUNC]], [[C]](s55) 258 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SSHLSAT]](s55) 259 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 260 ; CHECK-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV]](s32) 261 ; CHECK-NEXT: $vgpr0 = COPY [[INTRINSIC_CONVERGENT]](s32) 262 ; CHECK-NEXT: [[INTRINSIC_CONVERGENT1:%[0-9]+]]:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), [[UV1]](s32) 263 ; CHECK-NEXT: $vgpr1 = COPY [[INTRINSIC_CONVERGENT1]](s32) 264 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 265 %1:_(s32) = COPY $vgpr0 266 %2:_(s32) = COPY $vgpr1 267 %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32) 268 %0:_(s55) = G_TRUNC %3(s64) 269 %5:_(s55) = G_CONSTANT i55 50 270 %7:_(s55) = G_CONSTANT i55 3 271 %6:_(s55) = G_SSHLSAT %0, %5(s55) 272 %8:_(s55) = G_SSHLSAT %6, %7(s55) 273 %9:_(s64) = G_ANYEXT %8(s55) 274 %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64) 275 %12:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %10(s32) 276 $vgpr0 = COPY %12(s32) 277 %13:_(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane), %11(s32) 278 $vgpr1 = COPY %13(s32) 279 SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1 280 281... 282--- 283name: ushlsat_i44 284tracksRegLiveness: true 285body: | 286 bb.0: 287 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 288 289 ; CHECK-LABEL: name: ushlsat_i44 290 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 291 ; CHECK-NEXT: {{ $}} 292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 293 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 294 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 295 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s44) = G_TRUNC [[MV]](s64) 296 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s44) = G_CONSTANT i44 22 297 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s44) = G_USHLSAT [[TRUNC]], [[C]](s44) 298 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s44) = G_USHLSAT [[USHLSAT]], [[C]](s44) 299 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[USHLSAT1]](s44) 300 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 301 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32) 302 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32) 303 ; CHECK-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1 304 %2:_(s32) = COPY $vgpr0 305 %3:_(s32) = COPY $vgpr1 306 %4:_(s64) = G_MERGE_VALUES %2(s32), %3(s32) 307 %0:_(s44) = G_TRUNC %4(s64) 308 %5:_(s44) = G_CONSTANT i44 22 309 %6:_(s44) = G_USHLSAT %0, %5(s44) 310 %7:_(s44) = G_USHLSAT %6, %5(s44) 311 %9:_(s64) = G_ANYEXT %7(s44) 312 %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(s64) 313 $vgpr0 = COPY %10(s32) 314 $vgpr1 = COPY %11(s32) 315 S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1 316 317... 318--- 319name: ushlsat_i55 320tracksRegLiveness: true 321body: | 322 bb.0: 323 liveins: $vgpr0, $vgpr1 324 325 ; CHECK-LABEL: name: ushlsat_i55 326 ; CHECK: liveins: $vgpr0, $vgpr1 327 ; CHECK-NEXT: {{ $}} 328 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 329 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 330 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 331 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s55) = G_TRUNC [[MV]](s64) 332 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s55) = G_CONSTANT i55 53 333 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s55) = G_USHLSAT [[TRUNC]], [[C]](s55) 334 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[USHLSAT]](s55) 335 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ANYEXT]](s64) 336 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32) 337 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32) 338 ; CHECK-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1 339 %2:_(s32) = COPY $vgpr0 340 %3:_(s32) = COPY $vgpr1 341 %4:_(s64) = G_MERGE_VALUES %2(s32), %3(s32) 342 %0:_(s55) = G_TRUNC %4(s64) 343 %5:_(s55) = G_CONSTANT i55 50 344 %7:_(s55) = G_CONSTANT i55 3 345 %6:_(s55) = G_USHLSAT %0, %5(s55) 346 %8:_(s55) = G_USHLSAT %6, %7(s55) 347 %10:_(s64) = G_ANYEXT %8(s55) 348 %11:_(s32), %12:_(s32) = G_UNMERGE_VALUES %10(s64) 349 $vgpr0 = COPY %11(s32) 350 $vgpr1 = COPY %12(s32) 351 S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1 352 353... 354