test_cases:
  -
    input:
      bytes: [ 0x00, 0xa8, 0x08, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.h, z0.b, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x0f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.h, z31.b, #7"

  -
    input:
      bytes: [ 0x00, 0xa8, 0x10, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.s, z0.h, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x1f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.s, z31.h, #15"

  -
    input:
      bytes: [ 0x00, 0xa8, 0x40, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.d, z0.s, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x5f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.d, z31.s, #31"

  -
    input:
      bytes: [ 0x00, 0xa8, 0x08, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.h, z0.b, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x0f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.h, z31.b, #7"

  -
    input:
      bytes: [ 0x00, 0xa8, 0x10, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.s, z0.h, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x1f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.s, z31.h, #15"

  -
    input:
      bytes: [ 0x00, 0xa8, 0x40, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z0.d, z0.s, #0"

  -
    input:
      bytes: [ 0xff, 0xab, 0x5f, 0x45 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "ushllb z31.d, z31.s, #31"
