# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s

--- |
  define void @cbz_s32() { ret void }
  define void @cbz_s64() { ret void }
  define void @cbnz_s32() { ret void }
  define void @cbnz_s64() { ret void }
...

---
# CHECK-LABEL: name: cbz_s32
name:            cbz_s32
legalized:       true
regBankSelected: true

# CHECK:  body:
# CHECK:   bb.0:
# CHECK:    %0 = COPY %w0
# CHECK:    CBZW %0, %bb.1
# CHECK:    B %bb.0
body:             |
  bb.0:
    liveins: %w0
    successors: %bb.0, %bb.1

    %0:gpr(s32) = COPY %w0
    %1:gpr(s32) = G_CONSTANT i32 0
    %2:gpr(s1) = G_ICMP intpred(eq), %0, %1
    G_BRCOND %2(s1), %bb.1
    G_BR %bb.0

  bb.1:
...

---
# CHECK-LABEL: name: cbz_s64
name:            cbz_s64
legalized:       true
regBankSelected: true

# CHECK:  body:
# CHECK:   bb.0:
# CHECK:    %0 = COPY %x0
# CHECK:    CBZX %0, %bb.1
# CHECK:    B %bb.0
body:             |
  bb.0:
    liveins: %x0
    successors: %bb.0, %bb.1

    %0:gpr(s64) = COPY %x0
    %1:gpr(s64) = G_CONSTANT i64 0
    %2:gpr(s1) = G_ICMP intpred(eq), %0, %1
    G_BRCOND %2(s1), %bb.1
    G_BR %bb.0

  bb.1:
...

---
# CHECK-LABEL: name: cbnz_s32
name:            cbnz_s32
legalized:       true
regBankSelected: true

# CHECK:  body:
# CHECK:   bb.0:
# CHECK:    %0 = COPY %w0
# CHECK:    CBNZW %0, %bb.1
# CHECK:    B %bb.0
body:             |
  bb.0:
    liveins: %w0
    successors: %bb.0, %bb.1

    %0:gpr(s32) = COPY %w0
    %1:gpr(s32) = G_CONSTANT i32 0
    %2:gpr(s1) = G_ICMP intpred(ne), %0, %1
    G_BRCOND %2(s1), %bb.1
    G_BR %bb.0

  bb.1:
...

---
# CHECK-LABEL: name: cbnz_s64
name:            cbnz_s64
legalized:       true
regBankSelected: true

# CHECK:  body:
# CHECK:   bb.0:
# CHECK:    %0 = COPY %x0
# CHECK:    CBNZX %0, %bb.1
# CHECK:    B %bb.0
body:             |
  bb.0:
    liveins: %x0
    successors: %bb.0, %bb.1

    %0:gpr(s64) = COPY %x0
    %1:gpr(s64) = G_CONSTANT i64 0
    %2:gpr(s1) = G_ICMP intpred(ne), %0, %1
    G_BRCOND %2(s1), %bb.1
    G_BR %bb.0

  bb.1:
...
