// This test checks that the unwinding opcodes are remapped to more
// efficient ones where possible.

// RUN: llvm-mc -triple aarch64-pc-win32 -filetype=obj %s -o %t.o
// RUN: llvm-readobj -u %t.o | FileCheck %s

// CHECK:      UnwindInformation [
// CHECK-NEXT:   RuntimeFunction {
// CHECK-NEXT:     Function: func
// CHECK-NEXT:     ExceptionRecord: .xdata
// CHECK-NEXT:     ExceptionData {
// CHECK:            Prologue [
// CHECK-NEXT:         0xd882              ; stp d10, d11, [sp, #16]
// CHECK-NEXT:         0xda07              ; stp d8, d9, [sp, #-64]!
// CHECK-NEXT:         0xe6                ; save next
// CHECK-NEXT:         0x28                ; stp x19, x20, [sp, #-64]!
// CHECK-NEXT:         0xca49              ; stp x28, x29, [sp, #72]
// CHECK-NEXT:         0xe6                ; save next
// CHECK-NEXT:         0xe6                ; save next
// CHECK-NEXT:         0xe6                ; save next
// CHECK-NEXT:         0xcc47              ; stp x20, x21, [sp, #-64]!
// CHECK-NEXT:         0x42                ; stp x29, x30, [sp, #16]
// CHECK-NEXT:         0xca02              ; stp x27, x28, [sp, #16]
// CHECK-NEXT:         0x83                ; stp x29, x30, [sp, #-32]!
// CHECK-NEXT:         0xce03              ; stp x27, x28, [sp, #-32]!
// CHECK-NEXT:         0xe1                ; mov fp, sp
// CHECK-NEXT:         0xe201              ; add fp, sp, #8
// CHECK-NEXT:         0xe4                ; end
// CHECK-NEXT:       ]
// CHECK-NEXT:       EpilogueScopes [
// CHECK-NEXT:         EpilogueScope {
// CHECK:                Opcodes [
// CHECK-NEXT:             0xc904              ; ldp x23, x24, [sp, #32]
// CHECK-NEXT:             0xe6                ; restore next
// CHECK-NEXT:             0xcc83              ; ldp x21, x22, [sp], #32
// CHECK-NEXT:             0x24                ; ldp x19, x20, [sp], #32
// CHECK-NEXT:             0xcc1f              ; ldp x19, x20, [sp], #256
// CHECK-NEXT:             0xe4                ; end
// CHECK-NEXT:           ]
// CHECK-NEXT:         }
// CHECK-NEXT:       ]
// CHECK-NEXT:     }
// CHECK-NEXT:   }
// CHECK-NEXT: ]


    .text
    .globl func
    .seh_proc func
func:
    add x29, sp, #8
    .seh_add_fp 8
    add x29, sp, #0
    .seh_add_fp 0

    stp x27, x28, [sp, #-32]!
    .seh_save_regp_x x27, 32
    stp x29, x30, [sp, #-32]!
    .seh_save_regp_x x29, 32

    stp x27, x28, [sp, #16]
    .seh_save_regp x27, 16
    stp x29, x30, [sp, #16]
    .seh_save_regp x29, 16

    stp x20, x21, [sp, #-64]!
    .seh_save_regp_x x20, 64
    stp x22, x23, [sp, #16]
    .seh_save_regp x22, 16
    stp x24, x25, [sp, #32]
    .seh_save_next
    stp x26, x27, [sp, #48]
    .seh_save_regp x26, 48
    stp x28, x29, [sp, #72]
    .seh_save_regp x28, 72

    stp x19, x20, [sp, #-64]!
    .seh_save_r19r20_x 64
    stp x21, x22, [sp, #16]
    .seh_save_regp x21, 16

    stp d8,  d9,  [sp, #-64]!
    .seh_save_fregp_x d8, 64
    stp d10, d11, [sp, #16]
    // This is intentionally not converted into a save_next, to avoid
    // bugs in the windows unwinder.
    .seh_save_fregp d10, 16

    .seh_endprologue

    nop

    .seh_startepilogue
    ldp x27, x28, [sp, #32]
    .seh_save_regp x23, 32
    ldp x23, x24, [sp, #16]
    .seh_save_regp x23, 16
    ldp x21, x22, [sp], #32
    .seh_save_regp_x x21, 32
    ldp x19, x20, [sp], #32
    .seh_save_regp_x x19, 32
    ldp x19, x20, [sp], #256
    .seh_save_regp_x x19, 256
    .seh_endepilogue
    ret
    .seh_endproc
