llvm/llvm/test/MC/AArch64/armv8.8a-hbc.s

// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+hbc < %s | FileCheck %s
// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.8a < %s | FileCheck %s
// RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2>&1 | FileCheck --check-prefix=CHECK-NO-HBC-ERR %s

lbl:
        bc.eq lbl
        bc.ne lbl
        bc.cs lbl
        bc.hs lbl
        bc.lo lbl
        bc.cc lbl
        bc.mi lbl
        bc.pl lbl
        bc.vs lbl
        bc.vc lbl
        bc.hi lbl
        bc.ls lbl
        bc.ge lbl
        bc.lt lbl
        bc.gt lbl
        bc.le lbl
        bc.al lbl

// CHECK: bc.eq lbl                    // encoding: [0bAAA10000,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.ne lbl                    // encoding: [0bAAA10001,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.hs lbl                    // encoding: [0bAAA10010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.hs lbl                    // encoding: [0bAAA10010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.lo lbl                    // encoding: [0bAAA10011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.lo lbl                    // encoding: [0bAAA10011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.mi lbl                    // encoding: [0bAAA10100,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.pl lbl                    // encoding: [0bAAA10101,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.vs lbl                    // encoding: [0bAAA10110,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.vc lbl                    // encoding: [0bAAA10111,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.hi lbl                    // encoding: [0bAAA11000,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.ls lbl                    // encoding: [0bAAA11001,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.ge lbl                    // encoding: [0bAAA11010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.lt lbl                    // encoding: [0bAAA11011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.gt lbl                    // encoding: [0bAAA11100,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.le lbl                    // encoding: [0bAAA11101,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: bc.al lbl                    // encoding: [0bAAA11110,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19

// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc
// CHECK-NO-HBC-ERR: [[@LINE-53]]:9: error: instruction requires: hbc