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