1# RUN: llc -march=amdgcn -mcpu=fiji -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s 2# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=W32 %s 3# RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=W32 %s 4 5--- 6# GCN-LABEL: name: and_execz_mov_vccz 7# GCN-NOT: S_MOV_ 8# GCN-NOT: S_AND_ 9# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 10name: and_execz_mov_vccz 11body: | 12 bb.0: 13 S_NOP 0 14 15 bb.1: 16 S_NOP 0 17 18 bb.2: 19 $sgpr0_sgpr1 = S_MOV_B64 -1 20 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 21 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 22 S_ENDPGM 0 23... 24--- 25# GCN-LABEL: name: and_execz_imm_vccz 26# GCN-NOT: S_AND_ 27# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 28name: and_execz_imm_vccz 29body: | 30 bb.0: 31 S_NOP 0 32 33 bb.1: 34 S_NOP 0 35 36 bb.2: 37 $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc 38 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 39 S_ENDPGM 0 40... 41--- 42# GCN-LABEL: name: and_execnz_imm_vccnz 43# GCN-NOT: S_AND_ 44# GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec 45name: and_execnz_imm_vccnz 46body: | 47 bb.0: 48 S_NOP 0 49 50 bb.1: 51 S_NOP 0 52 53 bb.2: 54 $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc 55 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 56 S_ENDPGM 0 57... 58--- 59# GCN-LABEL: name: and_execz_imm_vccz_live_scc 60# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc 61# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 62name: and_execz_imm_vccz_live_scc 63body: | 64 bb.0: 65 S_NOP 0 66 67 bb.1: 68 S_NOP 0 69 70 bb.2: 71 $vcc = S_AND_B64 $exec, -1, implicit-def $scc 72 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 73 S_ENDPGM 0 74... 75--- 76# GCN-LABEL: name: and_execz_mov_vccz_live_scc 77# GCN-NOT: S_MOV_ 78# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc 79# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 80name: and_execz_mov_vccz_live_scc 81body: | 82 bb.0: 83 S_NOP 0 84 85 bb.1: 86 S_NOP 0 87 88 bb.2: 89 $sgpr0_sgpr1 = S_MOV_B64 -1 90 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc 91 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 92 S_ENDPGM 0 93... 94--- 95# GCN-LABEL: name: and_execz_mov_vccz_live_sreg 96# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 97# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 98name: and_execz_mov_vccz_live_sreg 99body: | 100 bb.0: 101 S_NOP 0 102 103 bb.1: 104 S_NOP 0 105 106 bb.2: 107 $sgpr0_sgpr1 = S_MOV_B64 -1 108 $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc 109 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 110 S_ENDPGM 0 111... 112--- 113# GCN-LABEL: name: and_execz_mov_vccz_live_sreg_commute 114# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 115# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 116name: and_execz_mov_vccz_live_sreg_commute 117body: | 118 bb.0: 119 S_NOP 0 120 121 bb.1: 122 S_NOP 0 123 124 bb.2: 125 $sgpr0_sgpr1 = S_MOV_B64 -1 126 $vcc = S_AND_B64 $sgpr0_sgpr1, $exec, implicit-def dead $scc 127 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 128 S_ENDPGM 0 129... 130--- 131# GCN-LABEL: name: and_execz_mov_vccz_live_scc_commute 132# GCN-NOT: S_MOV_ 133# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc 134# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 135name: and_execz_mov_vccz_live_scc_commute 136body: | 137 bb.0: 138 S_NOP 0 139 140 bb.1: 141 S_NOP 0 142 143 bb.2: 144 $sgpr0_sgpr1 = S_MOV_B64 -1 145 $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def $scc 146 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 147 S_ENDPGM 0 148... 149--- 150# GCN-LABEL: name: and_execz_mov_vccz_commute 151# GCN-NOT: S_MOV_ 152# GCN-NOT: S_AND_ 153# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 154name: and_execz_mov_vccz_commute 155body: | 156 bb.0: 157 S_NOP 0 158 159 bb.1: 160 S_NOP 0 161 162 bb.2: 163 $sgpr0_sgpr1 = S_MOV_B64 -1 164 $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def dead $scc 165 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 166 S_ENDPGM 0 167... 168--- 169# GCN-LABEL: name: and_execz_mov_exec_vccz 170# GCN: $exec = S_MOV_B64 -1 171# GCN-NEXT: S_ENDPGM 0 172name: and_execz_mov_exec_vccz 173body: | 174 bb.0: 175 S_NOP 0 176 177 bb.1: 178 S_NOP 0 179 180 bb.2: 181 $exec = S_MOV_B64 -1 182 $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc 183 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 184 S_ENDPGM 0 185... 186--- 187# GCN-LABEL: name: and_execz_mov_exec_vccnz 188# GCN: $exec = S_MOV_B64 -1 189# GCN-NEXT: S_BRANCH %bb.1{{$}} 190name: and_execz_mov_exec_vccnz 191body: | 192 bb.0: 193 S_NOP 0 194 195 bb.1: 196 S_NOP 0 197 198 bb.2: 199 $exec = S_MOV_B64 -1 200 $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc 201 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 202 S_ENDPGM 0 203... 204--- 205# GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_early 206# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 207# GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1 208# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 209name: and_execz_mov_vccz_reads_sreg_early 210body: | 211 bb.0: 212 S_NOP 0 213 214 bb.1: 215 S_NOP 0 216 217 bb.2: 218 $sgpr0_sgpr1 = S_MOV_B64 -1 219 $sgpr2 = S_MOV_B32 $sgpr1 220 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 221 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 222 S_ENDPGM 0 223... 224--- 225# GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_late 226# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 227# GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1 228# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 229name: and_execz_mov_vccz_reads_sreg_late 230body: | 231 bb.0: 232 S_NOP 0 233 234 bb.1: 235 S_NOP 0 236 237 bb.2: 238 $sgpr0_sgpr1 = S_MOV_B64 -1 239 $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc 240 $sgpr2 = S_MOV_B32 $sgpr1 241 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 242 S_ENDPGM 0 243... 244# GCN-LABEL: name: and_execz_mov_vccz_reads_writes_sreg_early 245# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 246# GCN-NEXT: $sgpr1 = S_MOV_B32 $sgpr0 247# GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 248# GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 249name: and_execz_mov_vccz_reads_writes_sreg_early 250body: | 251 bb.0: 252 S_NOP 0 253 254 bb.1: 255 S_NOP 0 256 257 bb.2: 258 $sgpr0_sgpr1 = S_MOV_B64 -1 259 $sgpr1 = S_MOV_B32 $sgpr0 260 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 261 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 262 S_ENDPGM 0 263... 264--- 265# GCN-LABEL: name: and_execz_mov_vccz_reads_cond 266# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc 267# GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo 268# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 269name: and_execz_mov_vccz_reads_cond 270body: | 271 bb.0: 272 S_NOP 0 273 274 bb.1: 275 S_NOP 0 276 277 bb.2: 278 $sgpr0_sgpr1 = S_MOV_B64 -1 279 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 280 $sgpr2 = S_MOV_B32 $vcc_lo 281 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 282 S_ENDPGM 0 283... 284--- 285# GCN-LABEL: name: and_execz_mov_vccz_modifies_sreg 286# GCN: $sgpr0_sgpr1 = S_MOV_B64 -1 287# GCN-NEXT: $sgpr0 = S_MOV_B32 0 288# GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 289# GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 290name: and_execz_mov_vccz_modifies_sreg 291body: | 292 bb.0: 293 S_NOP 0 294 295 bb.1: 296 S_NOP 0 297 298 bb.2: 299 $sgpr0_sgpr1 = S_MOV_B64 -1 300 $sgpr0 = S_MOV_B32 0 301 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 302 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 303 S_ENDPGM 0 304... 305--- 306# GCN-LABEL: name: and_execz_imm_vccz_liveout_scc 307# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc 308# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 309# GCN-NEXT: S_ENDPGM 0, implicit $scc 310name: and_execz_imm_vccz_liveout_scc 311body: | 312 bb.0: 313 S_NOP 0 314 315 bb.1: 316 S_NOP 0 317 318 bb.2: 319 $vcc = S_AND_B64 $exec, -1, implicit-def $scc 320 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 321 S_ENDPGM 0, implicit $scc 322... 323--- 324# W32-LABEL: name: and_execz_mov_vccz_w32 325# W32-NOT: S_MOV_ 326# W32-NOT: S_AND_ 327# W32: S_CBRANCH_EXECZ %bb.1, implicit $exec 328name: and_execz_mov_vccz_w32 329body: | 330 bb.0: 331 S_NOP 0 332 333 bb.1: 334 S_NOP 0 335 336 bb.2: 337 $sgpr0 = S_MOV_B32 -1 338 $vcc_lo = S_AND_B32 $exec_lo, killed $sgpr0, implicit-def dead $scc 339 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 340 S_ENDPGM 0 341... 342--- 343# GCN-LABEL: name: andn2_execz_mov_vccz 344# GCN-NOT: S_MOV_ 345# GCN-NOT: S_ANDN2_ 346# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 347name: andn2_execz_mov_vccz 348body: | 349 bb.0: 350 S_NOP 0 351 352 bb.1: 353 S_NOP 0 354 355 bb.2: 356 $sgpr0_sgpr1 = S_MOV_B64 0 357 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 358 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 359 S_ENDPGM 0 360... 361--- 362# GCN-LABEL: name: andn2_branch_mov_vccz 363# GCN-NOT: S_MOV_ 364# GCN-NOT: S_ANDN2_ 365# GCN: S_BRANCH %bb.1 366name: andn2_branch_mov_vccz 367body: | 368 bb.0: 369 S_NOP 0 370 371 bb.1: 372 S_NOP 0 373 374 bb.2: 375 $sgpr0_sgpr1 = S_MOV_B64 -1 376 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 377 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 378 S_ENDPGM 0 379... 380--- 381# GCN-LABEL: name: andn2_execnz_mov_vccnz 382# GCN-NOT: S_MOV_ 383# GCN-NOT: S_ANDN2_ 384# GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec 385name: andn2_execnz_mov_vccnz 386body: | 387 bb.0: 388 S_NOP 0 389 390 bb.1: 391 S_NOP 0 392 393 bb.2: 394 $sgpr0_sgpr1 = S_MOV_B64 0 395 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 396 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 397 S_ENDPGM 0 398... 399--- 400# GCN-LABEL: name: andn2_no_branch_mov_vccnz 401# GCN-NOT: S_MOV_ 402# GCN-NOT: S_ANDN2_ 403# GCN-NOT: S_CBRANCH 404# GCN-NOT: S_BRANCH 405name: andn2_no_branch_mov_vccnz 406body: | 407 bb.0: 408 S_NOP 0 409 410 bb.1: 411 S_NOP 0 412 413 bb.2: 414 $sgpr0_sgpr1 = S_MOV_B64 -1 415 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 416 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 417 S_ENDPGM 0 418... 419--- 420# GCN-LABEL: name: and_0_mov 421# GCN: bb.2: 422# GCN-NOT: S_AND 423# GCN: $vcc = S_MOV_B64 0 424# GCN-NEXT: S_BRANCH %bb.1 425name: and_0_mov 426body: | 427 bb.0: 428 S_NOP 0 429 430 bb.1: 431 S_NOP 0 432 433 bb.2: 434 $sgpr0_sgpr1 = S_MOV_B64 0 435 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 436 S_CBRANCH_VCCZ %bb.1, implicit $vcc 437 S_ENDPGM 0 438... 439--- 440# GCN-LABEL: name: andn2_m1_mov 441# GCN: bb.2: 442# GCN-NOT: S_ANDN2 443# GCN: $vcc = S_MOV_B64 0 444# GCN-NEXT: S_BRANCH %bb.1 445name: andn2_m1_mov 446body: | 447 bb.0: 448 S_NOP 0 449 450 bb.1: 451 S_NOP 0 452 453 bb.2: 454 $sgpr0_sgpr1 = S_MOV_B64 -1 455 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 456 S_CBRANCH_VCCZ %bb.1, implicit $vcc 457 S_ENDPGM 0 458... 459--- 460# GCN-LABEL: name: and_m1_mov 461# GCN: bb.2: 462# GCN-NOT: S_AND 463# GCN: $vcc = S_MOV_B64 $exec 464# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 465name: and_m1_mov 466body: | 467 bb.0: 468 S_NOP 0 469 470 bb.1: 471 S_NOP 0 472 473 bb.2: 474 $sgpr0_sgpr1 = S_MOV_B64 -1 475 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 476 S_CBRANCH_VCCZ %bb.1, implicit $vcc 477 S_ENDPGM 0 478... 479--- 480# GCN-LABEL: name: andn2_0_mov 481# GCN: bb.2: 482# GCN-NOT: S_ANDN2 483# GCN: $vcc = S_MOV_B64 $exec 484# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec 485name: andn2_0_mov 486body: | 487 bb.0: 488 S_NOP 0 489 490 bb.1: 491 S_NOP 0 492 493 bb.2: 494 $sgpr0_sgpr1 = S_MOV_B64 0 495 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc 496 S_CBRANCH_VCCZ %bb.1, implicit $vcc 497 S_ENDPGM 0 498... 499--- 500# GCN-LABEL: name: and_0_scc_req 501# GCN: bb.2: 502# GCN-NOT: S_MOV_ 503# GCN: S_AND_ 504# GCN-NEXT: S_BRANCH %bb.1 505name: and_0_scc_req 506body: | 507 bb.0: 508 S_NOP 0 509 510 bb.1: 511 S_NOP 0 512 513 bb.2: 514 $sgpr0_sgpr1 = S_MOV_B64 0 515 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc 516 S_CBRANCH_VCCZ %bb.1, implicit $vcc 517 S_ENDPGM 0 518... 519--- 520# GCN-LABEL: name: andn2_m1_scc_req 521# GCN: bb.2: 522# GCN-NOT: S_MOV_ 523# GCN: S_ANDN2_ 524# GCN-NEXT: S_BRANCH %bb.1 525name: andn2_m1_scc_req 526body: | 527 bb.0: 528 S_NOP 0 529 530 bb.1: 531 S_NOP 0 532 533 bb.2: 534 $sgpr0_sgpr1 = S_MOV_B64 -1 535 $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc 536 S_CBRANCH_VCCZ %bb.1, implicit $vcc 537 S_ENDPGM 0 538... 539--- 540# GCN-LABEL: name: and_cmp_vccz 541# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 542# GCN-NOT: S_AND_ 543# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 544name: and_cmp_vccz 545body: | 546 bb.0: 547 S_NOP 0 548 549 bb.1: 550 S_NOP 0 551 552 bb.2: 553 V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 554 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 555 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 556 S_ENDPGM 0 557... 558--- 559# GCN-LABEL: name: and_cmp_vccnz 560# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 561# GCN-NOT: S_AND_ 562# GCN: S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 563name: and_cmp_vccnz 564body: | 565 bb.0: 566 S_NOP 0 567 568 bb.1: 569 S_NOP 0 570 571 bb.2: 572 V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 573 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 574 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc 575 S_ENDPGM 0 576... 577--- 578# GCN-LABEL: name: andn2_cmp_vccz 579# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 580# GCN: $vcc = S_ANDN2_B64 $exec, $vcc, implicit-def dead $scc 581# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 582name: andn2_cmp_vccz 583body: | 584 bb.0: 585 S_NOP 0 586 587 bb.1: 588 S_NOP 0 589 590 bb.2: 591 V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 592 $vcc = S_ANDN2_B64 $exec, $vcc, implicit-def dead $scc 593 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 594 S_ENDPGM 0 595... 596--- 597# GCN-LABEL: name: and_cmpclass_vccz 598# GCN: V_CMP_CLASS_F32_e32 killed $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec 599# GCN-NOT: S_AND_ 600# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 601name: and_cmpclass_vccz 602body: | 603 bb.0: 604 S_NOP 0 605 606 bb.1: 607 S_NOP 0 608 609 bb.2: 610 V_CMP_CLASS_F32_e32 killed $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec 611 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 612 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 613 S_ENDPGM 0 614... 615--- 616# GCN-LABEL: name: and_cmpx_vccz 617# GCN: V_CMPX_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit-def $exec, implicit $exec 618# GCN-NOT: S_AND_ 619# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 620name: and_cmpx_vccz 621body: | 622 bb.0: 623 S_NOP 0 624 625 bb.1: 626 S_NOP 0 627 628 bb.2: 629 V_CMPX_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit-def $exec, implicit $exec 630 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 631 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 632 S_ENDPGM 0 633... 634--- 635# GCN-LABEL: name: and_or_cmp_vccz 636# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 637# GCN: $exec = S_OR_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc 638# GCN: $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 639# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 640name: and_or_cmp_vccz 641body: | 642 bb.0: 643 S_NOP 0 644 645 bb.1: 646 S_NOP 0 647 648 bb.2: 649 V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec 650 $exec = S_OR_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc 651 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc 652 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc 653 S_ENDPGM 0 654... 655