test_cases:
  -
    input:
      bytes: [ 0x00, 0x00, 0xe0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 0]}, p0, [x0, x0, lsl #3]"

  -
    input:
      bytes: [ 0x45, 0x55, 0xf5, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2h.d[w14, 1]}, p5, [x10, x21, lsl #3]"

  -
    input:
      bytes: [ 0xa7, 0x6d, 0xe8, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3h.d[w15, 1]}, p3, [x13, x8, lsl #3]"

  -
    input:
      bytes: [ 0xef, 0x7f, 0xff, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za7h.d[w15, 1]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x0e, 0xf0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2h.d[w12, 1]}, p3, [x17, x16, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x04, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 1]}, p1, [x1, x30, lsl #3]"

  -
    input:
      bytes: [ 0x68, 0x56, 0xf4, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za4h.d[w14, 0]}, p5, [x19, x20, lsl #3]"

  -
    input:
      bytes: [ 0x80, 0x19, 0xe2, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 0]}, p6, [x12, x2, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x48, 0xfa, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w14, 1]}, p2, [x1, x26, lsl #3]"

  -
    input:
      bytes: [ 0xcd, 0x0a, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za6h.d[w12, 1]}, p2, [x22, x30, lsl #3]"

  -
    input:
      bytes: [ 0x22, 0x75, 0xe1, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za1h.d[w15, 0]}, p5, [x9, x1, lsl #3]"

  -
    input:
      bytes: [ 0x87, 0x29, 0xeb, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3h.d[w13, 1]}, p2, [x12, x11, lsl #3]"

  -
    input:
      bytes: [ 0x00, 0x00, 0xe0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 0]}, p0, [x0, x0, lsl #3]"

  -
    input:
      bytes: [ 0x45, 0x55, 0xf5, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2h.d[w14, 1]}, p5, [x10, x21, lsl #3]"

  -
    input:
      bytes: [ 0xa7, 0x6d, 0xe8, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3h.d[w15, 1]}, p3, [x13, x8, lsl #3]"

  -
    input:
      bytes: [ 0xef, 0x7f, 0xff, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za7h.d[w15, 1]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x0e, 0xf0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2h.d[w12, 1]}, p3, [x17, x16, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x04, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 1]}, p1, [x1, x30, lsl #3]"

  -
    input:
      bytes: [ 0x68, 0x56, 0xf4, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za4h.d[w14, 0]}, p5, [x19, x20, lsl #3]"

  -
    input:
      bytes: [ 0x80, 0x19, 0xe2, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w12, 0]}, p6, [x12, x2, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x48, 0xfa, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0h.d[w14, 1]}, p2, [x1, x26, lsl #3]"

  -
    input:
      bytes: [ 0xcd, 0x0a, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za6h.d[w12, 1]}, p2, [x22, x30, lsl #3]"

  -
    input:
      bytes: [ 0x22, 0x75, 0xe1, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za1h.d[w15, 0]}, p5, [x9, x1, lsl #3]"

  -
    input:
      bytes: [ 0x87, 0x29, 0xeb, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3h.d[w13, 1]}, p2, [x12, x11, lsl #3]"

  -
    input:
      bytes: [ 0x00, 0x80, 0xe0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 0]}, p0, [x0, x0, lsl #3]"

  -
    input:
      bytes: [ 0x45, 0xd5, 0xf5, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2v.d[w14, 1]}, p5, [x10, x21, lsl #3]"

  -
    input:
      bytes: [ 0xa7, 0xed, 0xe8, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3v.d[w15, 1]}, p3, [x13, x8, lsl #3]"

  -
    input:
      bytes: [ 0xef, 0xff, 0xff, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za7v.d[w15, 1]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x8e, 0xf0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2v.d[w12, 1]}, p3, [x17, x16, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x84, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 1]}, p1, [x1, x30, lsl #3]"

  -
    input:
      bytes: [ 0x68, 0xd6, 0xf4, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za4v.d[w14, 0]}, p5, [x19, x20, lsl #3]"

  -
    input:
      bytes: [ 0x80, 0x99, 0xe2, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 0]}, p6, [x12, x2, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0xc8, 0xfa, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w14, 1]}, p2, [x1, x26, lsl #3]"

  -
    input:
      bytes: [ 0xcd, 0x8a, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za6v.d[w12, 1]}, p2, [x22, x30, lsl #3]"

  -
    input:
      bytes: [ 0x22, 0xf5, 0xe1, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za1v.d[w15, 0]}, p5, [x9, x1, lsl #3]"

  -
    input:
      bytes: [ 0x87, 0xa9, 0xeb, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3v.d[w13, 1]}, p2, [x12, x11, lsl #3]"

  -
    input:
      bytes: [ 0x00, 0x80, 0xe0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 0]}, p0, [x0, x0, lsl #3]"

  -
    input:
      bytes: [ 0x45, 0xd5, 0xf5, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2v.d[w14, 1]}, p5, [x10, x21, lsl #3]"

  -
    input:
      bytes: [ 0xa7, 0xed, 0xe8, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3v.d[w15, 1]}, p3, [x13, x8, lsl #3]"

  -
    input:
      bytes: [ 0xef, 0xff, 0xff, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za7v.d[w15, 1]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x8e, 0xf0, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za2v.d[w12, 1]}, p3, [x17, x16, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0x84, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 1]}, p1, [x1, x30, lsl #3]"

  -
    input:
      bytes: [ 0x68, 0xd6, 0xf4, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za4v.d[w14, 0]}, p5, [x19, x20, lsl #3]"

  -
    input:
      bytes: [ 0x80, 0x99, 0xe2, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w12, 0]}, p6, [x12, x2, lsl #3]"

  -
    input:
      bytes: [ 0x21, 0xc8, 0xfa, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za0v.d[w14, 1]}, p2, [x1, x26, lsl #3]"

  -
    input:
      bytes: [ 0xcd, 0x8a, 0xfe, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za6v.d[w12, 1]}, p2, [x22, x30, lsl #3]"

  -
    input:
      bytes: [ 0x22, 0xf5, 0xe1, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za1v.d[w15, 0]}, p5, [x9, x1, lsl #3]"

  -
    input:
      bytes: [ 0x87, 0xa9, 0xeb, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1d {za3v.d[w13, 1]}, p2, [x12, x11, lsl #3]"
