test_cases:
  -
    input:
      bytes: [ 0x00, 0x38, 0xb0, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z0.h, { z0.s, z1.s }, #16"

  -
    input:
      bytes: [ 0x55, 0x39, 0xb5, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z21.h, { z10.s, z11.s }, #11"

  -
    input:
      bytes: [ 0x97, 0x39, 0xb8, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z23.h, { z12.s, z13.s }, #8"

  -
    input:
      bytes: [ 0xdf, 0x3b, 0xbf, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z31.h, { z30.s, z31.s }, #1"

  -
    input:
      bytes: [ 0x00, 0x38, 0xb0, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2p1" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z0.h, { z0.s, z1.s }, #16"

  -
    input:
      bytes: [ 0x55, 0x39, 0xb5, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2p1" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z21.h, { z10.s, z11.s }, #11"

  -
    input:
      bytes: [ 0x97, 0x39, 0xb8, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2p1" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z23.h, { z12.s, z13.s }, #8"

  -
    input:
      bytes: [ 0xdf, 0x3b, 0xbf, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2p1" ]
    expected:
      insns:
        -
          asm_text: "uqrshrn z31.h, { z30.s, z31.s }, #1"
