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: ushlsat_and_1 6tracksRegLiveness: true 7body: | 8 bb.0: 9 liveins: $sgpr0 10 11 ; CHECK-LABEL: name: ushlsat_and_1 12 ; CHECK: liveins: $sgpr0 13 ; CHECK-NEXT: {{ $}} 14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 15 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 16 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1073741820 17 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 18 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 19 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C1]], [[C]](s32) 20 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]] 21 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 22 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 23 %0:_(s32) = COPY $sgpr0 24 %2:_(s32) = G_CONSTANT i32 2 25 %4:_(s32) = G_CONSTANT i32 1073741820 26 %3:_(s32) = G_USHLSAT %0, %2(s32) 27 %5:_(s32) = G_AND %3, %4 28 %6:_(s32) = G_USHLSAT %5, %2(s32) 29 $sgpr0 = COPY %6(s32) 30 SI_RETURN_TO_EPILOG implicit $sgpr0 31 32... 33--- 34name: ushlsat_and_2 35tracksRegLiveness: true 36body: | 37 bb.0: 38 liveins: $sgpr0 39 40 ; CHECK-LABEL: name: ushlsat_and_2 41 ; CHECK: liveins: $sgpr0 42 ; CHECK-NEXT: {{ $}} 43 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 44 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 536870880 45 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 46 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 47 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 48 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32) 49 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]] 50 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 51 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 52 %0:_(s32) = COPY $sgpr0 53 %2:_(s32) = G_CONSTANT i32 5 54 %4:_(s32) = G_CONSTANT i32 536870880 55 %6:_(s32) = G_CONSTANT i32 3 56 %3:_(s32) = G_USHLSAT %0, %2(s32) 57 %5:_(s32) = G_AND %3, %4 58 %7:_(s32) = G_USHLSAT %5, %6(s32) 59 $sgpr0 = COPY %7(s32) 60 SI_RETURN_TO_EPILOG implicit $sgpr0 61 62... 63--- 64name: ushlsat_and_3 65tracksRegLiveness: true 66body: | 67 bb.0: 68 liveins: $sgpr0 69 70 ; CHECK-LABEL: name: ushlsat_and_3 71 ; CHECK: liveins: $sgpr0 72 ; CHECK-NEXT: {{ $}} 73 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 74 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536 75 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 76 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 77 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 78 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32) 79 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[USHLSAT]], [[USHLSAT1]] 80 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 81 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 82 %0:_(s32) = COPY $sgpr0 83 %2:_(s32) = G_CONSTANT i32 3 84 %4:_(s32) = G_CONSTANT i32 65536 85 %6:_(s32) = G_CONSTANT i32 16 86 %3:_(s32) = G_USHLSAT %0, %2(s32) 87 %5:_(s32) = G_AND %3, %4 88 %7:_(s32) = G_USHLSAT %5, %6(s32) 89 $sgpr0 = COPY %7(s32) 90 SI_RETURN_TO_EPILOG implicit $sgpr0 91 92... 93--- 94name: ushlsat_or_1 95tracksRegLiveness: true 96body: | 97 bb.0: 98 liveins: $sgpr0 99 100 ; CHECK-LABEL: name: ushlsat_or_1 101 ; CHECK: liveins: $sgpr0 102 ; CHECK-NEXT: {{ $}} 103 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 104 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 105 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1073741821 106 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 107 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 108 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C1]], [[C]](s32) 109 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]] 110 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 111 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 112 %0:_(s32) = COPY $sgpr0 113 %2:_(s32) = G_CONSTANT i32 2 114 %4:_(s32) = G_CONSTANT i32 -1073741821 115 %3:_(s32) = G_USHLSAT %0, %2(s32) 116 %5:_(s32) = G_OR %3, %4 117 %6:_(s32) = G_USHLSAT %5, %2(s32) 118 $sgpr0 = COPY %6(s32) 119 SI_RETURN_TO_EPILOG implicit $sgpr0 120 121... 122--- 123name: ushlsat_or_2 124tracksRegLiveness: true 125body: | 126 bb.0: 127 liveins: $sgpr0 128 129 ; CHECK-LABEL: name: ushlsat_or_2 130 ; CHECK: liveins: $sgpr0 131 ; CHECK-NEXT: {{ $}} 132 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 133 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -536870881 134 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 135 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 136 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 137 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32) 138 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]] 139 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 140 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 141 %0:_(s32) = COPY $sgpr0 142 %2:_(s32) = G_CONSTANT i32 5 143 %4:_(s32) = G_CONSTANT i32 -536870881 144 %6:_(s32) = G_CONSTANT i32 3 145 %3:_(s32) = G_USHLSAT %0, %2(s32) 146 %5:_(s32) = G_OR %3, %4 147 %7:_(s32) = G_USHLSAT %5, %6(s32) 148 $sgpr0 = COPY %7(s32) 149 SI_RETURN_TO_EPILOG implicit $sgpr0 150 151... 152--- 153name: ushlsat_or_3 154tracksRegLiveness: true 155body: | 156 bb.0: 157 liveins: $sgpr0 158 159 ; CHECK-LABEL: name: ushlsat_or_3 160 ; CHECK: liveins: $sgpr0 161 ; CHECK-NEXT: {{ $}} 162 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 163 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536 164 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 165 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 166 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 167 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32) 168 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[USHLSAT]], [[USHLSAT1]] 169 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 170 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 171 %0:_(s32) = COPY $sgpr0 172 %2:_(s32) = G_CONSTANT i32 3 173 %4:_(s32) = G_CONSTANT i32 65536 174 %6:_(s32) = G_CONSTANT i32 16 175 %3:_(s32) = G_USHLSAT %0, %2(s32) 176 %5:_(s32) = G_OR %3, %4 177 %7:_(s32) = G_USHLSAT %5, %6(s32) 178 $sgpr0 = COPY %7(s32) 179 SI_RETURN_TO_EPILOG implicit $sgpr0 180 181... 182--- 183name: ushlsat_xor 184tracksRegLiveness: true 185body: | 186 bb.0: 187 liveins: $sgpr0 188 189 ; CHECK-LABEL: name: ushlsat_xor 190 ; CHECK: liveins: $sgpr0 191 ; CHECK-NEXT: {{ $}} 192 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 193 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 43690 194 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 5 195 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 196 ; CHECK-NEXT: [[USHLSAT:%[0-9]+]]:_(s32) = G_USHLSAT [[COPY]], [[C2]](s32) 197 ; CHECK-NEXT: [[USHLSAT1:%[0-9]+]]:_(s32) = G_USHLSAT [[C]], [[C1]](s32) 198 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[USHLSAT]], [[USHLSAT1]] 199 ; CHECK-NEXT: $sgpr0 = COPY [[XOR]](s32) 200 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 201 %0:_(s32) = COPY $sgpr0 202 %2:_(s32) = G_CONSTANT i32 3 203 %4:_(s32) = G_CONSTANT i32 43690 204 %6:_(s32) = G_CONSTANT i32 5 205 %3:_(s32) = G_USHLSAT %0, %2(s32) 206 %5:_(s32) = G_XOR %3, %4 207 %7:_(s32) = G_USHLSAT %5, %6(s32) 208 $sgpr0 = COPY %7(s32) 209 SI_RETURN_TO_EPILOG implicit $sgpr0 210 211... 212--- 213name: sshlsat_and_1 214tracksRegLiveness: true 215body: | 216 bb.0: 217 liveins: $sgpr0 218 219 ; CHECK-LABEL: name: sshlsat_and_1 220 ; CHECK: liveins: $sgpr0 221 ; CHECK-NEXT: {{ $}} 222 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 223 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 224 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1073741820 225 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 226 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 227 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C1]], [[C]](s32) 228 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]] 229 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 230 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 231 %0:_(s32) = COPY $sgpr0 232 %2:_(s32) = G_CONSTANT i32 2 233 %4:_(s32) = G_CONSTANT i32 1073741820 234 %3:_(s32) = G_SSHLSAT %0, %2(s32) 235 %5:_(s32) = G_AND %3, %4 236 %6:_(s32) = G_SSHLSAT %5, %2(s32) 237 $sgpr0 = COPY %6(s32) 238 SI_RETURN_TO_EPILOG implicit $sgpr0 239 240... 241--- 242name: sshlsat_and_2 243tracksRegLiveness: true 244body: | 245 bb.0: 246 liveins: $sgpr0 247 248 ; CHECK-LABEL: name: sshlsat_and_2 249 ; CHECK: liveins: $sgpr0 250 ; CHECK-NEXT: {{ $}} 251 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 252 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 536870880 253 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 254 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 255 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 256 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32) 257 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]] 258 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 259 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 260 %0:_(s32) = COPY $sgpr0 261 %2:_(s32) = G_CONSTANT i32 5 262 %4:_(s32) = G_CONSTANT i32 536870880 263 %6:_(s32) = G_CONSTANT i32 3 264 %3:_(s32) = G_SSHLSAT %0, %2(s32) 265 %5:_(s32) = G_AND %3, %4 266 %7:_(s32) = G_SSHLSAT %5, %6(s32) 267 $sgpr0 = COPY %7(s32) 268 SI_RETURN_TO_EPILOG implicit $sgpr0 269 270... 271--- 272name: sshlsat_and_3 273tracksRegLiveness: true 274body: | 275 bb.0: 276 liveins: $sgpr0 277 278 ; CHECK-LABEL: name: sshlsat_and_3 279 ; CHECK: liveins: $sgpr0 280 ; CHECK-NEXT: {{ $}} 281 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 282 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536 283 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 284 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 285 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 286 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32) 287 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[SSHLSAT]], [[SSHLSAT1]] 288 ; CHECK-NEXT: $sgpr0 = COPY [[AND]](s32) 289 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 290 %0:_(s32) = COPY $sgpr0 291 %2:_(s32) = G_CONSTANT i32 3 292 %4:_(s32) = G_CONSTANT i32 65536 293 %6:_(s32) = G_CONSTANT i32 16 294 %3:_(s32) = G_SSHLSAT %0, %2(s32) 295 %5:_(s32) = G_AND %3, %4 296 %7:_(s32) = G_SSHLSAT %5, %6(s32) 297 $sgpr0 = COPY %7(s32) 298 SI_RETURN_TO_EPILOG implicit $sgpr0 299 300... 301--- 302name: sshlsat_or_1 303tracksRegLiveness: true 304body: | 305 bb.0: 306 liveins: $sgpr0 307 308 ; CHECK-LABEL: name: sshlsat_or_1 309 ; CHECK: liveins: $sgpr0 310 ; CHECK-NEXT: {{ $}} 311 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 312 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 313 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1073741821 314 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 315 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 316 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C1]], [[C]](s32) 317 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]] 318 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 319 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 320 %0:_(s32) = COPY $sgpr0 321 %2:_(s32) = G_CONSTANT i32 2 322 %4:_(s32) = G_CONSTANT i32 -1073741821 323 %3:_(s32) = G_SSHLSAT %0, %2(s32) 324 %5:_(s32) = G_OR %3, %4 325 %6:_(s32) = G_SSHLSAT %5, %2(s32) 326 $sgpr0 = COPY %6(s32) 327 SI_RETURN_TO_EPILOG implicit $sgpr0 328 329... 330--- 331name: sshlsat_or_2 332tracksRegLiveness: true 333body: | 334 bb.0: 335 liveins: $sgpr0 336 337 ; CHECK-LABEL: name: sshlsat_or_2 338 ; CHECK: liveins: $sgpr0 339 ; CHECK-NEXT: {{ $}} 340 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 341 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -536870881 342 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 343 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 344 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 345 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32) 346 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]] 347 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 348 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 349 %0:_(s32) = COPY $sgpr0 350 %2:_(s32) = G_CONSTANT i32 5 351 %4:_(s32) = G_CONSTANT i32 -536870881 352 %6:_(s32) = G_CONSTANT i32 3 353 %3:_(s32) = G_SSHLSAT %0, %2(s32) 354 %5:_(s32) = G_OR %3, %4 355 %7:_(s32) = G_SSHLSAT %5, %6(s32) 356 $sgpr0 = COPY %7(s32) 357 SI_RETURN_TO_EPILOG implicit $sgpr0 358 359... 360--- 361name: sshlsat_or_3 362tracksRegLiveness: true 363body: | 364 bb.0: 365 liveins: $sgpr0 366 367 ; CHECK-LABEL: name: sshlsat_or_3 368 ; CHECK: liveins: $sgpr0 369 ; CHECK-NEXT: {{ $}} 370 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 371 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65536 372 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 373 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 374 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 375 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32) 376 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SSHLSAT]], [[SSHLSAT1]] 377 ; CHECK-NEXT: $sgpr0 = COPY [[OR]](s32) 378 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 379 %0:_(s32) = COPY $sgpr0 380 %2:_(s32) = G_CONSTANT i32 3 381 %4:_(s32) = G_CONSTANT i32 65536 382 %6:_(s32) = G_CONSTANT i32 16 383 %3:_(s32) = G_SSHLSAT %0, %2(s32) 384 %5:_(s32) = G_OR %3, %4 385 %7:_(s32) = G_SSHLSAT %5, %6(s32) 386 $sgpr0 = COPY %7(s32) 387 SI_RETURN_TO_EPILOG implicit $sgpr0 388 389... 390--- 391name: sshlsat_xor 392tracksRegLiveness: true 393body: | 394 bb.0: 395 liveins: $sgpr0 396 397 ; CHECK-LABEL: name: sshlsat_xor 398 ; CHECK: liveins: $sgpr0 399 ; CHECK-NEXT: {{ $}} 400 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 401 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 43690 402 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 5 403 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 404 ; CHECK-NEXT: [[SSHLSAT:%[0-9]+]]:_(s32) = G_SSHLSAT [[COPY]], [[C2]](s32) 405 ; CHECK-NEXT: [[SSHLSAT1:%[0-9]+]]:_(s32) = G_SSHLSAT [[C]], [[C1]](s32) 406 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[SSHLSAT]], [[SSHLSAT1]] 407 ; CHECK-NEXT: $sgpr0 = COPY [[XOR]](s32) 408 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0 409 %0:_(s32) = COPY $sgpr0 410 %2:_(s32) = G_CONSTANT i32 3 411 %4:_(s32) = G_CONSTANT i32 43690 412 %6:_(s32) = G_CONSTANT i32 5 413 %3:_(s32) = G_SSHLSAT %0, %2(s32) 414 %5:_(s32) = G_XOR %3, %4 415 %7:_(s32) = G_SSHLSAT %5, %6(s32) 416 $sgpr0 = COPY %7(s32) 417 SI_RETURN_TO_EPILOG implicit $sgpr0 418 419... 420